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

「シェル」という用語は、UnixおよびLinuxオペレーティングシステムに最も頻繁に関連付けられている、テキストベースの対話型コマンドインタープリターの一般的なクラスを指します。シェルスクリプトに関する質問については、「bash」、「powershell」、「ksh」などのより具体的なタグを使用してください。特定のタグがない場合は、ポータブル(POSIX準拠)ソリューションを想定する必要がありますが、「posix」を追加するか、代わりに「sh」を使用することをお勧めします。

13
STDOUTのn番目の行を取得するコマンド
STDOUTのn行目を取得できるbashコマンドはありますか? つまり、これを取るようなもの $ ls -l -rw-r--r--@ 1 root wheel my.txt -rw-r--r--@ 1 root wheel files.txt -rw-r--r--@ 1 root wheel here.txt そして、次のようなことをする $ ls -l | magic-command 2 -rw-r--r--@ 1 root wheel files.txt これは、再利用することを意図したスクリプトを作成する場合は悪い習慣になると思いますが、シェルを日常的に使用する場合は、そのような方法でSTDOUTをフィルタリングできると便利です。 また、これは書くのが簡単なコマンド(バッファーSTDOUT、特定の行を返す)であることも理解していますが、スクリプトを配置しなくても使用できる標準のシェルコマンドがあるかどうかを知りたいです。
210 bash  shell  sed  stdout 


6
MakefileターゲットでBash構文を使用するにはどうすればよいですか?
Bashの構文は非常に役立つことがよくあります。たとえば、のようなプロセス置換diff <(sort file1) <(sort file2)です。 MakefileでそのようなBashコマンドを使用することは可能ですか?私はこのようなことを考えています: file-differences: diff <(sort file1) <(sort file2) > $@ 私のGNU Make 3.80 shellではbash、コマンドを実行する代わりにを使用するため、エラーが発生します。
208 bash  shell  makefile 

10
find:-execの引数がありません
今日はコマンドで助けられましたが、動作していないようです。これはコマンドです: find /home/me/download/ -type f -name "*.rm" -exec ffmpeg -i {} -sameq {}.mp3 && rm {}\; シェルが戻る find: missing argument to `-exec' 基本的に私がやろうとしていることは、ディレクトリに再帰的に(他のディレクトリがある場合)実行し、.rmファイルタイプに対してffmpegコマンドを実行して、ファイルタイプに変換すること.mp3です。これが完了したら、.rm変換されたばかりのファイルを削除します。 私はこれについての助けに感謝します。
206 bash  shell  find  arguments  exec 

5
区切られた文字列をBashの配列に読み込む
スペース区切りの文字列を含む変数があります。 line="1 1.50 string" スペースを区切り文字としてその文字列を分割し、結果を配列に格納して、次のようにします。 echo ${arr[0]} echo ${arr[1]} echo ${arr[2]} 出力 1 1.50 string どこか私はうまくいかない解決策を見つけました: arr=$(echo ${line}) この後に上記のechoステートメントを実行すると、次のようになります。 1 1.50 string [empty line] [empty line] 私も試しました IFS=" " arr=$(echo ${line}) 同じ結果。誰か助けてくれませんか?
206 arrays  string  bash  shell 

3
Ubuntuは「bash:./program Permission denied」と言っています[終了]
閉まっている。この質問はスタックオーバーフローのガイドラインを満たしていません。現在、回答を受け付けていません。 この質問を改善してみませんか?Stack Overflowのトピックとなるように質問を更新します。 6年前休業。 この質問を改善する コンピューター1とコンピューター2でUbuntuを実行しています。コンピューター1でC ++プログラムをコンパイルしました./program_name。ターミナルからを使用して実行できます。それはうまくいきます。 ただし、これをコンピューター2で実行しようとすると、次のように表示されます。 bash: ./program_name: permission denied 何が問題で、どうすればよいですか?
206 bash  shell  sh 

7
Bashを使用する場合、どの文字をエスケープする必要がありますか?
バッシュでエスケープする必要があるキャラクターの包括的なリストはありますか?それだけで確認できますsedか? 特に、%エスケープする必要があるかどうかを確認していました。私は試した echo "h%h" | sed 's/%/i/g' エスケープせずにうまくいきました%。%エスケープする必要がないという意味ですか?これは必要性をチェックする良い方法でしたか? そしてより一般的です:それらはエスケープするのshellと同じ文字bashですか?

5
スクリプト自体の中でシェルスクリプト全体の出力をリダイレクトするにはどうすればよいですか?
Bourneシェルスクリプトのすべての出力をどこかにリダイレクトすることは可能ですが、スクリプト自体の中にシェルコマンドを使用しますか? 単一のコマンドの出力をリダイレクトするのは簡単ですが、次のようなものが必要です。 #!/bin/sh if [ ! -t 0 ]; then # redirect all of my output to a file here fi # rest of script... 意味:スクリプトが非対話的に実行される場合(cronなど)、すべての出力をファイルに保存します。シェルからインタラクティブに実行する場合は、出力を通常どおりstdoutに送信します。 FreeBSDの定期的なユーティリティによって通常実行されるスクリプトに対してこれを実行したいと思います。これは毎日の実行の一部であり、通常は毎日メールで確認する必要がないため、送信しません。ただし、この1つの特定のスクリプト内の何かが失敗した場合、それは私にとって重要であり、毎日のジョブのこの一部の出力をキャプチャして電子メールで送信できるようにしたいと考えています。 更新:ジョシュアの答えは正解ですが、スクリプト全体のstdoutとstderrを保存して復元したかったので、次のように行いました。 # save stdout and stderr to file descriptors 3 and 4, then redirect them to "foo" exec 3>&1 4>&2 >foo 2>&1 # …
205 shell 








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