2014-09-19 24 views
0

我喜歡靈活性,以及​​從$ PATH變量或$ CDPATH中的任何目錄執行命令以輕鬆更改目錄。

但是有沒有一種簡單的方法來「目錄列表」「減少或打開文件」,你經常訪問。

假設您將日誌文件放在另一個目錄中的其他經常訪問的目錄中。一個less file1命令應該在像$ PATH或$ CDPATH變量定義的目錄列表中查找file1。

+2

這聽起來像它屬於[su]。 – 2014-09-19 18:21:08

+0

@ Daniel A. White,它可以在純shell腳本中完成,但 – 2014-09-19 19:31:04

回答

1

據我所知,你找一個現有的解決方案,但如果你使用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 
+0

謝謝。 less2腳本看起來不錯。但是你需要在.bashrc中做什麼? – 2014-09-19 18:56:37

+1

如你所見,less2是一個bash函數(http://www.tldp.org/LDP/abs/html/functions.html)。所以你需要把它的文本放在.bashrc中。我需要解決一些問題與發現呢! – 2014-09-19 18:58:40

+0

我看到你刪除了find命令.. – 2014-09-19 19:33:39