使用bash,我想完成以下命令而不使用ls
命令,而是使用纯路径名扩展。这可能吗?
ls * | tail -1
我正在寻找类似的东西
* | tail -1
答案 0 :(得分:2)
是的,您可以这样做,但是*
并没有按照您的想象做。它扩展为目录内容列表,并尝试以二进制文件形式执行。当您的目录内容包含不希望运行的实际可执行文件时,这可能很危险。
您可以使用内置的Shell来执行路径名扩展结果,而无需进行单独的处理。例如使用printf()
printf '%s\n' *
看看当您尝试在命令行中执行*
时会发生什么情况
mkdir -p foobar
cd foobar
touch zeezee
*
bash: zeezee: command not found
您可以tail
输出此结果,并在看起来方便时过滤结果。
答案 1 :(得分:2)
您可以将*
扩展列表传递给函数并输出最后一个参数:
f() { printf "%s\n" "${@: -1}"; }; f *