Linux "lessPATH"类似于 $CDPATH 和 $PATH



我喜欢从$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

最新更新