我经常发现自己使用“ls”查看目录,然后当我找到我想要的文件时,我使用“less”查看文件。
So for example to find a mysql log file I might type
ls /var
then:
ls /var/log/
and then:
ls /var/log/mysql
and finally:
less /var/log/mysql/mysql.log
Run Code Online (Sandbox Code Playgroud)
(这是一个人为的例子,但希望你知道我在做什么)
我觉得很烦人,我需要决定命令应该是 ls 还是更少。为什么 'less' 不能确定它是否已被赋予一个目录并充当 'ls' ?
是否有我可以使用的命令,而不是根据文件类型充当 ls 或 less 的命令?或者是否有人们使用的通用别名?
rep*_*lay 15
在 bash 中,您可以轻松创建一个函数来执行此操作:
function less_ls()
{
# True if file exists and is a regular file.
if [ -f "${1}" ]
then
less "${1}"
else
ls "${1}"
fi
}
Run Code Online (Sandbox Code Playgroud)
显然,您可以通过替换less_ls
部分来将函数重命名为您想要的任何名称,如果您命名它less
,它将具有可执行文件的优先级less
。如果您希望每次启动 Bash 时都自动定义它,您可以将其复制粘贴到您的~/.bashrc
文件中。
少能够确定它是否已被赋予了目录。将LESSOPEN
环境变量设置为~/bin/LESSPIPE
并制作~/bin/LESSPIPE
如下脚本:
#!/bin/sh
if [ -d "$1" ]; then
exec /bin/ls -la "$1"
elif [ -f "$1" ]; then
case "$1" in
*.tar|ztar) exec tar tvvf "$1" 2>/dev/null;;
*.tar.[dg]z|*.tar.z|*.tgz) exec gzip -dc "$1" | tar tvvf - 2>/dev/null;;
*.tar.bz2) exec bzip2 -d <"$1" 2>/dev/null | exec tar tvvf - 2>/dev/null;;
*.tar.Z|*.taz) exec uncompress -c "$1" | exec tar tvvf - 2>/dev/null;;
*.zip) exec unzip -l "$1" 2>/dev/null;;
*.lha) exec lha -v "$1" 2>/dev/null;;
*.7z) exec 7z l "$1" 2>/dev/null;;
*.[rs]pm) exec rpm -qilp "$1";;
*.z|*.[dg]z) exec gzip -dc "$1" 2>/dev/null;;
*.bz2) exec bzip2 -dc "$1";;
*.xz) exec xz -dc "$1";;
*.Z) exec uncompress -c "$1" 2>/dev/null;;
esac
fi
Run Code Online (Sandbox Code Playgroud)
您将获得目录和档案的列表。
您可以使用lesskey
代替环境变量来设置预处理器。有关详细信息,请参阅文档。
归档时间: |
|
查看次数: |
143 次 |
最近记录: |