2015-03-12

Ubuntu Linux 用 Shell Function 替代 alias 指令

阿舍最近愈來愈習慣用 alias 來減少打字,然後,用著、用著,阿舍就會想到說,能不能讓 alias 過的指令也可以在指令串中插入參數,那樣的話,就會更方便了哩 ! 但是,阿舍其實知道這個 alias 的用法是沒辦法弄成可以傳入參數的,所以,當遇到需要傳參數的長指令,阿舍就會寫個 script 檔來用哩 !




雖然說,用 script 檔也可以達到阿舍想要的效果,不過,script 要建立一個檔之外,還要下個 chmod 指令來讓它變成可執行,最後,還要放到一個 Shell 搜尋的到的資料夾,算來是有一點點的小麻煩,依阿舍的懶惰程度而言,每次想想就懶的去弄了,只有真的遇到很長又很常用的指令串時,阿舍才會去弄一個來用哩 !

alias 可以搭配 Shell 變數,不過,不太實用哩 !

不過,這二天阿舍就不死心的想說,來查看看好了,搞不好有什麼阿舍不知道的方法可以讓 alias 來用到變數哩 ! 然後,阿舍才發現,原來很多也有和阿舍一樣的需求,不過,他們都很聰明的用了自定函數的方法來解,而這種用法 ... 阿舍沒想到過哩 ! ... 呵 !

$ alias lsg='ls [參數或選項] | grep [字串]'

$ lgs [參數或選項] [字串]

以阿舍想要達到上面這二項的操作效果為例,阿舍就先用 function 指令定義一個可以傳入變數的 lsg 凾式如下面第一行,之後,再透過 export 指令讓這個函式可以被呼叫的到後,阿舍就可以直接用 lsg 指令來取代原來的 ls + grep 指令的效果哩 !

$ function lsg() { ls $1 | grep $2;}

$ export -f lsg

$ lsg '-l /etc' network
drwxr-xr-x 7 root root 4096 Mar 11 11:02 network
-rw-r--r-- 1 root root 91 Feb 20 2014 networks

這樣的方式雖然是沒有像用 alias 指令那樣的簡便,但是,阿舍覺得已經方便很多了,不過,透過 function 定義的函式也和用 alias 指令設定的別名有相同的問題,就是登出後就會不見了,所以,如果你是要一直都存在可用的話,那麼就需要把這個函式直接寫在 .bash_profile 檔案裡才行囉 ! ...



推薦閱讀


有疑問? 問題還是沒解決嗎? 歡迎下方留言提問和討論 😁

沒有留言 :

張貼留言

歡迎留言提問和討論 .... 😁