首页 > 其他 > 详细

bash特性

时间:2019-10-27 22:34:04      阅读:102      评论:0      收藏:0      [点我收藏+]

bash特性一:命令历史:

shell进程会在其会话中保存此前用户提交执行过的命令:
history
定制history的功能,可通过命令历史相关环境变量实现:

  • HISTSIZE:命令历史记录的条数
  • HISTFILE:指定历史文件,默认为~/.bash_history
  • HISTFILESIZE:命令历史文件记录历史的条数

history命令用法:

history [-c] [-d offset] [n]
history -anrw [filename]
history -ps arg [arg...]
-c: 清空命令历史
-d offset: 删除历史中指定的第offset个命令
 n: 显示最近的n条历史
-a: 追加本次会话新执行的命令历史列表至历史文件
-r: 读历史文件附加到历史列表
-w: 保存历史列表到指定的历史文件
-n: 读历史文件中未读过的行到历史列表
-p: 展开历史参数成多行,但不存在历史列表中
-s: 展开历史参数成一行,附加在历史列表后  
 !!:执行上一条命令
string 重复前一个以“string”开头的命令
!?string 重复前一个包含string的命令
!string:p 仅打印命令历史,而不执行
!$:p 打印输出 !$ (上一条命令的最后一个参数)的内容
!*:p 打印输出 !*(上一条命令的所有参数)的内容
^string 删除上一条命令中的第一个string
^string1^string2 将上一条命令中的第一个string1替换为string2
!:gs/string1/string2 将上一条命令中所有的string1都替换为 string2
使用up(向上)和down(向下)键来上下浏览从前输入的命令
ctrl-r来在命令历史中搜索命令
(reverse-i-search)`’:
Ctrl+g:从历史搜索模式退出
要重新调用前一个命令中最后一个参数:
!$ 表示
Esc, .(点击Esc键后松开,然后点击 . 键)
Alt+ .(按住Alt键的同时点击 . 键) 

控制命令历史的记录方式:

环境变量:HISTCONTROL

  • ignoredups 默认,忽略重复的命令,连续且相同为“重复”
  • ignorespace 忽略所有以空白开头的命令
  • ignoreboth 相当于ignoredups, ignorespace的组合
  • export 变量名="值“
  • 存放在 /etc/profile 或 ~/.bash_profile

bash特性二:tab补全功能:

命令补全:

1)查找内部命令;
2)查找外部命令:bash根据PATH环境变量定义的路径,自左而右在每个路径搜寻以给定命令名命名的文件;
第一次找到的命令即为要执行的命令,用户给定的字符串只有一条惟一对应的命令,直接补全,否则,再次Tab会给出列表。

[root@centos7~]#echo $PATH
/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin   目前以后的PATH变量路径
[root@centos7~]#wh  输入wh后按tab键,如果唯一就会补全,不唯一再按tab键就会显示多个命令
whatis    whereis   which     while     whiptail  who       whoami 

bash特性三:命令行展开:

  • ~:自动展开为用户的家目录,或指定的用户的家目录;
  • 可承载一个以,分隔的路径列表,并将其进行展开为多个路径。
[root@centos7data]#mkdir -p test{1,2}/{a,b{x,y}}
[root@centos7data]#tree
.
├── test1
│   ├── a
│   ├── bx
│   └── by
└── test2
    ├── a
    ├── bx
    └── by
通过tree能够展示当前data目录下有多少个子目录。

bash特性四:历史命令执行的结果状态

bash通过状态返回值来输出此结果:    
成功:0 失败:1-255 命令执行完成之后,其状态返回值保存于bash的特殊变量$?中; 命令正常执行及其功能不同,结果各不相同; 引用命令的执行结果: $(command),如:mkdir $(date +%H-%M-%S),即引用date运行结果来执行命令,即创建date运行结果得到的数值的文件夹 ‘command‘
[root@centos7data]#date    当命令执行正确时
Sun Oct 27 21:01:14 CST 2019
[root@centos7data]#echo $?   
0                          echo $?就会显示0,默认命令执行状态正确   
[root@centos7data]#date -sss  当命令输入错误时
date: invalid date ‘ss’
[root@centos7data]#echo $?
1                         echo $? 执行结果就是1,表示当前命令执行状态错误

bash特性五:引用:

  • 强引用:‘  ‘
  • 弱引用:" "
  • 命令引用:` `;不建议使用:尽量使用$(cmd)
[root@centos7~]#echo "$PATH"   弱引用,可以识别到里边的命令变量
/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin
[root@centos7~]#echo ‘$PATH‘  强引用就会将里边的命令当初字符串进行打印
$PATH
[root@centos7~]#echo `echo $PATH`  反向单引号,引用命令,因此需要echo $PATH完整的命令才行,才会进行正确打印
/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin

bash特性六:快捷键

  • Ctrl + l  清屏,相当于clear命令
  • Ctrl + s  阻止屏幕输出,锁定
  • Ctrl + q  允许屏幕输出
  • Ctrl + c  终止命令
  • Ctrl + z  挂起命令
  • Ctrl + a  光标移到命令行首,相当于Home
  • Ctrl + e  光标移到命令行尾,相当于End
  • Ctrl + u  从光标处删除至命令行首
  • Ctrl + k  从光标处删除至命令行尾
  • Alt + r 删除当前整行

注意:Alt组合快捷键经常和其它软件冲突

bash特性七:别名

显示当前shell进程所有可用的命令别名:alias

定义别名NAME,其相当于执行命令VALUE:

  • alias NAME=‘VALUE‘

在命令行中定义的别名,仅对当前shell进程有效;

如果想永久有效,要定义在配置文件中

仅对当前用户:~/.bashrc

对所有用户有效:/etc/bashrc

bash特性八:通配符

* 匹配零个或多个字符

? 匹配任何单个字符

~ 当前用户家目录

~mage 用户mage家目录

~+ 当前工作目录

~- 前一个工作目录
[0-9] 匹配数字范围 [a-z]:小写字母 [A-Z]:大写字母 [wang] 匹配列表中的任何的一个字符 [^wang] 匹配列表中的所有字符以外的字符

预定义的字符类:man 7 glob

[[:upper:]]匹配任意大写字母

[[:lower:]]匹配任意小写字母

[[:alpha:]]匹配所有字母

[[:digit:]]匹配所有数字

[[:alnum:]]匹配所有的字母和数字

[[:space:]]匹配所有空白字符

[[:punct:]]匹配所有标点符号
[^]:匹配指定范围外的任意单个字符:
 [^[:upper:]]除大写字母以外任意字符
 [^[:lower:]]除小写字母以外任意字符
 [^[:alpha:]]除字母以外任意字符
 [^[:digit:]]除数字以外任意字符,或者[^0-9]
 [^[]:alnum:]除字母和数字以外的任意字符(即符号)
 [^[:space:]]匹配所有空白字符
[root@centos7data]#ls [^[:digit:]]*[0-9] -d   显示以非数字开头以数字结尾的文件
test1  test2

  

      

 

bash特性

原文:https://www.cnblogs.com/struggle-1216/p/11749172.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!