Bash 命令中文件的简短别名

Bash 命令中文件的简短别名

我想要一种访问文件的快捷方式,我通常在 bash 中使用。例如,查看日志。现在我使用:

less /var/log/user/server.log
less /var/log/user/server2.log

我想要捷径,

less server.log
less server2.log

我在 .bash_profile 中尝试了这个变体,但是某处出现错误:

less() { if [[ $@ == "server.log" ]]; then command less /var/log/user/server.log; else command less "$@"; fi; }

答案1

你可以符号链接像这样的文件:

ln -s /var/log/user/server.log server.log
ln -s /var/log/user/server2.log server2.log

然后你可以对这些文件做任何你想做的事情:

less server.log
tail -f server2.log

答案2

serverlog=/var/log/user/server.log
serverlog2=/var/log/user/server2.log

less $serverlog

答案3

我感到无聊,所以我为你编写了这个 bash shell 函数:

less()
{
    OIFS="$IFS"; IFS=:
    lesspath=('' $LESSPATH)
    IFS="$OIFS"
    for arg ; do
            for path in "${lesspath[@]}" ; do
                    file="${path:+$path/}${arg}"
                    if [[ -e "${file}" ]] ; then
                            command less "${file}"
                            continue 2
                    fi
            done
            command less "${arg}"
    done
}

把这个 shell 函数放入你的.bashrc设置中,LESSPATH=/var/log/user现在你就可以按照你想要的方式运行 less 了。

您可以LESSPATH通过用冒号分隔来添加其他路径,就像其他 PATH 环境变量一样。因此,如果您设置了LESSPATH=/var/log:/var/log/user,您也可以less syslog从任何地方轻松运行以轻松查看/var/log/syslog

答案4

要使用别名,您也可以做类似的事。

将其添加到 .bashrc

function lss { less "$1"; }
export lss
alias lf='echo /var/log/syslog'

跑步

. ~/.bashrc

现在你可以这样做:

less $(lf)

或者

lss $(lf)

相关内容