linux常用命令
运行环境+笔记参考:Linux 命令基础入门 - 蓝桥云课 (lanqiao.cn)
Ls
- 查看目录清单
| 参数 | 描述 |
|---|---|
| -a | –all 列出目录下的所有文件,包括以 . 开头的隐含文件 |
| -l | 除了文件名之外,还将文件的权限、所有者、文件大小等信息详细列出来 |
| -h | –human-readable 以容易理解的格式列出文件大小(例如 1K 234M 2G) |
| -t | 以文件修改时间排序 |
- 列出
/home文件夹下的所有文件和目录的详细资料:
ls -a -l /home
ls -al /home
Cd
- 切换到指定的目录
- 从当前目录进入当前用户主目录
cd ~
Pwd
| 参数 | 描述 |
|---|---|
| -P | 显示实际物理路径,而非使用连接(link)路径 |
| -L | 当目录为连接路径时,显示连接路径 |
Mkdir
- 创建指定名称的目录
| 参数 | 描述 |
|---|---|
| -m --mode=模式 | 设定权限<模式> |
| -p --parents | 可以是一个路径名称。若路径中的某些目录尚不存在,加上此选项后,系统将自动建立好那些尚不存在的目录,即一次可以建立多个目录 |
| -v --verbose | 每次创建新目录都显示信息 |
Tree
Rm
- 删除一个目录中的一个或多个文件或目录
| 参数 | 描述 |
|---|---|
| -f --force | 忽略不存在的文件,从不给出提示 |
| -i --interactive | 进行交互式删除 |
| -r --recursive | 指示 rm 将参数中列出的全部目录和子目录均递归地删除 |
| -v --verbose | 详细显示进行的步骤 |
Mv
- 移动文件或更改文件名
| 参数 | 描述 |
|---|---|
| -b --back | 若需覆盖文件,则覆盖前先行备份 |
| -f --force | 如果目标文件已经存在,不会询问而直接覆盖 |
| -i --interactive | 若目标文件已经存在时,就会询问是否覆盖 |
| -u --update | 若目标文件已经存在,且源文件比较新,才会更新 |
| -t --target | 该选项适用于移动多个源文件到一个目录的情况,此时目标目录在前,源文件在后 |
如果不加-i,则默认直接覆盖
Cp
- 复制文件或者目录
| 参数 | 描述 |
|---|---|
| -t --target-directory | 指定目标目录 |
| -i --interactive | 覆盖前询问(使前面的 -n 选项失效) |
| -n --no-clobber | 不要覆盖已存在的文件(使前面的 -i 选项失效) |
| -s --symbolic-link | 对源文件建立符号链接,而非复制文件 |
| -f --force | 强行复制文件或目录,不论目的文件或目录是否已经存在 |
| -u --update | 使用这项参数之后,只会在源文件的修改时间较目的文件更新时,或是对应的目的文件并不存在,才复制文件 |
- -s:链接表示多了一个指向该文件的,比如建立b指向a,当b发发生改变时,a也会改变
- 将 test1 目录下的所有文件复制到 test2 目录下
-
-u:只会复制最新更新的那一个文件
Cat
- 将文件或标准输入组合输出到标准输出
| 参数 | 描述 |
|---|---|
| -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 之外 |
把a.log的文件内容加上行号后输入b.log这个文件里
Nl
- linux 系统中用来计算文件中的行号
- 其默认的结果与 cat -n 有点不太一样。 nl 可以将行号做较多的显示设计,包括位数与是否自动补齐 0 等等的功能。
- number of lines
| 参数 | 描述 |
|---|---|
| -b | 指定行号指定的方式,主要有两种: |
| -b a | 表示不论是否为空行,也同样列出行号(类似 cat -n) |
| -b t | 如果有空行,空的那一行不要列出行号(默认值) |
| -n | 列出行号表示的方法,主要有三种: |
| -n ln | 行号在屏幕的最左方显示 |
| -n rn | 行号在自己栏位的最右方显示,且不加 0 |
| -n rz | 行号在自己栏位的最右方显示,且加 0 |
| -w | 行号栏位的占用的位数 |
More
常用参数
| 参数 | 描述 |
|---|---|
| +n | 从笫 n 行开始显示 |
| -n | 定义屏幕大小为 n 行 |
| +/pattern | 在每个档案显示前搜寻该字串(pattern),然后从该字串前两行之后开始显示 |
| -c | 从顶部清屏,然后显示 |
| -d | 提示“Press space to continue,’q’ to quiet”,禁用响铃功能 |
| -p | 通过清除窗口而不是滚屏来对文件进行换页,与-c 选项相似 |
| -s | 把连续的多个空行显示为一行 |
| -u | 把文件内容中的下划线去掉 |
常用操作
| 符号 | 描述 |
|---|---|
| = | 输出当前行的行号 |
| q | 退出 more |
| 空格键 | 向下滚动一屏 |
| b | 返回上一屏 |
- 将整个文件的内容从上到下显示在屏幕上。 more 命令会一页一页的显示,方便使用者逐页阅读,而最基本的指令就是按
空格键(space)往下一页显示,按 B 键就会往回(back)一页显示,而且还有搜寻字串的功能。more 命令从前向后读取文件,因此在启动时就加载整个文件。
-n 设定每屏行数为 2
查找第一个出现“g”字符串的行,并从该处前两行开始显示输出
显示/etc目录信息 , 每页显示 10 个文件信息
Less
- 对文件或其它输出进行分页显示的工具
常用参数
| 参数 | 描述 |
|---|---|
| -e | 当文件显示结束后,自动离开 |
| -f | 强迫打开特殊文件,例如外围设备代号、目录和二进制文件 |
| -i | 忽略搜索时的大小写 |
| -m | 显示类似 more 命令的百分比 |
| -N | 显示每行的行号 |
| -s | 显示连续空行为一行 |
常用操作
| 符号 | 描述 |
|---|---|
| /字符串 | 向下搜索“字符串”的功能 |
| ?字符串 | 向上搜索“字符串”的功能 |
| n | 重复前一个搜索(与 / 或 ? 有关) |
| N | 反向重复前一个搜索(与 / 或 ? 有关) |
| b | 向前翻一页 |
| d | 向后翻半页 |
| q | 退出 less 命令 |
| 空格键 | 向后翻一页 |
| 向上键 | 向上翻动一行 |
| 向下键 | 向下翻动一行 |
- 搜索字符串
输入/a,搜索,退出按q
less 与 cat 和 more 的区别
cat 命令功能:用于显示整个文件的内容,因为单独使用没有翻页功能,所以经常和 more 命令搭配使用,cat 命令还有一个可以将数个文件合并成一个文件的功能。
more 命令功能:让画面在显示满一页时暂停,此时可按空格健继续显示下一个画面,或按 q 键停止显示。
less 命令功能:less 命令的用法与 more 命令类似,也可以用来浏览超过一页的文件。所不同的是 less 命令除了可以按空格键向下显示文件外,还可以利用上下键来滚动文件。当要结束浏览时,只要在 less 命令的提示符“:”下按 q 键即可。
其实这三个命令除了 cat 命令有合并文件的功能外,其余功能都很相近,只是在浏览习惯和显示方式上有所不同。
Less Cat More区别
cat 命令功能:用于显示整个文件的内容,因为单独使用没有翻页功能,所以经常和 more 命令搭配使用,cat 命令还有一个可以将数个文件合并成一个文件的功能。
more 命令功能:让画面在显示满一页时暂停,此时可按空格健继续显示下一个画面,或按 q 键停止显示。
less 命令功能:less 命令的用法与 more 命令类似,也可以用来浏览超过一页的文件。所不同的是 less 命令除了可以按空格键向下显示文件外,还可以利用上下键来滚动文件。当要结束浏览时,只要在 less 命令的提示符“:”下按 q 键即可。
其实这三个命令除了 cat 命令有合并文件的功能外,其余功能都很相近,只是在浏览习惯和显示方式上有所不同。
head
- 显示档案的开头至标准输出中,默认 head 命令打印其相应文件的开头 10 行。
| 参数 | 描述 |
|---|---|
| -q | 隐藏文件名 |
| -v | 显示文件名 |
| -c<字节> | 显示字节数 |
| -n<行数> | 显示的行数 |
- -n
显示两个文件
Tail
- 用于显示指定文件末尾内容。常用查看日志文件。
| 参数 | 描述 |
|---|---|
| -f | 循环读取 |
| -q | 不显示处理信息 |
| -v | 显示详细的处理信息 |
| -c<字节> | 显示的字节数 |
| -n<行数> | 显示行数 |
- -f 文件有新内容增加时自动更新显示
- jobs查看正在后台运行的进程
kill -9 任务pid就可以将这个后台进程杀死。
Which
- 在 PATH 变量指定的路径中搜索可执行文件的所在位置。它一般用来确认系统中是否安装了指定的软件。
- which 可执行文件名称
- 确认是否安装了 gcc,查看 cd 命令的位置路径,可以看到在当前实验楼使用的系统中 cd 是一个
shell内建命令
什么是命令
-
是一个可执行程序,就像我们所看到的位于目录
/usr/bin中的文件一样。属于这一类的程序,可以编译成二进制文件,诸如用 C 和 C++ 语言写成的程序,也可以是由脚本语言写成的程序,比如说 shell,perl,python,ruby,等等。 -
是一个内建于 shell 自身的命令。bash 支持若干命令,内部叫做 shell 内部命令 (builtins)。
-
是一个 shell 函数。这些是小规模的 shell 脚本,它们混合到环境变量中。 比如上面讲到的 cd 命令,在某些环境中就是一个 shell 函数。
whereis 命令
- 定位可执行文件、源代码文件和帮助文件在文件系统中的位置。whereis 命令还具有搜索源代码、指定备用搜索路径和搜索不寻常项的功能。
| 参数 | 描述 |
|---|---|
| -b | 定位可执行文件 |
| -m | 定位帮助文件 |
| -s | 定位源代码文件 |
| -u | 搜索默认路径下除可执行文件、源代码文件和帮助文件以外的其它文件 |
| -B | 指定搜索可执行文件的路径 |
| -M | 指定搜索帮助文件的路径 |
| -S | 指定搜索源代码文件的路径 |
locate
- locate 命令跟 whereis 命令类似,且它们使用的是相同的数据库。但 whereis 命令只能搜索可执行文件、联机帮助文件和源代码文件,如果要获得更全面的搜索结果,可以使用 locate 命令。
| 参数 | 描述 |
|---|---|
| -q | 安静模式,不会显示任何错误讯息 |
| -n | 至多显示 n 个输出 |
| -r | 使用正则表达式做寻找的条件 |
| -V | 显示版本信息 |
- 搜索 etc 目录下所有以 sh 开头的文件
- 搜索 etc 目录下文件名包含 lou 的文件,可以使用如下命令:
Find(1)
- 主要作用是沿着文件层次结构向下遍历,匹配符合条件的文件,并执行相应的操作。
| 参数 | 描述 |
|---|---|
| find 命令将匹配的文件输出到标准输出 | |
| -exec | find 命令对匹配的文件执行该参数所给出的 shell 命令 |
| -name | 按照文件名查找文件 |
| -type | 查找某一类型的文件 |
| -prune | 使用这一选项可以使 find 命令不在当前指定的目录中查找,如果同时使用 -depth 选项,那么 -prune 将被 find 命令忽略 |
| -user | 按照文件属主来查找文件 |
| -group | 按照文件所属的组来查找文件 |
| -mtime -n +n | 按照文件的更改时间来查找文件,-n 表示文件更改时间距现在小于 n 天,+n 表示文件更改时间距现在大于 n 天,find 命令还有 -atime 和 -ctime 选项 |
- 打印当前目录下所有以.txt 结尾的文件名
- 打印所有:
find . -print - 打印当前目录下所有以.txt 或.pdf 结尾的文件名
- 打印当前目录下所有不以.txt 结尾的文件名
find . ! -name "*.txt"
Find(2)
- 根据文件类型来查找文件
- 文件权限查找文件,使用 -perm 选项。所有者使用 -user 选项。
- 打印当前目录下所有以 .txt 结尾的符号链接
find . -type l -name "*.txt" -print
-
打印当前目录下所有权限为 777 的 php 文件(web 服务器上的 php 文件一般需要执行权限)
.:表示搜索的起始点,即当前目录。-type f:指定你正在查找普通文件。-name "*.php":指定你正在查找扩展名为.php的文件。-perm 777:指定你正在查找权限设置为777的文件。
-
打印当前目录下 root 用户拥有的所有文件
.: 当前目录。-type f: 表示查找文件而不是目录。-user root: 表示查找属于root用户的文件。
-
打印当前目录下权限不是 777 和 664 的所有文件
.: 当前目录。-type f: 表示查找文件而不是目录。( ... ): 用于分组表达式。! -perm 777: 表示不具有权限777的文件。! -perm 644: 表示不具有权限644的文件。-and: 逻辑与运算符,表示两个条件都必须为真。
Find(3)
-
找到当前目录下所有 php 文件
.: 当前目录。-name "*.php": 表示匹配文件名以".php"结尾的文件。-exec ls -l {} ;: 对于每个找到的文件,执行ls -l命令,{}会被替换为找到的文件名。
- exec后面只能跟单个命令,如果要多个命令可以写在脚本文件中
建立command.sh文件
填写内容
CTRL+x 退出 ,确定修改后回车即可
将多个命令写入脚本文件中,然后在 -exec 中使用这个脚本
Xargs
- 用管道将一个命令的 stdout(标准输出)重定向到另一个命令的 stdin(标准输入)。但有些命令只能以命令行参数的形式接收数据,而无法通过 stdin 接收数据流。在这种情况下,无法通过管道将数据重定向给这些命令。
- 这时 xargs 就可以发挥它的作用了,xargs 命令可以从标准输入接收输入,并把输入转换为一个特定的参数列表。
| 参数 | 描述 |
|---|---|
| -n | 指定每行最大的参数数量 |
| -d | 指定分隔符 |
- 将多行输入转换为单行输出,
args命令的目的是将输入中的每个单词作为输出中的一个单词
-
将单行输入转换为多行输出
|: 管道符,将前一个命令的输出传递给下一个命令。xargs -n 3: 这部分使用xargs命令,将输入分组为每组三个。-n 3选项表示每个组包含三个元素。b.txt: 将xargs的输出重定向到文件 "b.txt" 中,以保存结果。
-
将单行输入转换为多行输出,指定分隔符为 i
- -d i : 指定分割符为i
- -n 3 :指定每行最多三个参数
-
查找
find . -type f -name "*.c": 查找当前目录及其子目录下所有以 ".c" 结尾的文件。|: 管道符,将find命令的输出传递给下一个命令。xargs wc -l: 对于find命令找到的每个文件,将其传递给wc -l命令,wc -l用于统计文件的行数。