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

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

4
ln -s(pwdに相対的なパスを含む)
たくさんのシンボリックリンクを作成しようとしていますが、なぜこれが機能しているのかわかりません ln -s /Users/niels/something/foo ~/bin/foo_link これながら cd /Users/niels/something ln -s foo ~/bin/foo_link ではありません。 私はそれが代わりfoo_linkにfooにリンクすることに関係があると信じています/Users/niels/bin/Users/niels/something 質問は、実際に入力せずに絶対パスを指すシンボリックリンクを作成するにはどうすればよいかということです。 参考のため、Mac OS X 10.9およびZshを使用しています。
26 bash  shell  symlink  ln 

7
sudoを必要とするスクリプトがなければ、sudoを使用してプロンプトを表示する必要がありますか?
バックライトの明るさをきめ細かく制御できるスクリプトがありsudo、実行する必要があります。基本的にこれです: backlight="/sys/class/backlight/acpi_video0/brightness" echo $1 | tee $backlight とに住んでい~/bin/backlight-adjustます。特権のある場所に書き込むsudoため、スクリプトには特権が必要tee $backlightです。したがって、で実行しないと失敗しますsudo。 このアプローチには問題があります。なぜなら、私はただ実行するsudo backlight-adjustこと~/binはできないからです。なぜなら$PATH、sudo環境の中ではなく、自分の環境の中だけにいるからです。だから私は走らなければならないsudo env "PATH=$PATH" backlight-adjustか、何か似たようなものが必要だ。 あるいは、次のように書くこともできます。 backlight="/sys/class/backlight/acpi_video0/brightness" echo $1 | sudo tee $backlight パスワードの入力を求められます。 2番目のアプローチは、sudoと入力することを覚えておく必要がないため、私にとってはうまく機能します。プロンプトが表示されます。そして、私はそのままにしておくことができ$PATHます。これは全体的に便利ですが、2番目の方法でこれを行うべきではない理由はありますか? (Xubuntu 14.04を実行していますが、シェルがGNU bash 4.2.45である場合、違いが生じます。)


5
ファイルをメモリに読み込んで2回計算するよりも、2回高速にファイルを繰り返し処理するのはなぜですか?
私は以下を比較しています tail -n 1000000 stdout.log | grep -c '"success": true' tail -n 1000000 stdout.log | grep -c '"success": false' 次の log=$(tail -n 1000000 stdout.log) echo "$log" | grep -c '"success": true' echo "$log" | grep -c '"success": false' 驚いたことに、2番目は最初の2倍近くかかります。それはもっと速いはずですよね?
26 bash  performance  io 

2
Bashが私のパス上にあるにもかかわらずプログラムを見つけられない
パスにプログラムがあります。プログラムは、フルパスを指定して実行すると実行されます。しかし、名前だけで実行するとプログラムが見つかりません。 基本的に、以下の出力がどのように可能か、そして絶対パスを指定せずに私のプログラムが実際に見つけられるようにそれを修正する方法を理解したい: root:/usr/local/bin# ./siege **************************************************** siege: could not open /usr/local/bin/etc/siegerc run 'siege.config' to generate a new .siegerc file **************************************************** root:/usr/local/bin# echo $PATH /usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games root:/usr/local/bin# siege bash: /usr/bin/siege: No such file or directory root:/usr/local/bin# wtf!?!? Ubuntu 12.04でbashを使用しています。また、siegeからの警告出力は、この質問の目的には関係ないことに注意してください。プログラムを見つけて呼び出すことができるかどうかだけに興味があるからです。
26 bash  path 

4
bashの遅いオートコンプリートをデバッグして修正するにはどうすればよいですか?
最近の更新(Ubuntu 12.04 LTS)の後、コマンドラインでのTABの完了が遅くなります。部分的なコマンド(例evi [TAB])または部分的なファイル名(例evince somedocu[TAB])を入力した後、シェルは、常にではないが時々数秒間ハングします。 個人的には、遅いものよりも力の弱いオートコンプリートを好むでしょう。簡単な修正はありますか? 編集:コメントに関連する追加情報: PATHはかなり標準です。〜/ binにはいくつかのbashスクリプトがあります $ echo $PATH /home/USERNAME/bin:/usr/local/bin:/usr/bin:/bin:/usr/games 作業ディレクトリ内のファイルの数は100未満です。 異常なディスクアクティビティ(システムアップグレード)の後、オートコンプリート機能は特に遅くなりました。したがって、/ usr / binおよびその他のディレクトリを再読み込みすると、遅延が発生する可能性があります。

1
キーバインドなしでreadline関数を実行しますか?
私はただreadlineのマンページを読んでいて、知らないたくさんの素晴らしいコマンドを発見しました。ただし、デフォルトのキーバインディングがないものもあります。シェルからバインドされていないコマンドを実行する方法はありますか? 〜/ .inputrcでコマンドをバインドする方法を尋ねるのではなく、代わりにシェルまたはbashスクリプトで「1回限り」としてコマンドを実行する方法を尋ねています。 たとえば、「dump-variables」コマンド。「ダンプ変数」を引数として供給して実行させるコマンドはありますか?
26 bash  shell  readline  inputrc 

2
実行可能ビットが設定されていないのにrootが実行できないのはなぜですか?
rootユーザーは、writeアクセス許可が設定されていなくてもファイルに書き込むことができます。 rootユーザーは、readアクセス許可が設定されていなくてもファイルを読み取ることができます。 root権限が設定されていなくても、ユーザーは cdディレクトリに移動できexecuteます。 rootパーミッションが設定されていない場合、ユーザーはファイルを実行できませんexecute。 どうして? user$ echo '#!'$(which bash) > file user$ chmod 000 file user$ ls -l file ---------- 1 user user 12 Jul 17 11:11 file user$ cat file # Normal user cannot read cat: file: Permission denied user$ su root$ echo 'echo hello' >> file # …

5
3列に出力を印刷します
MYPATH=/var/www/html/error_logs/ TOTALFILE=$(ls $MYPATH* | wc -l) FILETIME=$(stat --format=%y $MYPATH* | head -5 | cut -d'.' -f1) FILE=$(ls -1tcr $MYPATH* | head -5 | rev | cut -d/ -f1 | rev) TOPLINE=$(head -1 $MYPATH* | grep -Po '".*?"' | head -5) この5つのファイル情報をヘッダー付きの列にエレガントに印刷するにはどうすればよいですか? FILE CREATED TIME | FILE NAME | ERROR HEADER …

4
名前がマイナスだけのディレクトリをどのように入力しますか?
Webサーバーにlessnをダウンロードし、解凍しました。 という名前のフォルダーが含まれています-。私はそれに対処する方法を知っていると思いましたが、私は知りません。 私は試しましたがcd -- -、それは望ましい効果を持っていません。引用符を使用しても影響はないようです。私は、無駄をすべての場所にスラッシュを置きました。 このフォルダに変更する適切な方法は何ですか?
26 bash  cd-command 



7
ブール変数を反転
簡単なスクリプトを試してみたい flag=false while !$flag do read x if [ "$x" -eq "true" ] then flag=true fi echo "${x} : ${flag}" done しかし、私はそれを実行すると、I型の場合true、私はそれを見ますx="true"とflag="true"、しかし、サイクルが終了していません。スクリプトの何が問題になっていますか?ブール変数を適切に反転するにはどうすればよいですか?
26 bash  scripting 

8
シェルスクリプトに構成ファイルを使用する
私は自分のスクリプトの設定ファイルを作成する必要があります:ここに例があります: スクリプト: #!/bin/bash source /home/myuser/test/config echo "Name=$nam" >&2 echo "Surname=$sur" >&2 の内容/home/myuser/test/config: nam="Mark" sur="Brown" うまくいきました! 私の質問:これはこれを行う正しい方法ですか、または他の方法がありますか?

2
bashスクリプトで、stdoutを行ごとにキャプチャする方法
bashスクリプトでは、長いコマンドの標準出力を1行ずつキャプチャして、初期コマンドの実行中にそれらを分析および報告できるようにします。これは私がそれを行うことを想像できる複雑な方法です: # Start long command in a separated process and redirect stdout to temp file longcommand > /tmp/tmp$$.out & #loop until process completes ps cax | grep longcommand > /dev/null while [ $? -eq 0 ] do #capture the last lines in temp file and determine if there is new …
26 bash  process  stdout 

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