
WechatIMG621.jpeg

Linux 命令基础入门.jpg
| 常用参数简称 |
参数全称 |
描述 |
| -a |
--all |
列出目录下的所有文件,包括以"."开头的隐含文件 |
| -l |
|
除了文件名之外,还将文件的权限、所有者、文件大小等信息详细列出来 |
| -h |
--human-readable |
以容易理解的格式列出文件大小 |
| -t |
|
以文件修改时间排序 |
# 列出/usr文件夹下的所有文件和目录的详细资料
$ ls -al /usr
# 列出当前目录中所有以"y"开头的文件目录的详细内容
$ ls -al y*
# 以容易理解的格式列出/usr目录中所有的文件目录的大小
$ ls -alh /usr
# 从当前目录进入系统根目录
$ cd /
# 从当前目录进入父目录
$ cd ..
# 从当前目录进入当前用户主目录
$ cd ~
# 从当前目录进入上次所在目录
$ cd -
| 常用参数简称 |
参数全称 |
描述 |
| -P |
|
显示实际物理路径,而非使用连接(link)路径 |
| -L |
|
当目录为连接路径时,显示连接路径 |
# 显示当前目录所在路径
$ pwd
# 显示当前目录的物理路径
$ pwd -P
# 显示当前目录的连接路径
$ pwd -L
| 常用参数简称 |
参数全称 |
描述 |
| -m |
--mode |
设定权限<模式> |
| -p |
--parents |
可以是一个路径名称。若路径中的某些目录尚不存在,加上此选项后,系统将自动建立好那些尚不存在的目录,即一次可以建立多个目录 |
| -v |
--verbose |
每次创建新目录都显示信息 |
# 递归创建多个目录
$ mkdir -p yohann/test
# 创建权限为 777 的目录
$ mkdir -m 777 yohann
# 创建目录显示信息
$ mkdir -vp yohann/test
| 常用参数简称 |
参数全称 |
描述 |
| -f |
--force |
忽略不存在的文件,从不给出提示 |
| -i |
--interactive |
进行交互式删除 |
| -r |
--recursive |
指示rm将参数中列出的全部目录和子目录均递归地删除 |
| -v |
--verbose |
详细显示进行的步骤 |
# 删除文件
$ rm test.txt
# 强行删除文件
$ rm -f test.txt
# 删除后缀名为.log 的所有
$ rm *.log
| 常用参数简称 |
参数全称 |
描述 |
| -b |
--back |
若需覆盖文件,则覆盖前先行备份 |
| -f |
--force |
如果目标文件已经存在,不会询问而直接覆盖 |
| -i |
--interactive |
若目标文件已经存在时,就会询问是否覆盖 |
| -u |
--update |
若目标文件已经存在,且源文件比较新,才会更新 |
| -t |
--target |
该选项适用于移动多个源文件到一个目录的情况,此时目标目录在前,源文件在后 |
# 将文件test.log重命名为error.log
$ mv test.log error.log
# 将文件error.log移动到log目录下
$ mv error.log log
# 将文件info.log移动到log目录下,如果文件存在,覆盖前会询问是否覆盖
$ mv -i info.log log
| 常用参数简称 |
参数全称 |
描述 |
| -t |
--target-directory |
指定目标目录 |
| -i |
--interactive |
覆盖前询问(使前面的 -n 选项失效) |
| -n |
--no-clobber |
不要覆盖已存在的文件(使前面的 -i 选项失效) |
| -s |
--symbolic-link |
对源文件建立符号链接,而非复制文件 |
| -f |
--force |
强行复制文件或目录,不论目的文件或目录是否已经存在 |
| -u |
--update |
使用这项参数之后,只会在源文件的修改时间较目的文件更新时,或是对应的目的文件并不存在,才复制文件 |
# 对文件index.html建立一个符号链接home.html
$ cp -s index.html home.html
# 将image目录下的所有文件复制到upload目录下,覆盖前询问
$ cp -i image/* upload
# 将image目录下的最近更新的文件复制到upload目录下,覆盖前询问
$ cp -iu image/* upload
| 常用参数简称 |
参数全称 |
描述 |
| -A |
--show-all |
等价于-vET |
| -b |
--number-nonblank |
对非空输出行编号 |
| -e |
|
等价于 -vE |
| -E |
--show-ends |
在每行结束处显示$ |
| -n |
--number |
对输出的所有行编号,由1开始对所有输出的行数编号 |
| -s |
--squeeze-blank |
有连续两行以上的空白行,就代换为一行的空白行 |
| -t |
|
与 -vT 等价 |
| -T |
--show-tabs |
将跳格字符显示为 ^I |
| -u |
|
(被忽略) |
| -v |
--show-nonprinting |
使用^和M-引用,除了LFD和TAB之外 |
# 把error-20220101.log的文件内容加上行号后输入error.log这个文件里
$ cat -n error-20220101.log > error.log
# 把error-20220101.log的文件内容加上行号后输入error.log这个文件里,多行空行换成一行输出
$ cat -ns error-20220101.log > error.log
# 将error.log的文件内容反向显示
$ tac error.log
| 常用参数简称 |
参数全称 |
描述 |
| -ba |
--body-numbering=a |
表示不论是否为空行,也同样列出行号(类似 cat -n) |
| -bt |
--body-numbering=t |
如果有空行,空的那一行不要列出行号(默认值) |
| -n ln |
--number-format=ln |
行号在屏幕的最左方显示 |
| -n rn |
--number-format=rn |
行号在自己栏位的最右方显示,且不加0 |
| -n rz |
--number-format=rz |
行号在自己栏位的最右方显示,且加0 |
| -w |
--number-width |
行号栏位的占用的位数 |
# 把error.log的文件内容加上行号后显示,空行不加行号
$ nl -b t error.log
# 把error.log的文件内容加上行号后显示,行号分别在屏幕最左方、最右方不加0和最右方加 0 显示
$ nl -n ln error.log
$ nl -n rn error.log
$ nl -n rz error.log
# 把error.log的文件内容加上行号后显示,行号在屏幕最右方加0显示,行号栏目占位数为3
$ nl -n rz -w 3 error.log
| 常用参数简称 |
参数全称 |
描述 |
| +n |
|
从笫n行开始显示 |
| -n |
|
定义屏幕大小为n行 |
| + |
|
在每个档案显示前搜寻该字串,然后从该字串前两行之后开始显示 |
| -c |
|
从顶部清屏,然后显示 |
| -d |
|
禁用响铃功能 |
| -p |
|
通过清除窗口而不是滚屏来对文件进行换页,与-c选项相似 |
| -s |
|
把连续的多个空行显示为一行 |
| -u |
|
把文件内容中的下划线去掉 |
| 常用操作符号 |
描述 |
| = |
输出当前行的行号 |
| q |
退出 more |
| 空格键 |
向下滚动一屏 |
| b |
返回上一屏 |
# 从第五行开始显示error.log文件中的内容
$ more +5 error.log
# 从error.log文件中查找第一个出现"y"字符串的行,并从该处前两行开始显示输出
$ more +/y error.log
# 设定每屏行数为10
$ more -10 error.log
# 使用ll和more命令显示/etc/nginx目录信息
$ ll /etc/nginx | more -10
| 常用参数简称 |
参数全称 |
描述 |
| -e |
|
当文件显示结束后,自动离开 |
| -f |
|
强迫打开特殊文件,例如外围设备代号、目录和二进制文件 |
| -i |
|
忽略搜索时的大小写 |
| -m |
|
显示类似more命令的百分比 |
| -N |
|
显示每行的行号 |
| -s |
|
显示连续空行为一行 |
| 常用操作符号 |
描述 |
| /字符串 |
向下搜索“字符串”的功能 |
| ?字符串 |
向上搜索“字符串”的功能 |
| n |
重复前一个搜索(与 / 或 ? 有关) |
| N |
反向重复前一个搜索(与 / 或 ? 有关) |
| b |
向前翻一页 |
| d |
向后翻半页 |
| q |
退出less命令 |
| 空格键 |
向后翻一页 |
| 向上键 |
向上翻动一行 |
| 向下键 |
向下翻动一行 |
# 显示error.log文件中的内容,并显示行号
$ less -N error.log
# 显示error.log文件中的内容,搜索字符串"500"
$ less error.log
/500
# ps查看进程信息并通过less分页显示
$ ps -f | less
| 常用参数简称 |
参数全称 |
描述 |
| -q |
--quiet |
隐藏文件名 |
| -v |
--verbose |
显示文件名 |
| -c<字节> |
--bytes |
显示字节数 |
| -n<行数> |
--lines |
显示的行数 |
# 显示error.log文件中的前10行内容
$ head -n 5 error.log
# 显示error-2020-01-01.log和error-2021-01-01.log文件中的前5行内容
$ head -n 5 error-2020-01-01.log error-2021-01-01.log
| 常用参数简称 |
参数全称 |
描述 |
| -f |
|
循环读取 |
| -q |
|
不显示处理信息 |
| -v |
|
显示详细的处理信息 |
| -c<字节> |
|
显示的字节数 |
| -n<行数> |
|
显示行数 |
# 显示error.log文件中的最后10行内容
$ tail -n 10 error.log
# 显示error.log文件中的最后10行内容,当error.log文件有新内容增加时自动更新显示
$ tail -n 10 -f error.log
# 确认是否安装了php
$ which php
# 查看python命令的位置路径
$ which python
| 常用参数简称 |
参数全称 |
描述 |
| -b |
|
定位可执行文件 |
| -m |
|
定位帮助文件 |
| -s |
|
定位源代码文件 |
| -u |
|
搜索默认路径下除可执行文件、源代码文件和帮助文件以外的其它文件 |
| -B |
|
指定搜索可执行文件的路径 |
| -M |
|
指定搜索帮助文件的路径 |
| -S |
|
指定搜索源代码文件的路径 |
# 搜索php可执行文件的路径
$ whereis -b php
# 搜索php帮助文件的路径
$ whereis -m php
# 搜索php源代码的路径
$ whereis -s php
| 常用参数简称 |
参数全称 |
描述 |
| -q |
--quiet |
安静模式,不会显示任何错误讯息 |
| -n |
|
至多显示 n 个输出 |
| -r |
--regexp |
使用正则表达式做寻找的条件 |
| -V |
--version |
显示版本信息 |
# 搜索/usr/bin目录下所有以p开头的文件
$ locate /usr/bin/p*
# 搜索/var/log目录下文件名包含log的文件
$ locate /var/log/*log*
| 常用参数简称 |
参数全称 |
描述 |
| -print |
|
find 命令将匹配的文件输出到标准输出 |
| -exec |
|
find 命令对匹配的文件执行该参数所给出的 shell 命令 |
| -name |
|
按照文件名查找文件 |
| -type |
|
查找某一类型的文件 |
| -prune |
|
使用这一选项可以使 find 命令不在当前指定的目录中查找,如果同时使用 -depth选项,那么 -prune 将被 find 命令忽略 |
| -user |
|
按照文件属主来查找文件 |
| -group |
|
按照文件所属的组来查找文件 |
| -mtime -n +n |
|
按照文件的更改时间来查找文件,-n 表示文件更改时间距现在小于 n 天,+n 表示文件更改时间距现在大于 n 天,find 命令还有 -atime 和 -ctime 选项 |
# 打印当前目录下的文件目录列表
$ find . -print
# 打印当前目录下所有以.c结尾的文件名
$ find . -name "*.c" -print
# 打印当前目录下所有以.jpg或.png结尾的文件名
$ find . \( -name "*.jpg" -or -name "*.png" \)
# 打印当前目录下所有不以.pdf结尾的文件名
$ find . ! -name "*.pdf"
# 打印当前目录下所有权限为777的php文件
$ find . -type f -name "*.php" -perm 777
# 打印当前目录下root用户拥有的所有文件
$ find . -type f -user root
# 打印当前目录下权限不是777和664的所有文件
$ find . -type f \( ! -perm 777 -and ! -perm 644 \)
# 找到当前目录下所有c文件,并显示其详细信息
$ find . -name "*.c" -exec ls -l {} \;
# 把所有c语言代码文件写入到一个文件中
$ find . -name "*.c" -exec cat {} \; > all.c
# 查到所有c语言代码文件,并执行脚本
$ find . -name "*.c" -exec ./command.sh {} \;
| 常用参数简称 |
参数全称 |
描述 |
| -n |
--max-args |
指定每行最大的参数数量 |
| -d |
--delimiter |
指定分隔符 |
# 将多行输入转换为单行输出
$ cat info.txt | xargs
# 将单行输入转换为多行输出
$ echo "1 2 3 4 5 6 7" | xargs -n 3
# 将单行输入转换为多行输出,指定分隔符为空格
$ cat info.txt | xargs -d " " -n 3
# 查找当前目录下所有vue代码文件,统计总行数
$ find . -type f -name "*.vue" | xargs wc -l
| 常用参数简称 |
参数全称 |
描述 |
| -c |
--bytes |
统计字节数 |
| -l |
--lines |
统计行数 |
| -m |
--chars |
统计字符数,这个标志不能与-c标志一起使用 |
| -w |
--words |
统计字数,一个字被定义为由空白、跳格或换行字符分隔的字符串 |
| -L |
--max-line-length |
打印最长行的长度 |
# 统计文件的字节数、行数和字符数
$ wc -c info.txt
$ wc -l info.txt
$ wc -m info.txt
# 统计文件的字节数、行数和字符数,只打印数字,不打印文件名
$ cat c.txt | wc -c
$ cat c.txt | wc -l
$ cat c.txt | wc -m
# 统计/bin目录下的命令个数
$ ls /bin | wc -l
| 常用参数简称 |
参数全称 |
描述 |
| -c |
--count |
计算找到‘搜寻字符串’(即 pattern)的次数 |
| -i |
--ignore-case |
忽略大小写的不同,所以大小写视为相同 |
| -n |
--line-number |
输出行号 |
| -v |
--invert-match |
反向选择,打印不匹配的行 |
| -r |
--recursive |
递归搜索 |
| --color=auto |
|
将找到的关键词部分加上颜色显示 |
# 将/etc/passwd文件中出现root的行取出来,关键词部分加上颜色显示
$ grep "root" /etc/passwd \-\-color=auto
$ cat /etc/passwd | grep "root" \-\-color=auto
# 将/etc/passwd文件中没有出现root和nologin的行取出来
$ grep -v "root" /etc/passwd | grep -v "nologin"
# 在当前目录下递归搜索文件中包含“login()”的文件
$ grep -r "login()".
| 常用参数简称 |
参数全称 |
描述 |
| -b |
--bytes |
以字节为单位进行分割 |
| -c |
--characters |
以字符为单位进行分割 |
| -d |
--delimiter |
自定义分隔符,默认为制表符 |
| -f |
--fields |
自定义字段 |
| --complement |
|
抽取整个文本行,除了那些由 -c 或 -f 选项指定的文本 |
# 取出info.txt文件中的第一列和第三列
$ cut -f 1,3 -d ' ' info.txt
# 取出info.txt文件中的第一列
$ cut -f 1 -d ' ' info.txt
# 取出info.txt文件中的前三列
$ cut -f 1-3 -d ' ' info.txt
# 取出info.txt文件中除第一列的其他列
$ cut -f 1 -d ' ' info.txt \-\-complement
| 常用参数简称 |
参数全称 |
描述 |
| -s |
--serial |
将每个文件合并成行而不是按行粘贴 |
| -d |
--delimiters |
自定义分隔符,默认为制表符 |
# 将member.txt和phone.txt文件中的内容按列拼接
$ paste member.txt phone.txt
# 将member.txt和phone.txt文件中的内容按列拼接,指定分隔符为":"
$ paste member.txt phone.txt -d ':'
# 将member.txt和phone.txt文件中的内容各自拼接成一行
$ paste -s member.txt phone.txt
| 常用参数简称 |
参数全称 |
描述 |
| -d |
--delete |
删除匹配的内容,并不作替换 |
# 将输入的字符大写转换为小写
$ echo 'THIS IS YOHANN!' | tr 'A-Z' 'a-z'
# 将输入的字符中的数字删除
$ echo 'THIS IS YOHANN001!' | tr -d '0-9'
# ROT13加密
$ echo 'yohann' | tr 'a-zA-Z' 'n-za-mN-ZA-M'
| 常用参数简称 |
参数全称 |
描述 |
| -n |
--numeric |
基于字符串的长度来排序,使用此选项允许根据数字值排序,而不是字母值 |
| -k |
--key |
指定排序关键字 |
| -b |
--ignore-leading-blanks |
默认情况下,对整行进行排序,从每行的第一个字符开始。这个选项导致sort程序忽略每行开头的空格,从第一个非空白字符开始排序 |
| -m |
--merge |
只合并多个输入文件 |
| -r |
--reverse |
按相反顺序排序,结果按照降序排列,而不是升序 |
| -t |
--field-separator |
自定义分隔符,默认为制表符 |
# 列出/usr/share/目录下使用空间最多的前10个目录文件
$ du -s /usr/share/* | sort -nr | head -10
# 对ls命令输出信息中的空间使用大小字段进行排序
$ ls -l /usr/share/ | sort -nr -k 5 | head -1
| 常用参数简称 |
参数全称 |
描述 |
| -c |
--count |
在每行前加上表示相应行目出现次数的前缀编号 |
| -d |
--repeated |
只输出重复的行 |
| -u |
--unique |
只显示唯一的行 |
| -D |
|
显示所有重复的行 |
| -f |
--skip-fields |
比较时跳过前n列 |
| -i |
--ignore-case |
在比较的时候不区分大小写 |
| -s |
--skip-chars |
比较时跳过前n个字符 |
| -w |
--check-chars |
对每行第n个字符以后的内容不作对照 |
# 找出/bin目录和/usr/bin目录下所有相同的命令
$ ls /bin /usr/bin | sort | uniq -d
| 常用参数简称 |
参数全称 |
描述 |
| -j FIELD |
|
等同于-1 FIELD -2 FIELD,-j指定一个域作为匹配字段 |
| -1 FIELD |
|
以file1中FIELD字段进行匹配 |
| -2 FIELD |
|
以file2中FIELD字段进行匹配 |
| -t |
|
自定义分隔符,默认为制表符 |
# 将两个文件中的第一个字段作为匹配字段,连接两个文件
$ join member.txt phone.txt
| 常用参数简称 |
参数全称 |
描述 |
| -1 |
|
不输出文件1特有的行 |
| -2 |
|
不输出文件2特有的行 |
| -3 |
|
不输出两个文件共有的行 |
# 比较old.txt和new.txt两个文件的内容
$ comm old.txt new.txt
# 比较old.txt和new.txt两个文件的内容,只显示两个文件共有的内容
$ old.txt和new.txt
| 常用参数简称 |
参数全称 |
描述 |
| -c |
--context |
上下文模式,显示全部内文,并标出不同之处 |
| -u |
--unified |
统一模式,以合并的方式来显示文件内容的不同 |
| -a |
--text |
只会逐行比较文本文件 |
| -N |
--new-file |
在比较目录时,若文件 A 仅出现在某个目录中,预设会显示:Only in 目录。若使用 -N 参数,则 diff 会将文件 A 与一个空白的文件比较 |
| -r |
--recursive |
递归比较目录下的文件 |
# 显示old.txt和new.txt两个文件的差异
$ diff old.txt new.txt
# 上下文模式显示old.txt和new.txt两个文件的差异
$ diff -c old.txt new.txt
# 统一模式显示old.txt和new.txt两个文件的差异
$ diff -u old.txt new.txt
| 常用参数简称 |
参数全称 |
描述 |
| -p num |
--strip |
忽略几层文件夹 |
| -E |
--remove-empty-files |
如果发现了空文件,那么就删除它 |
| -R |
--reverse |
取消打过的补丁 |
# 生成old.txt和new.txt的差异文件
$ diff -Naur old.txt new.txt > patchdiff.txt
# 用patch命令更新old.txt文件
$ patch < patchdiff.txt
# 取消上面打过的补丁
$ patch < patchdiff.txt
| 常用参数简称 |
参数全称 |
描述 |
| -a |
--all |
全部文件系统列表 |
| -h |
--human-readable |
方便阅读方式显示 |
| -i |
--inodes |
显示inode信息 |
| -T |
--print-type |
文件系统类型 |
| -t<文件系统类型> |
--type |
只显示选定文件系统的磁盘信息 |
| -x<文件系统类型> |
--exclude-type |
不显示选定文件系统的磁盘信息 |
# 显示磁盘使用情况
$ df
# 以inode模式来显示磁盘使用情况
$ df -i
# 列出文件系统的类型
$ df -T
# 显示指定类型磁盘
$ df -t ext4
| 常用参数简称 |
参数全称 |
描述 |
| -a |
--all |
显示目录中所有文件的大小。 |
| -b |
--bytes |
显示目录或文件大小时,以 byte 为单位。 |
| -c |
--total |
除了显示个别目录或文件的大小外,同时也显示所有目录或文件的总和。 |
| -k |
|
以 KB(1024bytes)为单位输出。 |
| -m |
|
以 MB 为单位输出。 |
| -s |
--summarize |
仅显示总计,只列出最后加总的值。 |
| -h |
--human-readable |
以 K,M,G 为单位,提高信息的可读性。 |
# 显示指定文件所占空间,以方便阅读的格式显示
$ du -h error.log
# 显示指定目录所占空间,以方便阅读的格式显示
$ du -h /usr/bin
# 显示几个文件或目录各自占用磁盘空间的大小,并且统计总和
$ du -ch error.log info.log
# 按照空间大小逆序排序显示
$ du -h | sort -nr | head -10
# 测量ps命令运行的时间
$ time ps
# 将time命令的执行结果保存到文件中
$ (time date) 2>2.txt