单引号在shell脚本中不起作用

时间:2010-01-23 10:25:14

标签: unix bash

我有一个.bash_profile脚本,我无法使用以下内容 别名lsls ='ls -l |排序-n +4'

当我输入别名lsls时 它会排序,但然后发布此错误消息 “-bash:+4:找不到命令” 如何让别名与“+4”一起使用?

在类型ls -l |时有效在命令行中排序-n +4

我在OS X 10.4中

感谢您的帮助

3 个答案:

答案 0 :(得分:3)

bash-4.0$ ls -l | sort -n +4
sort: open failed: +4: No such file or directory

您需要ls -l | sort -n -k 5,gnu sort与bsd sort

不同
alias lsls='ls -l | sort -n -k 5'

编辑:更新以反映从基于0的索引到基于1的索引的变化,感谢Matthew。

答案 1 :(得分:1)

alias lsls='ls -l | sort -n +4'应该可以与OS X 10.4中的sort一起使用( 支持该语法)。

  

当我输入别名lsls时,它会进行排序但是会发布此错误消息“-bash:+4:command not found”

在编辑.bash_profile时是否可能插入了一个离线换行符?例如如果你最终得到这样的东西:

alias lsls='ls -l | sort -n
+4'

......这可能解释了错误信息。


顺便说一句,你可以使用以下方法获得相同的效果,而无需通过sort管道:

ls -lrS

答案 2 :(得分:0)

This链接讨论了一个包含管道的非常相似的别名。

问题可能不是管道,但有趣的解决方案是使用函数。