2016-03-04 54 views
3

我試圖使用/etc/passwd文件列表中的用戶的主目錄系統,分類不重複,這樣不存在的目錄將不被打印出來.. 這是我的命令:猛砸LS和指揮管

cut -f 6 -d ':' /etc/passwd | sort -su | ls -ld 

它的行爲就好像我剛剛運行ls -ld一樣,沒有來自命令管道的參數。

回答

4

你不能管的東西到ls ..你可以這樣做:

ls -ld $(cut -f 6 -d ':' /etc/passwd | sort -su) 

通過產卵新的bash執行cut | sort,並把它當作一個ls參數

+0

謝謝,這個作品! 早些時候,我試過ls -ld $(「cut -f 6 -d':'/ etc/passwd | sort -su」),bash說它是一個未知的命令,爲什麼? – user3105173

+2

也許是因爲你把''()''中的'$()'作爲字符串傳遞給''()'。你應該直接傳遞命令;) – FredMaggiowski

4

ls不採用管道輸出。你可以,但是,使用前報價來執行它的目錄列表上:

ls `cut -f 6 -d ':' /etc/passwd | sort -su ` 
+1

這也工作了,謝謝! – user3105173

2

你可以使用xargs

cut -f 6 -d ':' /etc/passwd | sort -su | xargs ls 
+0

謝謝你,這也起作用了! – user3105173

2

你不是很遠,這就足夠了LS前添加一個xargs的:

cut -f 6 -d ':' /etc/passwd | sort -u | xargs ls -ld