bash及其特性:


shell:外壳


GUI:Gnome,KDE,xfce
CLI: sh,csh.ksh,bash,tcsh,zsh



程序:只有一个
进程:可以有多个

进程:在每个进程看来,当前主机上只存在内核和当前进程。进程是程序的副本,进程是程序执行实例。


用户工作环境:
bash:
          #管理员
          $一般用户

shell,子shell



bash命令行编辑:
光标跳转:
   Ctrl+a:跳到命令行首
   Ctrl+e:调到命令行尾
   Ctrl+u:删除光标至命令行首的内容
   Ctrl+k:删除光标至命令行尾的内容
   Ctrl+l:清屏



命令历史:
查看命令历史:history
     -c:清空命令历史
     -d OFFSET [n]:删除指定位置的命令
      例:
      hsitory -d 500
      删除行号为500的
      hsitory -d 510 3
      删除行号为510开始的3个
     
      -w:保存命令历史至历史文件中


命令历史的使用技巧:
!n:执行命令历史中的第N条命令:
!-n:执行命令历史中的倒数第n条命令
!!:执行上一条命令
!string(字符串):执行命令历史中最近一个以指定字符串开头的命令

引用前一个命令的最后一个参数:

!$:引用前一个命令的最后一个参数
ESC松开再按.
Alt+.



命令补全,路径补全
命令补全:搜索PATH环境变量所指定的每个路径下以我们给出的字符串开头的可执行文件,如果多于一个,两次tab,可给出列表
:否则将直接补全。


路径补全:搜索我们给出的起始路径下的每个文件名,并试图补全:

tab键补全命令
tab键两下出现相关的命令




命令别名:
alias CMDALIAS='COMMAND [options] [arguments]'
在shell中定义的别名仅在当前shell生命周期中有效:别名的有效范围为当前shell进程:

例如给clear起一个别名如下:
alias cls=clear

unalias CMDALIAS
unalias cls撤销别名

例:unalia cls

这样就可以撤销别名


\CMD别名后使用命令本身


命令替换:$(COMMAND), 反引号(波浪线下面的那个符号):`COMMAND`
把命令中某个子命令替换为某执行结果的过程


例如:echo “The current directory is $(pwd).”


例:建立一个file-2013-02-28-14-53-31.txt

    touch ./file-$(date+%F-%H-%M-%D).txt

bash支持的引号:
      ``: 命令替换
“”:弱引用,可以实现变量替换
‘’:强引用,不完成变量替换


文件名通配,globbing
*:任意长度的任意字符
?:任意单个字符
[]:匹配指定范围内的任意单个字符
[abc],[a-m],[a-z],[A-Z],[0-9],[a-zA-Z],[0-9a-zA-Z]


*:例:touch a123 abc ab123 xyz x12 xyz123,找出a开头的文件:

            ls a*


以字母开头,中间跟任意字符,以数字结尾

ls [a-zA-Z]*[0-9]

[^]:匹配指定范围外的任意的那个字符

非数据开头文件
ls [^0-9]*

以数字、小写字母或大写字母开头的文件
ls [0-9a-zA-z]*

[[:space:]]
表示中间为空白字符的文件
[:punct:]:表示所有的标点符号
[:lower:]:小写字母
[:upper:]:大写字母
[:alpha:]:大小写字母
[:digit:]:数字
[:alnum:]:数字和大小写字母

# man 7 glob可以查询以上集合的意思


ls [[:alpha:]]*[[:space:]]*[[:alpha:]]
字母开头,字母结尾,中间为空白字符(*表示出了空白字符还有其他字符)
ls [[:alpha:]]*[[:space:]]*[^[:alpha:]]
字母开头,非字母结尾,中间为空白字符(*表示出了空白字符还有其他字符)

显示所有以a或m开头的文件:
ls[am]*

显示所有文件名中包含了数字的文件
ls *[0-9]*
ls *[[:digit:]]*

显示所有以数字结尾且文件名中不包含空白的文件
ls *[^[:space:]]*[0-9]
ls *[^[:space:]]*[[:digit:]]


显示文件名中包含了非字母或数字的特殊符号的文件:

ls *[^[:alnum:]]*


练习题:


1.显示所有文件名中包含了数字的文件:

ls *[0-9]* 或 ls *[:digit:]*


2.显示所有以数字结尾且文件名中不包含空白的文件

ls *[^[:space:]]*[0-9]

ls *[^[:space:]]*[[:digit:]]

此答案待定,有点不太确定


3.显示文件名中包含了非字母或数字的特殊符号的文件:

ls *[^[:alnum:]]*