我喜歡靈活性,以及從$ PATH變量或$ CDPATH中的任何目錄執行命令以輕鬆更改目錄。
但是有沒有一種簡單的方法來「目錄列表」「減少或打開文件」,你經常訪問。
假設您將日誌文件放在另一個目錄中的其他經常訪問的目錄中。一個less file1
命令應該在像$ PATH或$ CDPATH變量定義的目錄列表中查找file1。
我喜歡靈活性,以及從$ PATH變量或$ CDPATH中的任何目錄執行命令以輕鬆更改目錄。
但是有沒有一種簡單的方法來「目錄列表」「減少或打開文件」,你經常訪問。
假設您將日誌文件放在另一個目錄中的其他經常訪問的目錄中。一個less file1
命令應該在像$ PATH或$ CDPATH變量定義的目錄列表中查找file1。
據我所知,你找一個現有的解決方案,但如果你使用bash,那麼你可以編寫一個函數不是恰好有這種行爲:
放於~/.bashrc
:
less2()
{
if [ $# -eq 0 ]; then
echo 'Missing filename ("less --help" for help)'
return 1
fi
if [ "$1" == "--help" ]
then
less $1
return 1
fi
OLDIFS=$IFS
IFS=':'
if [ -z $LESSPATH ]; then
SEARCH_PATHS=.
else
SEARCH_PATHS=.:${LESSPATH}
fi
for dir in $SEARCH_PATHS
do
if test -e "$dir/$1"
then
less "$dir/$1"
IFS=$OLDIFS
return
fi
done
IFS=$OLDIFS
echo "$1: No such file or directory"
}
您需要執行source ~/.bashrc
爲了在你的bash中獲得less2。
如何使用腳本
通過默認它查找文件在當前目錄。如果設置環境變量LESSPATH less2
將在當前目錄中首先查找文件,如果不存在,它將在$LESSPATH
的所有目錄中查找該文件。 less2
是當前bash過程中的一項功能,因此不需要導出LESSPATH
,但當然您也可以導出LESSPATH
。
$ less2 my_file.log
$ LESSPATH=path1:path2:path3
$ less2 my_other_file.log
謝謝。 less2腳本看起來不錯。但是你需要在.bashrc中做什麼? – 2014-09-19 18:56:37
如你所見,less2是一個bash函數(http://www.tldp.org/LDP/abs/html/functions.html)。所以你需要把它的文本放在.bashrc中。我需要解決一些問題與發現呢! – 2014-09-19 18:58:40
我看到你刪除了find命令.. – 2014-09-19 19:33:39
這聽起來像它屬於[su]。 – 2014-09-19 18:21:08
@ Daniel A. White,它可以在純shell腳本中完成,但 – 2014-09-19 19:31:04