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

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


3
複数のコマンドで時間を実行し、時間出力をファイルに書き込む方法は?
timeコマンドを実行して、いくつかのコマンドの時間を測定したい。 私がやりたいことは: 一緒に追加されたすべての実行時間を測定します 書き込みtimeファイルに出力します 書くSTDERR私が測定していますコマンドからSTDERR 私は何をしないでやりたいことはあります いくつかのコマンドを個別のスクリプトに記述します(これはすべて、既にプログラムで生成しているスクリプトであり、ANOTHER一時スクリプトの作成は必要以上に混乱するためです) 私がこれまでに試したこと: /usr/bin/time --output=outtime -p echo "a"; echo "b"; 動作せずtime、最初のものでのみ実行されます。 /usr/bin/time --output=outtime -p ( echo "a"; echo "b"; ) 動作しません、(予期しないトークンです。 /usr/bin/time --output=outtime -p { echo "a"; echo "b"; } 「そのようなファイルやディレクトリはありません」とは機能しません。 /usr/bin/time --output=outtime -p ' echo "a"; echo "b";' 「そのようなファイルやディレクトリはありません」とは機能しません。 time ( echo "a"; echo …

3
なぜ私のfindは再帰的ではないのですか?
次のコマンドを実行していますが、再帰的に実行されません。 find . -name *.java 私は現在のディレクトリにさらにJavaファイルがあることを知っていますがfind、現在のディレクトリでのみ実行しています。OS X 10.9を使用しています。
65 shell  find  wildcards 

4
bashでは、forループのループ制御で整数変数を使用できますか?
次のbashスクリプトがあります。 #!/bin/bash upperlim=10 for i in {0..10} do echo $i done for i in {0..$upperlim} do echo $i done 最初のfor(ループなしの可変upperlimループ制御中)は正常に動作するが、第二for(ループと可変upperlimループ制御では)ありません。2番目のforループを修正して動作させる方法はありますか?御時間ありがとうございます。
65 bash  shell  shell-script  for 

4
ディレクトリ内のファイルタイプの再帰統計?
コンバージョンプロジェクトのウェブサイトスクレイプを行いました。そこにあるファイルの種類について、いくつかの統計を行いたいです。たとえば、400 .htmlファイル、100 .gifなどです。これを行う簡単な方法は何ですか?再帰的でなければなりません。 編集: maxschelpzigが投稿したスクリプトでは、私がスクレイプしたサイトのアーキテクチャのためにいくつかの問題が発生しています。一部のファイルは*.php?blah=blah&foo=barさまざまな引数を持つ名前であるため、すべてが一意であるとカウントされます。したがって、ソリューションは*.php*、いわば、すべて同じタイプであると考える必要があります。
65 shell  filenames 

6
ポータブルシェルプログラミングのリソース
ポータブルシェルプログラミングにはどのようなリソースがありますか?最終的な答えは、対象となるすべてのプラットフォームでテストすることですが、それはほとんど実用的ではありません。 POSIX /シングルUNIXの仕様が開始され、それはあなたが何を各実装のサポートのレベルがあり、また一般的なものを拡張存在でもないように指示します。各実装のドキュメントを読むことができますが、それは非常に時間がかかり、完全に正確ではありません。 理想的なフォーマットは、POSIX仕様のある種のコミュニティ注釈付きバージョンであり、各機能は異なる実装間のサポートレベルによって注釈付けされているように思われます。そのようなことはありますか?または、他の有用なリソースがありますか? たとえば、Sven Mascheckのシェルポータビリティページがありますが、構文要素といくつかのビルトインについてのみであり、古いシェルのみをカバーしています。より包括的なリソースを探しています。

5
シェルで引用符をエスケープする方法は?
bashで文字をエスケープするのに問題があります。別のユーザーでコマンドを実行しているときに、一重引用符と二重引用符をエスケープしたいと思います。この質問の目的のために、画面に以下をエコーし​​たいとしましょう。 'single quote phrase' "double quote phrase" 別のユーザーに切り替える必要がある場合、すべての特殊文字をエスケープするにはどうすればよいですか: sudo su USER -c "echo \"'single quote phrase' \"double quote phrase\"\"" もちろん、これは正しい結果を生み出しません。

7
cat出力から最初と最後の行を読み取る方法は?
テキストファイルがあります。タスク-後のファイルから最初と最後の行を取得する $ cat file | grep -E "1|2|3|4" | commandtoprint $ cat file 1 2 3 4 5 cat出力なしでこれが必要です(1と5のみ)。 ~$ cat file | tee >(head -n 1) >(wc -l) 1 2 3 4 5 5 1 たぶんawkともっと短い解決策が存在する...
64 bash  shell  sed  awk  grep 

3
ファイルがディレクトリへのシンボリックリンクであるかどうかを確認するにはどうすればよいですか?
ファイルが存在し、-Lのシンボリックリンクであるかどうかを確認できます。 for file in *; do if [[ -L "$file" ]]; then echo "$file is a symlink"; else echo "$file is not a symlink"; fi done また、-dを使用したディレクトリの場合: for file in *; do if [[ -d "$file" ]]; then echo "$file is a directory"; else echo "$file is a regular file"; …
64 bash  shell  test 

8
「mv:引数リストが長すぎます」を解決しますか?
並べ替えが必要な100万を超えるファイルを含むフォルダーがありますが、mvこのメッセージは常に出力されるため、実際には何もできません。 -bash: /bin/mv: Argument list too long このコマンドを使用して、拡張子のないファイルを移動しています。 mv -- !(*.jpg|*.png|*.bmp) targetdir/
64 bash  shell  arguments  mv 

7
シェルスクリプトが失敗する:構文エラー:“(”予期しない
Raspberry Pi開発用の開発環境のセットアップを自動化するスクリプトに取り組んでいます(詳細な手順については、こちらをご覧ください)。スクリプトはその記事にリンクされていますが、利便性はこちらからも見つけることができます。これで、このスクリプトを実行すると、エラーなしで環境がインストールおよびセットアップされますが、デフォルトではsudoのタイムアウト値のため、sudoパスワードを複数回入力する必要があります。そこで、すべてのsudo行を削除し、コマンドラインでsudoを使用してスクリプト全体を実行することで、実験を開始しました。 kemra102@ubuntuvm:~$ sudo ./pi_dev_env_install.sh これは期待どおりに機能し、この時点までほとんどの方法を通過します。 ./pi_dev_env_install: 68: ./pi_dev_env_install.sh: Syntax error: "(" unexpected sudoを使用してスクリプト全体を実行しない場合、以前はこの行が正常に機能していました。sudoとして実行しているこの行については、私の知る限りそれを停止する必要はありません。


4
なぜ `[`はシェル組み込みコマンドで、 `[[`はシェルキーワードですか?
私の知る限り、[[はの拡張バージョンです[が[[、キーワード[として表示され、組み込みとして表示されると混乱します。 [root@server ~]# type [ [ is a shell builtin [root@server ~]# type [[ [[ is a shell keyword TLDPは言う ビルトインは同じ名前のシステムコマンドの同義語である場合がありますが、Bashは内部的に再実装します。たとえば、Bashのechoコマンドは/ bin / echoと同じではありませんが、動作はほとんど同じです。 そして キーワードは、予約語、トークン、または演算子です。キーワードはシェルにとって特別な意味を持ち、実際、シェルの構文の構成要素です。例として、for、while、do、および!キーワードです。ビルトインと同様に、キーワードはBashにハードコーディングされますが、ビルトインとは異なり、キーワードはそれ自体がコマンドではなく、コマンド構成のサブユニットです。[2] それは両方[と[[キーワードを作るべきではありませんか?ここに欠けているものはありますか?また、このリンクの両方のことを再断言[とは[[同じ種類に属している必要があります。

2
「sh互換」とはどういう意味ですか?
私は、「sh compatible」というフレーズがシェルに関連して通常使用されるのを見てきました。シェル内から実行される可能性のあるプログラムにも適用されるかどうかはわかりません。 シェルまたは他のプログラムが「sh互換」であることはどういう意味ですか?「sh incompatible」とはどういう意味ですか? 編集:bashとshの違いを尋ねるこの質問は非常に関連性があります: shとbashの違い 「sh互換」であるとはどういうことなのか、まだ直接的な回答が欲しいです。「sh compatible」は「Shell Command Languageを実装する」という意味ですが、なぜ「sh compatible」シェルがそれほど多く、なぜ異なるのでしょうか?

8
2つのプログラム間で双方向パイプを作成する方法は?
誰もが2つのプログラム(stdout最初のプログラムとstdin2番目のプログラムのバインド)間で単方向パイプを作成する方法を知っていますfirst | second。 しかし、双方向パイプ、つまりクロスバインドstdinとstdout2つのプログラムの作成方法は?シェルでそれを行う簡単な方法はありますか?
63 shell  pipe 

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