您好,登錄后才能下訂單哦!
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 ~]# 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、控制命令歷史的記錄方式
環境變量:HISTCONTROL
ignoredups:忽略重復的命令,連續且相同的命令
ignorespace:忽略所有以空白開頭的命令
ignoreboth: 以上兩條均生效
修改環境變量:
[root@Nginx ~]# export HISTCONTROL=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:35 CST [root@Nginx ~]# echo $? 0 [root@Nginx ~]# data -bash: data: command not found [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":
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。