2017-04-20 100 views
0

我困在此刻,需要一些幫助。我運行下面的命令:Bash輸出到文件沒有新行

echo $(ps aux |sort -nrk 3,3 | head -n 10) > text.txt 

而且我得到的輸出都在一個大的塊

student 2066 16.5 7.4 1609208 299500 ? Ssl 07:31 12:16 compiz student 2803 13.3 8.3 2261736 339840 ? Sl 07:33 9:40 /usr/lib/firefox/plugin-container -greomni /usr/lib/firefox/omni.ja -appomni /usr/lib/firefox/browser/omni.ja -appdir /usr/lib/firefox/browser 2720 true tab student 2720 6.5 9.1 2435552 370424 ? Sl 07:33 4:47 /usr/lib/firefox/firefox root 884 5.3 2.8 365268 116248 tty7 Ssl+ 07:31 4:02 /usr/lib/xorg/Xorg -core :0 -seat seat0 -auth /var/run/lightdm/root/:0 -nolisten tcp vt7 -novtswitch student 2700 0.6 1.1 801556 46540 ? Sl 07:33 0:26 /usr/bin/gedit --gapplication-service student 2023 0.1 3.4 1312876 138932 ? Sl 07:31 0:05 /usr/bin/gnome-software --gapplication-service student 2017 0.1 1.3 832524 55068 ? Sl 07:31 0:04 nautilus -n student 1337 0.1 0.0 116164 2084 ? Sl 07:31 0:07 /usr/bin/VBoxClient --draganddrop whoopsie 592 0.0 0.3 373952 12352 ? Ssl 07:30 0:00 /usr/bin/whoopsie -f USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND 

我想知道是否有離開具有行輸出線。

student 2066 16.5 7.4 1609208 299500 ? Ssl 07:31 12:16 compiz 
student 2803 13.3 8.3 2261736 339840 ? Sl 07:33 9:40 /usr/lib/firefox/plugin-container -greomni /usr/lib/firefox/omni.ja -appomni /usr/lib/firefox/browser/omni.ja -appdir /usr/lib/firefox/browser 2720 true tab 
student 2720 6.5 9.1 2435552 370424 ? Sl 07:33 4:47 /usr/lib/firefox/firefox root 884 5.3 2.8 365268 116248 tty7 Ssl+ 07:31 4:02 /usr/lib/xorg/Xorg -core :0 -seat seat0 -auth /var/run/lightdm/root/:0 -nolisten tcp vt7 -novtswitch student 2700 0.6 1.1 801556 46540 ? Sl 07:33 0:26 /usr/bin/gedit --gapplication-service student 2023 0.1 3.4 1312876 138932 ? Sl 07:31 0:05 /usr/bin/gnome-software --gapplication-service student 2017 0.1 1.3 832524 55068 ? Sl 07:31 0:04 nautilus -n 
student 1337 0.1 0.0 116164 2084 ? Sl 07:31 0:07 /usr/bin/VBoxClient --draganddrop whoopsie 592 0.0 0.3 373952 12352 ? Ssl 07:30 0:00 /usr/bin/whoopsie -f USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND 

我希望做它在BASH只是因爲這是我此刻的自學和任何幫助,將不勝感激。

+2

只是'ps aux | sort -nrk 3,3 | head -n 10> text.txt' – hek2mgl

+0

@Matthew Swart我真的很想知道爲什麼你使用echo $(某些命令)而不是直接使用它們/ –

回答

1
somecmd $(...) 

這是最常見的錯誤在猛砸/ POSIX shell腳本,使,不引用變量的擴展或命令替換。

的問題是相同的,如下:

var="foo  bar"    # couple of spaces 
echo $var      

由於$var不是引用,它的分裂上的空白,並將得到的詞作爲獨立參數來echo。並且echo輸出由單個空格分隔的所有參數。在你的例子中,來自命令替換的換行符同樣用於分割輸入。

比較

echo "$var" 

看到:http://mywiki.wooledge.org/WordSplittinghttp://mywiki.wooledge.org/BashPitfalls


當然,前兩個項目,什麼命令替換$(...)確實是採取了命令的輸出和把它放在另一個命令的命令行上。這與echo的做法相反,它從命令行輸入並將其打印到標準輸出。所以你可以直接刪除並重定向你的ps ...命令的輸出。

1

你爲什麼要echo命令替換($(..))輸出,當你可以做,

ps aux |sort -nrk 3,3 | head -n 10 > text.txt 
+0

就像我在過去一週從所有閱讀過的東西中學到的一樣線上。 –