2010-01-23 58 views
3

我有一個.bash_profile腳本,我無法得到以下的工作 alias lsls ='ls -l |排序-n +4'單引號不能在shell腳本中工作

當我鍵入別名LSLS 它的排序,但然後投遞此錯誤消息 ‘-bash:+4:命令未找到’ 如何獲得別名一起工作「 +4' ?

它適用於輸入ls -l |排序-n +4在命令行

我在OS X 10.4是

感謝所有幫助

+0

原來的一組標籤,「六」,「單」,「報價」,必須最少適應我在本網站上見過的問題。而且這個網站確實有怪異的標籤。 – 2010-01-23 10:34:54

回答

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

你需要ls -l | sort -n -k 5,GNU排序是從BSD排序

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

編輯:更新以反映從基於0的索引到基於1的索引的變化,謝謝馬修。

+0

這不是正在報告的「+4:command not found」錯誤。 OS X 10.4中的'sort'支持兩種語法。而'+ 4'的等價物將是'-k 5'。 – 2010-01-24 02:28:16

+0

@Mthethew你說得對,OS X 10.4支持+4,這個別名在OS X 10.4上非常適合我。 – wich 2010-01-24 13:18:52

0

This鏈接討論了一個非常類似的包含管道的別名。

問題可能不是管道問題,但有趣的解決方案是使用一個函數。

+1

問題不在於管道,問題在於gnu排序需要不同的參數; +4應該是-k 4 – wich 2010-01-23 10:32:55

1

alias lsls='ls -l | sort -n +4'應該可以在OS X 10.4(確實支持該語法)中使用sort

當我鍵入別名LSLS它的排序,但然後投遞此錯誤消息「-bash:+4:命令未找到」

有沒有可能是你在編輯時插入一個換行符流浪你的.bash_profile?例如如果你結束了這樣的事情:

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

......這可能會解釋錯誤消息。


順便說一句,你可以通過sort得到不包括管道相同的效果都沒有,使用:

ls -lrS 
+0

ls -lrS是一個更好的答案,但sort -n +4在OSX 10.6.x上不起作用至少 – 2010-01-24 02:28:18

+0

對,但原始海報明確地說「我在OS X 10.4「。我真的試過了。 – 2010-01-24 02:34:30