我正在努力文件类型使用别名。我正在使用:
alias file-types="find . -type f | perl -ne 'print $1 if m/\.([^.\/]+)$/' | sort -u"
但是,它不起作用:
当我在终端中输入命令时,它会显示(这正是我想要的):
azw
azw3
bz2
chm
epub
pdf
但是当我使用别名时,它会显示类似以下内容:
./x.epub
./y.pdf
./z.pdf
.....
我该怎么做才能使该命令成为别名。
答案1
$1
这是因为在定义别名时,外部双引号允许由 shell 进行评估,因此print $1
变得简单print
:
$ alias file-types="find . -type f | perl -ne 'print $1 if m/\.([^.\/]+)$/' | sort -u"
$ alias file-types
alias file-types='find . -type f | perl -ne '\''print if m/\.([^.\/]+)$/'\'' | sort -u'
修复引用的最简单方法可能是使用反斜杠转义$
:
print \$1 if m/\.([^.\/]+)$/
然而对于这种情况,我建议使用 shell 函数代替别名 - 例如参见在 Bash 中,何时使用别名,何时使用脚本,何时编写函数?