模板:Linux常用命令:修订间差异
无编辑摘要 |
(→网络命令) |
||
(未显示同一用户的13个中间版本) | |||
第6行: | 第6行: | ||
|- | |- | ||
| 解释器 | | 解释器 | ||
| 常见shell命令解释器:<br /> | | 常见shell命令解释器:<br />[[sh]],大多数[[Unix]]的默认Shell<br />[[bash]],大多数[[Linux]]的默认Shell <br />[[zsh]],[[Mac OS]]从2019年起将默认Shell从bash改为zsh。 <br /><br />脚本在首行可以指定解释器,如<code>#!/bin/bash</code>。也可以在运行时指定使用的解释器如:<code>bash /path/to/script.sh</code> <br /><br />在命令行输入<code>echo $SHELL</code>,可以查看当前使用的Shell解析器 | ||
| | | | ||
|- | |- | ||
第13行: | 第13行: | ||
| | | | ||
|- | |- | ||
| [https://www.gnu.org/software/bash/manual/html_node/Pipelines.html#Pipelines 管道] | |||
| 管道中每个命令的输出通过管道连接到下一个命令的输入。用<code><nowiki>|</nowiki></code>或者<code><nowiki>|&</nowiki></code>表示。其中<code><nowiki>|&</nowiki> </code>输出除了包含正常信息,还包含错误时信息,是简写<code><nowiki>2>&1 |</nowiki></code>的简写。 <br /><br />格式:<code><nowiki>[time [-p]] [!] command1 [ | or |& command2 ] …</nowiki> </code> | |||
| | | | ||
|- | |||
|[https://www.gnu.org/software/bash/manual/html_node/Shell-Parameter-Expansion.html 参数展开] | |||
| 格式:<br /><code><nowiki>${参数}</nowiki></code> ,参数的值 <br /><code>${参数#文本}</code>或<code>${参数##文本}</code>,从开头删除匹配的内容,<code>#</code>表示小匹配内容,<code>##</code>最多匹配内容。<br /><code>${参数%文本}</code>或<code>${参数%%文本}</code>,从结尾删除匹配的内容,<code>%</code>表示小匹配内容,<code>%%</code>最多匹配内容。<br /><code>${参数@操作}</code> 根据操作字符值进行转换,常用操作可取值:<code>U</code>,参数的值,都转大写。<code>L</code>,参数的值,都转小写。 | |||
| <syntaxhighlight lang="python"> | |||
$ str=123abc | |||
$ echo ${str} #参数值,相当于$str | |||
$ echo ${str:2} #从第3位开始到最后 | |||
$ echo ${str:2:1} | |||
</syntaxhighlight> <code>for name in `ls`; do mv $name ${name#2021-} ; done;</code> 批量重命名,删除前缀2021- | |||
|- | |||
|[https://www.gnu.org/software/bash/manual/html_node/Pattern-Matching.html 模式匹配] | |||
| | |||
| | |||
|- | |||
| 参数类型 | |||
| 3种类型命令行参数:<br \>1.Unix类型参数,前面加<code>-</code> <br \>2.BSD类型参数,前面加不加 <br \>3.GNU类型参数,前面加<code>--</code> <br \><br \>使用man打开帮助文档,可以查看支持的参数,如<code>man ps</code> | |||
| | |||
|- | |||
| | |||
| | |||
| | |||
|- | |||
| | |||
| | |||
| | | | ||
|} | |} | ||
第28行: | 第53行: | ||
|ls | |ls | ||
|显示目录的内容和属性 | |显示目录的内容和属性 | ||
|ls [参数 | |ls [参数][目录] | ||
|<code>-a</code> 显示所有文件和目录,包括隐藏内容(以.开头文件)<br \> <code>-l</code> 显示属性权限等信息<br \> <code>-h</code> 文件大小以KB、MB、GB等显示,与-l参数搭配<br \> <code>-R</code> 显示包括子孙目录的所有文件和目录 | |<code>-a</code> 显示所有文件和目录,包括隐藏内容(以.开头文件)<br \> <code>-l</code> 显示属性权限等信息<br \> <code>-h</code> 文件大小以KB、MB、GB等显示,与-l参数搭配<br \> <code>-R</code> 显示包括子孙目录的所有文件和目录 | ||
| <code>ls -l</code> 显示当前目录的内容和信息 <br \> <code>ls -al /home</code> 显示/home目录的包括隐藏文件在内的所有内容和信息 | | <code>ls -l</code> 显示当前目录的内容和信息 <br \> <code>ls -al /home</code> 显示/home目录的包括隐藏文件在内的所有内容和信息 | ||
第40行: | 第65行: | ||
|pwd | |pwd | ||
|查看当前目录的完整路径 | |查看当前目录的完整路径 | ||
|pwd [参数 | |pwd [参数] | ||
| | | | ||
| <code>pwd</code> 查看当前目录的完整路径 | | <code>pwd</code> 查看当前目录的完整路径 | ||
第46行: | 第71行: | ||
|mkdir | |mkdir | ||
|创建目录,可一次创建多个 | |创建目录,可一次创建多个 | ||
|mkdir [参数 | |mkdir [参数] 目录 | ||
|<code>-p</code> 创建多级目录 <br \><code>-m 权限值</code> 设置目录权限 <br \><code>-v</code> 显示创建过程的信息 | |<code>-p</code> 创建多级目录 <br \><code>-m 权限值</code> 设置目录权限 <br \><code>-v</code> 显示创建过程的信息 | ||
| <code>mkdir test</code> 在当前目录下创建一个目录test<br \> <code>mkdir -p test1/test2</code> 递归创建多级目录<br \> <code>mkdir -m 700 test3</code> 创建权限为700的test3目录 | | <code>mkdir test</code> 在当前目录下创建一个目录test<br \> <code>mkdir -p test1/test2</code> 递归创建多级目录<br \> <code>mkdir -m 700 test3</code> 创建权限为700的test3目录 | ||
第52行: | 第77行: | ||
|cp | |cp | ||
|复制文件或目录 | |复制文件或目录 | ||
|cp [参数 | |cp [参数] [-T] 源文件或目录 目标文件或目录 <br \>cp [参数] 源文件或目录 目标目录 <br \>cp [参数] [-t] 目标目录 源文件或目录 | ||
|<code>-i</code> 若目标文件已存在,会询问是否覆盖 <br \><code>-f</code> 若目标文件已存在,直接覆盖 <br \><code>-n</code> 若目标文件已存在,不要覆盖<br \><code>-r</code> 递归复制目录和文件<br \> | |<code>-i</code> 若目标文件已存在,会询问是否覆盖 <br \><code>-f</code> 若目标文件已存在,直接覆盖 <br \><code>-n</code> 若目标文件已存在,不要覆盖<br \><code>-r</code> 递归复制目录和文件<br \> | ||
| <code>cp test1 test2</code> 复制test1到test2(假设当前不存在test2文件夹) <br \> <code>cp t1 t2 dirA</code> 复制t1、t2到dirA文件夹 <br \> <code>cp -t dirA t1 t2</code> 复制t1、t2到dirA文件夹 | | <code>cp test1 test2</code> 复制test1到test2(假设当前不存在test2文件夹) <br \> <code>cp t1 t2 dirA</code> 复制t1、t2到dirA文件夹 <br \> <code>cp -t dirA t1 t2</code> 复制t1、t2到dirA文件夹 | ||
第58行: | 第83行: | ||
|mv | |mv | ||
|文件移动或文件重命名 | |文件移动或文件重命名 | ||
|mv [参数 | |mv [参数][-T] 源文件 目标文件 <br \> mv [参数] 源文件 目标目录 <br \> mv [参数] -t 目标目录 源文件 | ||
| | | | ||
|<code>mv test1 test2</code> 文件test1重命名为test2 <br \> <code>mv test1 test3</code> 移动test1文件到test3目录(假设当前存在test3目录) | |<code>mv test1 test2</code> 文件test1重命名为test2 <br \> <code>mv test1 test3</code> 移动test1文件到test3目录(假设当前存在test3目录) | ||
第64行: | 第89行: | ||
|rm | |rm | ||
|删除文件或目录 | |删除文件或目录 | ||
|rm [参数 | |rm [参数] [文件或目录] | ||
|<code>-i</code> 删除文件时,先询问是否删除 <br \><code>-f</code> 直接强制删除 <br \><code>-r</code> 删除目录及其所有文件。 | |<code>-i</code> 删除文件时,先询问是否删除 <br \><code>-f</code> 直接强制删除 <br \><code>-r</code> 删除目录及其所有文件。 | ||
| <code>rm test</code> 删除test文件<br \> <code>rm -r testDir</code> 删除testDir目录 <br /><code>find ./ -type d -name "__pycache__" -exec rm -rf {} \;</code> 递归删除当前目录下所有的"__pycache__"目录。<br /><code><nowiki>find ./ -type d -name "__pycache__" | xargs rm -rf</nowiki></code>递归删除当前目录下所有的"__pycache__"目录。 | | <code>rm test</code> 删除test文件<br \> <code>rm -r testDir</code> 删除testDir目录 <br /><code>find ./ -type d -name "__pycache__" -exec rm -rf {} \;</code> 递归删除当前目录下所有的"__pycache__"目录。<br /><code><nowiki>find ./ -type d -name "__pycache__" | xargs rm -rf</nowiki></code>递归删除当前目录下所有的"__pycache__"目录。 | ||
第70行: | 第95行: | ||
|rmdir | |rmdir | ||
|删除空目录 | |删除空目录 | ||
|rmdir [参数 | |rmdir [参数] [目录] | ||
|<code>-p</code> | |<code>-p</code> | ||
| <code>rmdir testDir</code> 删除空目录testDir | | <code>rmdir testDir</code> 删除空目录testDir | ||
第76行: | 第101行: | ||
|touch | |touch | ||
|修改文件或目录的日期时间,创建空文件 | |修改文件或目录的日期时间,创建空文件 | ||
|touch [参数 | |touch [参数] [文件] | ||
|<code>-a</code> 修改访问时间(access time) <br \> | |<code>-a</code> 修改访问时间(access time) <br \> | ||
|<code>touch test3</code>创建空文件test3 | |<code>touch test3</code>创建空文件test3 | ||
|- | |- | ||
| ln | |||
| 创建文件或目录的软链接和硬链接 | |||
| ln [参数] [源文件或目录] [目标文件或目录] | |||
| <code>-s</code> 软链接,相当于快捷方式。不加为默认的硬链接 | |||
| <code>ln test t1</code> 创建test的硬链接t1 <br \><code>ln -s test t2</code> 创建test的软链接t2 | |||
|} | |} | ||
第92行: | 第122行: | ||
|cat | |cat | ||
|显示文件内容 | |显示文件内容 | ||
|cat [参数 | |cat [参数] [文件] | ||
|<code>-n</code> 输出内容每行前添加行号 | |<code>-n</code> 输出内容每行前添加行号 | ||
| <code>cat test</code> 显示test文件内容 <br \> <code>cat -n test1 test2</code> 显示test1和test2文件内容,并且显示行号。 | | <code>cat test</code> 显示test文件内容 <br \> <code>cat -n test1 test2</code> 显示test1和test2文件内容,并且显示行号。 | ||
第98行: | 第128行: | ||
|tail | |tail | ||
|显示文件末尾内容,默认10行 | |显示文件末尾内容,默认10行 | ||
|tail [参数 | |tail [参数] [文件] | ||
|<code>-n 行数</code> 显示的行数 <br \> <code>-c 字节数</code> 显示的字节数 <br \> <code>-f</code> 循环显示,文件末尾有更新会刷新 | |<code>-n 行数</code> 显示的行数 <br \> <code>-c 字节数</code> 显示的字节数 <br \> <code>-f</code> 循环显示,文件末尾有更新会刷新 | ||
| <code>tail test</code> 显示test文件末尾10行内容 <br \> <code>tail -n 3 test</code> 显示test文件末尾3行内容 | | <code>tail test</code> 显示test文件末尾10行内容 <br \> <code>tail -n 3 test</code> 显示test文件末尾3行内容 | ||
第104行: | 第134行: | ||
|head | |head | ||
|显示文件开头内容,默认10行 | |显示文件开头内容,默认10行 | ||
|head [参数 | |head [参数] [文件] | ||
|<code>-n 行数</code> 显示的行数 <br \> <code>-c 字节数</code> 显示的字节数 <br \> <code>-v</code> 显示文件名 | |<code>-n 行数</code> 显示的行数 <br \> <code>-c 字节数</code> 显示的字节数 <br \> <code>-v</code> 显示文件名 | ||
| <code>head test</code> 显示test文件开头10行内容 <br \> <code>head -n 3 test</code> 显示test文件开头3行内容 | | <code>head test</code> 显示test文件开头10行内容 <br \> <code>head -n 3 test</code> 显示test文件开头3行内容 | ||
第110行: | 第140行: | ||
|more | |more | ||
|文件内容分页查看,搜索过滤 | |文件内容分页查看,搜索过滤 | ||
|more [参数 | |more [参数] 文件 | ||
|<code>+行数</code> 从第几行开始显示 <br \> <code>-行数</code> 每次显示的行数 <br \> <code>+/字符串 </code> 从搜索到字符串位置的前面2行开始显示 <br \> <code>-c </code>清屏 <br \> <code>-p </code>清屏 <br \> <code>-s </code> 连续多个空行显示为一行 | |<code>+行数</code> 从第几行开始显示 <br \> <code>-行数</code> 每次显示的行数 <br \> <code>+/字符串 </code> 从搜索到字符串位置的前面2行开始显示 <br \> <code>-c </code>清屏 <br \> <code>-p </code>清屏 <br \> <code>-s </code> 连续多个空行显示为一行 | ||
| <code>more +5 test</code> 从第5行显示test文件内容 <br \> <code>more -12 test</code> 每次显示12行test文件内容 <br \> <code>more +/晴天 test</code> 从test文件搜索到“晴天”的位置向前2行开始显示 | | <code>more +5 test</code> 从第5行显示test文件内容 <br \> <code>more -12 test</code> 每次显示12行test文件内容 <br \> <code>more +/晴天 test</code> 从test文件搜索到“晴天”的位置向前2行开始显示 | ||
|- | |||
| [https://www.man7.org/ sort] | |||
| 排序 | |||
| sort [参数] [文件] | |||
| <code>-r</code>反向排序 <br \><code>-n</code> 按数值排序 <br \><code>-h</code> 按易读数值(如2G、1K)排序 <br \><code>-M</code> 按月份排序 | |||
| <code>sort test.txt</code>按字符大小排序test.txt每行 <br \><code>sort -n test.txt</code>按数字大小排序test.txt每行 | |||
|- | |- | ||
|[https://man7.org/linux/man-pages/man1/grep.1.html grep] | |[https://man7.org/linux/man-pages/man1/grep.1.html grep] | ||
|文本搜索,使用[[正则表达式]]进行搜索 | |文本搜索,使用[[正则表达式]]进行搜索 | ||
|grep [参数 | |grep [参数] 匹配模式 [文件] | ||
|<code>-c</code> 统计搜索到的次数 <br \> <code>-i</code> 忽略大小写差别 <br \> <code>-r</code> 递归方式查找,目录的所有文件包括子孙目录 | |<code>-c</code> 统计搜索到的次数 <br \> <code>-i</code> 忽略大小写差别 <br \> <code>-r</code> 递归方式查找,目录的所有文件包括子孙目录 | ||
| <code>grep test *.log --color=auto </code> 查找.log结尾文件包含test的行,并且test用颜色标记 <br \> <code>grep -r passwd /etc/</code>查找/etc目录下所有文件中包含passwd的行 | | <code>grep test *.log --color=auto </code> 查找.log结尾文件包含test的行,并且test用颜色标记 <br \> <code>grep -r passwd /etc/</code>查找/etc目录下所有文件中包含passwd的行 | ||
第134行: | 第170行: | ||
|[[vim|vi/vim]] | |[[vim|vi/vim]] | ||
|文本编辑器 | |文本编辑器 | ||
|vim [参数 | |vim [参数] [文件] <br \> vim [参数] - <br \> vim [参数] -t tag | ||
|<code>+行数</code> 跳到指定行数 <br \> <code>+</code> 跳到最后一行 <br \> <code>-R </code> 只读模式打开文件<br \> | |<code>vim test</code>用vim编辑test <br \><code>+行数</code> 跳到指定行数 <br \><code>+</code> 跳到最后一行 <br \> <code>-R</code> 只读模式打开文件<br \> | ||
|<code>vim +10 test </code> 打开test文件,跳到10行位置 <br \> <code>vim -R test </code> 只读模式打开test文件 | |<code>vim +10 test</code> 打开test文件,跳到10行位置 <br \><code>vim -R test</code> 只读模式打开test文件 | ||
|- | |- | ||
|wc | |wc | ||
|统计文件行数、单词数、字节数信息。 | |统计文件行数、单词数、字节数信息。<br \><code>word count</code> | ||
|wc [参数 | |wc [参数] [文件] | ||
|<code>- | |<code>-l</code> 行数 <br \> <code>-m</code> 字数 <br \> <code>-c</code> 字节数<br \> <code>-L</code> 最长行的字数 <br /><code>-m</code> 最长行的字数 | ||
| <code>wc test</code> 显示test文件行数、字数、字节数信息 | | <code>wc test</code> 显示test文件行数、字数、字节数信息 <br \><code>wc -l test</code> 显示test文件行数 | ||
|- | |- | ||
| diff | | diff | ||
第161行: | 第197行: | ||
|[https://man7.org/linux/man-pages/man1/find.1.html find] | |[https://man7.org/linux/man-pages/man1/find.1.html find] | ||
|文件搜索,默认当前目录 | |文件搜索,默认当前目录 | ||
|find [参数 | |find [参数] [搜索目录] [表达式] | ||
|<code>-name</code> 按文件名查找目录下所有文件包括子孙目录 <br \><code>-iname</code> 文件名忽略大小写 <br \><code>-type 类型</code> 指定查找类型bcdpflsD(d:目录,f:一般文件) <br \><code>-ctime 天数</code> 过去几天修改过的文件 <br \><code>-cmin 分钟数</code> 过去几分钟修改过的文件 | |<code>-name</code> 按文件名查找目录下所有文件包括子孙目录 <br \><code>-iname</code> 文件名忽略大小写 <br \><code>-type 类型</code> 指定查找类型bcdpflsD(d:目录,f:一般文件) <br \><code>-ctime 天数</code> 过去几天修改过的文件 <br \><code>-cmin 分钟数</code> 过去几分钟修改过的文件 | ||
| <code>find test</code>当前目录查找test文件<br \> <code>find -name *.log</code>当前目录及子孙目录查找以.log结尾的文件 <br /><code>find . -type d -name '.c'</code>递归查找当前目录所有名称为'.c'的目录 <br \> <code>find -ctime 3</code> 当前目录过去3天修改过的文件 <br /><code><nowiki>find testDir | xargs grep -rl 'Python'</nowiki></code> 查找testDir目录及子孙目录中文件内容包含'Python'的文件。 | | <code>find test</code>当前目录查找test文件<br \> <code>find -name *.log</code>当前目录及子孙目录查找以.log结尾的文件 <br /><code>find . -type d -name '.c'</code>递归查找当前目录所有名称为'.c'的目录 <br \> <code>find -ctime 3</code> 当前目录过去3天修改过的文件 <br /><code><nowiki>find testDir | xargs grep -rl 'Python'</nowiki></code> 查找testDir目录及子孙目录中文件内容包含'Python'的文件。 | ||
第167行: | 第203行: | ||
|whereis | |whereis | ||
|查找程序、源代码及帮助文件位置 | |查找程序、源代码及帮助文件位置 | ||
|whereis [参数 | |whereis [参数] 文件 | ||
|<code>-b</code> 查找可执行文件<br \> <code>-m</code> 查找帮助文件<br \> <code>-s</code> 查找源代码文件<br \> <code>-u</code> 查找其他文件<br \> <code>-B 目录</code>指定查找可执行文件的目录<br \> <code>-M 目录</code>指定查找帮助文件的目录<br \> <code>-S 目录</code>指定查找源代码文件的目录 | |<code>-b</code> 查找可执行文件<br \> <code>-m</code> 查找帮助文件<br \> <code>-s</code> 查找源代码文件<br \> <code>-u</code> 查找其他文件<br \> <code>-B 目录</code>指定查找可执行文件的目录<br \> <code>-M 目录</code>指定查找帮助文件的目录<br \> <code>-S 目录</code>指定查找源代码文件的目录 | ||
| <code>which python3</code> 查找python3位置 | | <code>which python3</code> 查找python3位置 | ||
第188行: | 第224行: | ||
|tar | |tar | ||
|打包,多个文件或目录打包成一个存档文件。解包,从存档文件提取所有文件。 <br />使用gzip、bz2压缩解压 | |打包,多个文件或目录打包成一个存档文件。解包,从存档文件提取所有文件。 <br />使用gzip、bz2压缩解压 | ||
|tar [参数 | |tar [参数] [文件] <br \> (主参数有且只能一个) | ||
|主参数:<br \><code>-c</code> 打包,创建一个新存档文件<br \><code>-x</code> 解包,提取所有存档文件<br \><code>-t</code> 查看,显示所有存档文件<br \><code>-r</code> 追加,向存档文件追加文件<br \><code>-u</code> 更新,只更新比存档文件的文件新的文件<br \><code>-d</code> 差异,<br \><br \>副参数:<br \><code>-v</code> 显示操作过程<br \><code>-f 存档文件</code> 指定存档文件<br \><code>-C 目录</code> 指定目录<br \><code>-z</code> 通过gzip压缩解压,现在解压不需要指定,tar会自动选择 | |主参数:<br \><code>-c</code> 打包,创建一个新存档文件<br \><code>-x</code> 解包,提取所有存档文件<br \><code>-t</code> 查看,显示所有存档文件<br \><code>-r</code> 追加,向存档文件追加文件<br \><code>-u</code> 更新,只更新比存档文件的文件新的文件<br \><code>-d</code> 差异,<br \><br \>副参数:<br \><code>-v</code> 显示操作过程<br \><code>-f 存档文件</code> 指定存档文件<br \><code>-C 目录</code> 指定目录<br \><code>-z</code> 通过gzip压缩解压,现在解压不需要指定,tar会自动选择 | ||
|<code>tar -cvf test.tar testDir test2</code> 打包当前目录下testDir目录和test2,生成test.tar文件 <br \><code>tar -xvf test.tar </code> 解包test.tar到当前目录<br \> <br \><code>tar -xvf test.tar -C ../foo </code> 在当前目录的上级目录的foo目录里解包test.tar<br \> | |<code>tar -cvf test.tar testDir test2</code> 打包当前目录下testDir目录和test2,生成test.tar文件 <br \><code>tar -xvf test.tar </code> 解包test.tar到当前目录<br \> <br \><code>tar -xvf test.tar -C ../foo </code> 在当前目录的上级目录的foo目录里解包test.tar<br \> | ||
第194行: | 第230行: | ||
|gzip | |gzip | ||
|压缩文件,解压gzip文件,不能压缩目录,需配合tar使用。默认压缩文件,并删除原文件 | |压缩文件,解压gzip文件,不能压缩目录,需配合tar使用。默认压缩文件,并删除原文件 | ||
|gzip [参数 | |gzip [参数] [文件] | ||
|<code>-d</code> 解压<br \><code>-c</code> 输出压缩文件到标准输出设备,而不更改原文件<br \><code>-f</code> 强制压缩覆盖<br \><code>-l</code> 显示压缩信息<br \><code>-k</code> 不删除原文件<br \><code>-r</code> 在目录上递归操作,压缩或解压单个文件 | |<code>-d</code> 解压<br \><code>-c</code> 输出压缩文件到标准输出设备,而不更改原文件<br \><code>-f</code> 强制压缩覆盖<br \><code>-l</code> 显示压缩信息<br \><code>-k</code> 不删除原文件<br \><code>-r</code> 在目录上递归操作,压缩或解压单个文件 | ||
|<code>gzip *</code> 把当前目录所有文件转化为压缩文件<br \> <code>gzip -d *</code>把当前目录所有压缩文件转化为文件 | |<code>gzip *</code> 把当前目录所有文件转化为压缩文件<br \> <code>gzip -d *</code>把当前目录所有压缩文件转化为文件 | ||
第200行: | 第236行: | ||
|unzip | |unzip | ||
|解压zip文件 | |解压zip文件 | ||
|unzip [参数 | |unzip [参数] [文件] | ||
|<code>-d 目录</code> 指定解压缩目录<br \><code>-l</code> 列出压缩包所包含的文件<br \><code>-v</code> 显示执行过程<br \><code>-n</code> 不覆盖原文件<br \><code>-j</code> 不创建压缩文件里的目录<br \><code>-k</code> 不删除原文件<br \><code>-r</code> 在目录上递归操作,压缩或解压单个文件 | |<code>-d 目录</code> 指定解压缩目录<br \><code>-l</code> 列出压缩包所包含的文件<br \><code>-v</code> 显示执行过程<br \><code>-n</code> 不覆盖原文件<br \><code>-j</code> 不创建压缩文件里的目录<br \><code>-k</code> 不删除原文件<br \><code>-r</code> 在目录上递归操作,压缩或解压单个文件 | ||
|<code>unzip test.zip</code> 解压缩test.zip到当前目录<br \> <code>unzip test.zip -d foo</code>解压缩test.zip到当前目录的foo目录中 | |<code>unzip test.zip</code> 解压缩test.zip到当前目录<br \> <code>unzip test.zip -d foo</code>解压缩test.zip到当前目录的foo目录中 | ||
|- | |- | ||
|} | |||
===用户和组=== | |||
{| class="wikitable" style="width: 100%; | |||
!命令 | |||
!描述 | |||
!语法格式 | |||
!常用参数 | |||
!示例 | |||
|- | |||
|id | |||
|显示用户的用户名和组名及数字ID | |||
| | |||
| | |||
|<code>id</code>显示当前用户 <br /><code>id yourname</code>显示用户名为yourname的 | |||
|- | |||
|useradd | |||
|添加新用户 | |||
| | |||
| | |||
|<syntaxhighlight lang="bash" > | |||
adduser yourname | |||
usermod -aG sudo yourname | |||
</syntaxhighlight> | |||
|- | |||
|usermod | |||
|修改用户账号 | |||
| | |||
| | |||
| | |||
|- | |||
|userdel | |||
|删除用户账户 | |||
|userdel [参数] 用户名 | |||
|<code>-r</code>同时删除其主目录<br \> | |||
|<code>sudo userdel -r username</code> | |||
|- | |||
|passwd | |||
|修改用户密码 | |||
| | |||
| | |||
| | |||
|- | |||
| | |||
| | |||
| | |||
| | |||
| | |||
|- | |||
| | |||
| | |||
| | |||
| | |||
| | |||
|- | |||
|groupdel | |||
|删除用户组 | |||
| | |||
| | |||
| | |||
|- | |||
| | |||
| | |||
| | |||
| | |||
| | |||
|} | |} | ||
===权限管理=== | ===权限管理=== | ||
第215行: | 第316行: | ||
|chmod | |chmod | ||
|修改文件或目录权限。<br /><br />查看权限可使用<code>ls -l</code>命令 | |修改文件或目录权限。<br /><br />查看权限可使用<code>ls -l</code>命令 | ||
|chmod [参数 | |chmod [参数] 模式 [文件] <br \><br \>chmod [参数] --reference=参照文件 [文件] <br \> <br \>模式格式:<br \> <nowiki> [ugoa]*([-+=]([rwxXst]*|[ugo]))+|[-+=][0-7]+</nowiki> | ||
|<code>-R</code> 递归的方式为目录所有文件权限<br \> <code>-v</code> 显示所有操作过程<br \> <code>-c</code> 只显示被改变权限的文件操作过程<br \> <code>-f</code> 安静模式,不输出错误信息<br \> <br \>模式: <br \><code>u</code> 属主,文件属于的用户<br \><code>g</code> 属组,文件属于的用户组<br \><code>o</code> 其他用户<br \><code>a</code> 所有用户(默认)<br \><code>+</code> 增加权限<br \> <code>-</code> 取消权限<br \> <code>=</code> 重新设定权限<br \><code>r</code> 读权限,用数字4表示<br \> <code>w</code> 写权限,用数字2表示<br \> <code>x</code> 执行权限,用数字1表示<br \> <code>0</code> 无权限,用数字0表示 | |<code>-R</code> 递归的方式为目录所有文件权限<br \> <code>-v</code> 显示所有操作过程<br \> <code>-c</code> 只显示被改变权限的文件操作过程<br \> <code>-f</code> 安静模式,不输出错误信息<br \> <br \>模式: <br \><code>u</code> 属主,文件属于的用户<br \><code>g</code> 属组,文件属于的用户组<br \><code>o</code> 其他用户<br \><code>a</code> 所有用户(默认)<br \><code>+</code> 增加权限<br \> <code>-</code> 取消权限<br \> <code>=</code> 重新设定权限<br \><code>r</code> 读权限,用数字4表示<br \> <code>w</code> 写权限,用数字2表示<br \> <code>x</code> 执行权限,用数字1表示<br \> <code>0</code> 无权限,用数字0表示 | ||
|<code>chmod 751 test</code>设置test文件权限,属主读、写和执行的权限(7),属组读和执行的权限(5),其他用户执行的权限(1)。<br \><code>chmod a+r test</code> 设置test文件权限,为所有用户增加读取权限 <br \> <code>chmod a=r,u+w test</code> 设置test文件为所有用户只读,属主可写权限。 | |<code>chmod 751 test</code>设置test文件权限,属主读、写和执行的权限(7),属组读和执行的权限(5),其他用户执行的权限(1)。<br \><code>chmod a+r test</code> 设置test文件权限,为所有用户增加读取权限 <br \> <code>chmod a=r,u+w test</code> 设置test文件为所有用户只读,属主可写权限。 | ||
第221行: | 第322行: | ||
|chown | |chown | ||
|修改文件或目录的属主和属组。<br \>(属主:文件属于的用户, 属组:文件属于的用户组。) | |修改文件或目录的属主和属组。<br \>(属主:文件属于的用户, 属组:文件属于的用户组。) | ||
|chown [参数 | |chown [参数] [属主][:[属组]] 文件<br \><br \> chown [参数] --reference=参照文件 文件 | ||
|<code>-R</code> 递归的方式更改目录所有文件的属主和属组<br \> <code>-v</code> 显示所有操作过程<br \> <code>-c</code> 只显示被改变的文件操作过程<br \> <code>-f</code> 安静模式,不输出错误信息<br \> | |<code>-R</code> 递归的方式更改目录所有文件的属主和属组<br \> <code>-v</code> 显示所有操作过程<br \> <code>-c</code> 只显示被改变的文件操作过程<br \> <code>-f</code> 安静模式,不输出错误信息<br \> | ||
|<code>chown foo:root test</code>修改test用户属主为foo用户,属组为root用户组 | |<code>chown foo:root test</code>修改test用户属主为foo用户,属组为root用户组 | ||
第227行: | 第328行: | ||
|chgrp | |chgrp | ||
|修改文件或目录的属组。<br \>(属组:文件属于的用户组。) | |修改文件或目录的属组。<br \>(属组:文件属于的用户组。) | ||
|chown [参数 | |chown [参数] 属组 文件<br \><br \> chown [参数] --reference=参照文件 文件 | ||
|<code>-R</code> 递归的方式更改目录所有文件的属组<br \> <code>-v</code> 显示所有操作过程<br \> <code>-c</code> 只显示被改变的文件操作过程<br \> <code>-f</code> 安静模式,不输出错误信息<br \> | |<code>-R</code> 递归的方式更改目录所有文件的属组<br \> <code>-v</code> 显示所有操作过程<br \> <code>-c</code> 只显示被改变的文件操作过程<br \> <code>-f</code> 安静模式,不输出错误信息<br \> | ||
|<code>chgrp root test</code>修改test文件属组为root用户组 | |<code>chgrp root test</code>修改test文件属组为root用户组 | ||
第249行: | 第350行: | ||
| 加密远程传输文件,基于ssh。 | | 加密远程传输文件,基于ssh。 | ||
| | | | ||
| | |<code>-r</code> 传输目录 | ||
|<code>scp C:\Users\username\a.txt root@46.100.125.122:/home/root/b.txt</code> 将本地a.txt复制到远程主机的/home/root/b.txt | |<code>scp C:\Users\username\a.txt root@46.100.125.122:/home/root/b.txt</code> 将本地a.txt复制到远程主机的/home/root/b.txt <br \><code>scp -r root@46.100.125.122:/data/tes1/ /data/test1</code> 将服务器目录/data/tes1/下载到本地/data/tes1/ | ||
|} | |} | ||
===网络命令=== | ===网络命令=== | ||
{| class="wikitable" style="width: 100%; | {| class="wikitable" style="width: 100%; | ||
第259行: | 第361行: | ||
!常用参数 | !常用参数 | ||
!示例 | !示例 | ||
|- | |||
|ping | |||
|网络诊断工具,检测连通性 | |||
| | |||
| | |||
|<code>ping baidu.com</code> <br /><code>ping 1.1.1.1</code> | |||
|- | |- | ||
|ip | |ip | ||
|显示和配置网络 | |显示和配置网络 | ||
| | | | ||
| | |||
|<code>ip addr</code> <br /><code>ip route</code> <br /> | |||
|- | |||
|nslookup | |||
|DNS查询命令 | |||
| | |||
| | |||
|<code>nslookup baidu.com</code> | |||
|- | |||
|dig | |||
|DNS查询命令 | |||
| | | | ||
| | | | ||
|<code>dig baidu.com</code> | |||
|- | |- | ||
| | |ss | ||
| | |socket统计信息。已经取代netstat。 | ||
| | |||
| | |||
| | | | ||
|- | |||
|[[tcpdump]] | |||
|数据包分析工具。 | |||
| | | | ||
| | | | ||
|- | |- | ||
| | |ifconfig | ||
| | |查看和配置网络设备。已经被<code>ip addr, ip link, ip -s</code>命令取代。 | ||
| | | | ||
| | | | ||
| | | | ||
|- | |- | ||
| | |route | ||
| | |显示和修改路由表。已经被<code>ip route</code>命令取代。 | ||
| | | | ||
| | | | ||
| | | | ||
|- | |- | ||
| | |netstat | ||
| | |显示网络状态。已经被<code>ip -s, ss, ip route</code>命令取代。 | ||
| | | | ||
| | | | ||
第301行: | 第426行: | ||
|lsblk | |lsblk | ||
|列出块设备信息 | |列出块设备信息 | ||
|lsblk [参数 | |lsblk [参数] [设备] | ||
|<code>-a</code> 显示所有设备<br \><code>-b</code>以bytes方式显示设备大小<br \><code>-d</code> 不显示分区<br \><code>-m</code> 显示权限信息<br \> | |<code>-a</code> 显示所有设备<br \><code>-b</code>以bytes方式显示设备大小<br \><code>-d</code> 不显示分区<br \><code>-m</code> 显示权限信息<br \> | ||
|<code>lsblk</code>显示块设备信息<br \> <code>lsblk -d</code> 显示块设备信息,但不显示其节点信息 | |<code>lsblk</code>显示块设备信息<br \> <code>lsblk -d</code> 显示块设备信息,但不显示其节点信息 | ||
第307行: | 第432行: | ||
|df | |df | ||
|显示磁盘使用情况 | |显示磁盘使用情况 | ||
|df [参数 | |df [参数] [文件] | ||
|<code>-a</code> 所有文件系统<br \><code>-h</code> | |<code>-a</code> 所有文件系统<br \><code>-h</code> 以K、M、G、T、P等方式显示大小(除数为1024)<br \><code>-H</code> 与-h相同,但除数为1000<br \><code>-i</code> 显示inode信息<br \><code>-l</code> 只显示本地文件系统<br \><code>-T</code> 显示文件系统类型<br \><code>t 文件系统类型</code> 指定文件系统类型 | ||
|<code>df -h </code> 以易读方式显示磁盘使用情况<br \> <code>df -t ext4</code> 显示ext4类型文件系统的磁盘使用情况 | |<code>df -h </code> 以易读方式显示磁盘使用情况<br \> <code>df -t ext4</code> 显示ext4类型文件系统的磁盘使用情况 | ||
|- | |- | ||
|du | |du | ||
|文件或目录的磁盘使用情况 | |文件或目录的磁盘使用情况 | ||
|df [参数 | |df [参数] [文件] | ||
|<code>-a</code> 显示所有文件情况,而不仅是默认情况的目录<br \><code>-h</code> | |<code>-a</code> 显示所有文件情况,而不仅是默认情况的目录<br \><code>-h</code> 以K、M、G、T、P等方式显示大小(除数为1024)<br \><code>-H</code> 与-h相同,但除数为1000<br \><code>-s</code> 只显示总计<br \><code>-S</code> 仅统计目录不包含子目录的大小 <br \><code>-d N, --max-depth=N</code> 目录深度 <br \><code>--exclude=PATTERN</code> 排除匹配的文件 | ||
|<code>du -h test</code> 易读方式显示test目录所占空间 | |<code>du -h test</code> 易读方式显示test目录所占空间 <br \><code>du -sh .</code> 显示当前目录大小 <br \><code>du -sh *</code> 显示当前目录下各个文件或目录的大小 <br \><code>du -d 2 -h test</code> 或 <code>du --max-depth=2 -h test</code> 显示test目录下及其子目录的各个文件或目录的大小 <br \><code>du -sh --exclude='[HN]*' *</code> 显示当前目录下各个文件或目录的大小,但不显示H或N开头的文件或目录 <br \><code><nowiki>du -sh * | sort -hr</nowiki></code> 显示当前目录下各个文件或目录的大小,并降序显示 <br \><code><nowiki>du -ah | sort -hr | head -n 10</nowiki></code> 当前目录及子孙目录所有文件大小,按大小降序,并显示前10条 | ||
|- | |- | ||
|fdisk | |fdisk | ||
|磁盘分区工具 | |磁盘分区工具 | ||
| | | | ||
| | |||
| <code>fdisk -l</code> 列出所有磁盘分区类型 | |||
|- | |||
|[[mount]] | |||
| 挂载工具 | |||
| | |||
| | |||
| <code>mount /dev/sdc2 test</code> 挂载sdc2(第三个硬盘第二个分区)到当前目录的test目录 | |||
|- | |||
| hdparm | |||
| 查看硬盘参数和性能测试 | |||
| | | | ||
| | | | ||
|<code>sudo hdparm -I /dev/sda</code> 显示sda硬盘信息 <br \><code>sudo hdparm -t /dev/sda</code> 测试sda硬盘的读取速度 | |||
|} | |} | ||
第333行: | 第470行: | ||
|- | |- | ||
|ps | |ps | ||
| | |进程(Process)状态信息 <br \><code>process status</code> | ||
| | | ps [参数] | ||
| <code>-A</code>或<code>-e</code> 所有进程 <br \><code>-f</code>全格式输出 <br \><code>-l</code> 长格式输出 | |||
| <code>ps</code> 当前终端当前用户的进程 <br \><code>ps -ef</code>显示所有进程,输出详细信息 <br \><code>ps -el</code> 显示所有进程,长格式输出 <br \><code>ps -aux</code> 显示所有进程,输出详细信息 | |||
|- | |||
| pidof | |||
| 查找指定程序进程ID | |||
| | | | ||
| | | | ||
|<code>pidof nginx</code>查找nginx进程id | |||
|- | |- | ||
|top | |top | ||
第349行: | 第492行: | ||
| | | | ||
| | | | ||
|- | |||
|systemctl | |||
|是[[systemd]]的一个主要工具,可用于系统管理和服务管理。 | |||
| | |||
| | |||
|<code>systemctl --version</code> 查看版本 <br \><code>systemctl start nginx.service</code>启动nginx服务 | |||
|- | |||
|[https://man7.org/linux/man-pages/man1/kill.1.html kill] | |||
|终止进程。 | |||
| | |||
| | |||
| | |||
|- | |||
|[https://man7.org/linux/man-pages/man1/crontab.1.html crontab] | |||
|是一个定时的任务管理命令,是[[cron]]软件用于维护用户crontab文件。 <br /><br />crontab文件每行是一条定时任务,格式如下:<br /><syntaxhighlight lang="bash" > | |||
分钟 小时 日 月 星期 被执行的命令 | |||
</syntaxhighlight> 如:<code>30 0 * * * echo "hello" >> /tmp/test</code> 每天0点30打印hello到/tmp/test文件中。定时中可使用的值:<br />1.某个数值,如分钟位置上的30表示第30分钟,星期上的6表示星期六。<br />2.星号*,表示任何值,如日位置上的*号表示每天。<br />3.连词符-,表示范围。<br />4.逗号,,表示多个值,如分钟位置的1,6,9表示第1,6,9分钟。<br />5.百分号%,表示每,如分钟位置上*%5表示每5分钟。<br />6.斜线/,表示间隔,如分钟位置上*/5表示 | |||
|crontab [参数] [文件] | |||
|<code>-u user</code> 指定编辑某用户的crontab文件,不设定,默认当前用户。 <br /><code>-l</code> 显示用户crontab文件内容,默认当前用户 <br /><code>-e</code> 编辑用户crontab文件,默认当前用户 <br /><code>-r</code> 删除用户crontab文件,默认当前用户。 | |||
|<code>crontab -l</code> 显示当前用户crontab文件内容 <br /><code>crontab -e</code> 编辑当前用户的crontab文件 <br /><code>crontab -u test -l</code> 查看test用户crontab文件内容,需要有权限。 | |||
|- | |- | ||
|} | |} |
2024年3月15日 (五) 05:15的最新版本
shell语言
名称 | 描述 | 示例 |
---|---|---|
解释器 | 常见shell命令解释器: sh,大多数Unix的默认Shell bash,大多数Linux的默认Shell zsh,Mac OS从2019年起将默认Shell从bash改为zsh。 脚本在首行可以指定解释器,如 #!/bin/bash 。也可以在运行时指定使用的解释器如:bash /path/to/script.sh 在命令行输入 echo $SHELL ,可以查看当前使用的Shell解析器
|
|
注释 | 单行注释:以# 开头。
|
|
管道 | 管道中每个命令的输出通过管道连接到下一个命令的输入。用| 或者|& 表示。其中|& 输出除了包含正常信息,还包含错误时信息,是简写2>&1 | 的简写。 格式: [time [-p]] [!] command1 [ | or |& command2 ] …
|
|
参数展开 | 格式:${参数} ,参数的值 ${参数#文本} 或${参数##文本} ,从开头删除匹配的内容,# 表示小匹配内容,## 最多匹配内容。${参数%文本} 或${参数%%文本} ,从结尾删除匹配的内容,% 表示小匹配内容,%% 最多匹配内容。${参数@操作} 根据操作字符值进行转换,常用操作可取值:U ,参数的值,都转大写。L ,参数的值,都转小写。
|
$ str=123abc
$ echo ${str} #参数值,相当于$str
$ echo ${str:2} #从第3位开始到最后
$ echo ${str:2:1}
for name in `ls`; do mv $name ${name#2021-} ; done; 批量重命名,删除前缀2021-
|
模式匹配 | ||
参数类型 | 3种类型命令行参数: 1.Unix类型参数,前面加 - 2.BSD类型参数,前面加不加 3.GNU类型参数,前面加 -- 使用man打开帮助文档,可以查看支持的参数,如 man ps
|
|
文件管理
命令 | 描述 | 语法格式 | 常用参数 | 示例 |
---|---|---|---|---|
ls | 显示目录的内容和属性 | ls [参数][目录] | -a 显示所有文件和目录,包括隐藏内容(以.开头文件)-l 显示属性权限等信息-h 文件大小以KB、MB、GB等显示,与-l参数搭配-R 显示包括子孙目录的所有文件和目录
|
ls -l 显示当前目录的内容和信息 ls -al /home 显示/home目录的包括隐藏文件在内的所有内容和信息
|
cd | 切换当前目录,目录可以使用相对路径或绝对路径 | cd [目录] | cd /home 进入/home目录 cd ../dirName 进入上级目录中的dirName目录
| |
pwd | 查看当前目录的完整路径 | pwd [参数] | pwd 查看当前目录的完整路径
| |
mkdir | 创建目录,可一次创建多个 | mkdir [参数] 目录 | -p 创建多级目录 -m 权限值 设置目录权限 -v 显示创建过程的信息
|
mkdir test 在当前目录下创建一个目录testmkdir -p test1/test2 递归创建多级目录mkdir -m 700 test3 创建权限为700的test3目录
|
cp | 复制文件或目录 | cp [参数] [-T] 源文件或目录 目标文件或目录 cp [参数] 源文件或目录 目标目录 cp [参数] [-t] 目标目录 源文件或目录 |
-i 若目标文件已存在,会询问是否覆盖 -f 若目标文件已存在,直接覆盖 -n 若目标文件已存在,不要覆盖-r 递归复制目录和文件 |
cp test1 test2 复制test1到test2(假设当前不存在test2文件夹) cp t1 t2 dirA 复制t1、t2到dirA文件夹 cp -t dirA t1 t2 复制t1、t2到dirA文件夹
|
mv | 文件移动或文件重命名 | mv [参数][-T] 源文件 目标文件 mv [参数] 源文件 目标目录 mv [参数] -t 目标目录 源文件 |
mv test1 test2 文件test1重命名为test2 mv test1 test3 移动test1文件到test3目录(假设当前存在test3目录)
| |
rm | 删除文件或目录 | rm [参数] [文件或目录] | -i 删除文件时,先询问是否删除 -f 直接强制删除 -r 删除目录及其所有文件。
|
rm test 删除test文件rm -r testDir 删除testDir目录 find ./ -type d -name "__pycache__" -exec rm -rf {} \; 递归删除当前目录下所有的"__pycache__"目录。find ./ -type d -name "__pycache__" | xargs rm -rf 递归删除当前目录下所有的"__pycache__"目录。
|
rmdir | 删除空目录 | rmdir [参数] [目录] | -p
|
rmdir testDir 删除空目录testDir
|
touch | 修改文件或目录的日期时间,创建空文件 | touch [参数] [文件] | -a 修改访问时间(access time) |
touch test3 创建空文件test3
|
ln | 创建文件或目录的软链接和硬链接 | ln [参数] [源文件或目录] [目标文件或目录] | -s 软链接,相当于快捷方式。不加为默认的硬链接
|
ln test t1 创建test的硬链接t1 ln -s test t2 创建test的软链接t2
|
文本工具
命令 | 描述 | 语法格式 | 常用参数 | 示例 |
---|---|---|---|---|
cat | 显示文件内容 | cat [参数] [文件] | -n 输出内容每行前添加行号
|
cat test 显示test文件内容 cat -n test1 test2 显示test1和test2文件内容,并且显示行号。
|
tail | 显示文件末尾内容,默认10行 | tail [参数] [文件] | -n 行数 显示的行数 -c 字节数 显示的字节数 -f 循环显示,文件末尾有更新会刷新
|
tail test 显示test文件末尾10行内容 tail -n 3 test 显示test文件末尾3行内容
|
head | 显示文件开头内容,默认10行 | head [参数] [文件] | -n 行数 显示的行数 -c 字节数 显示的字节数 -v 显示文件名
|
head test 显示test文件开头10行内容 head -n 3 test 显示test文件开头3行内容
|
more | 文件内容分页查看,搜索过滤 | more [参数] 文件 | +行数 从第几行开始显示 -行数 每次显示的行数 +/字符串 从搜索到字符串位置的前面2行开始显示 -c 清屏 -p 清屏 -s 连续多个空行显示为一行
|
more +5 test 从第5行显示test文件内容 more -12 test 每次显示12行test文件内容 more +/晴天 test 从test文件搜索到“晴天”的位置向前2行开始显示
|
sort | 排序 | sort [参数] [文件] | -r 反向排序 -n 按数值排序 -h 按易读数值(如2G、1K)排序 -M 按月份排序
|
sort test.txt 按字符大小排序test.txt每行 sort -n test.txt 按数字大小排序test.txt每行
|
grep | 文本搜索,使用正则表达式进行搜索 | grep [参数] 匹配模式 [文件] | -c 统计搜索到的次数 -i 忽略大小写差别 -r 递归方式查找,目录的所有文件包括子孙目录
|
grep test *.log --color=auto 查找.log结尾文件包含test的行,并且test用颜色标记 grep -r passwd /etc/ 查找/etc目录下所有文件中包含passwd的行
|
awk | 文本处理、分析和格式化工具。持正则表达式。 | |||
sed | 命令行文本处理,支持正则表达式。常用于替换。 | |||
vi/vim | 文本编辑器 | vim [参数] [文件] vim [参数] - vim [参数] -t tag |
vim test 用vim编辑test +行数 跳到指定行数 + 跳到最后一行 -R 只读模式打开文件 |
vim +10 test 打开test文件,跳到10行位置 vim -R test 只读模式打开test文件
|
wc | 统计文件行数、单词数、字节数信息。word count
|
wc [参数] [文件] | -l 行数 -m 字数 -c 字节数-L 最长行的字数 -m 最长行的字数
|
wc test 显示test文件行数、字数、字节数信息 wc -l test 显示test文件行数
|
diff | 文件比对 | -r 对比目录及子孙目录所有文件 -x 排除文件或目录,不进行对比。 -C 行数 或-c行数 显示不同处的上下文
|
diff a.txt a2.txt 显示a.txt和a2.txt文本差异 diff dir1 dir2 显示目录dir1和dir1文件差异。 diff -r -x '*.log' dir1 dir2 显示目录dir1和dir1及子孙目录所有文件差异,除了.log结尾的文件。
|
查找
命令 | 描述 | 语法格式 | 常用参数 | 示例 |
---|---|---|---|---|
find | 文件搜索,默认当前目录 | find [参数] [搜索目录] [表达式] | -name 按文件名查找目录下所有文件包括子孙目录 -iname 文件名忽略大小写 -type 类型 指定查找类型bcdpflsD(d:目录,f:一般文件) -ctime 天数 过去几天修改过的文件 -cmin 分钟数 过去几分钟修改过的文件
|
find test 当前目录查找test文件find -name *.log 当前目录及子孙目录查找以.log结尾的文件 find . -type d -name '.c' 递归查找当前目录所有名称为'.c'的目录 find -ctime 3 当前目录过去3天修改过的文件 find testDir | xargs grep -rl 'Python' 查找testDir目录及子孙目录中文件内容包含'Python'的文件。
|
whereis | 查找程序、源代码及帮助文件位置 | whereis [参数] 文件 | -b 查找可执行文件-m 查找帮助文件-s 查找源代码文件-u 查找其他文件-B 目录 指定查找可执行文件的目录-M 目录 指定查找帮助文件的目录-S 目录 指定查找源代码文件的目录
|
which python3 查找python3位置
|
which | 查找程序位置,在当前PATH变量中查询,且只返回第一个结果。 | which python3 查找python3位置
|
备份压缩
命令 | 描述 | 语法格式 | 常用参数 | 示例 |
---|---|---|---|---|
tar | 打包,多个文件或目录打包成一个存档文件。解包,从存档文件提取所有文件。 使用gzip、bz2压缩解压 |
tar [参数] [文件] (主参数有且只能一个) |
主参数:-c 打包,创建一个新存档文件-x 解包,提取所有存档文件-t 查看,显示所有存档文件-r 追加,向存档文件追加文件-u 更新,只更新比存档文件的文件新的文件-d 差异,副参数: -v 显示操作过程-f 存档文件 指定存档文件-C 目录 指定目录-z 通过gzip压缩解压,现在解压不需要指定,tar会自动选择
|
tar -cvf test.tar testDir test2 打包当前目录下testDir目录和test2,生成test.tar文件 tar -xvf test.tar 解包test.tar到当前目录tar -xvf test.tar -C ../foo 在当前目录的上级目录的foo目录里解包test.tar |
gzip | 压缩文件,解压gzip文件,不能压缩目录,需配合tar使用。默认压缩文件,并删除原文件 | gzip [参数] [文件] | -d 解压-c 输出压缩文件到标准输出设备,而不更改原文件-f 强制压缩覆盖-l 显示压缩信息-k 不删除原文件-r 在目录上递归操作,压缩或解压单个文件
|
gzip * 把当前目录所有文件转化为压缩文件gzip -d * 把当前目录所有压缩文件转化为文件
|
unzip | 解压zip文件 | unzip [参数] [文件] | -d 目录 指定解压缩目录-l 列出压缩包所包含的文件-v 显示执行过程-n 不覆盖原文件-j 不创建压缩文件里的目录-k 不删除原文件-r 在目录上递归操作,压缩或解压单个文件
|
unzip test.zip 解压缩test.zip到当前目录unzip test.zip -d foo 解压缩test.zip到当前目录的foo目录中
|
用户和组
命令 | 描述 | 语法格式 | 常用参数 | 示例 |
---|---|---|---|---|
id | 显示用户的用户名和组名及数字ID | id 显示当前用户 id yourname 显示用户名为yourname的
| ||
useradd | 添加新用户 | adduser yourname
usermod -aG sudo yourname
| ||
usermod | 修改用户账号 | |||
userdel | 删除用户账户 | userdel [参数] 用户名 | -r 同时删除其主目录 |
sudo userdel -r username
|
passwd | 修改用户密码 | |||
groupdel | 删除用户组 | |||
权限管理
命令 | 描述 | 语法格式 | 常用参数 | 示例 |
---|---|---|---|---|
chmod | 修改文件或目录权限。 查看权限可使用 ls -l 命令
|
chmod [参数] 模式 [文件] chmod [参数] --reference=参照文件 [文件] 模式格式: [ugoa]*([-+=]([rwxXst]*|[ugo]))+|[-+=][0-7]+ |
-R 递归的方式为目录所有文件权限-v 显示所有操作过程-c 只显示被改变权限的文件操作过程-f 安静模式,不输出错误信息模式: u 属主,文件属于的用户g 属组,文件属于的用户组o 其他用户a 所有用户(默认)+ 增加权限- 取消权限= 重新设定权限r 读权限,用数字4表示w 写权限,用数字2表示x 执行权限,用数字1表示0 无权限,用数字0表示
|
chmod 751 test 设置test文件权限,属主读、写和执行的权限(7),属组读和执行的权限(5),其他用户执行的权限(1)。chmod a+r test 设置test文件权限,为所有用户增加读取权限 chmod a=r,u+w test 设置test文件为所有用户只读,属主可写权限。
|
chown | 修改文件或目录的属主和属组。 (属主:文件属于的用户, 属组:文件属于的用户组。) |
chown [参数] [属主][:[属组]] 文件 chown [参数] --reference=参照文件 文件 |
-R 递归的方式更改目录所有文件的属主和属组-v 显示所有操作过程-c 只显示被改变的文件操作过程-f 安静模式,不输出错误信息 |
chown foo:root test 修改test用户属主为foo用户,属组为root用户组
|
chgrp | 修改文件或目录的属组。 (属组:文件属于的用户组。) |
chown [参数] 属组 文件 chown [参数] --reference=参照文件 文件 |
-R 递归的方式更改目录所有文件的属组-v 显示所有操作过程-c 只显示被改变的文件操作过程-f 安静模式,不输出错误信息 |
chgrp root test 修改test文件属组为root用户组
|
远程
命令 | 描述 | 语法格式 | 常用参数 | 示例 |
---|---|---|---|---|
ssh | 远程登录工具 | ssh root@46.100.125.122 使用root用户登录46.100.125.122
| ||
scp | 加密远程传输文件,基于ssh。 | -r 传输目录
|
scp C:\Users\username\a.txt root@46.100.125.122:/home/root/b.txt 将本地a.txt复制到远程主机的/home/root/b.txt scp -r root@46.100.125.122:/data/tes1/ /data/test1 将服务器目录/data/tes1/下载到本地/data/tes1/
|
网络命令
命令 | 描述 | 语法格式 | 常用参数 | 示例 |
---|---|---|---|---|
ping | 网络诊断工具,检测连通性 | ping baidu.com ping 1.1.1.1
| ||
ip | 显示和配置网络 | ip addr ip route | ||
nslookup | DNS查询命令 | nslookup baidu.com
| ||
dig | DNS查询命令 | dig baidu.com
| ||
ss | socket统计信息。已经取代netstat。 | |||
tcpdump | 数据包分析工具。 | |||
ifconfig | 查看和配置网络设备。已经被ip addr, ip link, ip -s 命令取代。
|
|||
route | 显示和修改路由表。已经被ip route 命令取代。
|
|||
netstat | 显示网络状态。已经被ip -s, ss, ip route 命令取代。
|
磁盘管理
命令 | 描述 | 语法格式 | 常用参数 | 示例 |
---|---|---|---|---|
lsblk | 列出块设备信息 | lsblk [参数] [设备] | -a 显示所有设备-b 以bytes方式显示设备大小-d 不显示分区-m 显示权限信息 |
lsblk 显示块设备信息lsblk -d 显示块设备信息,但不显示其节点信息
|
df | 显示磁盘使用情况 | df [参数] [文件] | -a 所有文件系统-h 以K、M、G、T、P等方式显示大小(除数为1024)-H 与-h相同,但除数为1000-i 显示inode信息-l 只显示本地文件系统-T 显示文件系统类型t 文件系统类型 指定文件系统类型
|
df -h 以易读方式显示磁盘使用情况df -t ext4 显示ext4类型文件系统的磁盘使用情况
|
du | 文件或目录的磁盘使用情况 | df [参数] [文件] | -a 显示所有文件情况,而不仅是默认情况的目录-h 以K、M、G、T、P等方式显示大小(除数为1024)-H 与-h相同,但除数为1000-s 只显示总计-S 仅统计目录不包含子目录的大小 -d N, --max-depth=N 目录深度 --exclude=PATTERN 排除匹配的文件
|
du -h test 易读方式显示test目录所占空间 du -sh . 显示当前目录大小 du -sh * 显示当前目录下各个文件或目录的大小 du -d 2 -h test 或 du --max-depth=2 -h test 显示test目录下及其子目录的各个文件或目录的大小 du -sh --exclude='[HN]*' * 显示当前目录下各个文件或目录的大小,但不显示H或N开头的文件或目录 du -sh * | sort -hr 显示当前目录下各个文件或目录的大小,并降序显示 du -ah | sort -hr | head -n 10 当前目录及子孙目录所有文件大小,按大小降序,并显示前10条
|
fdisk | 磁盘分区工具 | fdisk -l 列出所有磁盘分区类型
| ||
mount | 挂载工具 | mount /dev/sdc2 test 挂载sdc2(第三个硬盘第二个分区)到当前目录的test目录
| ||
hdparm | 查看硬盘参数和性能测试 | sudo hdparm -I /dev/sda 显示sda硬盘信息 sudo hdparm -t /dev/sda 测试sda硬盘的读取速度
|
系统管理
命令 | 描述 | 语法格式 | 常用参数 | 示例 |
---|---|---|---|---|
ps | 进程(Process)状态信息 process status
|
ps [参数] | -A 或-e 所有进程 -f 全格式输出 -l 长格式输出
|
ps 当前终端当前用户的进程 ps -ef 显示所有进程,输出详细信息 ps -el 显示所有进程,长格式输出 ps -aux 显示所有进程,输出详细信息
|
pidof | 查找指定程序进程ID | pidof nginx 查找nginx进程id
| ||
top | 实时显示进程状态信息 | |||
vmstat | 虚拟内存统计,可以显示虚拟内存、进程、CPU等的整体情况 | |||
systemctl | 是systemd的一个主要工具,可用于系统管理和服务管理。 | systemctl --version 查看版本 systemctl start nginx.service 启动nginx服务
| ||
kill | 终止进程。 | |||
crontab | 是一个定时的任务管理命令,是cron软件用于维护用户crontab文件。 crontab文件每行是一条定时任务,格式如下: 分钟 小时 日 月 星期 被执行的命令
30 0 * * * echo "hello" >> /tmp/test 每天0点30打印hello到/tmp/test文件中。定时中可使用的值:1.某个数值,如分钟位置上的30表示第30分钟,星期上的6表示星期六。 2.星号*,表示任何值,如日位置上的*号表示每天。 3.连词符-,表示范围。 4.逗号,,表示多个值,如分钟位置的1,6,9表示第1,6,9分钟。 5.百分号%,表示每,如分钟位置上*%5表示每5分钟。 6.斜线/,表示间隔,如分钟位置上*/5表示 |
crontab [参数] [文件] | -u user 指定编辑某用户的crontab文件,不设定,默认当前用户。 -l 显示用户crontab文件内容,默认当前用户 -e 编辑用户crontab文件,默认当前用户 -r 删除用户crontab文件,默认当前用户。
|
crontab -l 显示当前用户crontab文件内容 crontab -e 编辑当前用户的crontab文件 crontab -u test -l 查看test用户crontab文件内容,需要有权限。
|