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

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

9
Bashスクリプトでvirtualenv activateをソースする方法
Python virtualenvをアクティブにするBashスクリプトをどのように作成しますか? 私は次のようなディレクトリ構造を持っています: .env bin activate ...other virtualenv files... src shell.sh ...my code... 私はvirtualenvをアクティブにできます: user@localhost:src$ . ../.env/bin/activate (.env)user@localhost:src$ ただし、Bashスクリプトから同じことを行っても何も起こりません。 user@localhost:src$ cat shell.sh #!/bin/bash . ../.env/bin/activate user@localhost:src$ ./shell.sh user@localhost:src$ 何が悪いのですか?


4
zshを終了しますが、実行中のジョブは開いたままにしますか?
bashからzshに切り替えたところです。 bashでは、シェルが終了してもバックグラウンドタスクが実行され続けます。たとえば、ここでdolphinは、exit:の後に実行を継続します。 $ dolphin . ^Z [1]+ Stopped dolphin . $ bg [1]+ dolphin . & $ exit これがデフォルトの動作として私が望むものです。 対照的に、zshの動作は、でジョブを実行することについて警告しexit、exit再度実行する場合はジョブを閉じることです。たとえば、ここでdolphinは、2番目のexitコマンドが実際にシェルを終了すると閉じられます。 % dolphin . ^Z zsh: suspended dolphin . % bg [1] + continued dolphin . % exit zsh: you have running jobs. % exit ここでzshのデフォルトの動作をbashのようにするにはどうすればよいですか?
96 bash  zsh  jobs 


2
シェルコマンドの出力の最初の行を取得します
のバージョン番号を読み取ろうとするとvim、無視する必要のある追加の行がたくさん表示されます。のマニュアルを読んでhead、次のコマンドを試しました。 vim --version | head -n 1 これが正しいアプローチかどうか知りたいですか?
96 linux  bash  shell 

9
env:bash \ r:そのようなファイルやディレクトリはありません
ここからYouCompleteMeをインストールしようとしています。 私が実行するとき: ./install.sh --clang-completer このエラーが発生します: env: bash\r: No such file or directory 環境変数の何が問題なのかわかりません。これが私のbashパスです: which bash /bin/bash に変更する必要があり/usr/bashますか?はいの場合、どうすればよいですか?~/.bashrcファイルを変更してみましたが、うまくいきませんでした。

8
「find」コマンドの結果を配列としてBashに保存するにはどうすればよいですか?
結果findを配列として保存しようとしています。これが私のコードです: #!/bin/bash echo "input : " read input echo "searching file with this pattern '${input}' under present directory" array=`find . -name ${input}` len=${#array[*]} echo "found : ${len}" i=0 while [ $i -lt $len ] do echo ${array[$i]} let i++ done 現在のディレクトリに2つの.txtファイルがあります。したがって、の結果として「2」が期待され${len}ます。ただし、1を出力します。理由は、すべての結果をfind1つの要素として受け取るためです。どうすればこれを修正できますか? PS 同様の問題についてStackOverFlowでいくつかの解決策を見つけました。ただし、少し違うので応募できません。ループの前に結果を変数に格納する必要があります。再度、感謝します。
96 arrays  bash  variables  find 

2
Bashまたはシェルスクリプトで関数宣言を転送しますか?
たとえば、bashC / C ++でよく知られている、前方宣言のような、またはそれに似た(回避策)のようなものはありますか? または、たとえば、常に1つのパス(行ごと)で実行されるため、そのようなものがありますか? 前方宣言がない場合、スクリプトを読みやすくするにはどうすればよいですか。それはかなり長く、最初はこれらの関数定義がグローバル変数と混合されているため、スクリプトが見苦しく、読みにくく/理解しにくくなっています)?私はそのような場合のいくつかのよく知られている/ベストプラクティスを学ぶことを求めています。 例えば: # something like forward declaration function func # execution of the function func # definition of func function func { echo 123 }

9
接頭辞/接尾辞で名前を変更するにはどうすればよいですか?
mv original.filename new.original.filename元のファイル名を再入力せずにどうすればよいですか? 私は何かのような、mv -p=new. original.filenameあるいはおそらくmv original.filename new.~何でもできると想像しますが、man mv/ info mvページを見た後、このようなものを見ることができません。 もちろん、これを行うシェルスクリプトを作成することもできますが、既存のコマンド/フラグはありませんか?
95 bash  rename  filenames  prefix  mv 

10
Bashスクリプトのパラメーターの検証
複数のフォルダが不要になったときにそれらを削除するプロセスを自動化するのに役立つ基本的なものを思いつきました。 #!/bin/bash rm -rf ~/myfolder1/$1/anotherfolder rm -rf ~/myfolder2/$1/yetanotherfolder rm -rf ~/myfolder3/$1/thisisafolder これは次のようにして呼び出されます。 ./myscript.sh <{id-number}> 問題は、入力を忘れた場合、 id-number (私がしたように)、本当に削除したくない多くのものが削除される可能性があることです。 コマンドラインパラメーターに任意の形式の検証を追加する方法はありますか?私の場合、a)パラメータが1つあること、b)数値であること、c)そのフォルダが存在することを確認することをお勧めします。スクリプトを続行する前に。
95 validation  bash  shell 

5
bashの列の一意の値の数を取得する
複数の列を持つタブ区切りファイルがあります。フォルダー内のすべてのファイルについて、列内のさまざまな値の出現頻度をカウントし、カウントの降順(最大のカウントが最初)に並べ替えたい。Linuxコマンドライン環境でこれをどのように達成しますか? awk、perl、pythonなどの一般的なコマンドライン言語を使用できます。

4
bashのHMAC-SHA1
HMAC-SHA1ハッシュを生成するbashスクリプトはありますか? 次のPHPコードに相当するものを探しています。 hash_hmac("sha1", "value", "key");
95 bash  sha1  hmac 

6
Mac OS 10.10以降でGNU sedを使用する方法、「brew install --default-names」はサポートされなくなりました
Mac OS 10.10.3では、次のように入力してgnu-sedをインストールしました。 brew install gnu-sed --default-names もう一度入力すると、次のメッセージが表示されます。 gnu-sed-4.2.2はすでにインストールされています ただし、システムを再起動してターミナルを再起動した後でも、sedのGNUバージョンを使用できません。例えば: echo a | sed ’s_A_X_i’ 戻り値:置換コマンド 'i'の不正なフラグ GNUバージョンを機能させるにはどうすればよいですか?$ PATH変数のパスは次のとおりです。 /Users/WN/-myUnix /opt/local/bin /opt/local/sbin /usr/bin /bin /usr/sbin /sbin /usr/local/bin /Applications/calibre.app/Contents/MacOS /opt/ImageMagick/bin /usr/texbin 私の質問が明白に思える場合は申し訳ありませんが、私は自分でシェルスクリプトを学習しており、UNIXプログラムがどのようにインストールされるのかまだ完全には理解していません。損傷や不要な混乱を引き起こすことなく、MacでGNU準拠のコマンド(この場合はsedですが、すぐに他のコマンドも必要になります)を使用するための助けがあれば、大いに感謝します。
95 macos  bash  sed  homebrew  gnu 

8
関数内の呼び出し元のコマンドライン引数にアクセスする方法は?
スクリプトのコマンドライン引数にアクセスする関数をbashで記述しようとしていますが、関数の位置引数に置き換えられています。それらが明示的に渡されない場合、関数がコマンドライン引数にアクセスする方法はありますか? # Demo function function stuff { echo $0 $* } # Echo's the name of the script, but no command line arguments stuff # Echo's everything I want, but trying to avoid stuff $*

17
複数行の文字列を単一のカンマ区切りに変換
次の文字列があるとします。 something1: +12.0 (some unnecessary trailing data (this must go)) something2: +15.5 (some more unnecessary trailing data) something4: +9.0 (some other unnecessary data) something1: +13.5 (blah blah blah) どうすればそれを簡単に変えることができますか +12.0,+15.5,+9.0,+13.5 バッシュで?
95 string  bash  shell  csv 

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