Bash基础特性 -- 卷一

Linux Bash的基础特性

一、history(命令历史记录)

1、语法与常用参数

history

列出当前shell的所有history

history [-c]

将当前shell的所有 history 清除

history [n]

n为数字,列出最近的n条记录

history [-raw] histfiles

-a [HISTFILES] :手动追加当前会话缓冲区的命令历史至文件中,如果histfiles事先不存在,则创建,如果不指定histfiles文件,则认写入~/.bash_history中

-r HISTFILES : 将histfiles中的内容读取到当前shell的history中

-w HISTFILES : 将当前shell 的history写入之histfiles文件


2、环境变量

HISTSIZE:命令历史记录的条数,认为1000条

HISTFILE~/.bash_history

HISTFILESIZE:命令历史文件记录历史的条数

[root@Nginx~]#echo$HISTFILE
/root/.bash_history
[root@Nginx~]#echo$HISTSIZE
1000
[root@Nginx~]#echo$HISTFILESIZE
1000



3、history的调用

!#:重复执行第#条命令

!!:执行上一条命令

!string:执行最近一条包含指定字符串的命令

!$:调用上一条命令的最后一个参数

[root@Nginx~]#history10
1019history-a11.txt
1020cat11.txt
1021echo$HISTSIZE
1022ls
1023echo$HISTFILESIZE
1024history
1025pingbaidu.com
1026alias
1027ls
1028history10
#####!#
[root@Nginx~]#!1026
alias
aliascdnet='cd/etc/sysconfig/network-scripts'
aliascp='cp-i'
aliasl.='ls-d.*--color=auto'
aliasll='ls-l--color=auto'
aliasls='ls--color=auto'
aliasmv='mv-i'
aliasrm='rm-i'
aliaswhich='alias|/usr/bin/which--tty-only--read-alias--show-dot--show-tilde'
#####!!
[root@Nginx~]#!!
alias
aliascdnet='cd/etc/sysconfig/network-scripts'
aliascp='cp-i'
aliasl.='ls-d.*--color=auto'
aliasll='ls-l--color=auto'
aliasls='ls--color=auto'
aliasmv='mv-i'
aliasrm='rm-i'
aliaswhich='alias|/usr/bin/which--tty-only--read-alias--show-dot--show-tilde'
#####!string
[root@Nginx~]#!ping
pingbaidu.com
PINGbaidu.com(111.13.101.208)56(84)bytesofdata.
64bytesfrom111.13.101.208:icmp_seq=1ttl=128time=66.8ms
64bytesfrom111.13.101.208:icmp_seq=2ttl=128time=66.9ms
64bytesfrom111.13.101.208:icmp_seq=3ttl=128time=66.9ms
64bytesfrom111.13.101.208:icmp_seq=4ttl=128time=67.4ms
^C
---baidu.compingstatistics---
4packetstransmitted,4received,0%packetloss,time7408ms
rttmin/avg/max/mdev=66.844/67.046/67.480/0.253ms
#####!$
[root@Nginx~]#ping-c1!$
ping-c1baidu.com
PINGbaidu.com(111.13.101.208)56(84)bytesofdata.
64bytesfrom111.13.101.208:icmp_seq=1ttl=128time=67.4ms

---baidu.compingstatistics---
1packetstransmitted,1received,time4071ms
rttmin/avg/max/mdev=67.433/67.433/67.433/0.000ms

4、控制命令历史的记录方式

环境变量:HISTCONTROL

ignoredups:忽略重复的命令,连续且相同的命令

ignorespace:忽略所有以空白开头的命令

ignoreboth:以上两条均生效

修改环境变量:

[root@Nginx~]#exportHISTCONTROL=ignoreboth
[root@Nginx~]#echo$HISTCONTROL
ignoreboth


二、命令与路径补全

1、命令补全

bash执行命令,在用户给定的字符串只有唯一对应的命令时,直接Tab补全;如果不唯一,则再次Tab会给出匹配到的命令列表。bash根据PATH变量中定义的路径自左向右寻找唯一匹配字符串的命令,第一次找到的即为要执行的命令

2、路径补全

用户给出的字符串当作路径开头,并在其指定的上级目录搜索以指定的字符串开头的文件名,如果唯一,直接补全;否则再次Tab,给出列表


三、命令行展开

~:展开为用户的主目录

~USERNAME:展开为指定用户的主目录

{}:可承载一个以逗号分隔的列表,并将其展开为多个路径

[root@Nginx~]#mkdir-pv/tmp/{1{1.1,1.2},2}/{a,b}
mkdir:已创建目录"/tmp/11.1"
mkdir:已创建目录"/tmp/11.1/a"
mkdir:已创建目录"/tmp/11.1/b"
mkdir:已创建目录"/tmp/11.2"
mkdir:已创建目录"/tmp/11.2/a"
mkdir:已创建目录"/tmp/11.2/b"
mkdir:已创建目录"/tmp/2"
mkdir:已创建目录"/tmp/2/a"
mkdir:已创建目录"/tmp/2/b"


四、命令的执行状态结果

程序执行有两类结果;一类是返回值,一类是执行状态结果

bash的特色标量$?,保存最近一条命令的执行状态结果

0:成功

1-255:失败

[root@Nginx~]#date
2017年07月09日星期日17:39:35CST
[root@Nginx~]#echo$?
0
[root@Nginx~]#data
-bash:data:commandnotfound
[root@Nginx~]#echo$?
127

五、alias(命令别名)

1、语法与常用参数

alias[-p][name[=value]...]
-p:打印已设置的命令别名

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

alias NAME='VALUE':定义别名NAME,相当于执行VALUE。

注意:VALUE中有空格等要带引号


2、alias配置

(1)在命令行中定义的别名,仅对当前shell有用

(2)定义在~/.bashrc中对当前用户有效

(3)定义在/etc/bashrc中对所有用户有效

(4)配置完成后,重读配置文件可立即生效

source /etc/bashrc

3、unalias(撤销别名)

unalias[-a]name[name...]
-a:撤销所有别名
注意:如果别名同原命令的名称,则如果要执行原命令,可使用"\COMMAND":

相关文章

用的openwrt路由器,家里宽带申请了动态公网ip,为了方便把2...
#!/bin/bashcommand1&command2&wait从Shell脚本并行...
1.先查出MAMP下面集成的PHP版本cd/Applications/MAMP/bin/ph...
1、先输入locale-a,查看一下现在已安装的语言2、若不存在如...
BashPerlTclsyntaxdiff1.进制数表示Languagebinaryoctalhexa...
正常安装了k8s后,使用kubect工具后接的命令不能直接tab补全...