![「ls –alR /」と「ls –alR / &」の違いは何ですか? [コピー]](https://linux33.com/image/51883/%E3%80%8Cls%20%E2%80%93alR%20%2F%E3%80%8D%E3%81%A8%E3%80%8Cls%20%E2%80%93alR%20%2F%20%26amp%3B%E3%80%8D%E3%81%AE%E9%81%95%E3%81%84%E3%81%AF%E4%BD%95%E3%81%A7%E3%81%99%E3%81%8B%EF%BC%9F%20%5B%E3%82%B3%E3%83%94%E3%83%BC%5D.png)
「ls –alR /」と「ls –alR / &」の違いは何ですか?私は同じ結果を得るようです。しかし、&シンボルはバックグラウンドで実行する必要があると思いましたか?
答え1
それでもバックグラウンドで実行されるということは、基本的に出力が端末に送信されることを意味します。違いは、プログラムの実行中に追加のコマンドを入力することです。明らかに、ls
これは多くの出力を生成するこのようなプログラムでは難しいでしょう。この試み:
ls -alR / >ls_files &
ls
実行中にできる他のことがあります。完了後に最初にEnterキーを押すと、ls
次のメッセージが表示されます。
[1]+ Done ls -alR / >ls_files
ls_files
これで、すべての出力がファイルに保存されます。
答え2
違いは簡単です。アンパサンド(&
)を使用すると、プログラムの実行がバックグラウンドで送信され、実行中に他のコマンドを実行できます。
コマンドの実行には短時間しかかかりませんので、ls
実際には気付かないでしょう。sleep
これは、コマンドとbashスクリプトを使用して説明する方が簡単です。
sleep
この例では(待機)5秒に設定しました。これは、BASHスクリプトと同様に、端末でも同じように機能します。
テストファイル
#!/bin/sh
sleep 5s
echo hello
このecho hello
行は5秒で実行されます。
今これを行う:
#!/bin/sh
sleep 5s &
echo hello
このecho hello
行は完了するまで5秒待たずにすぐに実行されますsleep
。