Stormvirux 在另一个线程中提供了这个很好的脚本。它将列标题放在列表的输出上ls -l
:
#!/bin/bash
{ echo Permissions links Owner Group Size Last_modMonth Last_modTime Last_modTime Filename; ls -l ; } | column -t | awk 'NR!~/^(2)$/'
ls -l | head -1
只需在命令行上运行它就可以了。我喜欢它并且想将它用作别名,比如lsl
在运行 bash 的 Linux 系统上。
但我一生都无法弄清楚如何使分隔符起作用以便正确解释它。当我尝试在命令行上使用 alias 命令时(我在将其提交到配置文件(如 )之前执行此操作.bashrc
),它将不起作用。当我尝试各种方法打包它以便正确解释它时,我收到各种错误。
有人可以告诉我如何让它作为别名工作,或者给我指出一个很好的参考资料,它可以清楚地告诉我需要做什么才能让这样的东西作为别名工作?
答案1
另一种方式,您可以将其定义为您的函数.bashrc
:
lsl() {
{ echo Permissions links Owner Group Size Last_modMonth Last_modTime Last_modTime Filename;
ls -l; } |
column -t |
awk 'NR!~/^(2)$/'
ls -l | head -1
}
答案2
如果您必须将其作为别名:
alias lsl='{ echo Permissions links Owner Group Size Last_modMonth Last_modTime Last_modTime Filename; ls -l ; } | column -t | awk '\''NR!~/^(2)$/'\'';ls -l | head -1'
我们需要用反斜杠转义内部单引号,这样它们就不会被解释为停止字符串。
如果我们使用双引号,则!
会被解释为历史扩展并且需要更多的转义,这可能是你最终遇到的最令人困惑的问题(比如“ bash: !~/^: event not found
”,这是难以理解的胡言乱语)。
上面的方法可行,但更好的方法是将该文件放在路径中的某个位置并使其可执行。比方说,创建~/.local/bin
一个脚本lsl
,其中包含您帖子的内容,然后chmod +x ~/.local/bin/lsl
向您的.bashrc
:
export PATH="$HOME/.local/bin:$PATH"
以确保能够找到该目录中的可执行文件。然后你可以lsl
在任何地方编写来运行代码。这种方法更易于维护且更易于理解。