Linux Shell程式設計(30)——別名
Bash別名本質上是一個簡稱, 縮寫, 這可避免鍵入過長的命令序列. 例如,如果我們新增 alias lm="ls -l | more" 這一行到檔案~/.bashrc file裡, 然後每次在命令列鍵入lm 將會自動被替換成ls -l | more. 這使使用者在命令列不必鍵冗長的命令序列也避免了記憶複雜的命令及眾多選項. 設定alias rm="rm -i" (互動式刪除)可以使你犯下錯誤時不必過度悲傷,它能避免你不小心刪除重要檔案.
在指令碼里,別名機制不是非常的有用. 如果把別名機制想像成C前處理器的某些功能將會非常好,比如巨集擴充套件,但是,不幸的是Bash不能在別名中擴充套件引數.而且,別名不能在“混合型的結構”中使用,比如if/then語句, 迴圈, 和函式. 還有一個限制是別名不能遞迴地擴充套件.
例子:指令碼中的別名
unalias 命令刪除先前設定的別名.
在指令碼里,別名機制不是非常的有用. 如果把別名機制想像成C前處理器的某些功能將會非常好,比如巨集擴充套件,但是,不幸的是Bash不能在別名中擴充套件引數.而且,別名不能在“混合型的結構”中使用,比如if/then語句, 迴圈, 和函式. 還有一個限制是別名不能遞迴地擴充套件.
例子:指令碼中的別名
#!/bin/bash
# alias.sh
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 /usr/X11R6/bin/mk* #* 別名工作了.
echo
directory=/usr/X11R6/bin/
prefix=mk* # 看萬用字元會不會引起麻煩.
echo "Variables \"directory\" + \"prefix\" = $directory$prefix"
echo
alias lll="ls -l $directory$prefix"
echo "Trying aliased \"lll\":"
lll # 詳細列出在/usr/X11R6/bin目錄下所有以mk開頭的檔案.
# 別名能處理連線變數 -- 包括萬用字元 -- o.k.
TRUE=1
echo
if [ TRUE ]
then
alias rr="ls -l"
echo "Trying aliased \"rr\" within if/then statement:"
rr /usr/X11R6/bin/mk* #* 引起錯誤資訊!
# 別名不能在混合結構中使用.
echo "However, previously expanded alias still recognized:"
ll /usr/X11R6/bin/mk*
fi
echo
count=0
while [ $count -lt 3 ]
do
alias rrr="ls -l"
echo "Trying aliased \"rrr\" within \"while\" loop:"
rrr /usr/X11R6/bin/mk* #* 在這兒,別名也不會擴充套件.
let count+=1
done
echo; echo
alias xyz='cat $0' # 指令碼列印自身內容.
# 注意是單引號(強引用).
xyz
exit 0
unalias 命令刪除先前設定的別名.
相關文章
- Linux Shell程式設計(1)——shell程式設計簡介Linux程式設計
- linux shell 程式設計Linux程式設計
- linux shell程式設計Linux程式設計
- Shell變數型別有哪些?linux運維shell程式設計變數型別Linux運維程式設計
- Linux Shell程式設計(27)——子shellLinux程式設計
- Linux Shell程式設計(9)——特殊變數型別Linux程式設計變數型別
- Linux 程式設計之Shell程式設計(轉)Linux程式設計
- Linux之shell程式設計Linux程式設計
- Linux Shell程式設計(1)Linux程式設計
- Linux Shell程式設計(2)Linux程式設計
- Linux Shell程式設計(2)——第一個shell程式Linux程式設計
- Linux Shell程式設計(4)——shell特殊字元(上)Linux程式設計字元
- Linux Shell程式設計(5)——shell特殊字元(下)Linux程式設計字元
- linux下的SHELL程式設計Linux程式設計
- Shell指令碼程式設計30分鐘入門指令碼程式設計
- Linux Shell程式設計(28)——程式替換Linux程式設計
- Linux Shell程式設計(3)——執行shell指令碼Linux程式設計指令碼
- 前端學習 linux —— shell 程式設計前端Linux程式設計
- Linux Shell程式設計(15)——操作字串Linux程式設計字串
- Linux Shell程式設計(16)——迴圈Linux程式設計
- Linux Shell程式設計(29)——函式Linux程式設計函式
- Linux Shell 程式設計實戰技巧Linux程式設計
- Linux的shell程式設計(一)(轉)Linux程式設計
- Linux的shell程式設計(二)(轉)Linux程式設計
- Linux的shell程式設計(三)(轉)Linux程式設計
- Linux的shell程式設計(四)(轉)Linux程式設計
- 如何學習shell程式設計?Linux運維學習shell程式設計是什麼程式設計Linux運維
- shell程式設計程式設計
- 【學習】Linux Shell指令碼程式設計Linux指令碼程式設計
- Linux Shell程式設計(10)——引用變數Linux程式設計變數
- Linux Shell程式設計(12)——操作符Linux程式設計
- Linux Shell程式設計(13)——數字常量Linux程式設計
- Linux Shell程式設計(18)—— 迴圈控制Linux程式設計
- Linux Shell程式設計(20)——基本命令Linux程式設計
- Linux Shell程式設計(21)——複雜命令Linux程式設計
- Linux Shell程式設計(24)——命令替換Linux程式設計
- Linux Shell 程式設計學習筆記Linux程式設計筆記
- 玩轉Linux – shell 程式設計基礎Linux程式設計