Linux Shell 汇总


注意事项


  • 行首以 # 开头(除#!之外)的是注释。#!是用于指定当前脚本的解释器,我们这里为bash,且应该指明完整路径,所以为/bin/bash

  • 使用双分号(;;)可以终止case选项。

  • bash 中的 source 命令用于在当前 bash 环境下读取并执行 FileName.sh 中的命令。

  • “STRING” 将会阻止(解释)STRING中大部分特殊的字符。

  • ‘STRING’ 将会阻止STRING中所有特殊字符的解释,这是一种比使用”更强烈的形式。


shell ‘:’


  • 1.等价于“NOP”(no op,一个什么也不干的命令)。也可以被认为与shell的内建命令true作用相同。“:”命令是一个bash的内建命令。

  • 2.在与>重定向操作符结合使用时,将会把一个文件清空,但是并不会修改这个文件的权限。如果之前这个文件并不存在,那么就创建这个文件。

  • 3.: > test.sh与cat /dev/null > test.sh功能类似

  • 4.在与>>重定向操作符结合使用时,将不会对预先存在的目标文件(: >> target_file)产生任何影响。如果这个文件之前并不存在,那么就创建它。

  • 5.”:”还用来在 /etc/passwd 和 $PATH 变量中做分隔符


问号(?)


在一个双括号结构中,? 就是C语言的三元操作符


命令替换


命令替换(command substitution)是指 Shell 执行命令并将命令替换部分替换为执行该命令后的结果。


逻辑表达式


  • -e filename 如果 filename存在,则为真 [ -e /var/log/syslog ]
  • -d filename 如果 filename为目录,则为真 [ -d /tmp/mydir ]
  • -f filename 如果 filename为常规文件,则为真 [ -f /usr/bin/grep ]
  • -L filename 如果 filename为符号链接,则为真 [ -L /usr/bin/grep ]
  • -r filename 如果 filename可读,则为真 [ -r /var/log/syslog ]
  • -w filename 如果 filename可写,则为真 [ -w /var/mytmp.txt ]
  • -x filename 如果 filename可执行,则为真 [ -L /usr/bin/grep ]

  • filename1-nt filename2 如果 filename1比 filename2新,则为真 [ /tmp/install/etc/services -nt /etc/services ]
  • filename1-ot filename2 如果 filename1比 filename2旧,则为真 [ /boot/bzImage -ot arch/i386/boot/bzImage ]

字符串比较运算符 (请注意引号的使用,这是防止空格扰乱代码的好方法)

  • -z string 如果 string长度为零,则为真
  • -n string 如果 string长度非零,则为真
  • string1= string2 如果 string1与 string2相同,则为真
  • string1!= string2 如果 string1与 string2不同,则为真

算术比较运算符


  • num1-eq num2
  • num1-ne num2
  • num1-lt num2
  • num1-le num2
  • num1-gt num2
  • num1-ge num2

shell test(用于检查某个条件是否成立)


1)判断表达式

if test (表达式为真)

if test !表达式为假

test 表达式1 –a 表达式2 两个表达式都为真

test 表达式1 –o 表达式2 两个表达式有一个为真

2)判断字符串

test –n 字符串 字符串的长度非零
test –z 字符串 字符串的长度为零
test 字符串1=字符串2 字符串相等
test 字符串1!=字符串2 字符串不等

3)判断整数

test 整数1 –eq 整数2 整数相等
test 整数1 –ge 整数2 整数1大于等于整数2
test 整数1 –gt 整数2 整数1大于整数2
test 整数1 –le 整数2 整数1小于等于整数2
test 整数1 –lt 整数2 整数1小于整数2
test 整数1 –ne 整数2 整数1不等于整数2

4)判断文件

test File1 –ef File2 两个文件具有同样的设备号和i结点号
test File1 –nt File2 文件1比文件2 新
test File1 –ot File2 文件1比文件2 旧


test –b File 文件存在并且是块设备文件
test –c File 文件存在并且是字符设备文件
test –d File 文件存在并且是目录
test –e File 文件存在
test –f File 文件存在并且是正规文件
test –g File 文件存在并且是设置了组ID
test –G File 文件存在并且属于有效组ID
test –h File 文件存在并且是一个符号链接(同-L)
test –k File 文件存在并且设置了sticky位
test –b File 文件存在并且是块设备文件
test –L File 文件存在并且是一个符号链接(同-h)
test –o File 文件存在并且属于有效用户ID
test –p File 文件存在并且是一个命名管道
test –r File 文件存在并且可读
test –s File 文件存在并且是一个套接字
test –t FD 文件描述符是在一个终端打开的
test –u File 文件存在并且设置了它的set-user-id位
test –w File 文件存在并且可写
test –x File 文件存在并且可执行


参数列表:


$0:命令名。

$n:n是一个数字,表示第n个参数。

$#:参数个数。

$*:所有参数列表。

$@:同上。


&>:


&> /dev/null 条命令的意思是将标准输出和错误输出全部重定向到/dev/null中,也就是将产生的所有信息丢弃.
命令执行都会遇到错误,一般也都是给人看的,所以默认还是显示在屏幕上。这些输出使用”>”是不能进行重定向的:
可以看到,报错还是显示在了屏幕上。如果想要重定向这样的内容,可以使用”2>”

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

NobiGo

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值