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

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

12
関数でbashスクリプト全体を記述する理由
職場では、bashスクリプトを頻繁に記述しています。私のスーパーバイザーは、次の例のように、スクリプト全体を機能に分割することを提案しています。 #!/bin/bash # Configure variables declare_variables() { noun=geese count=three } # Announce something i_am_foo() { echo "I am foo" sleep 0.5 echo "hear me roar!" } # Tell a joke walk_into_bar() { echo "So these ${count} ${noun} walk into a bar..." } # Emulate a pendulum clock for a bit …


6
強打をエコーする方法!
echoエディターで開くのではなく、コンテンツをファイルに入れてスクリプトを作成しようとしました echo -e "#!/bin/bash \n /usr/bin/command args" > .scripts/command 出力: bash:!/ bin / bash:イベントが見つかりません 私はこの奇妙な行動を強打に隔離しました。 $ echo ! ! $ echo "!" bash: !: event not found $ echo \#! #! $ echo \#!/bin/bash bash: !/bin/bash: event not found なぜbangはこれを引き起こしていますか? bashが参照するこれらの「イベント」とは何ですか? この問題を乗り越えて画面またはファイルに「#!/ bin / bash」を印刷するにはどうすればよいですか?

4
シンボリックリンクを介して実行されたときに現在のスクリプトのパスを取得
いくつかのbashスクリプトを含むいくつかのディレクトリと、場合によっては各マシンの異なるディレクトリにある複数のマシンに展開されるサポートファイルで構成されるユーティリティがあります。スクリプトはそれ自体に関連するパスを参照できる必要があるため、現在実行中のファイルへのパスを取得できる必要があります。 dirname $0スクリプトが直接呼び出されたときに完全に機能するイディオムを知っています。残念ながら、まったく異なるディレクトリからこれらのスクリプトへのシンボリックリンクを作成し、依然として相対パスロジックを機能させたいという要望があります。 全体的な乾燥構造の例は次のとおりです。 / |-usr/local/lib | |-foo | | |-bin | | | |-script.sh | | |-res | | | |-resource_file.txt |-home/mike/bin | |-link_to_script (symlink to /usr/local/lib/foo/bin/script.sh) またはによって呼び出されるかどうか/usr/local/lib/foo/res/resource_file.txtからどのように確実に参照できますか?script.sh/usr/local/lib/foo/bin/script.sh~mike/bin/link_to_script

3
「はい」はどのようにしてファイルにこれほど迅速に書き込みますか?
例を挙げましょう: $ timeout 1 yes "GNU" > file1 $ wc -l file1 11504640 file1 $ for ((sec0=`date +%S`;sec<=$(($sec0+5));sec=`date +%S`)); do echo "GNU" >> file2; done $ wc -l file2 1953 file2 ここでは、コマンドyesが115046401 1953秒で行を書き込むのに対してfor、bash とを使用して5秒で行のみを書き込むことができますecho。 コメントで示唆されているように、それをより効率的にするためのさまざまなトリックがありますが、どれも速度に匹敵するものはありませんyes: $ ( while :; do echo "GNU" >> file3; done) & pid=$! ; sleep 1 …
58 bash  coreutils  write  yes 

1
SSHにログインしてプログラムを実行する単一のコマンドですか?
SSH経由でリモートサーバーにログインし、リモートログインシェルでプログラムを実行する単一のコマンドを構築する方法はありますか? OpenSSHマニュアルでは、「コマンドが指定されている場合、ログインシェルの代わりにリモートホストで実行されます」と表示されます。したがって、たとえば、ssh user@server mailリモートサーバーにログインし、メールボックスの状態を表示してから、ローカルシェルに戻ります。メールステータスを表示した後、リモートシェルに留まる方法はありますか? さらに、ssh user@server [command]コマンドがプログラム(vimやmuttなど)の場合は機能しないようです。リモートシェルにログインし、プログラム中およびプログラムを終了した後、特定のlogoutコマンドで最終的にのみ終了した後、プログラムを実行する方法はありますか? 最終的には、ローカルの.bashrcにエイリアスとしてこのようなコマンドを配置できるようにして、必要なときにすぐに実行できるようにします。例としては、SSHを介してリモートサーバーにログインし、リモートサーバーでmuttを開いてメールを読んだり送信したりします。
58 bash  shell  ssh  openssh 

3
「rm is hashed」とはどういう意味ですか?
私はhttp://mywiki.wooledge.org/BashGuide/CommandsAndArgumentsを通過し、これに遭遇しました: $ type rm rm is hashed (/bin/rm) $ type cd cd is a shell builtin 少し前に、このガイドには、Bashが理解できるさまざまなタイプのコマンド(エイリアス、関数、ビルトイン、キーワード、実行可能ファイル)がリストされていました。しかし、「ハッシュされた」という言及はありませんでした。それでは、この文脈では、「ハッシュ」とはどういう意味ですか?
58 bash  shell  command 

5
ディレクトリの名前を入力するだけでcd?
私は20年前にこれをどこかに持っていたか、それについて夢見ていました。 基本的に: タイプがblobblob私が得るなら blobblob: command not found けっこうだ。 私のシェルがそれらのエラーを受け取ったとき-コマンドが見つかりません-その名前( 'blobblob')でディレクトリが存在するかどうかを確認し、それがそのディレクトリにあるかどうかを確認しますcd。 これを行わない、または慎重に行うにはいくつかの理由があると確信しています。 私はちょうどそれがかなりきれいだと思うだけで、私はそれをどこか(ここのような!)で見つけることによって試してみたいと思います。 これが暗示するかもしれないちょっとしたシェルプログラミングをどうやってやるかわからない。

6
jqを使用して値を抽出し、CSVでフォーマットする
以下のJSONファイルがあります。 { "data": [ { "displayName": "First Name", "rank": 1, "value": "VALUE" }, { "displayName": "Last Name", "rank": 2, "value": "VALUE" }, { "displayName": "Position", "rank": 3, "value": "VALUE" }, { "displayName": "Company Name", "rank": 4, "value": "VALUE" }, { "displayName": "Country", "rank": 5, "value": "VALUE" }, ] } この形式のCSVファイルが欲しいです。 …
58 bash  python  csv  json  jq 

3
単一行のbashループで&(アンパサンド)を使用する
私はこのコマンドを正常に使用しています。このコマンドは、構成ファイル内の変数を変更し、ループ内でPythonスクリプトを実行します。 for((i=114;i<=255;i+=1)); do echo $i > numbers.txt;python DoMyScript.py; done それぞれDoMyScript.pyが終了する前に実行するのに約30秒かかるので、次のものをスポーンできるようにしながら、それらをバックグラウンドに委ねたいと思います。 以下のようにアンパサンドを追加することで、私がよく知っていることを試しました for((i=114;i<=255;i+=1)); do echo $i > numbers.txt;python DoMyScript.py &; done ただし、これにより以下のエラーが発生します。 -bash:予期しないトークン `; 'の近くの構文エラー


2
bashで定義された配列の長さを数える方法は?
私はbashが初めてなので、質問に答えるための良いチュートリアルが見つかりません。 array=( item1 item2 item3) for name in ${array[@]}; do echo current/total ... some other codes done これの予想される出力として、「現在」と「合計」の値を計算します。 1/3 2/3 3/3 あらゆる種類のヒントをありがとう
58 bash  array 

3
内側のgrepが少ない?
現在、多くのなじみのないログを調べていくつかの問題を探しています。最初に確認するファイルはEvents.logで、少なくとも3つのページにless、同じイベントが異なる時間に表示されているように見えます。これはかなり害のないイベントです。このイベントを除外したいのですが、現在は終了lessして次のようなことをします grep -v "event text" Events.log | less これにより、他にも多くの一般的で興味のないイベントが発生するので、これも除外します。私ができる方法があるgrep -v INSIDEのはless?やるよりも egrep -v "event text|something else|the other thing|foo|bar" Events.log | less あらゆる種類のログファイルを見るときに便利な機能lessであると思います。ツールでない場合、私が求める品質の別の機能はありますか?less組み込みのだけのスタイルビューアーgrep。
58 bash  grep  logs  less 

4
nレベルの深さのサブディレクトリのみをリストする
Festivalは、音声パックデータを次のディレクトリ構造の例に保存します。 /usr/share/festival/voices/<language>/<voicepack name> 潜在的に多数のサブディレクトリすべてで、lsを印刷するための最も単純なワンライナー(できればを使用)は何ですか?<voicepack name><language>
58 bash  ls 


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