shell脚本:项目中常用到的语法与命令整理
1.cutcut命令可以从一个文本文件或者文本流中提取文本列。cut语法 [root@www ~]# cut -d'分隔字符' -f fields <==用于有特定分隔字符 [root@www ~]# cut -c 字符区间 <==用于排列整齐的信息 选项与参数: -d :后面接分隔字符。与 -f 一起使用; -f :依据 -d 的分隔字符将一段信息分割成为数段,用 -f 取出第几段的意思; -c :以字符 (characters) 的单位取出固定字符区间; 2.mount [-参数] [设备名称] [挂载点]-a 安装在/etc/fstab文件中类出的所有文件系统。-f 伪装mount,作出检查设备和目录的样子,但并不真正挂载文件系统。 -n 不把安装记录在/etc/mtab 文件中。 -r 讲文件系统安装为只读。 -v 详细显示安装信息。 -w 将文件系统安装为可写,为命令默认情况。 -t <文件系统类型> 指定设备的文件系统类型,常见的有: ext2 是linux目前常用的文件系统 msdos MS-DOS的fat,就是fat16 vfat windows98常用的fat32 nfs 网络文件系统 iso9660 CD-ROM光盘标准文件系统 ntfs windows NT/2000/XP的文件系统 auto 自动检测文件系统 -o <选项> 指定挂载文件系统时的选项,有些也可写到在 /etc/fstab 中。常用的有: defaults 使用所有选项的默认值(auto、nouser、rw、suid) auto/noauto 允许/不允许以 –a选项进行安装 dev/nodev 对/不对文件系统上的特殊设备进行解释 exec/noexec 允许/不允许执行二进制代码 suid/nosuid 确认/不确认suid和sgid位 user/nouser 允许/不允许一般用户挂载 codepage=XXX 代码页 iocharset=XXX 字符集 ro 以只读方式挂载 rw 以读写方式挂载 remount 重新安装已经安装了的文件系统 loop 挂载“回旋设备”以及“ISO镜像文件” 3.变量$#,$@,$0,$1,$$$ :Shell本身的PID(ProcessID)$! :Shell最后运行的后台Process的PID $? :上一个命令执行是否成功的标志,如果执行成功则$? 为0,否则不为0 $- :使用Set命令设定的Flag一览 $* :所有参数列表。如"$*"用「"」括起来的情况、以"$1 $2 … $n"的形式输出所有参数。 $@ :所有参数列表。如"$@"用「"」括起来的情况、以"$1" "$2" … "$n" 的形式输出所有参数。 $# :添加到Shell的参数个数 $0 :Shell本身的文件名 $1~$n :添加到Shell的各参数值。$1是第1参数、$2是第2参数…。 4.case 语句case语句的格式如下:case 值 in 模式1) 命令1 ... ;; 模式2) 命令2 ... ;; ...... esac 上面的;;有点相当于C中case中的break语句的意味了,即执行完该模式后跳出case语句,不过有点不同的就是, shell中的case语句如果没有;;就会报错,但是C中的case语句少了break,语法上还是正确的,只是在符合该模 式后还会继续执行直到遇到break或直到结束为止。 5.inetd&这个不是shell命令,经常在启动脚本发现他的存在,作用是: 监视一些网络请求的守护进程,其根据网络请求来调用相应的服务进程来处理连接请求。它可以为多种服务管理连接, 当 inetd 接到连接时,它能够确定连接所需的程序,启动相应的进程,并把 socket 交给它 (服务 socket 会作为程序的 标准输入、 输出和错误输出描述符)。 使用 inetd 来运行那些负载不重的服务有助于降低系统负载,因为它不需要为每 个服务都启动独立的服务程序。 6.xargs管道是实现“将前面的标准输出作为后面的标准输入”xargs是实现“将标准输入作为命令的参数” 你可以试试运行以下命令,看看结果的不同: echo "--help"|cat echo "--help"|xargs cat 7.&& ||command1 && command2&&左边的命令(命令1)返回真(即返回0,成功被执行)后,&&右边的命令(命令2)才能够被执行; 换句话说,“如果这个命令执行成功&&那么执行这个命令”。 command1 || command2 ||则与&&相反。如果||左边的命令(命令1)未执行成功,那么就执行||右边的命令(命令2); 或者换句话说,“如果这个命令执行失败了||那么就执行这个命令。 示例:malihou@ubuntu:~$ rm ~/Desktop/1.txt && echo "success" || echo "fail" 如果 ~/Desktop 目录下存在文件 1.txt,将输出 success 提示信息;否则输出 fail 提示信息。 8.>>是追加,>是覆盖经常看到 echo > /path/name #意思就是这个/path/name文件内容置空。
9.整数比较-eq 等于,如:if [ "$a" -eq "$b" ]-ne 不等于,如:if [ "$a" -ne "$b" ] -gt 大于,如:if [ "$a" -gt "$b" ] -ge 大于等于,如:if [ "$a" -ge "$b" ] -lt 小于,如:if [ "$a" -lt "$b" ] -le 小于等于,如:if [ "$a" -le "$b" ] < 小于(需要双括号),如:(("$a" < "$b")) <= 小于等于(需要双括号),如:(("$a" <= "$b")) > 大于(需要双括号),如:(("$a" > "$b")) >= 大于等于(需要双括号),如:(("$a" >= "$b")) -e filename 如果 filename存在,则为真 [ -e /var/log/syslog ]
|