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

Bashコマンドシェル用に記述されたスクリプトに関する質問。エラー/構文エラーのあるシェルスクリプトについては、ここに投稿する前に、shellcheckプログラム(またはhttps://shellcheck.netのWeb shellcheckサーバー)で確認してください。Bashのインタラクティブな使用に関する質問は、スタックオーバーフローよりもスーパーユーザーで話題になる可能性が高くなります。


10
特定の拡張子を持つファイルを再帰的に探します
私はbash(最新のUbuntu LTSリリース)を使用して、ディレクトリ内の特定の拡張子を持つすべてのファイルとそのサブディレクトリを検索しようとしています。 これはスクリプトファイルに記述されているものです。 #!/bin/bash directory="/home/flip/Desktop" suffix="in" browsefolders () for i in "$1"/*; do echo "dir :$directory" echo "filename: $i" # echo ${i#*.} extension=`echo "$i" | cut -d'.' -f2` echo "Erweiterung $extension" if [ -f "$i" ]; then if [ $extension == $suffix ]; then echo "$i ends with $in" else …
437 linux  bash  recursion 

9
コマンドがゼロ以外の値を返す場合、シェルスクリプトを中止しますか?
いくつかのコマンドを呼び出すBashシェルスクリプトがあります。コマンドのいずれかがゼロ以外の値を返す場合、シェルスクリプトが戻り値1で自動的に終了するようにしたいと思います。 各コマンドの結果を明示的にチェックせずにこれは可能ですか? 例えば dosomething1 if [[ $? -ne 0 ]]; then exit 1 fi dosomething2 if [[ $? -ne 0 ]]; then exit 1 fi
437 linux  bash  unix  shell 

23
Git BashがWindows 7 x64で非常に遅い
私は小さなプロジェクトの開発中にWindowsとUbuntuの両方でGitを使用しており、2つの間を頻繁に行き来していました。問題は、Git Bashが常に遅くなることです。 遅いと言うと、実行にcdは8〜25秒かかり、gitコマンドの実行には5〜20秒かかり、場合lsによっては最大30秒かかることもあります。言うまでもなく、これは楽しいことではなく、非生産的です。WindowsではGitが遅いのはわかっていますが、これはばかげています。 私にとって一時的に機能した1つの解決策は、(この回答で提案されているように)ネットワーク接続を無効にし、Git Bashを起動してから再接続することです。それを実行した後も数日間は高速で動作し続けることがありますが、最終的には常にパフォーマンスが低下します。msysgitディスカッショングループ、スタックオーバーフロー、msysgitの問題リストなどを何週間もオンとオフで調べましたが、機能するソリューションを見つけることができませんでした。 これまでのところ、私は試しました: ウイルススキャナーの除外リストにGitおよびプロジェクトフォルダーを追加する ウイルススキャナーを完全に無効にする(Kaspersky IS 2011) Outlookが実行されていないことを確認する(Outlook 2007) 他のすべてのアプリケーションをシャットダウンする 管理者としてGit Bashを実行する ネットワーク接続の無効化、Git Bashの起動、および接続の無効化の維持 ネットワーク接続の無効化、Git Bashの起動、接続の再有効化(たまにしか機能しない) ランニング git gc 上記の組み合わせ 何人かの人々がBashの補完を無効にすることに成功したことを私は読んだが、理想的にはそれをアクティブに保ちたい。msysgitのバージョンは1.7.3.1-preview20101002で、OSはWindows 7 x64です。Linuxで同じことを実行することは、予想通り、非常に高速です。私はLinuxを排他的に使用しますが、Windowsでも実行する必要があります(特定のアプリケーション、テストなど)。 誰かが同様の問題に遭遇しましたか?もしそうなら、根本的な問題は何であり、解決策は(もしあれば)何でしたか? これはGitリポジトリだけにとどまりませんが、参考までに、私がGitを使用していたリポジトリはかなり小さく、最大で4〜50ファイルです。
434 git  bash  windows-7  msysgit  mingw32 

11
複数のコマンドで-execを検索
find -execを複数のコマンドで使用しようとしていますが、成功しません。次のようなコマンドが可能かどうか誰かが知っていますか? find *.txt -exec echo "$(tail -1 '{}'),$(ls '{}')" \; 基本的に、私は現在のディレクトリの各txtファイルの最後の行を印刷し、行の最後に印刷し、コンマの後にファイル名を続けようとしています。
430 bash  find 


13
すべてが同じ幅になるようにbashで整数のシーケンスをゼロ埋めする方法は?
いくつかの値をループする必要があります。 for i in $(seq $first $last) do does something here done ため$firstと$last、iが入力されるのであれば、それは固定長5であることが必要1、私はそれはとなるフロントようにゼロを追加する必要があります00001。99999たとえば、ループしますが、長さは5でなければなりません。 例えば:00002、00042、00212、012312と述べそう。 どうすればそれを行うことができるのですか?
428 bash  numbers  padding 

8
bashの文字列の長さ
変数に格納されている文字列の長さを取得して別の変数に割り当てるにはどうすればよいですか? myvar="some string" echo ${#myvar} # 11 別の変数を出力にどのように設定します11か?

10
エコーせずにシェルスクリプトからパスワードを取得する方法
パスワードで保護されたシステムへのアクセスを必要とするプロセスを自動化するスクリプトがあります。システムには、ユーザーパスワードを引数として受け入れるコマンドラインプログラムを介してアクセスします。 ユーザーにパスワードを入力してシェル変数に割り当て、その変数を使用してアクセスプログラムのコマンドラインを構築するようにユーザーに促したいと思います(もちろん、処理するストリーム出力を生成します)。 私はBourne / Bashの適度に有能なシェルプログラマーですが、ターミナルにエコー(または「*」文字を使用してエコー)せずにユーザー入力を受け入れる方法がわかりません。 誰かがこれを手伝ってくれる?
424 bash  shell  scripting  sh 

15
出力をパイプし、Bashで終了ステータスをキャプチャする
Bashで長時間実行されているコマンドを実行し、両方の終了ステータスをキャプチャし、その出力をTシャツにしたいと考えています。 だから私はこれをします: command | tee out.txt ST=$? 問題は、変数STがteeコマンドではなくコマンドの終了ステータスをキャプチャすることです。どうすればこれを解決できますか? コマンドは実行時間が長く、後で表示するために出力をファイルにリダイレクトすることは、私にとって良い解決策ではないことに注意してください。


30
シェルスクリプトにプログレスバーを追加する方法
* NIXのbashまたはその他のシェルでスクリプトを作成する場合、数秒以上かかるコマンドを実行している間、進行状況バーが必要です。 たとえば、大きなファイルをコピーしたり、大きなtarファイルを開いたりします。 シェルスクリプトに進行状況バーを追加するには、どのような方法をお勧めしますか?
413 bash  shell  zsh 

30
getoptsを使用して長いコマンドラインオプションと短いコマンドラインオプションを処理する
シェルスクリプトを使用して呼び出されるコマンドラインオプションの長い形式と短い形式が必要です。 私はそれgetoptsが使用できることを知っていますが、Perlのように、私はシェルで同じことをすることができませんでした。 これをどのように行うことができるかについてのアイデアは、次のようなオプションを使用できるようにします。 ./shell.sh --copyfile abc.pl /tmp/ ./shell.sh -c abc.pl /tmp/ 上記で、両方のコマンドは私のシェルにとって同じことを意味しますが、を使用してgetopts、これらを実装できませんでしたか?

9
余分なスペースがある複数行の文字列(インデントは保持されます)
以下の定義済みテキストをファイルに書き込みたい: text="this is line one\n this is line two\n this is line three" echo -e $text > filename 私はこのようなものを期待しています: this is line one this is line two this is line three しかしこれを得た: this is line one this is line two this is line three それぞれの後にスペースがないと確信して\nいますが、余分なスペースはどのように出てきますか?
410 string  bash  shell  echo 

10
シェルでプログラムの実行時間を取得する
いくつかの異なる条件下でLinuxシェルで何かを実行し、各実行の実行時間を出力できるようにしたいと考えています。 これを行うPerlスクリプトまたはPythonスクリプトを作成できることはわかっていますが、シェルでそれを行う方法はありますか?(たまたまbashです)
407 linux  bash  shell 

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