2.1.1 shell脚本的参数
常用参数
(1) * 以一个字符串显示所向脚本传递的参数,与位置变量不同,此参数可超过9个
(2) @ 从参数1开始,显示所有向脚本传递的参数,和上边的*相似,下面会介绍区别
(3) # 参数数量,不包含参数0
(4) $ 脚本运行的当前ID号
(5) ! 后台运行的最后一个ID号
(6) ? 显示最后命令的退出状态,0表示没有错误,其他任何值表明有错误
(7) - 显示shell使用的当前选项,与set命令功能相同
注:① * 和 @ 的区别在于,当加上双引号时,* 输出的是将所有参数当成一个字符串输出也就是"$1 $2 $3"
而@则是将所有参数一个一个输出,也就是"$1" "$2" "$3"
② - 减号的作用,主要用于标准输入与输出中,在管道中应用,可以省去我们创建临时文件的过程
2.1.2 mv 移动或重命名文件或目录
常用参数
(1) -f //如果文件的空间保留或者固定范围大小无法保存,就发出警告
(2) -i //在覆盖现有文件之前不提示
2.1.3 mkidr 创建一个或者多个新的目录
常用参数
(1) -m 指定文件夹权限大小
2.2.1 I/O重定向
2.2.2 cat 连接或显示文件
常用参数
(1) -n //显示行号
(2) -b //显示非空行号
(3) -s //有连续两行以上空行,则只显示一行空行,其他省略
注:①tac 从结束到开头显示文件
②不要使用重定向符号>将输出重定向到输入文件之中。因为shell在cat命令可读取该文件之前先将它截断了
2.2.3 | 管道
管道的数据共享是在内核中通过内存复制实现的,因此,在设计管道时,尽量把能够江苏数据量操作的置于管道前端。
2.2.4 head 显示一个文件或多个文件的前几行或前几个字节
主要参数
(1) -n //指定显示的行数,默认为10
(2) 后边也可以接多个文件
2.2.5 文件描述符
此部分有点难啊,,,,
待以后学习了后在补充吧
2.2.6 特殊文件
(1) /dev/null 就像一个“黑洞”,垃圾回收站,写进去的文件不可读,可以将不需要的垃圾文件软连接到这个文件上。
(2) /dev/zero 这要用途是用来创建一个指定长度,并且初始化为空的文件,这种文件一般都用作临时交换文件。
(3) /dev/tty 写入这个文件的内容可以在屏幕上显示,很常用
printf"enter new passwd:" //提示输入
stty-echo //关闭自动打印输入字符的功能
read pass < /dev/tty //读取密码
printf"enter again" //在读一次,确认密码
read pass2< /dev/tty //记得重新打开自动打印输入字符功能
stty echo
2.2.7 read 从标准输入中读取一行。
主要参数:
(1) -a 后跟一个变量,该变量会被认为是个数组,然后给其赋值,默认是以空格为分割符。
(2) -d 后面跟一个标志符,其实只有其后的第一个字符有用,作为结束的标志,会举例说 明。
(3) -p 后面跟提示信息,即在输入前打印提示信息。
(4) -e 在输入的时候可以使用命令补全功能。
(5) -n 后跟一个数字,定义输入文本的长度,很实用。
(6) -r 屏蔽,如果没有该选项,则作为一个转义字符,有的话 就是个正常的字符了。
(7) -s 安静模式,在输入字符时不再屏幕上显示,例如login时输入密码。
(8) -t 后面跟秒数,定义输入字符的等待时间。
(9) -u 后面跟fd,从文件描述符中读入,该文件描述符可以是exec新开启的。
2.3 一切皆文件
共有其中文件类型
(1) - 普通文件
(2) d 目录文件
(3) c 字符设备文件
(4) b 块设备文件
(5) s 套接口文件
(6) l 符号链接文件
(7) 管道文件