Linux 工具


Linux基本工具包括文件查找、帮助手册的使用等。


type

type命令显示一个linux命令的类型。

$ type cd
$ type find

type cd命令显示cd命令的类型,cd命令是一个shell内部命令。

type find命令显示find命令的类型,find是一个外部命令,find程序的位置是/usr/bin/find。

which

which命令显示一个可执行程序的目录位置。which命令在PATH环境变量指定的路径中查找指定命令。

$ which ls
$ which cp

which ls命令显示命令ls的目录位置为/bin/ls。

man

man命令显示指定命令的使用手册。

man命令的格式:

man [段编号] 命令名

段编号说明:

  1. 通用命令
  2. 系统调用
  3. 库函数,一般是c标准库函数
  4. 特殊文件和设备驱动程序
  5. 文件格式
  6. 游戏
  7. 杂项命令
  8. 系统管理命令和守护进程

其中段(section)编号是可选的。

`$ man printf`
`$ man 3 printf`
`$ man 5 passwd`
`$ man -k passwd`

man printf命令显示printf命令的使用手册。

man 3 printf命令显示printf函数的使用手册。

man 5 passwd命令显示/etc/passwd文件的格式。

man -k passwd命令在手册页中查找passwd。和apropos命令功能相同。

常用的man命令(和less命令一样):

  • f空格键:向前滚动一页。
  • b:向后滚动一页。
  • d:向前滚动半页。
  • u:向后滚动半页。
  • j:向前滚动一行。命令前面加数字,可以一次滚动多行。
  • k:向后滚动一行。命令前面加数字,可以一次滚动多行。
  • g:移动到第一行。
  • G:移动到最后一行。
  • /:后面跟要搜索的内容,回车,向前搜索指定内容。输入n,搜索下一个匹配。输入p,搜索上一个匹配。
  • ?:后面跟要搜索的内容,回车,向后搜索指定内容。输入n,搜索下一个匹配。输入p,搜索上一个匹配。
  • q:退出less。
  • h:显示帮助。

显示有颜色的手册页

export LESS_TERMCAP_mb=$'\E[01;31m'
export LESS_TERMCAP_md=$'\E[01;31m'
export LESS_TERMCAP_me=$'\E[0m'
export LESS_TERMCAP_se=$'\E[0m'
export LESS_TERMCAP_so=$'\E[01;44;33m'
export LESS_TERMCAP_ue=$'\E[0m'
export LESS_TERMCAP_us=$'\E[01;32m'

运行上面这几条命令后,使用man命令打开的手册页就有颜色了。

可以将上面的命令加入~/.bash_profile文件,开机时就会执行这几条命令。

apropos

apropos命令在手册页中查找指定内容。查找结果包含手册页名称、段(section)编号和手册页描述信息。apropos命令和man -k功能相同。

$ apropos find

apropos find命令在手册页中查找find。

whatis

whatis命令显示包含指定内容的命令的简单描述。

$ whatis grep

whatis grep命令显示包含grep的所有命令的简单描述。

locate

locate命令在数据库中查找文件路径中包含指定字符串的所有文件。

$ locate hello
$ locate bin/user

locate hello命令显示文件路径中包含hello的所有文件。

locate bin/user命令显示文件路径中包含bin/user的所有文件。

find

find命令在指定文件目录(和子目录)中查找文件路径中包含指定字符串的所有文件。

find命令的格式:

find [选项] 文件路径... [表达式]

$ find .
$ find . -name 'log*'
$ find . -type d -iname 'a*'
$ find . -type f -size +1M
$ find . -type f -size +1M -exec ls -l '{}' +
$ find . -type f -size +1M | xargs ls -l
$ find . -type f -mtime +1 | xargs ls -l

find .命令显示当前目录及子目录下的所有文件,包含文件路径。

find . -name 'log*'命令显示当前目录及子目录下的所有文件名中以log开始的文件。

find . -type d -iname 'a*'命令显示当前目录及子目录下的所有目录中以a或A开始的目录。-iname表示目录名不区分大小写。

find . -type f -size +1M命令显示当前目录及子目录下的所有文件大小大于1M的文件。-1M表示文件大小小于1M,文件大小单位可以是c(字节)、kMGT

find . -type f -size +1M -exec ls -l '{}' +命令显示当前目录及子目录下的所有文件大小大于1M的文件的详细信息。-exec ls -l '{}' +表示对find命令的返回的每个文件再执行命令ls -l '{}' +{}是占位符,用来替换文件。

find . -type f -size +1M | xargs ls -l命令显示当前目录及子目录下的所有文件大小大于1M的文件的详细信息。xargs ls -l表示对find命令的返回的每个文件再执行命令ls -l

find . -type f -mtime +1d | xargs ls -l命令显示当前目录及子目录下的所有1天之前更新过的文件的详细信息。-1d表示1天之内更新过,时间单位可以是s(秒)、m(分钟)、h(小时)、d(天)、w(星期)。

xargs

xargs命令用来根据标准输入构建命令并执行命令。xargs命令一般和find命令结合使用。

xargs命令的格式:

xargs [选项] [程序 [参数...]]

如果xargs命令中不指定程序,则使用echo命令。xargs中从标准输入中读取以空格、tab、换行符、文件结束符分隔的字符串作为程序参数

$ find . -type f -name 'log*' | xargs
$ find . -type f -name 'log*' | xargs -I {} cp '{}' ~/c/tutor
$ ls 1.tar 2.tar | xargs -n1 tar -xvf

find . -type f -name 'log*' | xargs命令显示当前目录中所有文件名以log开始的文件。即以find命令的输出作为echo命令的参数,实际执行的是echo ./log1 ./log2

find . -type f -name 'log*' | xargs -I {} cp '{}' ~/c/tutor命令将当前目录中所有文件名以log开始的文件复制到~/c/tutor目录。-I {}表示使用{}代替标准输入,用来替换参数中使用标准输入的地方。

ls 1.tar 2.tar | xargs -n1 tar -xvf命令分别解压当前目录的1.tar和2.tar文件。-n1用来指示xargs命令每次从标准输入中取出一个输入(这里是一个tar文件)作为程序的参数。

history

history命令显示历史命令的列表。历史命令指在shell中执行过的命令。

$ history | less
$ history | grep ls | less

history | less命令分页显示历史命令列表。每行显示一个命令,包含命令编号和命令内容。

history | grep ls | less命令分页显示命令中包含ls的历史命令列表。

history相关命令:

  • !!,执行最后一次执行的命令。
  • !编号,编号是history中命令的编号,!20命令执行历史命令中编号为20的命令。
  • !字符串,执行history中以字符串开始的最后一个命令。!man命令执行历史命令中以man开始的最后一个命令。
  • !?字符串,执行history中包含字符串的最后一个命令。!hi命令执行历史命令中包含hi的最后一个命令。

alias

alias命令为指定命令创建别名。unalias命令用来删除别名。

$ alias ll='ls -l'
$ alias lla='ls -la'

alias ll='ls -l'命令为ls -l命令创建别名ll。ll命令和ls -l命令的输出是一样的。

alias lla='ls -la'命令为ls -la命令创建别名lla。lla命令显示所有文件(包含隐藏文件)的详细信息。

clear

clear命令用来清空屏幕。

$ clear