Linux系统编程--基础指令(!!详细讲解+知识拓展)
第一讲 基础指令
我们现如今自己使用的电脑大部分是用的都是windows或者macOS,并配合上由微软和苹果开发的图形化界面,所以使用鼠标再屏幕上进行点击即可完成许多任务。但是作为操作系统的学习者,在linux的基础上不再使用图形化界进行操作,那么应该如何控制呢?这里就需要借助linux指令通过在命令行进行操作,即可。
这也表明了各种操作系统的本质都利用各种指令进行开发,现如今的各种图形化界面都是为了降低使用者的使用门槛,但是作为操作系统的学习者,应该坚持使用指令完成各种操作。
下面便开始介绍一些常用的基础指令。
1. ls指令
语法:ls [选项] [目录或者文件]
功能:对于目录,该命令可以列出该目录下所有子目录与文件。对于文件,将列出文件名以及其他信息。
常用选项:
- -a:列出目录下的所有文件,包括以 . 开头的隐含文件。
- -d:将目录像文件一样显示,而不是显示其下的文件。 如:ls –d 指定目录
- -i:输出文件的 i 节点的索引信息。 如 ls –ai 指定文件
- -k:以 k 字节的形式表示文件的大小。ls –alk 指定文件
- -l:列出文件的详细信息。
- -n:用数字的 UID,GID 代替名称。 (介绍 UID, GID)
- -F:在每个文件名后附上一个字符以说明该文件的类型,“*”表示可执行的普通文件;“/”表示目录;“@”表示符号链接;“|”表示FIFOs;“=”表示套接字(sockets)。(目录类型识别)
- -r:对目录反向排序。
- -t:以时间排序。
- -s:在l文件名后输出该文件的大小。(大小排序,如何找到目录下最大的文件)
- -R:列出所有子目录下的文件。(递归)
- -1:一行只输出一个文件
指令演示:
如上图我们使用了ls
、ls -l
、ll
这三个指令,其中ls
仅仅是列出了文件和目录的名称,但是ls -l
和ll
的显示内容相同,并且是显示了更加详细的文件属性信息。
这里在使用了-a
选项之后,增加了需要以.
开头的文件,这些文件是隐藏文件。
以上介绍了-l
和-a
这两个选项的使用实例,后面的各种选项的使用可以在平时的使用中边用边学习。
因为以上两张图里一共ls
指令进行查询的都是目录中包含的信息,如果需要直接查看次目录本身的信息,可以使用选项-d
实现。
补充知识:
文件:
文件 != 文件内容
,如上图创建了code.c
和file.txt
这两个文件但是还没有向这两个文件写入信息,所以此时的文件内容大小是0个字节,但是文件的实际大小并不是0。文件 = 文件内容 + 文件属性
,他们都是数据,是数据就会占用磁盘空间。其中文件属性包括文件大小、类型、权限、创建时间等数据。- 所以对文件操作也可以分为对
文件内容
和文件属性
进行操作。
指令复合使用:
- 图一中
ls -l
等价于ll
,基于这个原则,其他与-l
搭配的复合选项也可以被简写,如ls -al
也可以写成ll -a
。 - 图二中的
-l -a
的使用效果和-al
或者-la
使用功能效果一致,说明选项可以组合传入也可以分别传入,并且选项的前后并不会影响最终作用。
文件颜色区分:
- Linux 中,正常颜色为普通文件,蓝色为目录。
文件夹和目录:
- Linux中的目录其实也就是,windows中的文件夹,这两个是一个概念。
隐藏文件:
- 隐藏文件在windows操作系统里也被广泛使用,起作用主要是用于保存一些系统的基础配置文件,防止用户平时在使用
Ctrl+A
等快捷键进行全选操作时,对系统配置文件进行删除和修改。 - Linux 中以 . 开头的文件是隐藏文件,单独的一个
.
是当前目录,单独的..
是上级目录。
每行文件开头的d
和-
的含义:
- 以
d
开头:普通文件 - 以
-
开头:目录
2. pwd指令
语法:pwd
功能:显示用户当前所在的目录
常用选项:pwd 命令的功能与使用都十分简单,也没有附加选项
指令演示:
这里表示此时使用者所在的路径是/root/test
。
补充知识:
- 这里的
/
是路径分隔符,在windows也存在路径分隔符但是是\(反斜杠)
但是这种方式并不规范因为它会与转义字符\
发生冲突。
3. cd指令
语法:cd [目录名]
功能:改变工作目录。利用绝对路径或者相对路径将当前工作目录改变到指定的目录下;
常用选项:和 pwd 指令一样,cd 指令也没有选项,其功能和使用同样十分简单。
指令演示:
上面演示使用cd
指令,前往各个目录的方法。
补充知识:
相对路径和绝对路径:
- **相对路径:**以操作者当前所处的位置为参照点,查找定位目标文件的路径。
- **绝对路径:**从根目录开始,依次按树状结构向后进行查找定位目标文件的路径。
- 绝对路径一般不会随着用户的路径变化而丧失唯一性,一般在特定服务的匹配文件中经常被使用。相对路径因为它的便携性,一般在命令行中使用较多。
路径的理解:
-
在操作系统中,访问一个文件的前提是先找到它,再操作它,然而定位或者说是找到这个文件的方式就是路径。
-
Linux 系统中,磁盘上的文件和目录被组成一棵目录树,每个节点都是目录或文件,其中普通文件一定是目录树的叶子节点,目录可能是叶子(空目录),也可能是路上节点。
理解路径存在的意义:树状组织方式,都是为了保证快速定位查找到指定的文件,而定位文件就需要具有唯一性的方案来进行定位文件。
**其中任何一个节点,都只有一个父节点,**所以,从根目录开始,定位指定文件,路径具有唯一性。
-
不管是 Linux 还是 Windows,其磁盘中的文件和目录的结构都是树状结构 (多叉树),因为在树状结构中,得到一个文件/目录的路径是唯一的,那么就可以用路径来唯一标识一个文件/目录。下面便是Linux的树状目录结构。
.
和..
的介绍:
-
在Linux系统中,任何目录都存在
.
和..
,因为可能在任何一个目录下都需要去运行可执行文件(找到他自己)都需要回退至上一级目录(找到其父节点)。 -
..
:..
的作用是指向上级目录。其的存在保证了此目录既可以从根目录开始利用绝对路径找到,也可以通过..
一层层返回上级路径直至根节点。**注意:**根目录
/
利用指令cd ..
还是指向其自己本身,这里Linux系统就是这样设定的。 -
.
:.
的作用是指向此目录本身。例子:因为如果需要执行一个二进制文件(a.out)首先需要将其先加入内存,然而加入内存的前提是先找到它,但是Linux默认即使此文件在当前路径下也无法找到此文件,所以此时输入./a.out
即可找到此文件并执行。所以.
保证了可以找到此目录下的二进制执行文件加载并运行它。
家目录:
-
使用不同的账户登录操作系统,其进入的初始路径并不一样。
如:
root账号默认所处路径为
/root
,普通用户账号默认所处的路径为/home/用户名
。把这种路径叫做特定用户的家目录。可以理解为root账号住的是别墅,初始默认路径就是
/root
,此路径只给root账号一个人使用;然后普通用户住的就是公寓,默认路径是在/home/用户名
路径下,所有创建的普通用户都在/home
这一个目录当中。 -
**家目录的理解:**保存用户私有信息,默认登录的时候,所处的路径。每一个用户都需要有一套自己的默认目录,自己的默认目录需要在自己的路径下维护好。
-
cd ~
:这个指令表示,前往指定用户的家目录。 -
cd -
:这个指令表示 可以切换回最近的一次路径。
4. touch 指令
语法:touch [选项] 文件名
功能:touch命令参数可更改文档或目录的日期时间,包括存取时间和更改时间,或者新建一个不存在的文件;
常用选项:
-a: 或 --time=atime 或 --time=access 或 --time=use 只更改存取时间;
-c: 或 --no-create 不建立任何文档;
-d: 使用指定的日期时间,而非现在的时间;
-f: 此参数将忽略不予处理,仅负责解决 BSD 版本 touch 指令的兼容性问题;
-m: 或 --time=mtime 或 --time=modify 只更改变动时间;
-r: 把指定文档或目录的日期时间,统统设成和参考文档或目录的日期时间相同;
-t: 使用指定的日期时间,而非现在的时间;
指令演示:
可以通过此指令向此目录下添加普通文件,并可以利用ls指令查看。
还可以通过此指令修改文件的时间,如上图所示。
补充知识:
Linux中的文件类型:
- 以
-
开头的文件类型叫做普通文件。如文本文件(code.txt)、二进制可执行程序(a.out)、动静态库、视频、音频、图片… - 以
d
开头的叫做目录,也就是文件夹。
Linux中的文件后缀:
-
Linux系统中,文件类型与文件后缀无关。
- 如前面提到的
a.out
二进制可执行程序,在使用指令./a.out
之后即可加载执行。如果这里把a.out
改名为a.txt
、b.png
甚至是b
,均可以在使用路径找到此文件后加载执行。并不会因为其文件后缀发生更改而发生和windows中一样的报错,而导致无法执行。
- 如前面提到的
-
因为
系统 != 软件
,Linux系统中的软件如gcc
等编译器软件,是对文件后缀有要求的。 -
综上,在平时的开发过程中还是应该带上合适的文件后缀。
touch 只能用来创建普通文件,不能创建目录。
5. file 指令
语法:file [选项] 文件名
功能:file命令用于辨识文件类型,可以检测给定文件的类型,它会分析文件的内容特征并输出文件类别的描述信息。
常用选项:
-b: 或 --brief 显示简短格式的输出,不显示文件名;
-c: 或 --checking-printout 详细显示指令执行过程;
-f: 或 --files-from 从指定文件中读取待检测的文件名列表;
-i: 或 --mime 输出MIME类型字符串;
-k: 或 --keep-going 不在第一个匹配后停止,继续尝试匹配;
-L: 或 --dereference 跟随符号链接;
-m: 指定魔数文件列表;
-z: 或 --uncompress 尝试查看压缩文件的内容类型;
指令演示:
利用file
指令即可查看文件的描述信息,进而进一步可以判断出具体的文件类型。
6. stat 指令
语法:stat [选项] 文件名
功能:stat命令用于显示文件或文件系统的详细状态信息,包括文件的大小、块数、I-node信息、权限、链接数、所有者、组以及各种时间戳(如访问时间atime、修改时间mtime、改变时间ctime)等。
常用选项:
-c: 或 --format 使用指定的格式字符串来显示信息;
-f: 或 --file-system 显示文件系统而不是文件的状态;
-L: 或 --dereference 跟随符号链接,显示链接指向的文件或目录的状态;
-t: 或 --terse 以简洁(terse)格式显示信息;
–cached=WHEN: 显示缓存的时间戳(如果可用);
指令演示:
可以使用此指令查看更加详细的文件信息,其中便包括如图的ACM时间。
补充知识:
ACM时间:
- 最近访问时间(Access):cat、less等查看文件后,该时间改变;
- 最近更改时间(Modify):使用 nano/vim 等编辑器修改文件内容后,三个时间都改变;
- 最近改动时间(Change):chmod 修改文件权限或属性后,该时间改变;
7. mkdir 指令
语法:mkdir [选项] 目录名
功能:在当前目录下创建目录;
常用选项
- -p :–parents 可以是一个路径名称;此时若路径中的某些目录尚不存在,加上此选项后,系统将自动建立好那些尚不存在的目录,即一次可以建立多个目录;
指令演示:
可以通过此指令向此目录下添加空的子目录,并可以利用ls指令查看。
补充知识:
如何建立一个路径(a/b/c/d)?
- **方式一:**一个一个进入目录,并在每个父目录中使用指令
mkdir
建立新的子目录,不断循环,直到路径形成。 - **方式二:**利用指令
mkdir -p a/b/c/d
可以直接创建一条路径。
8. tree 指令
语法:tree [选项] [目录]
功能:以树状格式展示出指定目录的内的文件和目录结构;
常用选项
-a:列出所有文件,包括隐藏文件、目录;
-C:在文件和目录清单上加上色彩,便于区分文件类型;
-d:仅列出目录名称,而非内容;
-D:列出文件或目录更改时间;
-L:目录树的最大显示深度;
-p:打印结构的同时打印文件权限;
-l:跟随目录的符号链接,就像它们是目录一样,避免导致递归循环的链接;
-f:打印每个文件的完整路径前缀;
-F:在每个条目后加上文件类型的指示符(如目录是/);
指令演示:
补充知识:
tree
指令的安装:
-
**报错:**默认的Linux系统中
tree
指令默认是没有安装的,所以直接使用此指令会报错。 -
**安装:**保证是root账号的情况下,在centos系统中,使用指令
yum install -y tree
,即可下载。保证是root账号的情况下,在Ubuntu系统中,使用指令
apt install -y tree
,即可下载。
9. rmdir指令
语法:rmdir [选项] [dirName]
适用对象:具有当前目录操作权限的所有使用者;
功能:删除目录;
常用选项
- -p:当子目录被删除后如果父目录也变成空目录的话,就连带父目录一起删除;
指令演示:
利用指令删除空目录tcqdir
。
注意:rmdir
只能删除空目录,意义不大。
10. rm指令
语法:rm [选项] [文件名/目录名]
适用对象:具有当前目录操作权限的所有使用者;
功能:删除文件或目录;
常用选项
- -f:不进行确认直接删除文件,即使文件属性为只读(即写保护);
- -r:删除目录及其下所有文件 (递归删除);
- -i:删除前逐一询问确认;
指令演示:
如上图,Linux中的删除指令只需要记住一条**rm -rf [目标文件]
**
11. man指令
Linux的命令有很多参数,我们不可能全记住,可以通过查查看手册获取帮助
语法: man [选项] 命令
常用选项:
- -k 根据关键词搜索帮助
- num 只在第num章节查找
- -a 将所有章节的都显示出来,比如man printf 它缺省从第一章节开始搜索,知道就停止,用选项,按下q退出,它会继续后台搜索,直到所有章节都搜索完毕
解释一下: man手册分为9章(不同系统可能会有差别)
- 是普通的命令
- 是系统调用,如open,write之类的(通过这个,至少可以很方便的查到调用这个函数, 需要加什么头文件)
- 是库函数,如printf,fread4是特殊文件,也就是/dev下的各种设备文件
- 略
- 是指文件的格式,比如passwd,就会说明这个文件中各个字段的含义
- 是给游戏留的,由各个游戏自己定义
- 是附件还有一些变量,比如environ这种全局变量在这里就有说明
- 是系统管理用的命令,这些命令只能由root使用,如ifconfig
- 略
补充知识:
man指令的安装:
- man 指令在云服务器上一般是不完整的,需要安装后才能正常使用,在
centos
系统下安装命令是 “yum install -y man-pages
”,且此命名只能由 root 用户来安装或者使用。
man指令的查找的相关介绍:
- man 如果不指定具体章节就会默认从一号手册开始找,直到找到才停下;如果指定了章节,就只会在该章节里面去找。
- 由于Linux是用C语言实现的,所以man中默认包含了C语言的函数手册;如果要查看其他语言,如C++/java/python则需要先在Linux中安装,不过这里建议直接到对应语言的官网中去查找。
- man 手册有汉化版的,不过目前只能汉化一号手册;但是我们作为一个程序员,应该具备基本的阅读英语文档的能力,所以我不建议大家去汉化,而是从现在开始慢慢去养成阅读英语文档的习惯。
- 使用完 man 指令进行对应文档后,按 q 键即可退出文档。
12. echo 指令
语法: echo [选项] [字符串]
功能:在终端显示指定的字符串**(可被重定向)**
说明:
echo
命令用于在终端输出指定的字符串或变量内容。- 可以通过使用不同的选项来控制输出的格式,如换行符、特殊字符等。
常用选项:
-n
不输出结尾的换行符,默认情况下echo
会在输出后自动换行。-e
允许解析反斜杠转义字符,如\n
、\t
等。-E
禁用反斜杠转义,通常与-e
配合使用。
指令演示:
用echo
指令即可完成将字符串显示在终端上。
补充知识:
首先要了解重定向就需要认识到一个基本信息,Linux下,一切皆文件。
-
打印到显示器 --> 显示器也是文件 --> 写入到显示器文件
-
从键盘中读取 --> 键盘也是文件 --> 从键盘文件中读取数据
输出重定向(重要!!!):
-
写入的目标文件不存在:
所以上述的将字符串打印到显示器上,本质是echo将字符串默认写入到显示器文件,那么在使用了
>
进行重定向操作之后,就可以将字符串写入到指定文件中。并且如果此时的路径底下指定文件不存在,就会先新建这个指定文件,再将字符串写入此文件中。这个过程也叫做输出重定向。
-
写入的目标文件已存在并且不为空:
如果此时目标文件已经存在,并且其中已经有内容,
echo
将字符串插入到目标文件的时候,就会先删掉目标文件原来的内容,再将字符串写入目标文件(先清空再写入)。 -
清空文件和新建文件的另一种方式:
因为如上已经知道在使用
>
可以将目标文件先清空再写入,所以直接使用>
再接要清空的目标文件,就可以实现清空文件的目的。同时,以这种思路新建文件也就相当于清空一个不存在的目标文件,因为目标文件不存在所以会先创建次新文件,再清空。也就实现了新建文件的目的。
清空文件、新建文件:> 文件名
-
其他命令与文件输入:
经过以上知识的铺垫,可以更加深入延伸一些,之前在调用
ll
指令的时候,会将此目录下的详细文件信息显示在显示器上,也就是可以理解为ll指令就是默认将此事目录下的详细文件信息写入显示器文件,也就意味着结合>
就可以改变输出的目的文件,实现将详细文件信息写入其他文件的目的。
追加重定向:
在前面介绍写入目标文件的相关知识的时候,已经介绍了,如果对一个已经存在内容的文件执行写入操作,会将旧的内容覆盖为新的内容。
但是如果在开发过程中需要再已经存在内容的目标文件中,想在已经存在的内容后面继续输入内容,则需要涉及追加重定向>>
。
追加重定向的本质也是写入操作。
13. cat 指令
语法:cat [选项] 文件名...
功能:cat命令用于连接文件并打印到标准输出设备上,常用于显示单个文件的内容,或者将多个文件的内容连接起来显示或重定向到另一个文件。
常用选项:
-A: 或 --show-all 等价于 -vET,显示所有控制字符(包括换行符和制表符);
-b: 或 --number-nonblank 对非空白行输出进行编号;
-E: 或 --show-ends 在每行末尾显示 $;
-n: 或 --number 对输出的所有行进行编号;
-s: 或 --squeeze-blank 压缩连续的空白行,只显示一行空白;
-T: 或 --show-tabs 将制表符(TAB)显示为 ^I;
-v: 或 --show-nonprinting 显示非打印字符(除了 LFD 和 TAB);
补充知识:
在介绍echo
指令的时候,补充了很对输入重定向的相关知识,但是其本质都是对制定目标文件进行写入操作。那么下面就对指定目标文件的读取操作进行详细解析。
输入重定向:
-
读取显示器文件:
在仅仅输入指令
cat
之后,并不会显示内容,此时光标跳转到下一行,等待用户输入数据,将任意数据输在显示器上之后,此时用户已经将数据写入显示器文件,cat
指令默认从显示器文件中读取数据,并将其显示。如果想要退出读取模式需要同时按下
Ctrl + C
。 -
读取指定目标文件:
使用
<
后面接想要读取的目标文件的文件名,即可实现从制定目标文件读取数据,并将其显示在显示器上。
14. tac指令
语法:tac [选项] 文件名...
功能:tac命令用于将文件内容按行逆序输出,即从最后一行开始打印到第一行。它是cat命令的逆序版本。常用于查看日志文件等,以便快速查看最新的内容。
常用选项:
-s STRING: 或 --separator=STRING 使用 STRING 作为记录分隔符,而不是换行符。
-b: 或 --before 将分隔符 STRING 放在记录之前,而不是之后(与 -s 结合使用)。
-r: 或 --regex 将分隔符 STRING 解释为正则表达式(与 -s 结合使用)。
补充知识:
查看文件的方式:
-
小文件:例如程序员自己编写的.c/.cpp/.conf文件,不想利用nano、vim等软件打开,因为有可能会误操作这些文件,只是想简单的查阅,使用
cat/tac
即可。 -
大文件:如果是大文件(eg:日志等)使用
cat/tac
等指令会会直接刷屏到最后,不方便查看,所以就可以用指令more/less
(后面的18、19做详细介绍)
日志:
简单来说,可以理解为一段程序,每天都有写日记的习惯,会将今天所做的事、执行的动作都记录下来,写进日记里,这个日记就叫做日志。作为程序员可以根据日志中的时间行为等信息可以排查出程序的错误。
在Linux系统中,本身作为一个大的项目,其也是存在日志的。可以使用指令cat ls/var/log/messages*
即可看到详细日志信息。(注意会刷屏可以按Ctrl + C
停止)
15. cp 指令
语法: cp [选项] 源文件或目录 目标文件或目录
功能:复制文件或目录
说明:
- cp命令用于复制文件或目录
- 如同时指定两个以上的文件或目录,且最后的目的地是一个已经存在的目录,则它会把前面指定的所有文件或目录复制到该目录中
常用选项:
-f
或--force
强制复制文件或目录,不论目标的文件或目录是否已经存在-i
或--interactive
覆盖文件之前先询问用户-r
递归处理,将指定目录下的文件与子目录一并处理。若源文件或目录为符号链接,则一律视为普通文件处理
指令演示:
拷贝普通文件:
拷贝目录:
复制时使用-r
:目录lesson3
是树形结构,需要使用递归拷贝。
复制时使用-f
:拷贝的目录及其子文件已经在目标路径下存在,如果强行拷贝系统会向我们确认,此时可以使用 -f
强制拷贝。
补充知识:
拷贝重命名:
使用指令cp src dir/新的名称
,即可实现拷贝重命名的操作。
指令的本质:
指令的本质就是二进制可执行程序!!
在平时使用的windows桌面中的各种图片,是各种快捷方式,当找到这些快捷方式的文件的时候,就可以发现这些快捷方式也就是各种以.exe
后缀结尾的可执行程序。
在Linux中也一样,平时用到的指令都是在 /usr/bin
路径下的各种程序。可以利用ls -l
进行查询。
所以综上,平时使用指令既可以直接用**“快捷方式”**(eg:ll
或ls -l
),也可以使用完整的路径,调用此程序(eg:/usr/bin/ls
)。本质都是程序,使用的时候可以使用不同的调用方式进行使用。
指令的调用:
虽然说指令是一个程序,但是经过编译生成的可执行文件a.out
不一样,如果需要调用a.out
的功能需要使用相对路径,找到此文件,才可以执行运行此程序。
但是在平时使用指令的时候却不需要声明什么路径,所以也就意味着,如果将a.out
文件拷贝到 /usr/bin
路径下也可以不需要声明路径,直接调用。
完善一下上述说法:指令是特定系统路径下的二进制可执行程序。
16. which指令
语法:which [选项] 命令名
功能:which命令用于查找并显示给定命令的完整路径。它会在系统的 PATH 环境变量指定的目录中查找可执行文件,并返回找到的第一个匹配项的路径。通常用于确认正在使用的某个命令是来自哪个位置。
常用选项:
-a: 或 --all 显示所有找到的符合条件的命令路径,而不仅仅是第一个;
–skip-alias: 忽略别名,只查找可执行文件;
–skip-functions: 忽略 shell 函数,只查找可执行文件;
–read-alias: 从标准输入读取别名定义;
–read-functions: 从标准输入读取 shell 函数定义;
指令演示:
补充知识:
别名:ls -l
为什么可以和 ll
等价
①:这里使用which
指令查找ls,显示出一段话alisa ls = 'ls --color=auto'
,表示ls
是ls --color=auto
的别名,当调用ls
的时候就相当于调用了ls --color=auto
。
②:这里演示了不同调用方式的区别,在第二次调用的时候使用/usr/bin/ls
对于查询的文件没有颜色标识,再添上长选项--color=auto
即恢复正常。进一步解释了当调用ls
的时候就相当于调用了ls --color=auto
。
③:这里主要解释了alisa
的用处,其中文译为别名,所以作为程序员也可以对这里的别名ls
进行更改,此处整改为zhangsan
之后,调用zhangsan
即可实现之前调用ls
指令的效果。
回归一开始的问题,再次利用which
指令查询后得知,本质还是别名的问题:
17. mv指令
mv命令是move的缩写,可以用来移动文件或者将文件改名(move 或 rename),经常用于备份文件或目录。
语法: mv [选项] 源文件或目录 目标文件或目录
功能:
- 视mv命令中第二个参数类型的不同(是目标文件还是目标目录),mv命令将文件重命名或将其移动至一个新的目录中。
- 当第二个参数类型是文件时,mv命令完成文件重命名,此时,源文件只能有一个(也可以是源目录名),它将给出的源文件或目录重命名为给定的目标文件名。
- 当第二个参数是存在的目录名时,源文件或目录可以有多个,mv命令将会把所有源文件均移动至目标目录中。
常用选项:
- -f:force 强制的意思,如果目标文件已经存在,不会询问而直接覆盖
- -i:若目标文件(destination)已经存在时,就会询问是否覆盖
指令演示:
普通文件和目录剪切方法一致,这里以普通文件的剪切为示例:
普通文件和目录重命名方法一致,这里以普通文件的重命名为示例:
并且上面两个功能可以混合使用,达成剪切到目标目录下之后还能重命名的效果:
在这里插入图片描述
18. more指令
语法: more [选项]
功能: more
命令,功能类似cat
常用选项:
- -n:指定输出行数
- q:退出more
指令演示:
调用more
指令之后,会自动显示文件内容,再文件内容填满屏幕之后便不再显示,并在左下角显示此时显示的内容占据整个文件内容百分比。如果想继续向下阅读,可以按一次回车,显示一行。
但是后续使用的时候并不推荐使用more命令,因为其只能使用回车键向下翻阅,不能使用上下键进行上下翻阅,所以很不方便。
所以在更推荐使用指令less。
19. less指令
- less 工具也是对文件或其他输出进行分页显示的工具,应该说是 linux 正统查看文件内容的工具,功能极其强大
- less 的用法比起 more 更加的有弹性,在 more 的时候,我们并没有办法前翻,只能往后看
- 但若使用了 less 时,就可以使用 [pageup] [pagedown] 等按键的功能来往前翻看文件,更容易用来看一个个文件的内容
- 除此之外,在 less 里头可以拥有更多的搜索功能,不止可以向下搜,也可以向上搜
语言:less [参数] 文件
功能:less 与 more 类似,但使用 less 可以随意浏览文件,而 more 仅能向前移动,却不能向后移动,而且 less 在查看之前不会加载整个文件。
选项:
- -i: 忽略搜索时的大小写
- -N: 显示每行的行号
- /字符串:向下搜索 “字符串” 的功能(并高亮)
- ?字符串:向上搜索 “字符串” 的功能(并高亮)
- n:重做之前一个搜索(与/或?有关)
- N:反向重做之前一个搜索(与/或?有关)
- q:quit
20. head指令
head 与 tail 就像它的名字一样的浅显易懂,它是用来显示开头或结束某个数量的文字区块,head 用来显示文件的开头至标准输出中,而 tail 想当然就是看文件的结尾。
语法:head [参数]... [文件]...
功能:head 用来显示文件的开头至标准输出中,默认head命令打印文件的开头10行。
选项:
-n <行数>
显示的行数
21. tail 指令
tail 命令从指定点开始将文件写到标准输出。使用 tail 命令的 -f 选项可以方便的查看正在改变的日志文件,tail -f filename 会把 filename 里最尾部的内容显示在屏幕上,并且不断刷新,使你看到最新的文件内容。
语法: tail 必要参数 [文件]
功能: 用于显示指定文件末尾内容,不指定文件时,作为输入信息进行处理。常用查看日志文件。
选项:
-f 循环读取
-n<数字> 显示行数
补充知识:
如果在一个大文件中,指定想查阅中间2000行到2020行的这个21行信息,就需要利用到管道这个概念。
管道|
:
这里的log.txt
是一个共有一万行数据的大文件,再执行的指令head -2020 log.txt | tail -21
这个指令之后就可以显示中间2000行到2020行的这个21行信息。
这个指令的逻辑是:首先针对log.txt
这个大文件先利用指令head -2020
取出前2021行信息,并将数据结果作为输入通过管道传输给下一条指令tail -21
继续做处理,再提取出后21行信息,即可达成目标。
其中管道不仅可以叠加一层,还可以多层叠加、层层套用。
这里的管道仅有一个入口一个出口,入口就是前面第一条语句执行的结果作为输入进入管道,经过中间各种指令的处理,在最后一个指令的处理完成之后,通过出口,作为最终结果输出。
22. date指令
指定格式显示时间:date +%Y:%m:%d
用法:date [OPTION]... [+FORMAT]
-
在显示方面,使用者可以设置欲显示的格式,格式设定为一个字符后接数字格式,其中常用的标记列表示如下:
- %H:小时(00…23)
- %M:分钟(00…59)
- %S:秒(00…61)
- %X:相当于%H:%M:%S
- %d:日(01…31)
- %m:月份(01…12)
- %s:完整年份(0000…9999)
- %F:相当于%Y-%m-%d
显示常规时间:
-
在设定时间方面:
- date -s //设置当前时间,只有root权限才能设置,其他用户只能查看。
- date -s 20080523 //设置成20080523,这样会将具体时间设置成00:00:00
- date -s 01:01:01 //设置具体时间,不会对日期做更改
- date -s “01:01:01 2008-05-23” //这样可以设置全部时间
- date -s “01:01:01 20080523” //这样可以设置全部时间
- date -s “2008-05-23 01:01:01” //这样可以设置全部时间
- date -s “2008-05-23 01:01:01” //这样可以设置全部时间
-
时间戳:
- 时间戳->时间戳:date +%s
- 时间戳->日期:date -d@1508749502
- Unix时间戳(英文为Unix epoch, Unix time, POSIX time 或 Unix timestamp)是从1970年1月1日 00:00:00 UTC(GMT的时区)开始经过的秒数,不考虑闰秒
显示时间戳:
时间戳转换成可视时间:
23. cal指令
cal命令可以用来显示公历(阳历)日历。公历是现在国际通用的历法,又称格列历,通称阳历。“阳历”又名“太阳历”,系以地球绕行太阳一周为一年,为西方各国所通用,故又名“西历”。
命令格式:cal 参数 [年份]
功能:用于查看日历等时间信息,如只有一个参数,则表示年份(1-9999),如有两个参数,则表示月份和年份。
常用选项:
- -3:显示系统前一个月、当前月、下一个月的日历
- -j:显示在当年中的第几天(一年日期按天算,从1月1号算起,默认显示当前月在一年中的天数)
- -y:显示当前年份的日历
指令演示:
24. find 指令
语法:find [路径] [选项]
功能:用于在文件树种查找文件,并作出相应的处理(可能访问磁盘)
常用选项
由于find的功能十分强大,所以其对应的选项也非常多,但作为初学者可以先掌握它最常用的选项,其余选项在后续学习中慢慢掌握
-name:按照文件名查找文件
指令演示:
因为find
寻找的结果最后是以绝对路径的方式呈现,可以理解为其是在Linux文件中从指令目录向下做深度优先遍历,匹配叶子结点。
补充知识:
which和find区别
find
是真的在系统目录树中查找,可以查找任意文件。which
只用来查找默认可执行程序。相当于默认在/usr/bin
路径下查找。which = find /usr/bin/ -name XXX
whereis指令:
功能:用于找到程序的源、二进制文件或者手册
在特定的路径下,查找与指定文件名近似匹配的指令或文档。
alias指令
功能:设置命令别名
alias指令设置的别名会在系统重启后失效。
25. grep指令
语法:grep [选项] 搜寻字符串 文件
功能:在文件中搜索字符串,将找到的行打印出来(行文本过滤工具)
常用选项:
- -i:忽略大小写的不同,所以大小写视为相同
- -n:顺便输出行号
- -v:反向选择,即显示没有
搜寻字符串
内容的那一行
指令演示:
同样在面对一个代码量十分庞大的项目中,如果想要阅读源代码首先就可以利用grep
指令,找到代码中的main函数的位置,开始阅读。
补充知识:
配合grep指令使用的其他命令
-
grep + wc + 管道 -> 统计符合筛选条件的行数
wc -l
:表示按行号进行计数,返回计数值 -
grep + ps + 管道 -> 寻找指定进程
26. zip指令
语法:: zip [压缩文件.zip] [目录或文件]
功能:将目录或文件压缩成zip格式
常用选项
- -r:递归处理,将指定目录下的所有文件和子目录一并处理
指令演示
如果是需要打包压缩目录或者目录下的子文件则需要使用-r选项,不带-r则用于打包压缩普通文件。
如果对目录不带-r打包压缩这只会压缩目录的顶层目录而已。
补充知识:
打包与压缩
什么是打包与压缩:
使用特定的算法,将文件进行合并或者压缩,减少体积。
实际上打包压缩是两个动作,但是可以看做是一个整体。
为什么需要打包压缩:
- 文件体积减少,节省资源。
- 压缩包在磁盘中存储,为磁盘节省空间。
- 压缩包通过网络传输,压缩包越小越节省带宽,降低网络传送的成本。
- 可以将多文件转化为一个文件,可以提高传输文件的容错性。
打包压缩的要求:
打包压缩之后进行解压解包需要保证能看到完整的文件和目录结构还要看到文件中的内容不能有缺失。
27. unzip 指令
语法:unzip [压缩文件/目录] [选项]
功能:解包并解压目录/文件
常用选项:
-d:将文件解压到指定目录下;
指令演示:
-
默认解压到当前目录
-
解压到其他路径
补充知识:
windows和Linux文件互传
要实现这个目的,首先需要了解一个工具rzsz,这个工具用于windows机器和Linux机器通过XShell传输文件,安装完毕之后可以通过拖拽的方式将文件上传上去。
yum install -y lrzsz
linux向windows传文件:
windows向Linux传文件:
28. tar 指令
语法:tar [选项] [文件/目录]
功能:将目录或文件压缩成tgz格式
常用选项
-c :建立一个压缩文件的参数指令(create 的意思);
-x :解开一个压缩文件的参数指令;
-t :查看 tarfile 里面的文件;
-z :是否同时具有 gzip 的属性?即是否需要用 gzip 压缩?
-j :是否同时具有 bzip2 的属性?亦即是否需要用 bzip2 压缩?
-v :压缩的过程中显示文件,这个常用,但不建议用在背景执行过程;
-f :使用档名,需要在 f 之后要立即接档名,不要再加参数;
-C : 解压到指定目录;
指令演示:
-
压缩文件目录到当前目录下
-
压缩文件过程显示文件
-
解压文件/目录到当前路径,并在解压过程中显示文件
-
解压文件/目录到指定路径,解压过程不需要显示过程
补充知识:
- 在使用 tar 时,-f 选项需要放在最后,其余选项,比如 -c -v -z -x 可以随意调换位置
- 同样tar指令,生成的tgz压缩包也可以实现windows和Linux系统之间的文件互相传递。
29. bc指令
bc指令可以很方便的进行浮点运算。
执行基本运算:
配合管道执行计算:
**补充:**后期可以配合管道将计算放在文件中最后统一使用bc进行处理。
30. uname 指令
语法:uname [选项]
功能:uname用来获取电脑和操作系统的相关信息;同时,uname可显示linux主机所用的操作系统的版本、硬件的名称等基本信息。
常用选项:
-a:详细输出所有信息,依次为内核名称,主机名,内核版本号,内核版本,硬件名,处理器类型 (体系结构/cpu架构),硬件平台类型,操作系统名称。
-r:输出部分信息,如内核版本、硬件名、处理器型 (体系结构/cpu架构)。
指令演示:
重要到热键
-
[Tab] 按键 – 具有『命令补全』和『档案补齐』的功能
即当我们输入一个命令或者路径的一部分,然后按一次 [Tab] (有的电脑需要按两次),Linux就会自动将该命令补全。
只选项具有唯一性的时候才会自动补全,否则会将符合要求的选项都显示出来,供我们使用。
-
[Ctrl]-c 按键 – 让当前的程序『停掉』(包括终止异常程序和废除当前命令行)
终止异常程序:
废除当前命令:
-
上下键 – 翻阅历史命令
-
[Ctrl]-r 按键 – 搜索历史命令
输入 Ctrl+r,然后输入关键字系统就会弹出对应的历史指令,我们按 <- -> 即可选中
Linux允许我们这样操作说明其操作系统内部应该是将之前的指令都记录了下来可以使用指令**hsitory**进行查看。
-
关机
语法:shutdown [选项];
常见选项
- -h:将系统的服务停掉后,立即关机;
- -r:在将系统的服务停掉之后就重新启动;
- -t second:-t 后面加秒数,即『过几秒后关机』的意思;
注意:虚拟机需要关机,但云服务器永远都不要关机。
图片中部分照片参考前辈野猪佩奇
相关文章:
Linux系统编程--基础指令(!!详细讲解+知识拓展)
第一讲 基础指令 我们现如今自己使用的电脑大部分是用的都是windows或者macOS,并配合上由微软和苹果开发的图形化界面,所以使用鼠标再屏幕上进行点击即可完成许多任务。但是作为操作系统的学习者,在linux的基础上不再使用图形化界进行操作…...
Python10天冲刺《Pydantic 是一个用于数据验证和设置管理的 Python 库》
Pydantic 是一个用于数据验证和设置管理的 Python 库,其核心功能围绕 数据验证、类型检查 和 模型配置 展开。以下是 Pydantic 的主要功能分类及其简要说明和示例: 1. 数据验证与类型检查 Pydantic 的核心功能是自动验证数据的类型、格式和约束条件。 …...
【工具】adverSCarial评估单细胞 RNA 测序分类器抵御对抗性攻击的脆弱性
文章目录 介绍代码参考 介绍 针对单细胞 RNA 测序(scRNA-seq)数据中健康细胞类型与病变细胞类型的检测,已有多项机器学习(ML)算法被提出用于医学研究目的。这引发了人们对于这些算法易受对抗性攻击的担忧,…...
机场围界报警系统的研究与应用
机场围界报警系统的研究与应用 摘要 本论文围绕机场围界报警系统展开深入研究,阐述了机场围界报警系统的重要性,对当前主流的机场围界报警技术原理、特点及应用场景进行详细分析,并探讨了现有系统存在的问题,最后对未来发展趋势进行了展望。研究表明,机场围界报警系统对…...
嵌入式操作系统
嵌入式操作系统是一种用途广泛的系统软件,通常包括与硬件相关的底层驱动软件、系统内核、设备驱动接口、通信协议、图形界面、标准化浏览器等。嵌入式操作系统负责嵌入式系统的全部 软、硬件资源的分配、任务调度,控制、协调并发活动。 嵌入式实时…...
预测性维护与传统维护成本对比:基于技术架构的量化分析
在工业 4.0 的技术演进浪潮中,设备维护模式正经历从经验驱动向数据驱动的变革。传统维护模式依赖固定周期巡检与故障后抢修,犹如 “蒙眼驾车”;而预测性维护借助物联网(IoT)、机器学习(ML)等技术…...
定位理论第一法则在医疗AI编程中的应用
引言 定位理论的核心在于通过明确目标、界定边界和建立差异化优势来占据用户心智中的独特位置。在医疗AI领域,定位理论的应用尤为重要,尤其是在医疗AI编程中,如何通过科学的定位确保技术与医疗本质的深度协同,而非技术主导的颠覆,是一个需要深入探讨的课题。本研究将深入剖…...
【macOS常用快捷键】
以下是 macOS 最常用快捷键列表,按使用频率由高到低分类整理,涵盖日常操作、效率工具及系统控制,助你快速提升使用效率: 一、基础高频操作 快捷键功能说明Command C复制选中内容Command V粘贴Command X剪切Command Z撤销上一…...
【Flask】ORM模型以及数据库迁移的两种方法(flask-migrate、Alembic)
ORM模型 在Flask中,ORM(Object-Relational Mapping,对象关系映射)模型是指使用面向对象的方式来操作数据库的编程技术。它允许开发者使用Python类和对象来操作数据库,而不需要直接编写SQL语句。 核心概念 1. ORM模型…...
信息安全导论 第八章 入侵检测技术
目录 一、入侵检测系统概述 二、入侵检测技术 三、入侵检测系统实例 1. Snort简介 2. Snort架构 3. Snort规则示例 4. 检测流程 四、入侵防御系统 1. IPS vs. IDS 2. IPS分类 3. IPS核心技术 4. IPS优势 5.总结 一、入侵检测系统概述 定义 检测、识别和隔离对系统…...
每日c/c++题 备战蓝桥杯(P1886 滑动窗口 /【模板】单调队列)
洛谷P1886 滑动窗口【模板】单调队列详解 题目描述 给定一个长度为n的整数序列,要求输出所有长度为k的连续子数组的: 最小值(第一部分输出)最大值(第二部分输出) 数据范围: 1 ≤ k ≤ n ≤…...
GStreamer开发笔记(三):测试gstreamer/v4l2+sdl2/v4l2+QtOpengl打摄像头延迟和内存
若该文为原创文章,转载请注明原文出处 本文章博客地址:https://blog.csdn.net/qq21497936/article/details/147714800 长沙红胖子Qt(长沙创微智科)博文大全:开发技术集合(包含Qt实用技术、树莓派、三维、O…...
Level DB --- MergingIterator
MergingIterator 是 Level DB中重要的类,在某一个level做多个file数据Compaction的时候,这多个file之间数据如何高效的组织和比较,这个时候用到了MergingIterator。 关键member & member function MergingIterator继承了Iterator&#…...
第六章 流量特征分析-蚁剑流量分析(玄机靶场系列)
先分享几个在Wireshark中好用的几个指令: 显示 POST 请求:http.request.method "POST",用于显示所有 POST 请求的 HTTP 数据包。显示 GET 请求:http.request.method "GET",仅显示包含 GET 请求…...
Redis数据结构ZipList,QuickList,SkipList
目录 1.ZipList 1.2.解析Entry: 1.3Encoding编码 1.4.ZipList连锁更新问题 2.QuickList SkipList跳表 RedisObject 五种数据类型 1.ZipList redis中的ZipList是一种紧凑的内存储存结构,主要可以节省内存空间储存小规模数据。是一种特殊的双端链表…...
Cordova开发自定义插件的方法
Cordova开发自定义插件的方法 文章目录 Cordova开发自定义插件的方法[TOC](文章目录) 一、自定义插件二、android下的自定义插件开发(一)步骤1、建立cordova工程2、建立自定义插件(1) 安装plugman(2) 用plu…...
Dify框架面试内容整理-如何评估基于Dify开发的AI应用的效果?
评估基于 Dify 开发的 AI 应用效果,需要从 用户体验、技术性能 与 业务价值 三个层面综合衡量。以下是详细的评估框架,涵盖三个关键点: 用户反馈与满意度...
基于python的哈希查表搜索特定文件
Python有hashlib库,支持多种哈希算法,比如MD5、SHA1、SHA256等。通常SHA256比较安全,但MD5更快,但可能存在碰撞风险,得根据自己需求决定。下面以SHA256做例。 import hashlib import os from typing import Dict, Lis…...
XZ03_Overleaf使用教程
一.Overleaf简介 Overleaf 是一款基于云端的 LaTeX 协作编辑平台,专为学术写作、技术文档和出版场景设计。以下从核心技术、功能特性、架构设计、应用场景、商业模式到未来发展趋势进行全方位解析,帮助您深度理解其核心价值与技术逻辑。 Overleaf 核心定…...
Ubuntu K8S(1.28.2) 节点/etc/kubernetes/manifests 不存在
Ubuntu K8S(1.28.2) 节点/etc/kubernetes/manifests 不存在 在查看日志(journalctl -xefu kubelet)时发现各节点/etc/kubernetes/manifests 不存在,但主节点没有异常 21080 file.go:104] "Unable to read config path" err"…...
【Linux网络#17】TCP全连接队列与tcpdump抓包
一、TCP 相关实验 测试 1. Listen 的第二个参数 LISTEN(2) Linux Programmers Manual NAMElisten - listen for connections on a socketSYNOPSIS#include <sys/types.h&g…...
JVM——Java对象的内存布局
Java对象的内存布局 在Java程序中,对象的内存布局是一个关键的底层概念。它不仅影响着对象的创建、使用和销毁的效率,也对垃圾回收、并发控制等机制有着深远的影响。下面我们将深入探讨Java对象的内存布局,包括对象的构成、内存分配、压缩指…...
USB资料摘录for后期,bus hound使用
一、STM32F105 USB调试:专家级错误分析与调试技巧: 在实时操作系统(RTOS)中进行USB调试时,开发者需要考虑任务调度、中断优先级和资源共享等问题。STM32F105在支持RTOS的环境中调试USB,应重点分析USB驱动与RTOS内核之间的交互,以及如何避免可能的竞态条件。 在商业级应用…...
防止交叉验证中的数据泄露:提升模型在实际环境中的性能
防止交叉验证中的数据泄露:提升模型在实际环境中的性能 你刚刚完成了一个机器学习模型的训练,其验证准确率达到了95%。交叉验证结果显示性能稳定,项目相关方对此表示认可,正准备将模型部署到生产环境。但是现实情况却令人沮丧——…...
Debezium TableSchemaBuilder详解
Debezium TableSchemaBuilder详解 1. 类的作用与功能 1.1 核心作用 TableSchemaBuilder是Debezium中负责构建表Schema的核心类,主要功能包括: Schema构建:将数据库表结构转换为Kafka Connect的Schema定义主键处理:生成表的主键Schema值Schema处理:生成表的非主键字段Sc…...
25:三大分类器原理
1.分类的逻辑; 2.统计学与数据分析。 ************************ Mlp 多层感知系统 GMM 高斯混合模型-极大似然估计法 SVM 支持向量机建立一个超平面作为决策曲面,使得正例和反例的隔离边界最大化 Knn 1.MLP整个模型就是这样子的,上面…...
osquery在网络安全入侵场景中的应用实战(二)
背景 上次写了osquery在网络安全入侵场景中的应用实战(一)结果还不错,这次篇目二再增加一些场景。osquery主要解决的时员工被入侵之后电脑该如何溯源取证的问题。通常EDR会有日志,但是不会上报全量的日志。发现机器有恶意文件需要上级取证的时候,往往是比较麻烦的,会有这…...
排序用法(Arrays.sort)
排序范围: 对 res 数组中索引从 0到4 的行进行排序(因为结束索引5不包含)相当于排序 res[0] 到 res[4] 这5行 比较规则: o1 和 o2 是二维数组中的两行(如 [8,2] 和 [6,7])o1[0] - o2[…...
2025年最新Linux的Redis主从集群搭建
一:概述 Redis(Remote Dictionary Server)是一个开源的、高性能的键值存储系统,通常被用作数据库、缓存或消息中间件。它以内存存储为主,支持多种数据结构,并具备持久化、高可用、分布式等特性,…...
Oracle OCP认证考试考点详解083系列09
题记: 本系列主要讲解Oracle OCP认证考试考点(题目),适用于19C/21C,跟着学OCP考试必过。 41. 第41题: 题目 解析及答案: 关于应用程序容器,以下哪三项是正确的? A) 它可以包含单个…...
走出 Demo,走向现实:DeepSeek-VL 的多模态工程路线图
目录 一、引言:多模态模型的关键转折点 (一)当前 LMM 的三个关键挑战 1. 数据的真实性不足 2. 模型设计缺乏场景感知 3. 语言能力与视觉能力难以兼顾 (二)DeepSeek-VL 的根本出发点:以真实任务为锚点…...
Kotlin 作用域函数全解析:let、run、with、apply、also 应该怎么选?
Kotlin 提供了一套优雅的“作用域函数”(Scope Functions),包括:let、run、with、apply 和 also。它们看起来相似,行为上也有交集,但却各有侧重。掌握它们的使用场景,不仅能让代码更简洁&#x…...
Python 矩阵运算:从理论到实践
Python 矩阵运算:从理论到实践 在数据分析、机器学习以及科学计算等诸多领域,矩阵运算均扮演着极为重要的角色。借助 Python 的 NumPy 库,我们可以便捷地实现各类矩阵运算。本文将深入探讨矩阵运算的数学原理,并通过实例演示如何…...
系统架构-层次式架构设计
层次式体系结构是最通用的架构,大部分的应用会分成表现层(展示层)、中间层(业务层)、数据访问层(持久层)和数据层 表现层架构设计 使用XML设计表现层 使用UIP框架设计表现层,UIP将…...
《Python星球日记》第29天:Flask进阶
名人说:路漫漫其修远兮,吾将上下而求索。—— 屈原《离骚》 创作者:Code_流苏(CSDN)(一个喜欢古诗词和编程的Coder😊) 专栏:《Python星球日记》,限时特价订阅中ing 目录 一、重温 Flask 框架二、路由与视图1. 动态路由2. 路由装饰器三、模板渲染1. Jinja2 模板语法2.…...
Baklib知识中台:智能服务架构新实践
智能服务架构四库体系 Baklib 知识中台的核心竞争力源于其独创的四库体系架构设计。该体系通过知识资源库、业务场景库、智能模型库和服务规则库的有机联动,构建起覆盖知识全生命周期的管理闭环。其中,知识资源库依托自然语言处理技术实现多源异构数据的…...
CBAM透视镜:穿透软件架构成本迷雾的评估范式
文章目录 一、引言二、CBAM 基础理论2.1 CBAM 的定义与概念2.2 CBAM 的核心原理2.2.1 成本效益分析的基本逻辑2.2.2 定量化决策过程 2.3 CBAM 与其他软件架构评估方法的比较2.3.1 与 ATAM 对比2.3.2 与 SAAM 对比 三、CBAM 在软件架构中的应用流程3.1 确定评估目标3.2 列出架构…...
macbook install chromedriver
# 打开 Chrome 访问以下地址查看版本 chrome://version/# 终端查看版本号 (示例输出: 125.0.6422.113) /Applications/Google\ Chrome.app/Contents/MacOS/Google\ Chrome --version测试:...
Java 一战式学习指南,很详细
java基础 一、简介 1.1 JDK Java Develop Kit : Java的开发包,包含了Java的类库、执行Java所需的允许环境、各种开发辅助工具等... JDK 分为 Oracle JDK 和 Open JDK ,Oracle JDK需要商业许可证,是收费的。Open JDK 则是免费的。 1.2 Ja…...
从零开始开发纯血鸿蒙应用之NAPI
从零开始开发纯血鸿蒙应用 〇、前言一、解耦良器——Adapter二、详学 NAPI1、注册自定义的 NAPI1.1、Index.d.ts1.2、napi_property_descriptor 数组 2、读取参数2.1、读取字符类型数据2.1、读取数字类型 3、封装返回值4、C/C 调用 ArkTS 方法5、自定义 C 类的透传 三、总结坑点…...
立夏三候:蝼蝈鸣,蚯蚓出,王瓜生
今(5月5日)天是立夏节气,尽管本“人民+体验官”已是最畏惧感到气喘吁吁这夏天气候之老龄人,但还是要推广人民日报官方微博文化产品《文化中国行看立夏节气》。 人民微博着重提示“立夏三候”三个方面:“一候…...
Nuxt3还能用吗?
Nuxt3还能用吗? 前一段时间,我完成了整个产品,从Nuxt到Next的迁移,因为面临了一些在框架层面就无法解决的问题。 payload json化 在所有的的Nuxt中,我们都能看到有这样一个东西。 其实有这个东西也很正常࿰…...
专业课复习笔记 4
前言 实际上对于我的考研来说,最重要的两门就是数学和专业课。所以从今天开始,我尽可能多花时间学习数学和专业课。把里面的知识和逻辑关系理解清楚,把常考的内容练习透彻。就这样。 寻址方式 立即数寻址 操作数在指令里面直接提供了。 …...
[人机交互]交互设计
零.本章的主要目标 本章主要目标总结 区分良与非良交互设计,突出产品可用性差异阐述交互设计与HCI及其他领域的关系解释可用性概念概述交互设计过程涉及的内容概述交互设计中所使用的指南形式从可用性目标和原理角度,评估并解释产品的成败 一.什么是交…...
LeetCode 热题 100 17. 电话号码的字母组合
LeetCode 热题 100 | 17. 电话号码的字母组合 大家好,今天我们来解决一道经典的算法题——电话号码的字母组合。这道题在 LeetCode 上被标记为中等难度,要求给定一个仅包含数字 2-9 的字符串,返回所有它能表示的字母组合。下面我将详细讲解解…...
【从零开始学习微服务 | 第一篇】单体项目到微服务拆分实践
目录 引言 一、选择聚合结构进行拆分的优势 二、微服务模块创建步骤 (一)引入 pom 文件与修改 (二)创建 Spring Boot 启动类 (三)搭建基本包结构 三、配置文件的引入与调整 四、业务代码的引入与注意…...
微前端qiankun动态路由权限设计与数据通信方案
思路: 权限控制中心化:主应用负责统一的管理权限,子路由上报路由信息 动态路由加载:根据用户权限动态注册可用路由 数据通信机制 主应用和子应用:通过qiankun提供的props和全局状态 子应用和子应用:通过…...
VTK 数据读取/写入类介绍
概述 VTK提供了多种数据读取和写入类,支持各种格式的输入输出操作,包括图像数据、多边形数据、结构化/非结构化网格数据等。 常用VTK读取类 vtkSTLReader 读取STL格式文件 属性: FileName - 要读取的STL文件名 方法: SetFileName(const char*) - 设置文件名 GetFileName…...
41.寻找缺失的第一个正数:原地哈希算法详解
文章目录 引言问题描述方法思路:原地哈希算法算法步骤 完整代码实现关键代码解析复杂度分析示例说明总结 引言 在算法面试和数据处理中,寻找缺失的第一个正数是一个经典问题。题目要求给定一个未排序的整数数组,找到其中缺失的最小正整数&am…...
项目实战-基于信号处理与SVM机器学习的声音情感识别系统
目录 一.背景描述 二.理论部分 三.程序设计 编程思路 流程图 1.信号部分 创建数据 generate_samples.py 头文件 生成函数 generate_emotion_sample 传入参数 存储路径 生成参数 创建基础正弦波信号 调制基础正弦波 对于愤怒可以增加噪声 归一化信号 存储 主函…...