linux“lessPATH”类似于$ CDPATH和$ PATH

时间:2014-09-19 18:19:18

标签: linux path

我喜欢灵活性以及从 $ PATH变量或$ CDPATH 中的任何目录执行命令来更改目录的容易程度。

但是,您经常访问的目录列表是否可以轻松“减少或打开文件”。

假设您在另一个目录中有日志文件,而在另一个目录中有其他经常访问的目录。 less file1命令应该在定义为$ PATH或$ CDPATH变量的目录列表中查找file1。

1 个答案:

答案 0 :(得分: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