Linux Bash的基礎(chǔ)特性
創(chuàng)新互聯(lián)長期為上千余家客戶提供的網(wǎng)站建設(shè)服務(wù),團隊從業(yè)經(jīng)驗10年,關(guān)注不同地域、不同群體,并針對不同對象提供差異化的產(chǎn)品和服務(wù);打造開放共贏平臺,與合作伙伴共同營造健康的互聯(lián)網(wǎng)生態(tài)環(huán)境。為防城企業(yè)提供專業(yè)的網(wǎng)站設(shè)計制作、成都做網(wǎng)站,防城網(wǎng)站改版等技術(shù)服務(wù)。擁有10年豐富建站經(jīng)驗和眾多成功案例,為您定制開發(fā)。
一、history(命令歷史記錄)
1、語法與常用參數(shù)
history
列出當前shell的所有history
history [-c]
將當前shell的所有 history 清除
history [n]
n為數(shù)字,列出最近的n條記錄
history [-raw] histfiles
-a [HISTFILES] :手動追加當前會話緩沖區(qū)的命令歷史至文件中,如果histfiles事先不存在,則創(chuàng)建, 如果不指定histfiles文件,則默認寫入~/.bash_history中
-r HISTFILES : 將histfiles中的內(nèi)容讀取到當前shell的history中
-w HISTFILES : 將當前shell 的history寫入之histfiles文件中
2、環(huán)境變量
HISTSIZE:命令歷史記錄的條數(shù),默認為1000條
HISTFILE:~/.bash_history
HISTFILESIZE:命令歷史文件記錄歷史的條數(shù)
[root@Nginx ~]# echo $HISTFILE /root/.bash_history [root@Nginx ~]# echo $HISTSIZE 1000 [root@Nginx ~]# echo $HISTFILESIZE 1000
3、history的調(diào)用
!#:重復(fù)執(zhí)行第#條命令
?。。簣?zhí)行上一條命令
!string:執(zhí)行最近一條包含指定字符串的命令
!$:調(diào)用上一條命令的最后一個參數(shù)
[root@Nginx ~]# history 10 1019 history -a 11.txt 1020 cat 11.txt 1021 echo $HISTSIZE 1022 ls 1023 echo $HISTFILESIZE 1024 history 1025 ping baidu.com 1026 alias 1027 ls 1028 history 10 #####!# [root@Nginx ~]# !1026 alias alias cdnet='cd /etc/sysconfig/network-scripts' alias cp='cp -i' alias l.='ls -d .* --color=auto' alias ll='ls -l --color=auto' alias ls='ls --color=auto' alias mv='mv -i' alias rm='rm -i' alias which='alias | /usr/bin/which --tty-only --read-alias --show-dot --show-tilde' #####!! [root@Nginx ~]# !! alias alias cdnet='cd /etc/sysconfig/network-scripts' alias cp='cp -i' alias l.='ls -d .* --color=auto' alias ll='ls -l --color=auto' alias ls='ls --color=auto' alias mv='mv -i' alias rm='rm -i' alias which='alias | /usr/bin/which --tty-only --read-alias --show-dot --show-tilde' #####!string [root@Nginx ~]# !ping ping baidu.com PING baidu.com (111.13.101.208) 56(84) bytes of data. 64 bytes from 111.13.101.208: icmp_seq=1 ttl=128 time=66.8 ms 64 bytes from 111.13.101.208: icmp_seq=2 ttl=128 time=66.9 ms 64 bytes from 111.13.101.208: icmp_seq=3 ttl=128 time=66.9 ms 64 bytes from 111.13.101.208: icmp_seq=4 ttl=128 time=67.4 ms ^C --- baidu.com ping statistics --- 4 packets transmitted, 4 received, 0% packet loss, time 7408ms rtt min/avg/max/mdev = 66.844/67.046/67.480/0.253 ms #####!$ [root@Nginx ~]# ping -c 1 !$ ping -c 1 baidu.com PING baidu.com (111.13.101.208) 56(84) bytes of data. 64 bytes from 111.13.101.208: icmp_seq=1 ttl=128 time=67.4 ms --- baidu.com ping statistics --- 1 packets transmitted, 1 received, 0% packet loss, time 4071ms rtt min/avg/max/mdev = 67.433/67.433/67.433/0.000 ms
4、控制命令歷史的記錄方式
環(huán)境變量:HISTCONTROL
ignoredups:忽略重復(fù)的命令,連續(xù)且相同的命令
ignorespace:忽略所有以空白開頭的命令
ignoreboth: 以上兩條均生效
修改環(huán)境變量:
[root@Nginx ~]# export HISTCONTROL=ignoreboth [root@Nginx ~]# echo $HISTCONTROL ignoreboth
二、命令與路徑補全
1、命令補全
bash執(zhí)行命令,在用戶給定的字符串只有唯一對應(yīng)的命令時,直接Tab補全;如果不唯一,則再次Tab會給出匹配到的命令列表。bash根據(jù)PATH變量中定義的路徑自左向右尋找唯一匹配字符串的命令,第一次找到的即為要執(zhí)行的命令
2、路徑補全
把用戶給出的字符串當作路徑開頭,并在其指定的上級目錄下搜索以指定的字符串開頭的文件名,如果唯一,直接補全;否則再次Tab,給出列表
三、命令行展開
~:展開為用戶的主目錄
~USERNAME:展開為指定用戶的主目錄
{}:可承載一個以逗號分隔的列表,并將其展開為多個路徑
[root@Nginx ~]# mkdir -pv /tmp/{1{1.1,1.2},2}/{a,b} mkdir: 已創(chuàng)建目錄 "/tmp/11.1" mkdir: 已創(chuàng)建目錄 "/tmp/11.1/a" mkdir: 已創(chuàng)建目錄 "/tmp/11.1/b" mkdir: 已創(chuàng)建目錄 "/tmp/11.2" mkdir: 已創(chuàng)建目錄 "/tmp/11.2/a" mkdir: 已創(chuàng)建目錄 "/tmp/11.2/b" mkdir: 已創(chuàng)建目錄 "/tmp/2" mkdir: 已創(chuàng)建目錄 "/tmp/2/a" mkdir: 已創(chuàng)建目錄 "/tmp/2/b"
四、命令的執(zhí)行狀態(tài)結(jié)果
程序執(zhí)行有兩類結(jié)果;一類是返回值,一類是執(zhí)行狀態(tài)結(jié)果
bash的特色標量$?,保存最近一條命令的執(zhí)行狀態(tài)結(jié)果
0:成功
1-255:失敗
[root@Nginx ~]# date 2017年 07月 09日 星期日 17:39:35 CST [root@Nginx ~]# echo $? 0 [root@Nginx ~]# data -bash: data: command not found [root@Nginx ~]# echo $? 127
五、alias(命令別名)
1、語法與常用參數(shù)
alias[-p] [name[=value] ... ] -p:打印已設(shè)置的命令別名
alias:顯示當前shell進程所有可用的命令別名
alias NAME='VALUE':定義別名NAME,相當于執(zhí)行VALUE。
注意:VALUE中有空格等要帶引號
2、alias配置
(1)在命令行中定義的別名,僅對當前shell有用
(2)定義在~/.bashrc中對當前用戶有效
(3)定義在/etc/bashrc中對所有用戶有效
(4)配置完成后,重讀配置文件可立即生效
source /etc/bashrc
3、unalias(撤銷別名)
unalias[-a] name [name ...] -a:撤銷所有別名 注意:如果別名同原命令的名稱,則如果要執(zhí)行原命令,可使用"\COMMAND":