1,$ who命令可以查看当前系统谁在登录
2,$ who | wc -l 该命令是计算用户个数,不返回谁在登陆了,只返回几个用户在登录
3,| 是管道符号,可以在两程序间建立管道(pipeline),上面的命令是who的输出,成了wc命令的输入,wc所列出的结果就是已登录用户的个数
4,如何将上面管道转变成一个独立的命令。方法是把这条命令输入一个一般的文件中,然后使用chmod为该文件设置执行的权限,如下所示:
$ cat > nusers 建立文件,使用cat复制终端的输入
who | wc -l 程序的内容
按Ctrl+D可以退出输入命令状态,也就是表示end of file
$ chmod +x nusers 让文件有执行的权限
$ ./nusers 执行测试,你会发现结果和直接执行 who | wc l一样。 然后你也可以查看文件nusers的内容
5,自给自足的脚本:位于第一行的#!
当shell执行一个程序时,会要求UNIX内核启动一个新的进程(process),以便在该进程里执行所指定的程序。内核知道如何为编译型程序做这件事。但是我们写的nuers这个shell脚本是解释型程序。当shell要求内核执行它时,内核无法做,并回应”not executable format file"错误信息。shell收到此错误信息时,就会说“啊,这不是编译型程序,那么一定是shell脚本”,接着会启动一个新的/bin/sh(标准shell)副本来执行该程序。
当系统只有一个shell时,退回到/bin/sh很方便,但现在UNIX系统通常有好几个shell,所以需要脚本文件中第一行的开头处使用#!这两个字符。 当一个文件中开头的两个字符是#!时,内核会扫描该行其余的部分,查看是否存在可用来执行程序的解释器的完整路径。shell脚本通常一开始都是 #! /bin/sh
6,shell世界里,变量值可以是(而且通常是)空值,也就是不含任何字符。空值就是null
7,shell变量名称的开头是一个字母或下划线符号,后面接任意长度的字母,数字或下划线符号。变量长度无限制
$ my_var=this_is_a_long_string_that_does_not_mean_much 分配变量值
$ echo $my_var 打印变量值