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

他のBourne / POSIXシェルとは対照的に、GNUのBourne Again SHellに固有の質問。Unixシェル全般に関する質問については、代わりに/ shellタグを使用してください。

3
Linuxターミナルで、基本的なbash構文のリファレンスまたはチートシートを表示するにはどうすればよいですか?
ifステートメントを含む小さなbashスクリプトを実行する必要があるたびに、空の変数と存在しないファイルなどをチェックします。私はいくつかの簡単なbashのマニュアルまたはガイドのためにグーグルを叩いているのに気づきます。 多くの場合、これらは長すぎて複雑すぎて、私が直面している質問にすばやく答えることができません。 したがって、基本的なbash構文(ifステートメントのようなもの、空の変数のチェック、存在しないファイルなど)を短くアクセス可能な方法でカバーするコマンドまたはマニュアルページが必要だと考えていました。私はコマンドを見つけられなかったと確信しています(man bashはそうではないようです)。 どこにありますか?
8 bash 

4
環境を変更するコマンドの出力を変数に保存します
環境を変更するコマンドの出力を変数に保存する方法は? 私はbashシェルを使用しています。 私が持っていると仮定します: function f () { a=3; b=4 ; echo "`date`: $a $b"; } そして今、私はコマンドを使用して実行することができますf: $ a=0; b=0; f; echo $a; echo $b; echo $c Sat Jun 28 21:27:08 CEST 2014: 3 4 3 4 の出力fを変数に保存したいcので、試してみました: a=0; b=0; c=""; c=$(f); echo $a; echo $b; echo $c しかし、残念ながら、私は持っています: 0 0 …

2
bcを使用してstdinから受け取った数値を合計できません
フォルダに含まれるファイルの平均エントロピーを計算しようとしています: { echo '('; find . -type f -exec entropy {} \; | \ grep -Eo '[0-9.]+$' | \ sed -r 's/$/+/g'; echo '0)/'; find . -type f | wc -l; } | \ tr -d '\n' | bc -l entropy ファイルのシャノンエントロピーを計算する実行可能ファイルであり、次の形式の出力を提供します。 $ entropy foo foo: 5.13232 前述のコマンドは、次のエラーでエラーになります。 (standard_in) 1: …
8 bash  shell  bc 

2
$ BASH_ENVの可用性を保証する方法
非インタラクティブ、非ログインシェルは、$ BASH_ENVで指定されたスクリプトを入手しようとします。しかし、cronジョブまたはスクリプトが特定のセッションに対して$ BASH_ENVを設定する前に$ BASH_ENVが設定されることをどのように保証しますか?ハードコードしてBashをコンパイルする唯一のオプションはありますか?

1
これらの4つのコマンドの違いは何ですか(fifo、プロセス置換、リダイレクト…)
私の目標は、ncおよびを使用して単純なエコーサーバーを作成することfifoです。私はそれを行うための最良の方法を探しているのではなく、単に次のコマンドのセマンティクスを理解しようとしているだけです(フォークが発生するのはいつ、なぜ、何が変わるのか、なぜコマンドの動作が異なるのか...)。 すべてのコマンドは、POSIXで動作する場合、私はわからないので、私は、バッシュを使っていshたりzsh、ksh... タイトルで言及している4つのコマンドを次に示します(既に実行したと想定していますmkfifo fifo)。 cat fifo | nc -l localhost 8888 > fifo exec 3<> fifo && nc -l localhost 8888 <&3 >&3 && exec 3>&- nc -l localhost 8888 <(cat fifo) > fifo nc -l localhost 8888 < fifo > fifo 今、私は4つのコマンドが同じことをすることを期待しています、少なくとも最後の2つは同じことをすることです。 最初のコマンドは期待どおりに動作します。クライアントが接続を閉じるとシャットダウンする単純なエコーサーバーです。 1のように動作します。 サーバーに接続してデータを送信できますが、何も返されません。クライアント接続を閉じると、サーバーがシャットダウンします。 サーバーに接続できません。サーバーは永久に待機します。

4
ファイル内の指定された日付よりも新しい行を削除します
指定された日付よりも新しい行を削除する方法に行き詰まっています。これはファイルの内容の抜粋です。 buildsave.txt 647919 2013/11/30 647946 2013/11/30 647955 2013/12/01 648266 2013/12/03 648267 2013/12/03 648674 2013/12/04 2013/12/03より新しい行のみを残して削除したい 647919 2013/11/30 647946 2013/11/30 647955 2013/12/01 これはどのようにbashを介して実行できますか?

3
ターミナル、プロンプトが「-Bash-4.2」に変更され、色が失われる
通常、私の端末プロンプトは username place$ 今それだけを示しています bash-4.2$ すべての色設定が失われました(端末プロファイルでは同じ配色ですが、色が表示されません) 私は何が起こるのかまったくわかりません(そして、これを検索する方法がわかりません)。 それは何も変わらない、私はeclipseとmavenで作業していた、新しいターミナルを開いた、そして新しいターミナルは色を持っていなかった。 注:〜/ .bashrcファイルはありませんが、〜/ .bash_profileがあります。


2
suが提供するシェルに引数を渡す
man su 言う: You can use the -- argument to separate su options from the arguments supplied to the shell. man bash 言う: -- A -- signals the end of options and disables further option processing. Any arguments after the -- are treated as filenames and arguments. An argument of …
8 bash  shell  su  options 

3
バッシュタブ補完停止検索
bashに入力しているときに「tab」キーを押してオートコンプリートすると、かなり時間がかかることがあります。たとえば、ディレクトリを読み取るためのファイルIOは5秒以上かかるため、入力を続ける前にIOが完了するのを待っています。イライラし、Ctrl-Cを押して、入力した内容をやり直すことができます。 Ctrl-Cは残念です。すべてを再入力する必要があります。オートコンプリートリクエストの実行をやめるようにbashに指示するにはどうすればよいですか。 $ /long/path/to/some/d # once I've typed this, I press <TAB>. I now will be # stuck waiting for perhaps 10 seconds. The only thing I # know to do is Ctrl-C. When I press Ctrl-C, I am forced # to retype the original command string. $



2
2つの完全に異なるものをgrepし、値を別々の変数に割り当てる最も効率的な方法は何ですか?
CentOS 6.x 2つの完全に分離された文字列のcurl、grepから出力を取得し、それぞれの値を変数として割り当てたいと思います。(出力をディスクに書き込まずに)これを行う最も効率的な方法は何ですか? 通常、次のようなスクリプトを作成することを考えます。 #!/usr/bin/env bash foo1=$(curl https://domain.com/file.xml | grep string1) foo2=$(curl https://domain.com/file.xml | grep string2) しかし、これは2つのパスを取得することになり、恐ろしく非効率的です。もっと良い方法はありますか?うまくいけば、より少ないパスを含むソリューションですか?

4
「locate」と一致する正規表現
Locateコマンドを使用してホームフォルダー内のファイルを検索しようとしていますが、これを実行しようとすると、結果が得られません。 locate -i -l 4 --regexp '^\/home\/jack\/[A-Za-z0-9\/\ ]*(My.)*$' 私も試しました^\/home\/jack\/^(?!\.)[A-Za-z0-9\/\ ]*(My.)*$が、結果も返されません。 それをテストするためだけに私が探しているファイルは /home/jack/Music/Foals/My Number.flac 非表示のファイルの結果を検索から除外したいと思います。

3
親シェルの作業ディレクトリをプログラムで変更することは可能ですか?
普段行くディレクトリに切り替えられるように、コードを書きたいのですが。このプログラムがmycdであり/a/very/long/path/name、私が行きたいディレクトリであるとします。 したがって、のmycd 2代わりに単純に入力できcd /a/very/long/path/nameます。ここで私はmycd知っている2と思い/a/very/long/path/nameますそれを指します。またあるかもしれませんmycd 1、mycd 3、...など 問題はmycd、シェルスクリプトとして記述し、入力. mycd 2して必要なことを行う必要があることです。それ以外の場合、スクリプトは子スクリプトで実行されるだけで、実際に関心のある親シェルについては何も変更されません。 私の質問は: 使用せずにそれを行うことができsourceますか?ので、. mycd前提としては、mycdシェルスクリプトでなければならない、これはまた、私は望んでいないことをいくつかの機能を紹介することがあります。 他のプログラミング言語で実装できますか?

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