【发布时间】:2021-07-06 12:49:57
【问题描述】:
因此,我正在尝试创建一个别名,该别名将列出当前目录中的文件,例如“ls -lAh”,但仅包含我想要的特定列。所以我想出了这个命令:
ls -lAh | awk 'BEGIN{FS=" "; OFS=" "} {print $6,$7,$8,$5,$9}'
这只会按顺序打印我需要的列,即日期和时间、文件大小和文件名。
但是,如果我想为这个命令创建一个别名,我显然需要转义很多字符以便正确解释它们,但我没有这样做。有时,当我在单引号或美元符号前面加上反斜杠时,它只是以某种方式破坏,我无法使其正常工作。
请帮助我了解我应该如何转义特殊字符,以便正确解释。
如果它改变任何东西,我在 MacOS 上。如果需要,请务必要求澄清。
编辑:- 这是我尝试实际创建别名时的尝试:
alias lah='ls -lAh | awk \'BEGIN\{FS=" "; OFS=" "\} \{print \$6,\$7,\$8,\$5,\$9}\''
我尝试在每个特殊字符之前加上反斜杠,在我第一次尝试时,我只是将它们放在单引号之前,这不起作用,它告诉我类似 zsh: parse error at { 的内容。然后我在每个花括号之前放了一个反斜杠,但这没有用,显然美元符号也是特殊字符,所以我在它们之前放了反斜杠,但是每当我在输入命令后按回车键时,它都会换行说quote>,我必须在其中添加一个单引号来结束命令,当我这样做时,它会打印:zsh: command not found: \{print。
【问题讨论】:
-
请edit您的问题并展示您定义别名的尝试。这样就更容易提供帮助了。
-
@AlekseiK :不要反斜杠大括号。你在单撇号之间,所以你只需要转义单引号。顺便说一句,如果你定义一个函数而不是别名,我认为你会少得多。