今天开始学习Shell脚本,以尽量短的时间内把《shell 脚本学习指南》给啃完。
下面的就是一些关于学习时的一些记录了。
who 可以告诉你系统中有哪些人登录。
who | wc -l 可以统计有多少人登录了。 wc -l 是统计行数, | 是管道的意思,是把who 的输出作为wc 的输入。
wc -l /home/cl/test.c 统计test.c文件中的内容行数。
下面就是把上面的管道变成一个独立的命令
cat > nusers //建立文件,使用cat复制终端的输入
who | wc -l 程序的内容
^D Ctrl+d 表示end-of-file
chmod 777 nusers 让文件拥有执行的权限
./nusers 执行测试
cat nusers 显示文件内容。
Shell变量名称的开头是一个字母或下划线符号,后面可以接任意长度的字母、数字或下划线符号,变量赋值的方式为:先写变量名称,紧接着=字符,最后是新值,中间没有任何空格。当你想取出Shell变量的值时,需在变量名称前面加上$字符。当所赋予的值内含空格时,请加上引号:
所以如果要输出now is test (now 与 is 中间有多个空格)
如果直接用echo now is test 则输出now is test,空格取消了,只剩下一个了,所以要加引号。
echo -n "now is test" -n 表示省略结尾的换行符。
printf "hello world /n" 要显示的输出换行符
printf "%s %s " hello world
I/O重定向就是你通过与终端交互,或是在Shell脚本里设置,重新安排从哪里输入或输出到哪里。
以< 改变标准输入
以>改变标准输出
以>>附加到文件
以 | 建立管道
tr 命令:
一:去除重复出现的字符
tr -s "[a-z][A-Z]"
二:删除空行
tr -s '/n'
三:大写到小写
tr "[a-z]" "[A-Z]"
四:删除指定字符
tr -cs "[a-z][A-Z]" '/n' 把非a-z和A-Z的字符转化为'/n'
tr详细用法见我的博客tr命令详细用法
两个特殊文件:
/dev/null与/dev/tty
/dev/null,传送到此文件的数据都会被系统丢掉。
/dev/tty,当程序打开此文件时,unix会自动将它重定向一个终端。
stty(set tty)命令来控制终端的各种设置。
stty -echo 关闭自动打印输入字符的功能
stty echo 打开自动打印输入字符的功能
grep -r 'test' /home/cl 查找/home/cl目录下所有文件中是否包含test字符串。