1.cat(concatenate):查看文件内容;把多个文件合并成一个;创建编辑新文件(不常用);非交互式的编辑或追加内容到文件尾部;清空文件内容;
-n:从1开始对所有输出的内容按行编号
-b:和-n选项功能类似,但会忽略显示空白行行号
例子:
cat > test.txt << EOF
welcome to my home
EOF :按回车结束,EOF必须成对出现,也可以用其他成对标签体态;将welcome to my home输入到test文件中,该编辑文件方式可以放在脚本中执行
cat test1.log test2.log > test3.log:将test1和test2中的内容合并输入到test3中
[root@oldboy ~]# cat menu.sh
#! /bin/bash
menu(){
cat <<END
1.[apple]
2.[pear]
3.[banana]
please select one that you like:
END
}
menu
[root@oldboy ~]# sh menu.sh 执行脚本
1.[apple]
2.[pear]
3.[banana]
please select one that you like:
2.more:分页显示文件内容
+num:从行号num开始显示
-num:指定屏幕显示大小为num行
子命令:
空格键:向下滚动一屏
b:返回上一屏
/查找文本:查找到指定的文本
q:退出more
例子:
ls /etc/ | more -10:etc下有很多文件目录,直接用ls查看会显示太多,借助more可以分页显示
3.less:分页显示文件内容
less命令的基本功能类似于more命令,可以分页显示文件内容,但比more的功能更强大。less在读取文件内容时,并不是像more、vi一次性将整个文件加载出来之后再显示,而是会根据需要来加载文件的内容,这样打开文件的速度会更快
-N:显示每行的行号
交互子命令:
b:向前翻一页
空格键:向后翻一页
/:向下查找字符串
?:向上查找字符串
4.head:显示文件内容头部,默认输出文件的开头10行
-n 指定显示的行数
5.tail:显示文件内容尾部,默认输出文件最后10行
-n:指定显示的行数
-f:实时输出文件变化后追加的数据
6.tailf:跟踪日志文件,首先默认输出日志文件的最后10行,然后实时地显示文件的增加内容
-n:指定显示的行数,默认是最后10行
7.cut:从文本中提取一段文字并输出
-c:以字符为单位进行分割
-d:自定义分隔符,默认以tab为分隔符
-f:与选项-d一起使用,指定显示哪个区域
N:第N个字节、字符或字段
-N:从第N个字节、字符或字段开始直至行尾
N-M:从第N个到第M(含第M)个字节、字符或字段
-M:从第1到第M(含第M)个字节、字符或字段
例子:
cut -c 2-10 test.txt:获取test.txt每行第二个字符到第十个字段输出出来
cut -d : -f 1 /etc/passwd:以冒号为分隔符,显示第一列
cut -d : -f 3-5 /etc/passwd:以冒号为分隔符,显示第三列到第五列
8.tr:从标准输入中替换、缩减或者删除字符,并将结果写到标准输出
-d:删除字符
例子:
tr 'abc' 'xyz' < oldboy.txt:将文件中的a替换成x,b替换成y,c替换成z
tr '[a-z]' '[A-Z]' < oldboy.txt:将文件中的小写字母替换成大写字母
tr -d 'abc' < oldboy.txt:将文件中的每个a、b、c字符删掉
9.split:按照指定的行数或者指定的文件大小分割文件
10.paste:将文件按照行与行进行合并,中间使用tab隔开
-d:指定合并的分隔符,默认是tab
-s:每个文件占用一行
例子:
paste test1 test2:将test1和test2按照每行与每行进行合并,分隔符是tab
paste -d : test1 test2:将test1和test2按照每行与每行进行合并,分隔符是:
paste -s test1 :将test1文件中的内容列成一行
11.sort:将输入文件内容按照指定的规则进行排序,然后将排序结果输出
-n:依照数值的大小进行排序
-t:指定分隔符
-r:倒序排列
-k:指定区间排序
例子:
sort -n test:将test中的内容按照数据大小正序排列
sort -r test:将test中的内容按照数据大小倒序排列
sort -t " " -k2 test:将test中的内容以空格为分隔符,按照第二列进行排序
12.join:对每一对具有相同内容的输入行,整合为一行输出到标准输出,默认是把输入的第一个字段作为连接字段,字段之间用空格隔开
13.uniq:可以输出或忽略文件中的重复行,只能去掉临近行的重复,因此一般与sort合用
-c:去除重复行,并计算每行出现的次数
例子:
uniq test.txt:打印出test.txt内容,去掉重复行(只取出临近重复行)
sort test.txt | uniq -c:将test.txt内容进行排序,然后打印test.txt中内容,并去掉重复行进行统计重复行的数量
14.wc:统计文件的行数、单词书或字节数
-l:统计行数:
-L:打印最长行的长度
例子:
wc -l /etc/inittab:统计inittab文件的行数
wc -L /etc/inittab:统计inittab文件最长行的长度
15.iconv:转换文件的编码格式
-f encodingA:从编码A转换
-l encoding:显示系统支持的编码
-t encodingB:转换成编码B
-o:将输出输入到指定文件
例子:
iconv -f gb2312 -t utf-8 test.txt:将test.txt文件从编码gb2312转换成编码utf-8
16.dos2unix(unix2dos):将dos格式文件转换成unix格式(将unix格式文件转换成dos格式)
17.diff:比较两个文件的不同,默认输出有三种格式(a-add增加,c-change修改,d-delete删除)<箭头打头的属于文件1,以>箭头打头的属于文件2
-y:以并列的方式显示文件的异同之处
-W:在使用-y参数时,指定显示宽度
-c:使用上下文的输出格式
-u:使用统一格式输出
例子:
diff test1 test2:比较test1和test2两个文件的不同,并打印出不同之处
18.vimdiff:可视化比较工具
19.rev:反向输出文件内容
20.od:按不同进制显示文件
21.tee:多重定向,将数据重定向到文件,同事提供一份重定向数据的副本作为后续命令的标准输入,就是把数据重定向到给定文件和屏幕上
-a:向文件追加内容,而不是覆盖
例子:
ls | tee ls.txt:将ls命令的输出结果写入ls.txt文件中,同时打印到屏幕上
22.vi/vim:纯文本编辑器
特殊符号:
*:匹配任意(0个或多个)字符或字符串,包括空字符串
?:匹配任意一个字符,有且只有一个字符
[abcd]:匹配abcd中任何一个字符
[!abc]:匹配除了abc这三个字符以外的任意一个字符(有且只有一个),也可以写成[^abc]
~:用户的家目录
-:代表上一次(相对于当前路径)用户所在路径
.:代表当前目录
..:代表上一级目录
单引号:所见即所得,即输出单引号内容时,引号里的内容原样输出
双引号:有命令(要反引下)、变量、特殊转义符等,会先把命令、变量、转义字符解析出来,然后输出最终内容
反引号:用于引用命令,执行的时候命令会被执行,相当于$(),赋值和输出都要将命令反引号引起来
;:表示一个命令的结束,也是命令的间隔符
#:表示注释;root命令提示符
|:管道符
$:字符串前加$表示字符串变量内容;表示普通用户的命令提示符
\:转义字符
“>” 、“1>”:输出重定向,会清除文件所有的以前的数据
例子:echo oldboy > a.txt = echo oldboy 1> a.txt;将oldboy输出到a.txt文件中
“<” 、“0<”:输入重定向,会清除文件所有的以前的数据
例子:xrang -n 2 < a.txt = xrang -n 2 0< a.txt;将a.txt文件中的内容分成每组两个元素输入到xrang命令中,输出到屏幕上
mail -s "邮件标题" 邮箱地址 <邮件内容(文件)
mail -s "training" oldboy@qq.com </etc/hosts
“>>”、 “1>>”:追加输出重定向,内容追加,只在文件尾部追加
例子:echo oldboy >> a.txt = echo oldboy 1>> a.txt;将oldboy追加到a.txt文件末尾中
“<<”、 “0<<”:追加输入重定向,内容追加,只在文件尾部追加
例子:cat >> /data/a.txt <<EOF
I am studing Linux
EOF ; 将I am studing Linux输入追加到/data/a.txt文件中,EOF为开始结束标志符,可以写成任意,前后一致即可
“2>”:错误重定向, 清除原有数据,将错误信息输入
例子:cho oldboy > a.txt;将cho命令错误提示信息输出到a.txt文件中
“2>>”:错误追加重定向, 追加文件尾部,将错误信息输入
例子:cho oldboy >> a.txt;将cho命令错误提示信息追加输出到a.txt文件中
说明:标准输入是一个名称,它表示数据的一个流入方向,通常表示数据从文件等流入处理工具或命令中,用代码0表示,使用<、<<符号来表示数据朝尽头所指的方向流动;标准输出也是一个名称,它也表示数据的一个流入方向,通常用代码1表示,使用>、>>符号来表示数据朝尽头所指的方向流动箭头是数据流向,和标准输入不同的是,1表示将命令等处理的一般信息输出到文件;标准错误输出是另一个名称,也是表示数据的一个流入方向,通常用代码2表示,使用>、>>符号来指示数据朝箭头方向流动,和标准输出不同的是标准错误输出2表示将错误的信息输出到文件等,不输出正确的普通信息
{}:生成序列,在{}中使用逗号分隔多个字符或单词时,可以被分别与前面的字符结合处理:
例子:
echo A{B,C} 在屏幕上打印AB AC
echo A{,C} 在屏幕上打印A AC
touch A{,C}.txt 创建A.txt和AB.txt文件
touch A{0..3}.txt 创建A0.txt、A1.txt、A2.txt、A3.txt文件