bash特殊符号

stty 显示系统默认命令

可以通过命令 echo $SHELL   查看本机所使用的shell版本

 more/etc/passwd 可以查看所有用户使用的shell,最后一行,,,

注释:# 后边跟的内容是注释内容,但是如果#前面有内容时,#和内容之间必须添加有一个空格。

“;” 命令分隔符,可以用来在一行写多个命令

“;;” 终止”case”选项

 “  部分引用 ,阻止部分特殊字符

‘全引用,阻止全部特殊字符

,   逗号链接了一系列的算术操作,虽然里边所有的内容都被运行了,但只有最后一项被

  返回.

`   后置引用,命令替换,

:   空命令, 等价于"NOP"(noop,一个什么也不干的命令). 也可以被认为与shell 的内建命令

(true) 作用相同.":" 命令是一

  个bash的内建命令, 它的返回值为0, 就是shell 返回的 true.也可以是占位符

!   取反操作符。如修改=为!=.! 操作是Bash的一个关键字.

*   数学乘法.  万能匹配符

  **是幂运算. 

?匹配任意单个字符

$ 变量声明符,,,在正则表达式中作为行结束符

(())结构可以用来做数学计算或者是写c 代码,

$*,$@ 位置参数

$?   退出状态变量.$? 保存一个命令/ 一个函数或者脚本本身的退出状态.

$$   进程ID变量.这个$$变量保存运行脚本进程 ID

()   命令组.如:

  1(a=hello;echo $a)

  注意:在() 中的命令列表,将作为一个子shell 来运行.

  在() 中的变量,由于是在子shell 中,所以对于脚本剩下的部分是不可用的.

  如:

  1a=123

    2( a=321; )       

 3 

    4echo "a = $a"      # a = 123

  5 #在圆括号中 a 变量,更像是一个局部变量.

用于初始化数组,如array=(1,2,3)

echo {file1,file2}\ :{\ A," B",'C'}

file1 : A file1: B file1 : C file2 : A file2 : B file2 : C

[]  包含test命令,[命令]

[]   数组元素

 Array[1]=slot_1

  echo${Array[1]}

<,>  ASCII 比较

\<,\> 正则表达式中的单词边界.如:

 bash$grep '\<the\>' textfile

tr 'a-z' 'A-Z'  把小写改成大写

>|  强制重定向(

||   或- 逻辑操作

&  后台运行命令。一个命令后边跟一个&将表示在后台运行

&&  与- 逻辑操作.

-   之前工作的目录."cd-" 将回到之前的工作目录

~  home目录.相当于$HOME变量

~+   当前工作目录,相当于$PWD 变量.

~-   之前的工作目录,相当于$OLDPWD 内部变量.

^   行首,正则表达式中表示行首."^"定位到行首

变量在输出时,如果想要保留其中的空白,则必须使用”” 把变量包围起来。

b=${a/23/BB}             # 将23替换成BB

$0就是脚本文件的名字,$1 是第一个参数,$2 为第2 个

shift  shift 命令重新分配位置参数,其实就是向左移动一个位置.

  $1<--- $2, $2 <--- $3, $3 <--- $4, 等等.

  老的$1将消失,但是$0(脚本名)是不会改变的.如果你使用了大量的位置参数,那么

 shift命令允许你存取超过 10个参数.虽然{} 表示法也允许这样.

for 条件

do #start

命令

done #end

 

if /then 0表示真一个if/then 结构可以测试命令的返回值是否为0( 因为0 表示成功), 如果是的话,执行更多命令.

Bash把[[ $a -lt $b ]] 看作一个单独的元素,并且返回一个退出码

if [ condition-true ]

 2then

 3   command 1

 4   command 2

 5    ...

 6else

 7    # 可选的(如果不需要可以省去)

 8    # 如果原始的条件测试结果是false, 那么添加默认的代码来执行.

 9   command 3

10   command 4

11   ...

12 fi

 

elif是else if 的缩减形式.

      1 if [ condition1 ]

   2 then

     3    command1

     4    command2

     5    command3

      6 elif [ condition2 ]

      7 # Same as else if

   8 then

     9    command4

  10    command5

  11 else

  12    default-command

  13 fi

 

文件测试操作

----------------

返回true 如果...

 

-e   文件存在

-a   文件存在

  这个选项的效果与-e 相同.但是它已经被弃用了,并且不鼓励使用

-f   file 是一个regular 文件(不是目录或者设备文件)

-s   文件长度不为0

-d   文件是个目录

-b   文件是个块设备(软盘,cdrom 等等)

-c   文件是个字符设备(键盘,modem, 声卡等等)

-p   文件是个管道

-h   文件是个符号链接

-L   文件是个符号链接

-S   文件是个socket

-t   关联到一个终端设备的文件描述符

  这个选项一般都用来检测是否在一个给定脚本中的stdin[-t0]或[-t1]是一个终端

-r   文件具有读权限(对于用户运行这个test)

-w   文件具有写权限(对于用户运行这个test)

-x   文件具有执行权限(对于用户运行这个test)

-g   set-group-id(sgid) 标志到文件或目录上

  如果一个目录具有sgid 标志,那么一个被创建在这个目录里的文件,这个目录属于创建

  这个目录的用户组,并不一定与创建这个文件的用户的组相同.对于workgroup 的目录

  共享来说,这非常有用.见<<UNIX环境高级编程中文版>>第58页.

-u   set-user-id(suid)标志到文件上

  如果运行一个具有root 权限的文件,那么运行进程将取得root权限,即使你是一个普通

  用户.[1] 这对于需要存取系统硬件的执行操作(比如pppd和cdrecord)非常有用.如果

  没有suid 标志的话,那么普通用户(没有root 权限)将无法运行这种程序.

  见<<UNIX环境高级编程中文版>>第58页.

         -rwsr-xr-t    1 root      178236 Oct  2  2000 /usr/sbin/pppd

  对于设置了suid 的文件,在它的权限标志中有"s".

-k   设置粘贴位,见<<UNIX环境高级编程中文版>>第65页.

  对于"stickybit",save-text-mode 标志是一个文件权限的特殊类型.如果设置了这

  个标志,那么这个文件将被保存在交换区,为了达到快速存取的目的.如果设置在目录

  中,它将限制写权限.对于设置了stickybit 位的文件或目录,权限标志中有"t".

         drwxrwxrwt    7 root         1024 May 19 21:26 tmp/

  如果一个用户并不时具有stickbit 位的目录的拥有者,但是具有写权限,那么用户只

  能在这个目录下删除自己所拥有的文件.这将防止用户在一个公开的目录中不慎覆盖

  或者删除别人的文件,比如/tmp( 当然root 或者是目录的所有者可以随便删除或重命名

  其中的文件).

-O   你是文件的所有者.

-G   文件的group-id 和你的相同.

-N   从文件最后被阅读到现在,是否被修改.

 

f1 -nt f2

  文件f1 比f2 新

f1 -ot f2

  f1比f2 老

f1 -ef f2

  f1和f2 都硬连接到同一个文件.

 

!   非-- 反转上边测试的结果(如果条件缺席,将返回true)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值