我正在尝试使用别名来获取文件类型。我正在使用:
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
.....我能做些什么使这个命令成为别名。
发布于 2021-07-15 12:05:14
这是因为外部双引号允许在定义别名时由shell计算$1,因此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中,何时使用别名、何时编写脚本以及何时编写函数?
https://askubuntu.com/questions/1352010
复制相似问题