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

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

2
サブシェルで変数が表示されるのはなぜですか?
Learning Bash Bookでは、サブシェルは環境変数とファイル記述子などのみを継承し、エクスポートされない変数は継承しないと述べています。 $ var=15 $ (echo $var) 15 $ ./file # this file include the same command echo $var $ 私が知っているようにシェルがために2つのサブシェルが作成されます()とのために./file、なぜに()ケースを識別サブシェルんvarそれはエクスポートされませんが、変数をし、中./fileケース、それはそれを識別しませんでしたか? # Strace for () clone(child_stack=0, flags=CLONE_CHILD_CLEARTID|CLONE_CHILD_SETTID|SIGCHLD, child_tidptr=0x7f24558b1a10) = 25617 # Strace for ./file clone(child_stack=0, flags=CLONE_CHILD_CLEARTID|CLONE_CHILD_SETTID|SIGCHLD, child_tidptr=0x7f24558b1a10) = 25631 私が使用しようとstrace、この問題が発生したかを把握すると、驚くほど私はbashがクローンシステムコールのために同じ引数を使用します見つけ、中にフォークプロセスの両方、この手段はそう()と./file、親の同じプロセスアドレス空間を持つ必要があり、なぜこの()場合、変数はサブシェルに表示され./file、同じ引数はクローンシステムコールに基づいていますが、同じことはケースに起こりませんか?
18 bash  shell  subshell 

4
変数内の文字を置き換える最短の方法
変数内の文字を置き換えるには多くの方法があります。 私が見つけた最短の方法はtrこれまでのところです: OUTPUT=a\'b\"c\`d_123and_a_lot_more OUTPUT=$(echo "$OUTPUT"|tr -d "'\`\"") echo $OUTPUT もっと速い方法はありますか?そして、これは'、"および `のような引用に対して安全です?
18 bash  string  variable 


2
ポータブルスクリプトを記述することが重要なのはいつですか?
私が書くコードのほとんどはPHPにあります。最近、シェルスクリプトの学習を始めました。私が出会ったほとんどのリソースとチュートリアルは、Bashに固有のものです。バシズムについて警告する人もいれば、警告しない人もいます。私はこことStack Overflowについてたくさん読んでいます。 答えがbashismsを使用するときは常に、誰かが次のようにコメントすることは避けられません。 <bashismをここに挿入>は使用しないでください。ポータブルではありません。 これは、質問にがタグ付けされている場合でも発生しbashます。私にとって、それはPHP 4で使用できないため、PHP 5の新しいコードを使用すべきではないことをPHPプログラマーに伝えるようなものです。 Windowsで。 PHPで作成する場合、最小要件を選択し、前方互換コードを作成します。下位互換性について心配する必要はありません。 #!/bin/bashシバンとして使用する場合、なぜバシズムを使用してはいけないのですか?私は、一部の人々がちょうどそれのためにバシズムをバッシングすること(意図されたしゃれ)を好むという印象を受け始めています。 多くの場合bash、shellbashは多くのシステムでデフォルトのシェルであるという事実により、人々は頻繁に使用し、交換可能です。したがって、コードがバシズムを使用していることを警告するコメントを追加することは理解できますが、それらを使用することは間違っているという意味を理解していません。 明らかに、私が個人的に使用するためだけにスクリプトを書いている場合、私は好きな言語でそれを書くことができます。しかし、私が書いたコードの一部は他の人にとっても役立つと思いたいです。 投稿する前に質問の答えを探してみました。移植性をテストする方法に関する多くの情報を見つけましたが、そうすることが重要な場合については何も見つかりませんでした。 それで、いつ移植可能なスクリプトを書くことが重要ですか? 例えば、 どんな種類のスクリプトを可能な限り移植可能にするべきですか? Bashがインストールされていないシステムはどのくらい一般的ですか? システムにBashがインストールされている場合、GNUバージョンのfindおよびその他のユーティリティもありますか?

2
パイプを使用してbash関数を作成する方法は?
この方法で定義された関数はほとんどありません。 function f { read and process $1 ... echo $result } 呼び出しが次のようになるようにそれらを一緒に作りたいですf | g | h。 引数で機能する関数をstdinからの引数を読み取る1つに変換するために使用するイディオムのシャドーは何ですか?ペアをエスケープする必要なくストリームから引数のタプルを読み取ることは可能ですか?

8
Pythonを使用してJSONを解析しますか?
members.json以下のようなJSONファイルがあります。 { "took": 670, "timed_out": false, "_shards": { "total": 8, "successful": 8, "failed": 0 }, "hits": { "total": 74, "max_score": 1, "hits": [ { "_index": "2000_270_0", "_type": "Medical", "_id": "02:17447847049147026174478:174159", "_score": 1, "_source": { "memberId": "0x7b93910446f91928e23e1043dfdf5bcf", "memberFirstName": "Uri", "memberMiddleName": "Prayag", "memberLastName": "Dubofsky" } }, { "_index": "2000_270_0", "_type": "Medical", "_id": …
18 bash  python  json 

1
cp: `/vol/examples/tutorial/science.txt 'を統計できません:そのようなファイルまたはディレクトリはありません
コマンドを実行しようとするcp /vol/examples/tutorial/science.txt .とエラーが表示されます- cp: cannot stat `/vol/examples/tutorial/science.txt': No such file or directory なぜこれが起こっているのか分かりません。cygwinのホームフォルダーに移動し、必要なフォルダー構造とテキストファイルを作成しました。フォルダーの構造と名前も確認しました。 また、私は入っ~/vol/examples/tutorialてからやるcat science.txtと、ドキュメントを読むことができます。次に、CPコマンドが機能しないのはなぜですか?
18 bash  filenames 


3
psコマンドのCPUフィールドをどのようにソートできますか?
CPUを最も多く使用するプロセスを見つける小さなコマンドを作成しようとしています。 最初に、ps aux > file.txt次にを使用しcut -c 16-20 file.txt | sort -n | tail -5ます。 私が得る結果はこれです: 1.0 2.7 8. 14.5 14.5 だから私の質問は、どのように%CPU使用法と他のフィールドの両方を一緒に出力させることができますか?
18 bash  shell-script  sort  ps 

2
コマンドラインを介してdllおよびexeファイルのプロパティ/属性を表示する
exeおよびdllファイルの追加のファイルプロパティを確認する必要があります。 Windowsエクスプローラーを開いてビューに列を追加すると、そのファイルに存在する場合、会社、著作権、製品名、製品バージョンなどが表示されます。 このデータはWindowsエクスプローラーを介して利用できるため、データ/文字列はファイル自体のどこかに存在する可能性がありますが、Linuxのコマンドラインからその情報を抽出できるはずです。 「文字列」を使用してみましたが、成功は限られています。前述のすべてのデータフィールドを知っているファイルで、「文字列」では常に表示できない 私は誰かが代替ソリューションを持っているかもしれないことを願っています。この情報を見るために、私はまだ考えていないことかもしれません。
18 linux  bash  files 

1
stdoutとstderrをファイルにリダイレクトし、stderrをコンソールに表示する方法は?
ファイルにリダイレクトする方法と、teeを使用する方法を知っています。基本的なレベルで。そう $ alias outanderr='bash -c "echo stdout >&1; echo stderr >&2"' # A fake "application" displaying both output and error messages. $ outanderr 1>file # redirect stdout to a file, display stderr stderr $ outanderr 2>file # redirect stderr to a file, display stdout stdout $ outanderr 1>file 2>&1 # …

3
2つのファイルの行を並行してループする[終了]
閉まっている。この質問はトピック外です。現在、回答を受け付けていません。 この質問を改善したいですか? 質問を更新して、 UnixおよびLinux Stack Exchangeで話題になるようにします。 5年前に閉鎖されました。 私が作成しているスクリプトの目的は、2つのシリーズのファイルを比較することです。ファイル名自体は、1行に1つのパスを持つ2つの個別のファイルに保存されます。私のアイデアはwhile read、ファイル名のリストごとに1つずつ、2つのループを作成することですが、2つのループをどのように混在させることができますか? while read compareFile <&3; do if [[ ! $server =~ [^[:space:]] ]] ; then #empty line exception continue fi echo "Comparing file - $compareFile" if diff "$compareFile" _(other file from loop?_) >/dev/null ; then echo Same else echo Different fi done …


3
echo vs <<<、またはBash Awardでのechoの無駄な使用?
今ではcat賞の無用使用は非常によく知られており、無用の使用echoについても言及されています(この質問には関係ありません)。「echoバッシュインアワードの役に立たない使用」があるべきかどうか疑問に思っています:非常に非科学的な測定によると、配管はヒアドキュメントとヒアストリングよりもはるかに遅いようです: ヒアドキュメント: for reps in 1 2 3 do time for i in {1..1000} do cat &lt;&lt;'END' test string END done &gt; /dev/null done real 0m1.786s user 0m0.212s sys 0m0.332s real 0m1.817s user 0m0.232s sys 0m0.332s real 0m1.846s user 0m0.256s sys 0m0.320s ヒアストリングス for reps in 1 2 3 do …

2
bashスクリプトのタブ区切りファイルをループする
ここに私が持っているものがあります: #!/bin/bash while read line; do DB=$(echo $line | cut -f1) USER=$(echo $line | cut -f2) PASS=$(echo $line | cut -f3) echo DB=$DB USER=$USER PASS=$PASS done &lt; users.txt そして、入力ファイルのサンプル: drupal_1 drupal1 tmmjXSWL drupal_2 drupal2 FHiJSYHM drupal_3 drupal3 b7bFNj06 drupal_4 drupal4 0AaV62EL スクリプトからの出力: DB=drupal_1 drupal1 tmmjXSWL USER=drupal_1 drupal1 tmmjXSWL PASS=drupal_1 drupal1 …
18 bash 

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