※ 引述《CMrockmanx (rockman)》之銘言:
: 1. 有些shell所提供的alias功能並不能作參數傳遞.
: 現在, 假如我在計中的機器上是使用bash, 而我要寫一個有關 find 的alias, 如下:
: % find S_DIR -name FILENAME 2> /dev/null
: 其中,S_DIR是search directory(default / directory),FILENAME是target file.
: 我要如何能直接在prompt 下鍵入:
: % f FILENAME S_DIR
: shell就會自動的執行我要的動作呢? (Note: S_DIR 是 optional, 可不提供).
嗯,拖了好久才來這邊解一題。
用法其實滿簡單的,你只要把這些內容寫到某個檔案裡,
eg. myfind ,然後在 bash 下執行 . myfind ,注意前
面的那個 "." ,然後就可以享用 f 的功能啦。
另外,如果嫌麻煩的話,也可以直接放進 .bash_profile
或 .bashrc ,這樣就不用每次再用 "." 那招執行了。
function f {
if [ $# -gt 2 ]; then
echo "You give me too many arguments!"
return 1
elif [ $# -eq 0 ]; then
echo "You give me no arguments!"
return 1
elif [ $# -eq 1 ]; then
search_dir=/
else
if [ -d $2 ]; then
search_dir=$2
else
search_dir=/
fi
fi
find "$search_dir" -name "$1" 2>/dev/null
return 0
}
--
※ 發信站: 批踢踢實業坊(ptt.m8.ntu.edu.tw)
◆ From: Port7.TS2.neto.