一.linux命令的格式
linux命令的格式:command [-options] [parameter]
-
command:命令,表示要执行的操作,可以是系统命令、自定义命令或别名等。
-
options:选项,用于指定命令的具体行为或修改其默认行为,通常以单个破折号
-
开头,可以有多个选项,也可以合并在一起。 -
parameter:参数,用于提供命令操作所需要的具体内容或数据,可以有多个参数,多个参数之间通常以空格分隔。
其中[-options] , [parameter]是可选的.
举例来说,ls -l /home
命令表示要列出 /home
目录下的文件和子目录,并以长格式显示其详细信息,其中ls是命令, -l
是选项,/home
是参数。
在Linux中,命令和选项通常是区分大小写的,而参数则不区分大小写。另外,可以使用通配符、管道符、重定向符等特殊字符来扩展命令的功能和操作。
二.linux常见基础命令
1.ls命令
ls命令是列出指定目录中的文件和子目录,其名称ls是“List”的缩写,意为“列表”。。
ls命令的基本语法:ls [选项] [目录名]
其中,选项和目录名都是可选的。如果省略目录名,则默认列出当前工作目录中的文件和子目录。
常用的选项如下:
-a
:all,显示所有文件和子目录,包括以.开头隐藏文件。-l
:list,以长格式显示文件和子目录的详细信息 ,包括文件权限、所有者、大小、创建时间等。-h
:humain readable,需要和 -l 选项搭配使用, 以人类可读的方式显示文件和子目录大小,例如“1K”、“2M”等。
常见组合方式如下表所示
方式 | 解释 |
ls | 列出当前工作目录中的所有文件和子目录. |
ls -a | 列出当前工作目录中的所有文件和子目录,包括以.开头隐藏文件. |
ls -l | 以长格式显示当前工作目录中的所有文件和子目录,命令格式也可以缩写为ll. |
ls -l -h | 以长格式并且人类可读的方式显示当前工作目录中的所有文件和子目录。 |
ls -a -l | 以长格式显示当前工作目录中的所有文件和子目录,包括以.开头隐藏文件 |
ls -a -l -h | 以长格式并且人类可读的方式显示当前工作目录中的所有文件和子目录,包括以.开头隐藏文件。 |
2.cd命令
cd
命令是用于切换当前工作目录的命令,其名称cd是“Change Directory”的缩写,意为“切换目录”。
cd命令的基本语法:cd [目录路径]
其中,[目录路径]
参数是用户要切换到的目录路径,可以是绝对路径或相对路径。
当没有指定任何参数时,cd
命令将切换到当前用户的主目录(也称为家目录)。超级管理员用户的主目录为 /root ,普通用户的主目录为 /home/用户名
。
当指定了一个有效的目录路径作为参数时,则cd
命令将切换到该目录。如果目录路径是相对路径,则它将相对于当前工作目录进行解析;如果是绝对路径,则它将从根目录开始解析。
cd命令也可以和特殊路径符联合使用,常见组合方式如下表所示.
命令 | 描述 |
---|---|
cd / | 进入根目录 |
cd ~ | 进入当前用户的主目录(家目录),如:超级管理员用户: /root | 普通用户: /home/用户名 |
cd . | 不做任何改变,仍然停留在当前目录。 |
cd .. | 进入上级目录 |
cd ../.. | 进入上上级目录 |
cd - | 进入上一个工作目录 |
3.pwd命令
pwd
命令是用于显示当前工作目录的命令。其名称pwd
是“Print Work Directory”的缩写,意为“打印当前工作目录”。
pwd命令的基本语法:pwd
当在终端输入该命令后,系统会返回当前所在工作目录的绝对路径。
4.mkdir命令
mkdir
命令是用于创建一个或多个新目录,其名称mkdir是“Make Directory”的缩写,意为“生成目录”。
mkdir命令的基本语法:mkdir [选项] 目录名
其中,目录名
表示要创建的目录名称,可以是相对路径或绝对路径,也可以是多个目录名,用空格分隔。而 [选项]
是可选的,用于指定创建目录的具体方式。
常用的选项如下:
-p
:parents,递归创建目录,若父目录不存在则一同创建。-m
:mode,设置创建目录的权限模式。
5.touch命令
touch命令的作用是 [创建一个新的空文件] 或者 [修改文件的访问和修改时间]。如果文件不存在,则创建一个新的空文件;如果文件存在,则修改文件的访问和修改时间.touch /tʌtʃ/ 就是个英文单词,意为“触摸”。
touch命令的基本语法:touch [选项] 文件名
其中,文件名表示要修改时间的文件名称,可以是相对路径或绝对路径,也可以是多个文件名,用空格分隔。而选项是可选的,用于指定修改时间的具体方式。
常用的选项如下:
- -a:access,只修改文件的访问时间(access time),不修改文件的修改时间(modification time);
- -m:modification,只修改文件的修改时间(modification time),不修改文件的访问时间(access time);
- -c:no-create,如果文件不存在,则不创建文件。这个选项通常和其他选项一起使用,
例如:
#表示如果 test.txt 文件不存在,则不创建该文件,
#同时将其修改时间设置为 2022 年 1 月 1 日 0 点 0 分。
touch -c -t 202201010000.00 test.txt,
6.cp命令
cp命令是用于将一个或多个文件或目录从一个位置复制到另一个位置.其名称cp是“copy”的缩写,意为“复制”。
cp命令的基本语法:cp [选项] 源文件 目标文件
其中,源文件
表示要复制的文件或目录,目标文件
表示复制到的目标位置。
常用的选项如下:
-r
:recursive,递归复制整个目录树,用于复制目录。-f
:force,表示如果目标文件已经存在的话,则强制覆盖目标文件,不会提示用户是否覆盖目标文件。
使用cp命令可能会出现以下情况:
情况1:目标目录不存在
- 如果目标路径是一个不存在的文件,
cp
命令会将源文件复制到目标路径,并将其命名为目标文件的名称。 - 如果目标路径是一个不存在的目录,
cp
命令会创建该目录,并将源文件或目录复制到该目录下。
情况2:目标路径已存在同名的文件或目录
- 如果目标路径已经存在同名的文件,
cp
命令会覆盖目标文件,并将源文件复制到目标文件所在的目录中。 - 如果目标路径已经存在同名的目录,
cp
命令会将源文件或目录复制到目标目录下,并保持其原有的名称。
7.mv命令
mv
命令是用于移动文件或目录,或者给文件或目录重命名.其名称mv是“move”的缩写,意为“移动”。
mv命令的基本语法:mv [选项] 源文件或目录 目标文件或目录
其中,源文件或目录
表示要移动或重命名的文件或目录名称,可以是相对路径或绝对路径。而目标文件或目录
表示移动或重命名后的目标文件或目录名称,可以是相对路径或绝对路径。
常用的选项如下:
-r
:recursive,递归移动,用于移动目录及其下的所有文件和子目录。-f
:force,强制覆盖目标文件或目录,不会提示用户是否覆盖目标文件。
使用mv命令可能会出现以下情况:
情况1:目标文件或目录不存在:
- 如果目标路径是一个不存在的文件,
mv
命令会将源文件或目录重命名为目标文件的名称,并将其移动到目标文件所在的目录中 - 如果目标路径是一个不存在的目录,
mv
命令会将源文件或目录移动到该目录下,并将其命名为目标文件或目录的名称。
情况2:目标路径已存在同名的文件或目录:
- 如果目标路径已经存在同名的文件,
mv
命令会覆盖目标文件,并将源文件移动到目标文件所在的目录中。 - 如果目标路径已经存在同名的目录,
mv
命令会将源文件或目录移动到目标目录下,并保持其原有的名称。
8.rm命令
rm命令是用于删除文件或目录.其名称rm是“remove”的缩写,意为“删除”。
rm命令的基本语法:rm [选项] 文件或目录
其中,选项是可选的,用于指定删除操作的具体行为或修改其默认行为,文件或目录则是要被删除的对象。
常用的选项如下:
-r
:recursive,递归删除,用于删除目录及其下的所有文件和子目录。-f
:force,强制删除文件或者目录,不进行任何提示。
rm命令通常和通配符联合使用,通配符是用于匹配文件名的字符,常用的通配符包括 *
、?
、[]
等,它们可以帮助我们快速地定位文件名,并进行批量操作。
通配符有三种常见类型:
- 星号(*):匹配零个或多个的任意字符。
- 问号(?):匹配任意一个字符,不包括空字符。
- 中括号([]):匹配指定范围内的任意一个字符,也可以用于表示排除范围。
常见组合方式如下表所示.
命令 | 描述 |
---|---|
rm *.txt | 删除所有以 .txt 扩展名结尾的文件。 |
rm test* | 删除以 test 开头的所有文件。 |
rm -r mydir* | 递归删除以 mydir 开头的所有目录及其内容。 |
rm \* | 删除所有文件和目录。 |
rm file?.txt | 删除所有名字为 file ,并且后面有任意一个字符加上,同时 以.txt 扩展名结尾的文件。 |
re [abc].txt | 删除匹配文件名为 a.txt 、b.txt 或 c.txt 的文件; |
rm [! abc].txt | 删除匹配文件名不为 a.txt 、b.txt 或 c.txt 的文件; |
rm [0-9].txt | 删除匹配文件名为 0到9的txt 文件 |
9.cat命令解析
cat命令用于显示或者连接文件。其名称是“concatenate”的缩写,意为“连接”。
cat命令的基本语法:cat [选项] 文件...
其中,[选项]
是可选的,可以使用不同的选项实现不同的功能,文件
是要操作的文件名,可以指定多个文件名,多个文件名之间使用空格分隔。
常用的选项如下:
- -n:number, 显示每行的行号;
- -E:show-ends, 在每行末尾显示 $ 符号;
- -b:number-nonblank, 仅对非空行显示行号;
- -s:squeeze-blank, 将多个空白行压缩成一个空白行。
扩展分析:
命令 | 功能 | 区别 |
---|---|---|
cat | 读取文件内容,并将其输出到标准输出(屏幕或终端)。 | 没有分页功能,一次性将整个文件输出到屏幕或终端,适合查看较小的文件。 |
more | 分页显示文件内容,每次只显示一页内容,支持滚动和翻页操作。 | 可以按空格键翻页、按 Enter 键向下滚动一行、按 / 加关键字搜索、按 q 退出。但是,more 无法回滚,即无法回到上一页,而且无法搜索上一页的内容。适合查看中等大小的文件。 |
less | 分页显示文件内容,与 more 相比,功能更加强大。 | 可以滚动、翻页、搜索、查找、回滚、前往指定行等操作,同时还支持更多的定制选项和命令,比如设置标记、打印行号、显示特定行数等。适合查看大型文件。 |
需要注意的是,more 和 less 命令在分页显示文件时,都会占用终端屏幕的全部空间,当屏幕内容不足以显示一页时,才会进行分页。而使用 cat 命令时,所有内容都会一次性输出到屏幕上,可能会导致内容超出屏幕范围。
10.which命令
which 命令用于查找并显示指定命令的绝对路径。
which命令的基本语法:which [选项] 命令...
其中,[选项] 是可选的,可以使用不同的选项实现不同的功能,命令 是要查找的命令名,可以指定多个命令名,多个命令名之间使用空格分隔。
常用的选项如下:
- -a:all,查找所有符合条件的命令,而不仅仅是第一个被找到的命令。
- -i:ignore-case,忽略大小写。
11.find命令
find
命令用于在指定目录下查找文件和目录.
find命令的基本语法:find [path] [expression]
其中,[path]
表示要查找的目录路径,可以是相对路径或绝对路径,也可以是多个路径,多个路径之间用空格分隔,如果未指定路径,则默认为当前目录.[expression]
表示要查找的条件表达式,可以是一个或多个表达式,多个表达式之间用逻辑运算符连接。
常用的选项如下:
-name pattern
:按照文件名查找,pattern
是文件名的匹配模式,支持使用通配符*
和?
-type type
:按照文件类型查找,type
是文件类型,常用的类型有f
(普通文件)、d
(目录)、l
(符号链接)等。-size
[+-]n[cwbkMG]
:按照文件大小查找,支持使用+
或-
表示大于或小于指定大小,n
是文件大小,后面的字符[cwbkMG]
表示单位,c
(字节)、w
(字数)、b
(块数)、k
(KB)、M
(MB)或G
(GB)。-mtime n
:按照文件修改时间查找,支持使用+
或-
表示在指定天数前或后,n是一个整数表示天数。-user name
:按照文件拥有者查找,name
是拥有者的用户名。-group groupname
:按照文件所属组查找.-perm mode
:按照文件权限查找,mode
是文件权限,可以使用 8 进制或符号表示法,例如644
或u=rw,g=r,o=r
。-exec command {} \;
:对查找到的文件执行指定的命令,command
是命令,{}
表示匹配到的文件名,\;
表示命令结束。
例如:
# 在 /home 目录下查找所有名字中包含 test 的普通文件,并输出它们的绝对路径
find /home -type f -name '*test*' -print
# 查找 /var/log 目录下修改时间在 7 天以前的日志文件,并删除它们
find /var/log -type f -mtime +7 -exec rm {} \;
12.grep命令
grep 命令用于查找文件里符合条件的字符串或正则表达式。其名称grep 是“Global Regular Expression Print”的缩写,意为“全局正则表达式打印”。
grep命令的基本语法: grep [options] pattern [file...]
其中,options
为可选参数,用于指定搜索的方式和输出格式,pattern
为搜索的文本模式,可以是字符串或正则表达式,file
是要搜索的文件名,可以指定多个文件,如果不指定文件,则默认从标准输入读取数据进行搜索。
常用的选项如下:
-c
:count,只显示匹配的行数。-i
:ignore-case,忽略大小写进行匹配。-l
:files-with-matches,只打印匹配的文件名。-n
:line-number,在输出的每一行前面加上行号。-r
:recursive,递归地搜索指定目录下的所有文件和子目录。-v
:invert-match,反转匹配,输出不匹配的行。
grep命令通常和管道符联合使用.
管道符 "|" 用于将一个命令的输出传递给另一个命令的输入,从而实现多个命令的组合.
grep命令和管道符联合通常使用的格式:command | grep pattern
其中,command
代表任何一个Linux命令,pattern
代表需要在 command
命令的输出结果中查找的文本模式。
13.wc命令
wc命令用于统计文件中行数、字数、字符数。其名称是“word count”的缩写,意为“字数”。
wc命令的基本语法:wc [选项] [文件名]
其中,选项和文件名都是可选的,如果不指定文件名,则默认从标准输入读取内容,即可通过键盘输入。
常用的选项如下:
- -l:lines,仅统计行数。
- -w:words,仅统计单词数。
- -c:bytes,仅统计字符数。
- -m:characters,仅统计字符数,但是会把中文字符也算作一个字符。
- -L:max-line-length,仅统计最长行的长度。
14.echo命令
echo命令用于用于在终端输出字符串或者变量。echo /ˈekəʊ/ 就是个英文单词,意为“回响”。
echo命令的基本语法:echo [选项] [字符串或变量]
其中 [选项]
是可选的.echo
命令也可以输出命令的执行结果。通常使用反引号(``)或 $()
包含命令来执行命令并将其输出作为 echo
的参数,例如 echo `date` 或者echo $(date).
常用的选项如下:
-n
:no newline,不换行输出。-e
:enable interpretation of backslash escapes,开启转义字符的解析,例如\n
代表换行符,\t
代表制表符等。-E
:disable interpretation of backslash escapes,关闭转义字符的解析,将所有的反斜杠\
输出为字面值。
echo命令通常和重定符联合使用.
重定向符用于控制输入输出的方向,包括输出重定向、输入重定向和错误输出重定向。重定向符号分为两类,一类是输出重定向符,包括">"和">>",另一类是输入重定向符,包括"<"和"<<"。此外,还有错误输出重定向符号"2>"和"2>>"。
常见的重定向符号及其作用如下:
符号 | 作用 |
---|---|
> | 输出重定向,将命令的标准输出写入到指定文件中,如果文件不存在,则创建文件;如果文件已存在,则清空文件内容后写入新内容 |
>> | 追加重定向,将命令的标准输出追加写入到指定文件中,如果文件不存在,则创建文件 |
< | 输入重定向,将文件内容作为命令的标准输入 |
<< | 输入重定向,将多行文本作为命令的标准输入 |
2> | 错误输出重定向,将命令的错误输出写入到指定文件中,如果文件不存在,则创建文件;如果文件已存在,则清空文件内容后写入新内容 |
2>> | 追加错误输出重定向,将命令的错误输出追加写入到指定文件中,如果文件不存在,则创建文件 |
echo命令和重定符联合通常使用的格式:echo [选项] [字符串或变量]
> |
>> 文件名
其中 >代表将将echo
命令输出的内容覆盖到文件中,
>>代表将echo
命令输出的内容追加到文件末尾.
15.tail命令
tail
命令可以用来显示文件的末尾内容,默认情况下显示文件的后 10 行内容,常用于查看日志文件。tai /teɪl/ 就是个英文单词,意为“尾”。
echo命令的基本语法:tail [选项]... [文件]...
其中,[选项]
是可选的,[文件]
是要查看的文件名,可以同时指定多个文件名,多个文件名之间用空格分隔。
常用的选项如下:
-f
:follow,一直跟踪文件的最新信息,类似于实时日志监控。-n num,
:lines,显示文件的最后num
行内容,默认为10行。-c num
:bytes,显示文件的最后num
个字节内容。-q
:quiet,表示禁止在输出中显示文件名。
除此之外,tail
命令还可以使用+num
选项来指定从文件的第num
行开始显示,
例如:
#显示file.txt文件从第100行开始的所有内容。
tail +100 file.txt
可以从下图看到类似于实时日志监控的样式.
需要注意的是,使用-f
选项时,要按Ctrl+c
组合键来退出实时跟踪模式。
扩展分析:
提到tail命令,必须说到与它对应的head命令.
head
命令用于显示文件的开头部分,默认情况下显示文件的前 10 行内容。
head命令的基本语法:head [选项] [文件...]
其中,[选项]
是可选的,[文件...]
是要显示内容的文件名,可以指定多个文件名,多个文件名之间用空格分隔。
常用选项如下:
-n
:lines,指定要显示的行数。-c
:bytes,指定要显示的字节数。-q
:quiet,禁止显示文件名。当处理多个文件时,不显示每个文件的文件名。-v
:verbose,显示文件名。当处理多个文件时,显示每个文件的文件名。
默认情况下,head
命令会显示文件的前 10 行内容。如果没有指定文件名,则从标准输入中读取内容并进行处理。head
命令通常与其他命令、管道符等组合使用,用于查看文件的开头部分或提取所需的信息。
16.vi/vim命令
Vi:Vi 是一个经典的文本编辑器,也是许多 Unix-like 系统默认提供的编辑器。它具有简洁的界面和强大的编辑功能,可以在命令模式、插入模式和底行模式之间切换。Vi 遵循 Unix 哲学,强调模块化和可组合性,使用户可以通过简单的命令和快捷键完成各种编辑任务。
Vim:Vim(Vi Improved)是 Vi 编辑器的增强版本,是一个高度可定制的文本编辑器。Vim 继承了 Vi 的设计理念和大部分功能,并添加了许多新特性和改进,如语法高亮、多级撤销、多窗口编辑等。Vim 在 Vi 的基础上提供了更多的功能和灵活性,使得用户可以根据自己的需求进行个性化配置和扩展。
vi/vim命令的基本语法:vi/vim [选项] 文件名
vi/vim命令的三种模式如下图所示:
命令模式(Command Mode):也称为普通模式或命令行模式。
插入模式(Insert Mode):也称为编辑模式或输入模式。
底行模式(Ex Mode):也称为底线命令模式或末行模式。
退出方式:
- q:直接退出编辑器.
- q!:文件放弃所有修改,强制退出编辑器.
- wq:文件修改保存并退出编辑器.
- wq!:文件修改强制保存并退出编辑器.
其中 w:write(写入).\ q:quit(退出)