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

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


1
間違ったコマンドを入力すると、端末はそのコマンドをバックグラウンドで実行しようとします
奇妙なことが私の端末に起こり始めました。間違ったコマンドを入力すると、そのコマンドをバックグラウンドで実行しようとします。 hegeek@colinux: ~# l [9]+ Stopped l thegeek@colinux: ~# fdsl [10]+ Stopped fdsl 問題は何でしょうか? 編集: システムを再起動した後、問題は解決しました。しかし、私はまだこの問題の原因を知りたいと思っています。私はそれがcommand_not_found_handleシェル関数で何かをしなければならないと思います。コマンドを見つけようとしたところ、奇妙なことが行われていました。

1
forループがbashで機能しない
複数のファイルの一部のstrignを置き換える以下のコードがありますが、forループは最初のファイルをチェックしており、perlスクリプトを実行していません。以下は私のコードです if [ -f zebu.work.post_opt/ZEBU_CTO_FT_MOD.v ] then for file in $(./zebu.work.post_opt/ZEBU_CTO_FT_MOD*); do perl -i -p -e 's/input/inout/g' $file; perl -i -p -e 's/output/inout/g' $file; perl -i -p -e 's/wire.*\n/tran\(i0,\ o\);/g' $file; perl -i -p -e 's/assign.*\n//g' $file; done fi
7 bash  for 

3
新しいディレクトリ名でディレクトリ名を保持するディレクトリ階層の平坦化
私は基本的にこれから行きたいです: . ├── Alan Walker │ ├── Different World │ │ ├── 01 Intro.mp3 │ │ ├── 02 Lost Control.mp3 │ │ └── cover.jpg │ └── Same World │ ├── 01 Intro.mp3 │ └── 02 Found Control.mp3 ├── Aurora │ └── Infections Of A Different Kind Step 1 │ ├── …

3
`とは何ですか。/ path / command`しますか?(ドットの後のスペース、絶対パス)
このガイドのBash完了まで私たちが学ぶバッシュは、自動補完のいずれかを実行するために実行しなければならない. /etc/etc/bash_completion.d/foobar(後にスペースの点に注意してください。.仕事にBashの補完のための順序で)。 $ /etc/bash_completion.d/ssh bash: /etc/bash_completion.d/ssh: Permission denied $ . /etc/bash_completion.d/ssh $ ls -l /etc/bash_completion.d | grep ssh -rw-r--r-- 1 root root 297 Jan 28 18:04 ssh ある.のショートカットsourceコマンドは?そうでない場合、それは何ですか?のためのgoogleすることは不可能ですman source何も返さないし、apropos sourceそしてinfo sourceどのような私が探していることは、そこにある場合、私は言うことができないので、多くの無関係な情報を与えます。この質問への答えを自分で見つけるためにどのようにしてRTFMを開始しますか?
7 bash 

2
最小幅のアイテムのリストを列にするにはどうすればよいですか?
列のない入力を列のように列化するにはどうすればよいlsですか? ls 各行の最小幅で最適化されたテーブルを作成しています。次に例を示します。 ls 2 dsao file with space with 5 e g wsdl-rubo-6cb0f1a9086e80c d file leading space しかし、出力をcolumn(たとえば、各ファイルを1行に)フィードすると、すべての行が同じ幅で埋め込まれるため、画面の幅に適合します。 for i in *; do echo "$i"; done | column 2 file with space 5 g d leading space dsao with e wsdl-rubo-6cb0f1a9086e80c file (ここでは例として同じ出力を生成するためにファイルリストのみを使用しています。最終的に他のものを列化するためのそのような解決策を探しています。) 可変のcol-widthで出力を丸めるにはどうすればよいですか?
7 bash  ls 

5
特権を減らしてスクリプトの一部を実行するにはどうすればよいですか?
私は次の問題を抱えています:Postgresqlを実行しているすべてのマシンに特別なユーザーpostgresがあります。このユーザーは、データベースサーバーへの管理アクセス権を持っています。 次に、psqlをユーザーpostgresとしてデータベースコマンドを実行するBashスクリプトを記述したいと思います(psqlは、スクリプトではなくユーザーpostgresとして実行する必要があります)。これまでのところ、問題はありません。ユーザーpostgresとしてスクリプトを実行できます。 ただし、psqlの出力を、postgresが書き込みアクセス権を持たないディレクトリのファイルに書き込みたいのですが。 どうやってやるの? ただし、スクリプト自体のEUIDを変更することを考えました。 BashスクリプトでEUIDを変更する方法が見つかりませんでした 次のようなものを使用しているときにEUIDを変更するにはどうすればよい psql -U postgres -c "<command>" > fileですか?

1
[[expr1 ||の違い expr2]]および[[expr1]] || [[expr2]]
2つの条件式expr1andを考えます。expr2たとえば$i -eq $j、と$k -eq $lです。これbashはさまざまな方法で書くことができます。ここに2つの可能性があります [[ expr1 || expr2 ]] [[ expr1 ]] || [[ expr2 ]] ここでは2番目の方が好ましいという推奨事項を見たことがあると思いますが、これを裏付ける証拠は見つかりません。 以下は、違いがないことを示すサンプルスクリプトです。 for i in 0 1 do for j in 0 1 do for k in 0 1 do for l in 0 1 do if [[ $i -eq $j || $k …
6 bash 

1
SIGINTが子プロセスに到達しないようにする
サーバーを実行するためのbashスクリプトがあります。これは通常、ユーザーがを使用して終了しますCtrl-C。終了時にクリーンアップ関数を実行しますが、これは1秒で中断されることはありませんCtrl-C。 #!/bin/bash ... function cleanup { trap '' INT echo -n " Cleaning up..." scp $SRV:~/$DIR/server.log . && ssh -t $SRV "rm -rf ~/$DIR" echo " Finished." exit 0 } trap cleanup EXIT ... 現時点ではCtrl-C、scpが終了する1秒前にスクリプトが無期限にハングします。これはSIGINTbashスクリプトとscpプロセスの両方に送信されることと関係があることは理解していますが、クリーンアップが失敗するだけでなく、これによりスクリプトがハングする原因については迷っています。 だから私の質問は: なぜこれによりスクリプトがハングするのですか? どのように私は達することからSIGINTを防ぐことができますscpし、ssh子プロセスを?
4 bash  process  signals  trap 

2
テキストと数字を含む文字列を改行に書き換え、テキストを挿入する
要するに、1行の出力文字列を複数の行に分割し、各rawにホスト名のラベルを付けます。 ホスト名ProcessName CPUCore output = $(ssh -q -o "StrictHostKeyChecking yes" $ ssh_host 'ps -eo comm、lastcpu | grep rrcp') 次のようなreturn out putにループを挿入する方法。 rrcpd 17 rrcpd 0 そして、 Hostname1 rrcpd 17 Hostname1 rrcpd 0 注意 数字は0〜32 ホスト名は変数文字列$ myhostです テキストは変更されます。つまり、厳密にはrrcpdではなく、たとえば rrcpd 17 rrcpd 0 チーズ3ケーキ8 猫9犬3 各ホストで実行されるコマンド output = $(ssh -q -o "StrictHostKeyChecking …


1
コマンドラインからディレクトリに作成されたファイルをリダイレクトする
スクリプト自体を変更せずに、コマンドラインから直接、作成したファイルを.shスクリプトから特定のディレクトリにリダイレクトする方法があるかどうか疑問に思っていました。 まあ言ってみれば: 現在のディレクトリにファイルを作成するスクリプトprove.shがあります。 cat prove.sh #! /bin/bash echo "try 1" > try.1.txt echo "try 2" > try.2.txt そして私はそれらの作成したファイルをリダイレクトしたいと思いません、現在のディレクトリではなく、別のディレクトリに(さんが言わせて〜/書類/ /証明)ストレートから私: sh prove.sh <...something to redirect files to directory...> スクリプト自体を変更せずに。 可能だと思いますか? 誰にも手がかりがありますか? EDITED:具体的には、私は何をする必要があることは、サーバ上で動作するプログラムの出力をリダイレクトすることであり、それは内の指定したディレクトリ内の各種ファイル(何も標準出力ません)を作成します--out別のコンピュータに、フィールドを直接せずに(プログラムが実行されている元のサーバーに何かを書き込む)。 このサーバーへのアクセスをホストしているだけなので、インストールもsudoもできません。2番目のサーバーのポートをリッスンし、出力をnectatのこのポートにリダイレクトすることは、プログラムを実行するサーバーのファイアウォールが変更できないために機能しませんでした。 アイデアは?

1
CronからBashスクリプト、Bashスクリプト、Expectスクリプト
一連のExpectスクリプトを実行したい。実行のチェーンは次のようになります。Cronジョブはbashスクリプトを開始し、このラッパーは〜11個のbashスクリプトを開始Parallelします-それぞれがスクリプトを呼び出しExpectます。 そのExpect部分まではすべて順調です。2番目のBashスクリプトにParallel部分があり、各期待スクリプトのホスト名をファイルに出力しています。実際、doはグループで表示されますが、Expectスクリプトはすぐに終了します。 Cronジョブの性質上、環境変数をジョブに渡す必要があると聞きました。私はこれまでこれを試しました: 48 9 * * * rm /home/admin/.flag && /home/admin/.profile; /home/admin/nodeTest.sh nodeTestの重要なコードは次のとおりです。 for i in {1..10}; do for chunk in `ls /home/admin/assets/sagLogs/x*`; do cat $chunk | parallel -j 11 -I% --max-args 1 /home/abdmin/oneNode.sh "%" clear done done チャンクの長さは11ホスト名です。それらはoneNodeを介してExpectスクリプトを開始するために並列プログラムに入ります-oneNodeはホスト名をIPに変換し、実行するスクリプトを決定します。 これはコマンドラインからうまく機能します。悲しみを与えてくれるだけのCronの仕事。interacttclコマンドが問題を引き起こすことを読みましたが、スクリプトでは使用していません。これは並行して実行される行です: timeout 80 sudo expect /home/admin/assets/activeTest $sag $ip & 更新:前の行を次のように変更しました: …
bash  cron  expect 

1
同じ文字列内の値の比較[終了]
私のスクリプトでは、ウェブサイトからデータを取得しています。 content=$(wget 10.0.1.5:8000/currentsong?sid=1 -q -O -); それは、基本的にshoutcastサーバー上の曲情報です。しかし、問題があります:私はやりたい:新しい値が文字列の古い値と一致しない場合、何かをしてください。そのように: if [ $content.new != $content.old ]; then echo "New song info there.." else echo "NOTHING" fi どうやってやるの? 編集:私は、スクリプトがループで実行されると言って忘れました。
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.