ls
出力が端末または他の何かのどちらであるかによって、印刷が異なります。
例えば:
$ ls .
file1 file2
$ ls . | head
file1
file2
ls
端末ではないときに1行で印刷する方法がありますか?-C
sortaがそれを行う引数がありますが、それはいくつかの行に分割します。
$ ls
file1 file10 file11 file12 file13 file14 file15 file16 file17 file18 file19 file2 file3 file4 file5 file6 file7 file8 file9
$ ls -C . | head
file1 file11 file13 file15 file17 file19 file3 file5 file7 file9
file10 file12 file14 file16 file18 file2 file4 file6 file8
これを行う理由は、ディレクトリ内のファイルをすばやく監視したいからです。この単純なコマンドラインを作成しました。
while [[ true ]] ; do ls ; done | uniq
uniqは、端末にスパムを送信し、変更のみを表示するのを防ぎます。しかし、それをすべて異なるネットラインに印刷していたため、uniqが役に立たなくなり、ノイズの量が増えました。理論的にwatch
はこれを使用できますが、ファイルが表示されたり消えたりしたらすぐに見たいと思いました。
これが最終的な解決策です。
while [[ true ]] ; do ls | tr '\n' ' ' ; done | uniq