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

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

7
「1行目:$ ':\ r':コマンドが見つかりません」と表示されるのはなぜですか?
ラップトップ(DOS)でCygwinを使用しました。私は同僚のスクリプトのコレクションと自分のスクリプトを持っています。私はITの専門家ではなく、Unixに精通していません。私は同僚の構文に従い、いくつかの簡単なことを管理できます。 スクリプトは私の古いラップトップでうまく機能しました。ラップトップを交換し、Cygwinをインストールしました。スクリプトを実行すると、スクリプトが機能しません。ここに私が得るエラーメッセージの一例があります: line 1: $':\r': command not found line 5: syntax error near unexpected token `$'\r'' line 5: `fi これが私のスクリプトの上位5行です : iter=1 if [ -f iter.txt ] then rm ./iter.txt fi 誰かがこの問題を回避する方法を説明してくれませんか?

7
一致するディレクトリから1レベル下のディレクトリのリストを見つける
特定のフォルダに含まれるディレクトリのリストを取得しようとしています。 これらのサンプルフォルダーがあるとします。 foo/bar/test foo/bar/test/css foo/bar/wp-content/plugins/XYZ foo/bar/wp-content/plugins/XYZ/js foo/bar/wp-content/plugins/XYZ/css baz/wp-content/plugins/ABC baz/wp-content/plugins/ABC/inc baz/wp-content/plugins/ABC/inc/lib baz/wp-content/plugins/DEF bat/bar/foo/blog/wp-content/plugins/GHI 返されるコマンドが欲しい: XYZ ABC DEF GHI 基本的に、私はwp-content / plugins /の中にあるフォルダーを探しています を使用findすると最も近くなったが、を使用することはできない。-maxdepthフォルダが検索している場所から離れているためです。 以下を実行すると、すべての子ディレクトリが再帰的に返されます。 find -type d -path *wp-content/plugins/* foo/bar/wp-content/plugins/XYZ foo/bar/wp-content/plugins/XYZ/js foo/bar/wp-content/plugins/XYZ/css baz/wp-content/plugins/ABC baz/wp-content/plugins/ABC/inc baz/wp-content/plugins/ABC/inc/lib baz/wp-content/plugins/DEF bat/bar/foo/blog/wp-content/plugins/GHI
13 bash  find  directory  ls 

2
zshのような1つのタブでbashをオートコンプリートに構成することは可能ですか?
ほとんどの人が知っているように、コマンドプロンプトでbashを使用するとき、ファイル名、コマンド、またはコマンドのオプションなどを部分的に入力すると、bashは一致するものが1つだけあれば単語を補完します。 複数の一致がある場合、<Tab>2回ヒットする必要があり、bashは可能な一致のリストを生成します。 最初にこれらのオプションを提供するだけのbashを構成したいと思います<Tab>。 スクリプトを書かずにこれは可能ですか?すなわちシェルオプション? man bash 「プログラム可能な補完」セクションがありますが、「単一タブ補完」を有効にするオプションがあるかどうかわかりませんでした。

5
1行でUNIXグループに複数のユーザーを追加する
上のCentOSに6.5(おそらく任意の)Linuxでは、私はグループを作成することができます。 sudo groupadd mygroup それにいくつかのユーザーを追加します: sudo usermod -a -G mygroup userA sudo usermod -a -G mygroup userB sudo usermod -a -G mygroup userC 私の特定のケースでのユーザー数は20です。次のようなワンライナーを使用するにはどうすればよいですか? sudo usermod -a -G mygroup userA userB userC forループを使用しても問題ありませんが、私はbashの専門家ではないので、疑問に思います。
13 bash  group 

2
関数のローカルでBashスクリプトエコー
bashスクリプトでは、できる限り変数を関数にローカルにして、以下のような関数から必要なものを渡そうとします #!/bin/bash function FUNCTION() { local LOCAL="value" echo "$LOCAL" # return this variable } GLOBAL=$(FUNCTION) echo "$GLOBAL" しかし、関数自体のエコーを含めながらこれを行うことができるので、関数に出力する独自のメッセージがある場合、それらを変数でキャッチする必要はありません #!/bin/bash function FUNCTION() { local LOCAL="value" echo "$LOCAL" # return this variable echo "This function is done now" # do not return this variable } GLOBAL=$(FUNCTION) echo "$GLOBAL" # should only echo …

2
コマンドを実行せずにfcを中止するにはどうすればよいですか?
コマンドfcを使用すると、前のコマンドを視覚的に編集できます。エディターで気が変わった場合、コマンドの実行を停止するにはどうすればよいですか。vimで、qと入力します。またはqの両方でコマンドが実行され、CTRL-Cも機能しません。エディターでコマンドを削除してからwqを削除する唯一のオプションはありますか?

4
JSON配列の1つのフィールドをbash配列に解析します
変数に格納されたオブジェクトのリストを含むJSON出力があります。(私はその権利を表現していないかもしれません) [ { "item1": "value1", "item2": "value2", "sub items": [ { "subitem": "subvalue" } ] }, { "item1": "value1_2", "item2": "value2_2", "sub items_2": [ { "subitem_2": "subvalue_2" } ] } ] bashスクリプトをubuntu 14.04.1で実行するには、配列内のitem2のすべての値が必要です。 結果全体を配列に入れる方法がたくさん見つかりましたが、必要なアイテムだけではありません

5
どうすればすぐにsudo suしてディレクトリを変更できますか?
次のようなエイリアスを作成したいと思います。 alias userYYY='sudo su userYYY; cd /a/path/that/only/userYYY/has/access' それで、コマンドラインからsudoユーザーでuserYYYログインしuserYYYてpwdい/a/path/that/only/userYYY/has/accessます。エイリアスを入力して、シェルがでログインされるようにします。 どうやってやるの?これuserYYYはいくつかのプロセスを実行するためのものであり、そのホームには何かがなければなりません。したがって、次のコマンドを使用して$ HOMEを変更してみました。 sudo usermod -m -d /a/path/that/only/userYYY/has/access userYYY そして、私のシェルから私のsudoerファイルを使用しましたsudo su userYYY。しかし、それはうまくいきませんでした。機能したのは1つだけでしたsudo su -l userYYYYが、元のシェル(-bash-4.1$ ....)内に新しいbashが開きました。 要約すると、私が欲しいのは、シェルに2行を記述する必要を単に回避することです。 sudo su userYYY cd /a/path/that/only/userYYY/has/access 何か案は?
13 bash  shell  sudo  su 

4
検索:プルーンは指定されたパスを無視しません
私は除外する必要が.git私からfind検索。それを達成するために、私は-path ./.git -pruneスイッチを使用しています: $ find . -path ./.git -prune -o \( -type f -o -type l -o -type d \) | grep '.git' ./.git ただし、これは.gitディレクトリの内容をスキップしますが、ディレクトリ自体をリストします。追加すると機能します-path ./.git -prune -o -print -a find . -path ./.git -prune -o -print -a \( -type f -o -type l -o -type d \) | grep …
13 bash  find 

2
stderrのみをリダイレクトするにはどうすればよいですか?
これを行うのに少し問題があります。コンパイルされた.javaファイルを実行し、stderrのみをerrorというファイルにリダイレクトする必要があります。したがって、.javaファイルの名前はjavaProgram.javaです。 これは私が試したものです: java javaProgram 2> error しかし私が cat error 特定の.javaファイルにエラーがないことを知っていても、そこには何かがあるようです。私は何か間違っていますか?このエラーファイルに表示したいのはエラーだけで、それ以外はありません。

4
いくつかのプロセスが完了するのを待っている間にスピナーを表示する
コマンドラインが完了するまでスピナーを表示するにはどうすればよいですか?つまり、スクリプトを実行していて、このスクリプトの実行中にスピナーを表示したい場合、スクリプトが終了するとスピナーは消えます。 ベローは一般的なスピナーコードです。 i=1 sp="/-\|" echo -n ' ' while true do printf "\b${sp:i++%${#sp}:1}" done 以前のスピナーコードをコマンドにリンクして、コマンドの実行中にスピナーを表示させ、コマンドがジョブの終了時にスピナーを非表示にするにはどうすればよいですか?ループ内にコマンドを含めると、スピナーでループするので、この場合の解決策は何ですか?
13 bash 

4
Bashスクリプトはプロセスを待機して戻りコードを取得します
多くのバックグラウンドコマンドを開始するスクリプトを作成しようとしています。バックグラウンドコマンドごとに、リターンコードを取得する必要があります。 私は次のスクリプトを試しています: #!/bin/bash set -x pid=() return=() for i in 1 2 do echo start $i ssh mysql "/root/test$i.sh" & pid[$i]=$! done for i in ${#pid[@]} do echo ${pid[$i]} wait ${pid[$i]} return[$i]=$? if [ ${return[$i]} -ne 0 ] then echo mail error fi done echo ${return[1]} echo ${return[2]} 私の問題は待機ループ中にあり、2番目のPIDが最初のPIDの前に終了すると、戻りコードを取得できません。 wait …
13 linux  bash  process  array 

4
同じリモートマシンにログインしている他のユーザーのIPアドレスを知るにはどうすればよいですか?
whoコマンドを使用して、リモートマシン上の他のユーザーの名前を確認できます... また、それらのユーザーのIPアドレスも知りたいです... コマンド/sbin/ifconfingを試してみましたが、netstat良い結果が得られませんでした... LinuxとUnixの両方と互換性のあるこのソリューションが必要です... そのユーティリティのコマンドはありますか?スクリプトを記述したり、一種のパ​​イプを使用したりする必要がありますか?

2
複数のファイルでコマンドを実行する方法
これはかなり基本的なものです。JSファイルのいくつかのサブフォルダーを含むフォルダーがあり、それらのフォルダー内のすべてのファイルに対してGoogleのClojureコンパイラーを実行したいと思います。単一のファイルを処理するコマンドは次のとおりです。 java -jar compiler.jar --js filename.js --js_output_file newfilename.js これを変更して、ディレクトリ構造内のすべてのJSファイルで実行するにはどうすればよいですか?

7
文字列のリストによるbashループ
このサンプルをフォーマットすることは可能ですか? for i in string1 string2 stringN do echo $i done これに似たものに: for i in string1 string2 stringN do echo $i done 編集:混乱を招いて申し訳ありませんが、スクリプトを実行するさまざまな方法があることを理解していませんでした-sh <scriptname>とbash <scriptname>、今私が名前を付けることができないこのこと- #!/bin/shと#!/bin/bash:)

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