タグ付けされた質問 「shell」

シェルは、Unixのコマンドラインインターフェイスです。シェルにインタラクティブにコマンドを入力するか、スクリプトを記述してタスクを自動化できます。/ bin / shおよび最も互換性のあるシェル(ash、bash、ksh、zshなど)に適用される質問には、このタグを使用します。エラーのあるシェルスクリプトについては、ここに投稿する前にhttp://shellcheck.netで確認してください。

1
`find`の-execオプションを理解する
私は常に自分自身の構文を調べています find . -name "FILENAME" -exec rm {} \; 主に、その-exec部品がどのように正確に機能するのかわからないからです。中括弧、バックスラッシュ、セミコロンの意味は何ですか?その構文の他のユースケースはありますか?
53 shell  find 

3
シェルワイルドカードでORパターンを使用する
私のディレクトリの内容は $ ls -lrt total 0 -rw-r--r-- 1 user1 admin 19 Oct 8 12:31 night.txt -rw-r--r-- 1 user1 admin 19 Oct 8 12:31 noon.txt -rw-r--r-- 1 user1 admin 38 Oct 8 12:31 day.txt 指定したファイル名に単語が含まれているファイルの詳細を一覧表示したいと思います。 例: $ ls -lrt *day|night* ls: *day: No such file or directory bash: night.txt: command not …
52 bash  shell  zsh  ls  wildcards 

14
未使用のローカルポートを見つける最も簡単な方法は何ですか?
未使用のローカルポートを見つける最も簡単な方法は何ですか? 現在、私はこれに似たものを使用しています: port=$RANDOM quit=0 while [ "$quit" -ne 1 ]; do netstat -a | grep $port >> /dev/null if [ $? -gt 0 ]; then quit=1 else port=`expr $port + 1` fi done それはひどく回り道をしているので、私が見逃したビルトインのようなもっと簡単な道があるのだろうかと思っています。

5
メインストリームの* NIXシェルの基本的な違いは何ですか?[閉まっている]
メインストリームの* NIXシェルの基本的な違いは何ですか?その一部はおそらくユーザーの好みに依存することを理解していますが、bashを使用したことがあるだけで、別のシェルが役立つ場所を知りたいと思っています。 また、あるシェルまたは別のシェルの下で実行するときにユーザー作成のシェルスクリプトに影響がありますか、それとも単にファイルの先頭のシェルを変更するだけの問題ですか?私の本能は、それほど簡単ではないと言います。
52 shell 

4
Python stdoutをすぐにファイルに書き込む
Pythonスクリプトからテキストファイル(python script.py > log)にstdoutを書き込もうとすると、コマンドの開始時にテキストファイルが作成されますが、Pythonスクリプトが終了するまで実際のコンテンツは書き込まれません。例えば: script.py: import time for i in range(10): print('bla') time.sleep(5) で呼び出されpython script.pyた場合、5秒ごとにstdoutに出力されますが、を呼び出した場合python script.py > log、スクリプトが終了するまでログファイルのサイズはゼロのままです。スクリプトの進行状況を追跡できるように、ログファイルに直接書き込むことは可能tailですか(例:を使用)? 編集それpython -u script.pyはトリックを行うことが判明し、stdoutのバッファリングについては知りませんでした。
51 shell  python  stdout 

5
ディレクトリ内からすべてのサブディレクトリを削除するにはどうすればよいですか?
この質問は、私がここに投稿した最初の質問の第2段階です サブディレクトリ、.zipファイル、およびサブディレクトリ内に含まれていないその他のランダムファイルの束を含むディレクトリがあります。 コマンドラインスクリプトを使用して、親ディレクトリ内のすべてのサブディレクトリを削除しますが、サブディレクトリに属さないすべてのzipファイルとルーズファイルを保持します。すべてのサブディレクトリにはコンテンツがあるため、-fコマンドで強制的に削除する必要があると思います。 したがって、基本的には、親ディレクトリ(または現在のディレクトリ)内を検索し、その中からすべてのフォルダーを削除しますが、フォルダーではない、またはフォルダーに含まれる他のすべてのコンテンツおよびファイルは保持します。 コマンドラインからアイテムを削除するには特別な注意が必要であることは理解していますが、リモートでバックアップするために必要な予防措置をすべて講じています。

2
なぜ「。」Unixのハードリンク?
UnixベースのOSで空のディレクトリのリンクカウントが1ではなく2である理由については、多くの説明を見てきました。すべてのディレクトリがそれ自体を指しているディレクトリ。「。」という概念がある理由がわかります。相対パスを指定するには便利ですが、ファイルシステムレベルで実装すると何が得られますか?シェルまたはパスを取るシステムコールに、その解釈方法を知ってもらうだけではどうですか? その「..」は本当のリンクです。ファイルシステムは、ナビゲートするために親ディレクトリへのポインタを保存する必要があります。しかし、「。」の理由がわかりません。実際のリンクであることが必要です。また、実装でい特別なケースにつながるようです-リンクカウントが1未満のiノードで使用されているスペースのみを解放できると思うでしょうが、それらがディレクトリの場合、実際にチェックする必要がありますリンクカウントが2未満。

5
「/ bin / [」はどのように機能しますか?
私はいつもフォルダー/binに[プログラムがあることに驚いています。 これは、次のようなことをしているときに呼び出されるものif [ something ]ですか? [シェルでプログラムを明示的に呼び出すことにより、対応するを要求し]、閉じ括弧を指定すると、括弧の間に何を挿入しても何もしないようです。 言うまでもなく、プログラムに関するヘルプを得ることについて、通常の方法でうまくいかない、つまりどちらman [も[ --help動作します。
50 shell  test 


5
あるコマンドの出力を別のコマンドライン引数として渡す方法は?
したがって、2つのアドレスを指定すると、2つのHTMLリンクを検索するスクリプトがあります。 echo "http://maps.google.be/maps?saddr\=$1\&daddr\=$2" | sed 's/ /%/g' これを送信してwget、出力をというファイルに保存しますtemp.html。これを試しましたが、うまくいきません。誰かが理由を説明したり、解決策を教えてくれますか? #!/bin/bash url = echo "http://maps.google.be/maps?saddr\=$1\&daddr\=$2" | sed 's/ /%/g' wget $url


3
ファイル記述子を閉じる、>&-vs <&-
私が読んでいるbashチュートリアルでは、読み取りのためにファイル記述子を開くと、つまり exec 3&lt; echolist 次に、このように閉じなければなりません、 exec 3&lt;&amp;- ただし、ファイル記述子を書き込み用に開く場合は、次のように閉じる必要があります。 exec 3&gt;&amp;- しかし、私がインターネットで見ると、人々がファイルを開いて、これでファイルを閉じているのが見えます: exec 3&gt;&amp;- 注:チュートリアルに従って、を使用する必要がある場合exec 3&lt;&amp;1。 だから私の質問は、exec n&gt;&amp;-nがファイル記述子番号である場合、すべてのファイル記述子を閉じることができますか?読み取り、書き込み、またはその両方で開かれたかどうかに関係なく?

3
シェルスクリプト内の画面とファイルの両方にテキストを出力する方法は?
現在、次のようなログファイルにメッセージを記録するシェルスクリプトがあります。 log_file="/some/dir/log_file.log" echo "some text" &gt;&gt; $log_file do_some_command echo "more text" &gt;&gt; $log_file do_other_command このスクリプトを実行するとき、画面への出力はありません。また、パテ経由でサーバーに接続しているため、別の接続を開いて「tail -f log_file_path.log」を実行する必要があります。スクリプトとリアルタイムで出力を見たい。 明らかに、私が望むのは、テキストメッセージが画面とファイルに印刷されることですが、2行ではなく1行で行いたいのです。1行にはファイルへのリダイレクトがありません。 これを達成する方法は?

2
Bash:コマンドの出力から一度に1行を読み取る方法は?
を使用してbashでコマンドの出力を読み取ろうとしていwhile loopます。 while read -r line do echo "$line" done &lt;&lt;&lt; $(find . -type f) 私が得た出力 ranveer@ranveer:~/tmp$ bash test.sh ./test.py ./test1.py ./out1 ./test.sh ./out ./out2 ./hello ranveer@ranveer:~/tmp$ この後、私は試しました $(find . -type f) | while read -r line do echo "$line" done しかし、それはエラーを生成しましたtest.sh: line 5: ./test.py: Permission denied。 だから、私は現在それが一度に行全体を丸lurみしていると思うので、どのように行ごとに読むのですか? 必要な出力: ./test.py …
49 bash  shell  find  pipe 

1
「…」、「…」、「$」…、および「$」…引用符の違いは何ですか?
時々私はスクリプトがいくつかのテキストを引用し、これらのさまざまな方法のすべてを使用して参照してください"..."、'...'、$'...'、と$"..."。なぜ非常に多くの種類の引用が使用されているのですか? それらは異なる振る舞いをしたり、それらの中で私ができることに影響を与えますか?

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.