bash的特性
(1)常用组合快捷键:,ctrl+d
Ctrl+a: 跳转至命令行首
Ctrl+e: 跳转至命令行尾
Ctrl+u: 删除命令行首至当前光标所在处之前的所有内容
Ctrl+k: 删除当前光标所在处至命令行尾的所有内容
Ctrl+l: 清屏
Ctrl+c: 中止或取消
Ctrl+z: 把当命令送至后台
Ctrl+d:回到登陆用户登陆界面
(2)命令补全:命令的补齐,参数中目录或文件的补齐
当输入命令的部分是唯一的时候按TAB键就可以不全剩下的部分
当输入命令的部分不是唯一的,按两次TAB就可以列出所有以输入部分开头的命令
注意:命令的选项是不能补齐的。
(3)路径补全:
当输入路径中文件名唯一部分是可以TAB补全此文件名
当输入路径中文件名不是唯一部分是可以按两个TAB来列出有哪些以此路径开头的目录。
(4)历史命令:history,上下光标键,!N,!!
保存的条数: echo $HISTSIZE
环境变量:HISTSIZE
用户退出时的持久保存位置:
环境变量:HISTFILE,通常默认为用户家目录下的.bash_history
此文件中可保存的最大数目:echo $HISTFILESIZE
环境变量:HISTFILESIZE
用法:
history N: 显示最近的N条,包括当前命令自身;
history -c: 清空命令历史
history -d offset: 删除指定的偏移处的命令条目
history -a [/path/to/some_history_file]: 将当前会话中的命令历史写入指定文件
bash调用命令历史列表中的命令:
!#: 执行命令历史中的第#条命令
!!: 执行上一条命令
!string: 执行命令历史中最近一次以string开头的命令;
!$: 调用上一条命令的最后一个参数
ESC, .:功能同上
(5)命令别名:alias,unalias
定义一个命令让他具有别的命令加参数的功能
which COMMAND查看命令路径和别名。
(6)前台进程,后台进程,作业控制:&,ctrl+z,fg,bg,jobs
前台作业:通过终端启动,并在终止之前一直占据着终端
后台作业:作业启动之后即运行于后台,释放前台
交互式模式:手动启动的非守护进程类的程序,一般都运行于前台;
如何将作业运行于后台:
1、运行中的作业:
Ctrl+z
送往后台后,作业处于STOPPED状态
启动top命令。ctrl+z送往后台,发现状态时stop
2、尚未启动作业:
COMMAND & 查出的是command的进程号
此类由手动方式控制的作业,与终端相关作业会被终止;如果把作业送往后台,且与终端无关:
# nohup COMMAND &
作业:作业号
# jobs
作业控制命令:
# fg [[%]JOBNUM]: 将指定的作业调回前台
# bg [[%]JOBNUM]: 让送往后台的作业在后台继续运行
# kill %JOBNUM: 终止指定的作业
(7)重定向:>,>>,<,<<(here document)
文件:文件系统(内核)
标准输入:0 键盘
标准输出:1 监视器
错误输出:2 监视器
重定向意味着:改变其标准位置
输出重定向:
COMMAND > POSITION:覆盖输出
COMMAND >> POSITION: 追加输出
错误重定向:
COMMAND 2> POSITION:覆盖输出
COMMAND 2>> POSITION: 追加输出
合并重定向:
COMMAND &> POSITION 正确错误的信息都输出到hello.txt文件中
COMMAND > POSITION 2> &1
分别重定向
COMMAND > POSTION 2> POSTION2
如果命令正确,在向POSTION输入信息时,也向POSTION2输入空白信息。
输入重定向:
COMMAND < POSTION
(8)管道(|):command1 | command2 | command3 | command4
将command1的结果给command2,再将command2的结果给command3,这样递交。
(9)文件名通配(globbing):
*: 任意长度的任意字符
?: 匹配任意单字符
[]: 匹配指定范围内的任意单字符
[abc], [a-z], [0-9], [0-9a-z]
[^]:匹配指定范围以外的任意单字符
[^0-9a-z]
字符集合:
[:space:] : 所有空白字符
[:punct:] : 所有标点符号
[:lower:] :所有小写字母
[:upper:]:所有大写字母
[:digit:]:所有数字
[:alnum:]:任意字母和数字
[:alpha:]:任意字母
(10)字符串操作
字符串切片:
${string:offset:length}
取尾部的指定个数的字符:
${string: -length}
取子串:基于模式
${variable#*word}:在variable中存储字串上,自左而右,查找第一次出现word,删除字符开始至此word处的所有内容;
${variable##*word}:在variable中存储字串上,自左而右,查找最后一次出现word,删除字符开始至此word处的所有内容;
file=‘/var/log/messages‘
${file#*/}: 返回的结果是var/log/messages
${file##*/}: 返回messages
abc=‘helloword‘
${variable%word*}: 在variable中存储字串上,自右而左,查找第一次出现word,删除此word处至字串尾部的所有内容;
${variable%%world*}:在variable中存储字串上,自右而左,查找最后一次出现word,删除此word处至字串尾部的所有内容;
file=‘/var/log/messages‘
${file%*/}: 返回的结果是/var/log
${file%%*/}: 返回结果为空
phonenumber=‘010-110-8‘
${phonenumber%%-*}
${phonenumber##*-}
查找替换:
${variable/pattern/substi}: 替换第一次出现
${variable//pattern/substi}:替换所有的出现
${variable/#pattern/substi}:替换行首被pattern匹配到的内容
${variable/%pattern/substi}: 行尾
pattern可以使用globbing中的元字符:
* 、?
查找删除:
${variable/pattern} :删除variable左到右第一个被pattern匹配到的
${variable//pattern} :删除variable左到右所有被pattern匹配到的
${variable/#pattern} :删除variable行首被pattern匹配到的
${variable/%pattern} :删除variable行尾被pattern匹配到的
大小写转换:
小-->大:${variable^^}
大-->小:${variable,,}
(11)命令行展开
{}:
/tmp/{x,y}
/tmp/x, /tmp/y
本文出自 “aolens·程超” 博客,请务必保留此出处http://aolens.blog.51cto.com/7021142/1534310
原文:http://aolens.blog.51cto.com/7021142/1534310