8.12 shell入门
重定向和管道符:
1.重定向 - tr
程序=指令(命令)+数据(变量)
在程序中,数据如何输入?又如何输出?
数据输入: 键盘(标准输入)~~但并不是唯一输入方式
--stdin
echo "123456" | passwd --stdin "username"
例如:功能添加用户 useradd.sh user.txt文本文档1000个用户
./useradd.sh a
...
./useradd.sh < user.txt
while line:do
循环体
done < /etc/passwd
数据输出: 显示器 -- 标准输出,但并不是唯一输出方式
ls /etc/ > a.txt
fd 文件标识符 0-9 相当于给文件分类
0 1 2
0--标准输出
1--标准输入
2--错误输入输出(标准错误)
常见重定向符号
1.标准输出:
>: 覆盖重定向、非常危险
set - C: 关闭覆盖重定向的功能
>|: 强制重定向
>>: 追加重定向
不覆盖
2.标准输入:
<: tr 替换文件内容
tr set1 [set2] <file.txt
<< cat >> a.txt <<EOF
>1
>2
>3
>EOF
3.错误输出
2> 2>>
扩展:不需要输出内容,只需要输出状态:
ls /etc/ > /dev/null 2> /dev/null
if [$? -eq 0];then
循环体
fi
&> &>> == 2&>1
ls /etc /&> /dev/null
2.管道 - tee
command1 | command2 | command3 |……
前一个命令的执行结果交给后一个命令来执行
[Linux思想:结合小功能实现大功能]
free -m | grep "^M" | cut -d ' ' -f23
tee 一路输入两路输出(输出一次,保存一次)
tee /tmp/tee.out //如果没有文件,会创建,如果文件存在并有内容,会覆盖
tail 查看文件尾部多少行(默认10行)
-n tail -n 5 /etc/passwd
-f 实时查看文件更新内容
tail -f /var/log/message
head查看文件头部多少行(默认10行)
-n head -n 5 /etc/passwd
取10行到20行:head -20 /etc/passwd |tail -10
3.文本处理工具 - wc,cut,sort,uniq
wc(word count)
功能说明:计算字数。
语 法:wc [-clw][--help][--version][文件...]
补充说明:利用wc指令我们可以计算文件的Byte数、字数、或是列数,
若不指定文件名称、或是所给予的文件名为“-”,则wc指令会从标准输入设备读取数据。
参 数:
-c或--bytes或--chars 只显示Bytes数。
-l或--lines 只显示列数。
-w或--words 只显示字数。
--help 在线帮助。
--version 显示版本信息。
cut
使用权限:所有使用者
用法:cut -cnum1-num2 filename
说明:用来做文件分割,显示每行从开头算起 num1 到 num2 的文字。
局限性: 1、 -d指定分隔符不能同时指定多个
2、不能做高级的格式化输出
所以需要熟练掌握awk
范例:
shell>> cat example
test2
this is test1
shell>> cut -c0-6 example ## print 开头算起前 6 个字元
test2
this i
sort
功能说明:将文本文件内容加以排序。
语 法:
sort [-bcdfimMnr][-o<输出文件>][-t<分隔字符>][+<起始栏位>-<结束栏位>][--help][--verison][文件]
补充说明:sort可针对文本文件的内容,以行为单位来排序。
参 数:
-b 忽略每行前面开始出的空格字符。
-c 检查文件是否已经按照顺序排序。
-d 排序时,处理英文字母、数字及空格字符外,忽略其他的字符。
-f 排序时,将小写字母视为大写字母。
-i 排序时,除了040至176之间的ASCII字符外,忽略其他的字符。
-m 将几个排序好的文件进行合并。
-M 将前面3个字母依照月份的缩写进行排序。
-n 依照数值的大小排序。
-o<输出文件> 将排序后的结果存入指定的文件。
-r 以相反的顺序来排序。
-t<分隔字符> 指定排序时所用的栏位分隔字符。
+<起始栏位>-<结束栏位> 以指定的栏位来排序,范围由起始栏位到结束栏位的前一栏位。
--help 显示帮助。
--version 显示版本信息。
uniq
功能说明:检查及删除文本文件中重复出现的行列。
语 法:
uniq [-cdu][-f<栏位>][-s<字符位置>][-w<字符位置>][--help][--version][输入文件][输出文件]
补充说明:uniq可检查文本文件中重复出现的行列。
参 数:
-c或--count 在每列旁边显示该行重复出现的次数。
-d或--repeated 仅显示重复出现的行列。
-f<栏位>或--skip-fields=<栏位> 忽略比较指定的栏位。
-s<字符位置>或--skip-chars=<字符位置> 忽略比较指定的字符。
-u或--unique 仅显示出一次的行列。
-w<字符位置>或--check-chars=<字符位置> 指定要比较的字符。
--help 显示帮助。
--version 显示版本信息。
[输入文件] 指定已排序好的文本文件。
[输出文件] 指定输出的文件。