bash別名本質上是乙個簡稱、縮寫,這可避免鍵入過長的命令序列。例如:如果我們新增 alias lm=「ls -l | more」 這一行到檔案~./bashrc 檔案裡,然後每次在命令列鍵入lm將會自動被替換成ls -l | more。這使使用者在命令列不必鍵冗長的命令序列,也避免了記憶複雜的命令及眾多選項。設定alias rm=「rm -i」(互動式刪除)能避免你不小心刪除重要檔案。
在指令碼裡,別名機制不是非常的有用。如果把別名機制相像成c預處理器的某些功能將會非常好,比如巨集擴充套件;但是,不幸的是bash不能在別名中擴充套件引數。而且,別名不能在"混合型的結構"中使用,比如if/then語句、迴圈和函式。還有乙個限制是別名不能遞迴的擴充套件。
example 24-1 指令碼中的別名
#!/bin/bash
#shopt -s expand_aliases
#必須設定這個選項,否則指令碼不會擴充套件別名的功能
alias jesse_james='echo "\"alias jesse james\" was a 1959 comedy starring bob hope."'
jesse_james
echo
;echo
;echo
alias ll="ls -l"
#可以使用單引號(')或雙引號(")來定義乙個別名.
echo
"trying aliased \"ll\":"
ll /opt/shell
echo
directory=/opt/shell/
prefix=*
.sh #看萬用字元會不會引起麻煩
echo
"variables \"directory\"+\"prefix\"=$directory
$prefix"
echo
alias lll="ls -l $directory
$prefix"
echo
"trying aliased \"lll\":"
llltrue=1
echo
if[ true ]
;then
alias rr="ls -l"
echo
"trying aliased \"rr\" within if/then statement:"
rr /opt/shell/*
.sh #* 引起錯誤資訊!
#別名不能在混合結構中使用.
echo
"但是,以前擴充套件的alias仍然可以識別:"
ll /opt/shell/*
.shfi
echo
count=0
while
[$count
-lt 3 ]
do alias rrr="ls -l"
echo
"trying aliased \"rrr\" withn \"
while\" loop:"
rrr /opt/shell/*
.sh #* 在這兒,別名也不會擴充套件.
let "count += 1"
done
echo
;echo
alias xyz='cat $0'
# 指令碼列印自身內容.
xyzexit 0
unalias 命令刪除先前設定的別名
example 24-2 unalias:設定和刪除別名
#!/bin/bash
#shopt -s expand_aliases # 開啟別名功能擴充套件.
alias llm="ls -al | more"
llmecho
unalias llm
llmexit 0
第二十四周學習筆記
自監督關鍵點檢測和特徵描述子生成 自監督訓練方法 使用全卷積神經網路架構,乙個共享的encoder對進行編碼,兩個decoder分別檢測關鍵點和生成描述子 outperform lift in almost all metrics quantitatively scores strongly in ...
習題日常第二十四練
這個題有點繞。我們可以通過從終點出發,將已知邊反向,用bfs搜,找到可以直接到達終點的點。再通過對每個點遍歷,若這個點不能到終點,則反向後的所有與它相連點都不能到。但是注意,此時刪點有後效性,需要用兩個陣列完成。最後在所有合法點上再跑一遍迪傑斯特拉演算法求最短路即可。include include ...
冥想第二十四天
還有乙個需要提高的地方就是 慢一點,以往自己對成功和只是追求的太急切。一急切就亂了節奏,適當的急切是必要的 放輕鬆全身都是最舒服的狀態。平靜的內心讓自己能面對生活的困難。感謝自己,感謝家人,感謝朋友,感謝一切。不責怪自己,一天比一天進步就好。慢慢來。下午和客戶積極的溝通,全身心的投入,發現一點也不困...