1. head命令
head命令用来显示文件开头的几行。其还有一个很好的用途是用来合并文件,与cat然后重定向相比它会在合并的文件中每个文件开始包含合并文件的文件名。例:head -99999 ReadMe* >/tmp/merge_ReadMe.txt。含义是:将当前目录下以ReadMe开头的多个文件显示前99999行(其实就是显示整个文件),并重定向到tmp目录下的merge_ReadMe.txt目录。这样达到了合并文件的目的,同时我们还可以通过每个文件开头的文件名知道当前浏览的文件。合并之后我们就可以通过more或者less命令浏览合并文件,避免了我们每次都要重新打开一个文件。
2. tail命令
tail命令和head命令类似,只不过是显示文件的最后几行。其有一个参数很好:-f(follow),作用是保存文件处于打开状态,不断显示新添加的行。通过这个选项我们可以用来监视某些文件。不过如果参数是+n,则表示显示文件自n行开始的其余部分。
3. df命令
df(disk free)命令用来查看分区的使用状态。df命令不仅显示分区还有多少剩余空间,也给出哪个文件系统被挂载到哪个挂载点。
4. find命令
find是linux下很常用而且很实用的一个命令,其用于根据特定条件在文件系统中查找文件。常用选项有:
选项 | 说明 |
-empty | 文件是空文件或者空目录 |
-links n | 文件的链接数是n |
-name pattern | 文件名是pattern |
-size n | 文件大小是n |
-type c | 文件类型是c,c可以是f(普通文件)、d(目录)、l(软链接) |
如果指定多个条件,那么默认情况下文件需要满足所有条件。如果条件之间用-or选项分割,则只需要满足一个条件即可。条件之前加-not表示取反。
对于find的结果我们还可以指定动作,对返回的文件执行特定操作。格式是:-exec command;。需要注意的是,-exec使用“{}”代替匹配的文件,动作需要以“;”作为终结,对于shell而言,“;”是命令的分割,因此在shell中需要使用“\”进行转义。例:find /tmp -type f -links +1 -exec cp {} /tmp/links\;。该命令的作用是首先在tmp目录下查找所有文件类型为f,同时其链接数大于1的文件,然后对找到的文件执行cp操作,复制到/tmp/links目录下。
5. 命令历史记录
要查看当前历史记录,最简单的方法是使用history命令。该命令会输出先前键入命令的历史,每一项前面都有一个“历史记录号码”,history命令出现在末尾。只是查看历史记录往往用处不大,关键是通过简单方式运行历史记录中的某条命令,方法如下:
语法 | 作用 |
!! | 执行前一个命令 |
!n | 执行历史记录号码为n的历史命令 |
!-n | 执行倒数第n个命令 |
!cmd | 执行最后一个用来启动cmd的命令 |
除了上述技巧之外,还有两个好用的快捷键:
- Esc + . 和Alt + .:之前被键入的命令行的最后一个标记可以用上面提到的两个组合键中的任何一个恢复。最大的用处就是恢复一个很长的字符串,如目录名;
- Ctrl + R:类似于!cmd 命令。在Ctrl + R之后键入的文本与之前键入的命令会自动匹配。
6. alias命令
alias命令用来创建别名。有时我们可以将常用的但是很长的命令用别名声明达到简化输入的目的。语法格式是:alias NAME=VALUE。取消别名用命令unalias。如果想达到简化输入的目的,通过创建变量的方法也可以达到。
7. wc命令
wc命令可以统计字符、文字和行的数量。命令行选项如下表:
选项 | 结果 |
-c | 估算字符数 |
-l | 估算行数 |
-w | 估算字数 |
filename | 需要统计的文件列表。如果没有指定文件,则从标准输入读取数据。 |
使用正则表达式搜索查找。grep命令非常强大,而且非常好用,是系统管理员必须熟知的命令。其调用形式如下:
grep [-i] [-n] [-v] [-r] [-w] pattern [filename ...]
grep命令常用的命令行选项如下表:
选 项 | 作 用 |
-c | 仅打印出包含模式的行的数量 |
-h | 禁用文件名前缀 |
-e 表达式 | 使用表达式作为搜索模式(有助于指定多个模式) |
-i | 在判断模式是否匹配时忽略大小写 |
-l | 仅打印符合模式要求的文件名 |
-n | 包括行数在内的符合要求的行 |
-q | “Quiet”。不要写任何标准输出,只要找到匹配行,返回值为0 |
-r | 在目录中递归搜索所有文件 |
-w word | 仅包含word的行(全词匹配) |
-C N | 包括符合要求的那一行的前后N行的内容 |
9. cut命令
cut命令可以从一个文本文件或者文本流中提取文本列,非常适合格式化的文件提取指定的列。使用cut命令必须指定下列参数中的一个:
选项 | 作用 |
-blist | 从指定的list中提取字节 |
-clist | 从指定的list中提取字符 |
-flist | 从指定的list中提取字段 |
N | 只有第N项 |
N- | 从第N项一直到行尾 |
N-M | 从第N项到第M项(包括M) |
-M | 从一行的开始到第M项(包括M) |
- | 从一行开始到结束的所有项 |
选项 | 作用 |
-d DELIM | 使用DELIM而不是默认的Tab字符在输入中分割域 |
-s | 不包括那些不包含分隔符的行(有利于除去注解和标题) |
--output-delimiter=STRING | 在输出中,使用STRING作为字段分隔符 |
不过cut命令有个局限性:如果采用空格作为域定义符,它不能将多个空格叠成一个空格,不过可以通过tr命令克服。
10. tr命令
tr命令是一个万能的字符转换工具,可转换数据流中的字符。转换的意思是可以用一个字符取代另一个字符、删除字符或者“压缩”字符。
tr命令不使用文件名作为参数,只对标准输入进行操作,并保留命令行参数来指定转换形式。其调用语法如下:
语法 | 作用 |
tr SET1 SET2 | 用SET2中的字符替代在SET1中对应的字符 |
tr -d SET | 删除在SET中指定的所有字符 |
tr -s SET | 压缩在SET中指定的所有字符 |
tr -s SET1 SET2 | 首先将SET1中的字符替换成SET2中的对应字符,然后压缩所有在SET2中找到的字符 |
tr -ds SET1 SET2 | 先删除所有在SET1中找到的字符,然后压缩所有在SET2中找到的字符 |
- cut命令提取列时,如果分隔符是空格,则其只能处理单个空格,我们可以通过tr命令压缩空格:df | tr -s ‘ ’ | cut -d“ ” -f1,5;
- 统计一个文本中不同单词出现的频率。我们需要做的操作如下:
- 删除所有的标点符号;
- 将所有大写字母转换成小写字母;
- 将所有空格转换成换行,并将换行压缩成一个换行;
执行的命令为:tr -d '[:punct:]' < file.txt |tr '[:upper:]' '[:lower:]' | tr -s ' ' '\n' | sort | uniq -c |sort -rn,解释是:首先读取文件file.txt,将其中的标点符号去掉,然后将大写替换成小写,然后将空格变为换行。之后又对所有的单词进行排序,并统计单词个数和频数。最后将不同单词根据其频数按递减顺序排序。