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

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



1
xargsで定義済み関数を使用する方法
これは私のコードです #!/bin/bash showword() { echo $1 } echo This is a sample message | xargs -d' ' -t -n1 -P2 showword したがって、関数showwordにパラメーターとして渡す文字列をエコーする関数があります。 次にxargs、関数を呼び出して一度に1つの単語を関数に渡し、関数の2つのコピーを並行して実行しようとしています。動作してxargsいないのは、機能を認識しないことです。私がやろうとしていることをどのように達成できますshowwordか、xargsを関数で動作させるにはどうすればよいですか?
16 bash  xargs  function 

3
既存の関数と同じ名前でPATHで実行可能ファイルを実行する
実行可能ファイルをシャドウイングし、その引数または出力を微調整する関数を定義することがあります。したがって、関数は実行可能ファイルと同じ名前を持ち、関数を再帰的に呼び出さずに関数から実行可能ファイルを実行する方法が必要です。たとえば、fossil diffthrough の出力を自動的に実行するにはcolordiff、次less -Rを使用します。 function fossil () { local EX=$(which fossil) if [ -z "$EX" ] ; then echo "Unable to find 'fossil' executable." >&2 return 1 fi if [ -t 1 ] && [ "$1" == "diff" ] ; then "$EX" "$@" | colordiff | less -R return fi …
16 bash  path  function 

5
特定のフォルダーまでCDをバッシュアップする
私はMagentoで多くの仕事をしているので、一緒に仕事をしている多くの人たちと同じように入力しなければなりません。 cd ../../../../../../ ルート 'httpdocs'フォルダからまだいくつかのディレクトリだけを見つけるために、この擬似コードに続くスクリプトを作成しようとしています。 while lowest level directory != httpdocs cd ../ end while; かなり単純に思えますが、現在の作業ディレクトリの最後の部分がhttpdocsであるかどうかをチェックするために、何らかの形でgrepを実行する必要があると仮定しています。 私はこのためにbashを学ぶことを検討してきましたが、すでに似たようなものがすでに存在している必要があるように思われます。

2
シンボリックリンクのターゲットが特定のパスを指すことを確認する方法
bashスクリプト内で、ファイルが次の構文のシンボリックリンクであるかどうかを確認できることを知っています。 if [ -L $path ] そのパスが特定のパスにリンクされているかどうかをテストする方法を知っている人はいますか?たとえば、のターゲットがで$pathあるかどうかを確認し/some/whereます。
16 bash  shell  symlink 

3
「サブシェル」と「子プロセス」の正確な違いは何ですか?
これとこれによれば、サブシェルは括弧を使用して開始されます(…)。 ( echo "Hello" ) これ、これ、およびこれによれば、コマンドが& echo "Hello" & Posix仕様では、subshellこのページの単語を使用していますが、このページでは定義されていません。また、同じページでは、「子プロセス」も定義されていません。 両方ともfork()正しいカーネル機能を使用していますか? いくつかのフォークを「サブシェル」と呼び、他のフォークを「子プロセス」と呼ぶ正確な違いは何ですか。
16 bash  shell  subshell 

1
「watch ps aux | grep foo`` [終了]
休業。この質問には詳細または明確さが必要です。現在、回答を受け付けていません。 この質問を改善してみませんか?詳細を追加し、この投稿を編集して問題を明確にしてください。 2年前休業。 watch ps aux | grep foo 動かない: bash: syntax error near unexpected token `}' これを修正するにはどうすればよいですか、それとももっと良い方法がありますか?
16 bash  pipe  ps  watch 

3
引数としてディレクトリを使用して1つのコマンドを実行し、同じディレクトリにcdする方法は?「そのようなファイルやディレクトリはありません」
以下を行うための短い関数を作成したいと思います。ファイル「file.tex」をドキュメントディレクトリに移動するとします。 mv file.tex ~/Documents 次に、cdそのディレクトリに移動します。 cd ~/Documents これを任意のディレクトリに一般化し、これを実行できるようにします。 mv file.tex ~/Documents follow しているとfollow、コマンドが前のコマンドから先を読んで、それに応じて実行します。単純なディレクトリの場合、これはあまり時間を節約しませんが、ネストされたディレクトリで作業するとき、ただ使用できるとすればすごいでしょう mv file.tex ~/Documents/folder1/subfolder1 follow 私はそれが比較的簡単だと思った、と私はこのような何かをすることができます follow() { place=`history 2 | sed -n '1p;1q' | rev | cut -d ' ' -f1 | rev` cd $place } しかし、これはうまくいかないようです。echoした場合$place、目的の文字列を取得します(でテストしています~/Documents)が、最後のコマンドは No such file or directory ディレクトリは確かに存在します。私は迷っています。手伝ってくれませんか?
15 bash  cd-command 

6
難読化によるエコー
私はいくつかの変数を画面に出力する必要がありますが、最初の数文字を難読化する必要があり、端末に印刷するときに秘密値の最初の文字を難読化できるエコーコマンドがbashにあるかどうか疑問に思っていました: echo 'secretvalue' ********lue
15 bash  security 

6
Bourneシェルがディストリビューションで利用できない場合、hashbangで/ bin / shを使用するのは正しいですか?
一般に、シェルスクリプトには、スクリプトファイルの最初の行に次のコメントが含まれています#!/bin/sh。私が行った研究によれば、これは「ハッシュバン」と呼ばれ、従来のコメントです。このコメントは、このファイルがディレクトリ下のBourne Shellによって実行されることをUnixに通知します/bin。 私の質問はその点から始まります。今までこのようなコメントを見たことはありません#!/bin/bash。いつも#!/bin/shです。ただし、UbuntuディストリビューションにはBourne Shellプログラムがありません。Bourne Again Shell(bash)があります。 その点で、#!/bin/shUbuntuディストリビューションで書かれたシェルスクリプトにコメントを入れるのは正しいですか?

4
フォークボムをグローバルにエイリアスすると、その実行が妨げられますか?
グローバルに設定する場合 alias ':(){ :|:& };:'='echo fork bomb averted' それはBash fork爆弾の実行を回避するための効果的なセキュリティ戦略でしょうか、それとも実行する方法はまだありますか? 質問は次のようになります:コマンドが他の何かにエイリアスされているときにコマンドを実行する方法はありますか?
15 bash  security  alias 

7
bashでファイルを作成または切り捨て/上書きできるかどうかを確認するにはどうすればよいですか?
ユーザーは、foo.sh file.txtまたはのようなスクリプトのある時点で作成または上書きされるファイルパスを使用してスクリプトを呼び出しますfoo.sh dir/file.txt。 create-or-overwriteの動作は、>出力リダイレクト演算子の右側にファイルを置くか、引数としてファイルを渡すための要件によく似ていますtee(実際、引数として渡すことteeはまさに私がやっていることです) )。 スクリプトの内容に入る前に、ファイルを作成/上書きできるかどうかを合理的にチェックしたいのですが、実際には作成しません。このチェックは完全である必要はありません。はい、チェックとファイルが実際に書き込まれるポイントの間で状況が変わる可能性があることを理解しています-しかし、ここではベストエフォートタイプのソリューションで大丈夫ですので、早期に救済できますファイルパスが無効な場合。 ファイルを作成できなかった理由の例: ファイルにはディレクトリコンポーネントが含まれていますdir/file.txtが、ディレクトリdirは存在しません ユーザーは、指定されたディレクトリ(またはディレクトリが指定されていない場合はCWD)に書き込み権限を持っていません はい、「事前に」許可を確認することはUNIX Way™ではないことを理解しています。むしろ、操作を試し、後で許しを求める必要があります。ただし、私の特定のスクリプトでは、これによりユーザーエクスペリエンスが低下し、責任のあるコンポーネントを変更できません。

2
bashの二重引用符はどのように一致(ペア)しますか?
を使用していGNU bash 4.3.48ます。単一のドル記号のみが異なる次の2つのコマンドを検討してください。 コマンド1: echo "(echo " * ")" コマンド2: echo "$(echo " * ")" それらの出力は、それぞれ (echo test.txt ppcg.sh ) そして * したがって、最初のケースで*は明らかにがグロブされます。つまり、最初の引用符は2番目と一緒にペアを形成し、3番目と4番目は別のペアを形成します。 2番目のケースで*はがグロブされず、出力にちょうど2つの余分なスペースがあります。1つはアスタリスクの前、もう1つは後です。つまり、2番目の引用符は3番目の引用符に、最初の引用符は4番目に続きます。 $()引用符が次の引用符と一致せず、代わりにネストされているという構造以外のケースはありますか?この動作は適切に文書化されていますか?はいの場合、対応する文書はどこにありますか

8
配列要素がすべてbashで等しいかどうかをテストするにはどうすればよいですか?
次の配列は、各Linuxマシンのディスク数を表しています 各単一アレイには、Linuxマシン上のディスクの数が含まれます。 echo ${ARRAY_DISK_Quantity[*]} 4 4 4 4 2 4 4 4 すべての配列の値が等しいことを識別する簡単な方法は何ですか? 良い状態: 4 4 4 4 4 4 4 4 悪い状態: 4 4 4 4 4 4 2 4 悪い状態: 6 6 6 6 6 6 6 6 6 6 2 6 2
15 bash  shell-script  awk  array 

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