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

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

2
zsh / bashシェルの現在のディレクトリを表示する画面ステータスバー
シェルとしてzshを使用して、GNU画面を頻繁に使用しています。現在のディレクトリ名(フルパスではない)をタブタイトルとして表示できるのは、すばらしい機能だと思います(私はそう思います)。私はそれを行うことができますCTRL+A SHIFT+Aが、それは手動です。ディレクトリを変更するたびに変更したいのですが。 誰かがこれを行う方法を知っていますか? 編集:答えには、bashのソリューションも含まれています。
10 bash  zsh  gnu-screen 

2
シェルでreadline変数を設定する
私はmanページを読みました、あなたはreadlineパラメータをオフまたは値を使用して設定しました set var value これはset組み込みのものと同じですか、変数inputrcがすでに読み取られてシェルが実行されているときに変数をどのように設定しますか?
10 bash  readline 

2
`select`コマンドを使用してBashでメニューを印刷する
selectコマンドを使用して簡単なメニューを実装しようとしています。スクリプト(テスト用)は次のとおりです。 #!/bin/bash echo "*******************" PS3='Select an option and press Enter: ' options=("apache" "named" "sendmail") select opt in "${options[@]}" do case $opt in "apache") date ;; "named") echo "test" ;; "sendmail") echo "test 2" ;; *) echo "invalid option";; esac done echo "*********************" スクリプトは私が与える有効な入力を認識せず、常に「無効なオプション」メッセージを出力します。このスクリプトの何が問題になっていますか?

2
rootがスクリプトを実行できないようにする方法
Glassfishのアプリケーション・サーバーは、アプリケーションサーバーを管理し、またそれらを開始し、停止し、私はこのスクリプトを実行しているから、rootユーザーを制限したいためにスクリプトを提供しています。その理由は、一部の主要な開発者が非特権ユーザーとしてサーバーを管理することを忘れており、アプリケーションサーバーをrootユーザーとして再起動する場合、アプリケーションサーバーはrootユーザーによって実行される必要があるためです[*]。 ローカルマシンでこれを行うのに慣れているため、rootアクセスを与えないようにすることはできません。私は希望のasadmin非特権ユーザーとして実行したり、必要に応じて、エラーメッセージにスクリプトがrootで実行されるたびに表示するためのいずれかの変化にスクリプトを。 バッシュシェルを使用しています。 [*]:ファイルの権限を修正しようとしましたが、rootが所有する多くのファイルを追跡してそれらをchmodしたにもかかわらず、アプリケーションで奇妙なエラーが発生し、rootとして再度実行する必要があります。

3
bash:最後に変更された子ディレクトリに移動します
「最後に変更された子ディレクトリに変更する」と言う簡単な、または移植可能な方法があるかどうか疑問に思います。私はlsとawkを使用できますが、おそらくもっと良い方法があります。 cd $( ls -ltrd */ | tail -1 | awk '{ print $8 }' ) 何百ものサブディレクトリと99%の時間で、最後に変更されたディレクトリに移動したい「出力ファイル」ディレクトリでコマンドを実行する必要があります。事前にディレクトリの名前がどうなるかわかりません。
10 bash  date  cd-command 

2
現在のディレクトリのサブディレクトリを一覧表示する正しい方法はありますか?
ディレクトリのサブディレクトリを見つけることができます ls -d -- */ または ls -l | grep "^d" しかし、これらは両方とも間接的に見えるので、ディレクトリだけを見つける標準的な方法があると思います。これを行う正しい方法はありますか?そうでない場合、これらのいずれかがエッジケースで望ましくない動作につながるのでしょうか?(シンボリックリンク、隠しディレクトリなど)

1
gnu coreutilsはソートが壊れていますか?
ソートする次の入力を検討してください。 cat > foo <<EOM D,,5014978 DD,,25 D,I,1972765530 D,Y,4223624 -,Y,71285059 YA,I,2 EOM 今実行してみてください sort foo これを私のLinuxボックス(gnu coreutilsバージョン6.9〜7.4)で試しても、出力はソートされません。cygwin(gnu coretuils 8.5)で実行すると、出力がソートされます。コメント?
10 bash  coreutils  sort 

2
Bashでは、ファイル記述子255は何のために使用できますか?
私はファイル記述子(またはファイルハンドラー)がLinuxシステムのファイルIO手法であることを理解しています。 また、各プロセスには3つの標準ストリーム(つまり、stdin、stdout、stderr)があり、記述子が0〜3のファイルで表されることも知っています。 しかし、私が調べたすべてのプロセスにlsof -p <pid>は、255読み取り権限を持つ追加のファイル記述子があることに気づきました。 この回答から、この機能はBashシェルに固有であることがわかりましたが、回答と参照元の両方で、このファイル記述子の目的が実際に説明されていませんでした。 私の質問: 255ファイル記述子とは何ですか? 私のBashスクリプトでそれを利用できますか、それとも手動での使用/操作が想定されていない内部動作メカニズムだけですか?


4
PIPEで使用されるBash終了ステータス
パイプが使用されているときに終了ステータスがどのように伝えられるかを理解しようとしています。私がwhich存在しないプログラムを見つけるために使用しているとしましょう: which lss echo $? 1 which見つからなかったのでlss、終了ステータス1を取得しました。これで問題ありません。しかし、私が次のことを試みると: which lss | echo $? 0 これは、最後に実行されたコマンドが正常に終了したことを示しています。私がこれを理解できる唯一の方法は、おそらくPIPEも終了ステータスを生成することです。これを理解する正しい方法はありますか?
10 bash  shell-script  pipe  exit 

3
16進数のBash拡張
16進数の桁数の組み合わせのすべての可能性を表示するためにbash展開を使用する方法があるかどうか知りたいのですが。バイナリで展開できます ベース2: echo {0..1}{0..1}{0..1} それは恩返しです: 000 001 010 011 100 101 110 111 ベース10: echo {0..9}{0..9} それは恩返しです: 00 01 02...99 しかし、16進数では: echo {0..F} 繰り返すだけ: {0..F}

1
Zsh:上向き矢印で同じコマンドをスキップする
ほとんどのUnixシェルでは、上矢印↑キーは、履歴内の前のコマンドによって編集されているコマンドを置き換えます。履歴は、コマンドを使用して表示できますhistory。 ↑ 歴史の中で登るには、複数回押すことができます。 私の質問は: ↑現在のコマンドと同じコマンドをすべてスキップするようにシェルを構成するにはどうすればよいですか? 確かに、私は多くの場合make、続けて多くを入力します。古いコマンドをもう一度入力する(または少し変更する)場合、↑すべてのmakeコマンドをスキップするだけで何度もヒットする必要があります。 ↑シェルの生産性を向上させる唯一のヒントではないことは知っています。 ボーナス: Bashシェルで機能する構成を指定します。 履歴を保存します(連続して何度もコマンドを入力したことを知っていると便利です)

1
`nohup`を使用して実行されるプログラムの環境変数を設定するにはどうすればよいですか?
(私は既存のBashスクリプトを編集しているので、おそらくここで愚かな間違いをしています...) 次のように、環境変数を引数としてコマンドを保存するシェルスクリプトがあります。 COMMAND="mvn clean install -P $MAVEN_PROFILE" 次に、nohupおおよそ次のようにコマンドを実行します。 nohup $COMMAND > logfile これは機能します。 ここで、Mavenでアクセスできる環境変数を設定します。私は次のようなことをいくつか試しました: COMMAND="FORMAVEN=valueForMaven mvn clean install -P $MAVEN_PROFILE" ...しかし、それは単に次のように終了します: nohup: failed to run command `FORMAVEN=valueForMaven': No such file or directory ここには関係のない概念がいくつかあるように思いますが、どれも理解していないし、知りさえしていません。上記を行うには何が必要ですか?

3
forループグロブ事故
私は、一連のディレクトリをループするスクリプトを設定しようとしています。.jpgファイルが見つかると1つ、.nefファイルが見つかると別のことを行います。たとえば、ディレクトリに.jpgファイル(または.nef)がない場合、グロブエントリは拡張されたグロブではなく、単なる文字列です。例えば: my_dir="pictures/" ext="JPG" for f in "$my_dir"*."$ext"; do echo $f done my_dirフォルダーに.JPGファイルが含まれている場合、それらはコマンドラインに正しくエコーされます。 pictures/one.JPG pictures/two.JPG ただし、my_dirに.JPGファイルがない場合は、ループが1回繰り返されてエコーします。 pictures/*.JPG グロブが一致しない場合にforループに入らないようにするには、これをどのように構築しますか?
10 bash  wildcards 

6
bashを使用して重複ファイルを削除する方法
md5sum(md5Macでは)ファイルが重複しているフォルダーがあり、cron 見つかったジョブを削除するようにスケジュールされたジョブ。 しかし、私はこれを行う方法にこだわっています。これまでのところ: md5 -r * | sort これは次のようなものを出力します: 04c5d52b7acdfbecd5f3bdd8a39bf8fb gordondam_en-au11915031300_1366x768.jpg 1e88c6899920d2c192897c886e764fc2 fortbourtange_zh-cn9788197909_1366x768.jpg 266ea304b15bf4a5650f95cf385b16de nebraskasupercell_fr-fr11286079811_1366x768.jpg 324735b755c40d332213899fa545c463 grossescheidegg_en-us10868142387_1366x768.jpg 3993028fcea692328e097de50b26f540 Soyuz Spacecraft Rolled Out For Launch of One Year Crew.png 677bcd6006a305f4601bfb27699403b0 lechaustria_zh-cn7190263094_1366x768.jpg 80d03451b88ec29bff7d48f292a25ce6 ontariosunrise_en-ca10284703762_1366x768.jpg b6d9d24531bc62d2a26244d24624c4b1 manateeday_row10617199289_1366x768.jpg ca1486dbdb31ef6af83e5a40809ec561 Grueling Coursework.jpg cdf26393577ac2a61b6ce85d22daed24 Star trails over Mauna Kea.jpg dc3ad6658d8f8155c74054991910f39c smoocave_en-au10358472670_1366x768.jpg dc3ad6658d8f8155c74054991910f39c smoocave_en-au10358472670_1366x7682.jpg ファイルのMD5に基づいて処理して重複を削除するにはどうすればよいですか?どの「オリジナル」を保持するかは特に気にしませんが、保持したいのは1つだけです。 これに別の方法でアプローチする必要がありますか?

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