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

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

4
複数のファイルを差分します。すべてが等しくない場合はtrue
いくつかのファイルがありますが、それらすべてのファイルが同じコンテンツを持っていることを確認したいと思います。 それを確認するためにどのコマンドラインを使用できますか? 使用方法は次のようになります。 $ diffseveral file1 file2 file3 file4 結果: All files equals または Files are not all equals
18 bash  diff 

4
コマンドが見つからないのに長い遅延が発生するのはなぜですか?
多くの場合、lsなどのコマンドを誤って入力すると(たとえば、「s」を入力する前にEnterキーを押します)、端末が表示された後、長い(〜2秒)遅延が発生します。 bash: l: command not found... 間違ったパスワードを入力した後、同様の遅延の理由を理解できます。「間違ったパスワードを入力した後、大きな遅延があるのはなぜですか?」。しかし、なぜ認識されないコマンドの後に遅延するのでしょうか?んFAIL_DELAYで/etc/login.defsも、この影響を与えますか?



3
モンタージュ(ImageMagick)合成画像から余分なタイルスペースを削除しますか?
写真がたくさんあります。それらはすべて同じ高さであり、Bashを介してImageMagickのモンタージュプログラムを使用して、合成画像にまとめようとしています。問題は、デフォルトでは、タイルサイズ(1つの画像が1つのタイルを占める)が最大サイズの画像と等しいことです。そのため、狭い画像は多くの空白に囲まれています。この空白を削除したいです。どうすればいいですか?

1
Bashでの '2>>(command)'リダイレクトの意味
しばらく前にスクリプトを作成し、その周りにログを追加しましたが、ログのリダイレクトがどのように機能するか忘れました:-( その要点は次のとおりです。 #!/bin/bash LOGFILE=/some/path/mylogfile ( # here go my commands which produce some stdout # and, if something goes wrong, also some stderr ) 1>>${LOGFILE} 2> >( tee -a ${LOGFILE} >&2 ) スクリプトを実行すると、には何もstdout出力されず、に進むもののみが出力されstderrます。ログファイルは${LOGFILE}、stdoutとstderrの両方をキャプチャします。 スクリプトを実行し、端末に出力がない場合、すべてが正常であることがわかります。出力がある場合、何か問題が発生したことがわかります。ログファイルを確認して、問題の内容を確認できます。 今私を困惑させるリダイレクトの部分は、次の構文です: 2> >( some command ) 誰もがそこで何が起こっているのか説明できますか?

7
並列バックグラウンドプロセス(サブシェル)の終了コードを収集する
次のようなbashスクリプトがあるとします。 echo "x" & echo "y" & echo "z" & ..... echo "Z" & wait サブシェル/サブプロセスの終了コードを収集する方法はありますか?これを行う方法を探していますが、何も見つかりません。これらのサブシェルを並行して実行する必要があります。そうでなければ、これは簡単です。 汎用的なソリューションを探しています(並行して実行するサブプロセスの数が不明/動的です)。

2
ネストされたcaseステートメント内からwhileループを抜け出すにはどうすればよいですか?[閉まっている]
閉まっている。この質問はトピック外です。現在、回答を受け付けていません。 この質問を改善したいですか? 質問を更新して、 UnixおよびLinux Stack Exchangeで話題になるようにします。 4年前に閉鎖されました。 以下のスクリプトでは-潜在的に悪いスクリプトの実行を続行することを確認するようユーザーにプロンプ​​トを表示します-ユーザーYがプロンプトで入力すると、caseブロックから抜け出し、while再びループに送り返されます。 #! /bin/bash set -e echo echo "bad install start" echo "-----------------------------------------" while true; do read -p "this script will probably fail - do you want to run anyway?" yn case $yn in [Yy]*) ##### WHAT GOES HERE?? ##### ;; [Nn]*) exit ;; …

2
二重引用符内の単一引用符とBashリファレンスマニュアル
セクション3.1.2.3の二重引用符で、Bashマニュアルは次のように述べています。 文字を二重引用符( '"')で囲むと、引用符内のすべての文字のリテラル値が保持されますが、例外は '$'、 '`'、 '\'、および履歴展開が有効な場合は '!'です。 現時点では、単一引用符(')に関心があります。 前のセクションで説明した特別な意味、セクション3.1.2.2は次のとおりです。 文字を一重引用符(')で囲むと、引用符内の各文字のリテラル値が保持されます。バックスラッシュが先行する場合でも、単一引用符は単一引用符の間に出現しない場合があります。 2つの博覧会を組み合わせて、 echo "'$a'" 変数がここでa定義されていない(従って$a= NULL文字列)は、印刷すべきである$aように、画面上に''シールドであろう、それは特別な意味内部だ有する、$特別な解釈から。代わりに、印刷し''ます。なぜそうなのか?
18 bash  shell  quoting 

2
bashでは、変数値ではなく変数名をエコーするにはどうすればよいですか?[閉まっている]
閉じた。この質問には詳細または明確さが必要です。現在、回答を受け付けていません。 この質問を改善したいですか?詳細を追加し、この投稿を編集して問題を明確にします。 5年前に閉鎖されました。 varbashに変数があるとします。値を割り当てることができます。たとえば、私はそれを文字列にします: var="Test" 私が持ってechoいるvar値ではなく、の名前にしたいvar。(を使用して後者を実行できますが、echo $var実際は前者を実行したいです。) SOからのこの質問に対する答えはuse echo ${!var}であると言っていますが、それを行うと、エコーは空白行を返すだけです。たとえば、次のbashスクリプト #!/bin/bash echo "Hi" var="Test" echo ${!var} echo "Bye" 次の出力を返します。 Hi Bye varの代わりに、HiとByeの間に空白行だけを入れます。何が間違っていますか? 私が実行しているbashの4.1.5(1)上のUbuntu 10.04.4を。
18 bash 

1
viシェルモードのカスタムキーバインディング、つまり「set -o vi」?
の驚異を発見したばかりでset -o vi、viやvimをカスタマイズできるのと同じ方法でこのviシェルモードをカスタマイズできるかどうか興味がありますか? たとえば、カスタムキーバインディングを作成して、より便利なキーまたはキーの組み合わせをesc?にマップします。 現在サポートされていない場合、一部のカスタマイズでプログラムとハードコードのソースコードを変更するのはどれくらい難しいでしょうか、それとも悪い考えでしょうか?
18 bash  vi 

1
プログラムを終了すると、「man」はどのように画面を復元しますか?
catまたはのようなプログラムのマニュアルページを開くと、マニュアルページのls内容が印刷され(適切な単語ではない場合があります)、を押すqと、manコマンドを呼び出す前と同じように画面が表示されます。復元はどのように行われますか?何がすべてを消去してから、シェルの以前の内容を印刷しますか? 例: [VAR121@Tesla Testing]$ man ls 出力: LS(1) User Commands LS(1) NAME ls - list directory contents SYNOPSIS ls [OPTION]... [FILE]... ............ を押すqと、画面は以下に示すプロンプトのようなシェルのデフォルトの外観に戻ります。 [VAR121@Tesla Testing]$ man ls [VAR121@Tesla Testing]$ 画面はどのように復元されますか?
18 bash  shell  terminal  man 

3
変数展開を延期する方法
スクリプトの先頭にあるいくつかの文字列を、まだ設定されていない変数で初期化したいと思っていました。 str1='I went to ${PLACE} and saw ${EVENT}' str2='If you do ${ACTION} you will ${RESULT}' そしてその後にPLACE、EVENT、ACTION、およびRESULT設定されます。次に、変数を展開して文字列を出力できるようにします。私の唯一のオプションevalですか?これはうまくいくようです: eval "echo ${str1}" これは標準ですか?これを行うためのより良い方法はありますか?eval変数が何であってもよいと考えて実行しないのはいいことです。
18 bash  shell  string 

5
ディレクトリごとにエイリアスを設定する方法は?
エイリアスを持っていると仮定しますが、go異なるディレクトリで異なることをしたいですか? 1つのディレクトリで実行する必要がありますcmd1が、別のディレクトリで実行する必要がありますcmd2 ところで、上記のディレクトリに切り替えるためのエイリアスは既にあります。goエイリアスにエイリアスの割り当てを追加することは可能fooですか? alias "foo=cd /path/to/foo" OSXでbash(?)を使用しています。

5
重複を削除しながら2つのリストをマージする
Busybox(OpenWRT)を使用した組み込みLinuxシステムがあるため、コマンドが制限されています。次のような2つのファイルがあります。 最初のファイル aaaaaa bbbbbb cccccc mmmmmm nnnnnn 2番目のファイル mmmmmm nnnnnn yyyyyy zzzzzz これら2つのリストを1つのファイルにマージし、重複を削除する必要があります。 私たちは偉大なを使用して取得して(スペースが限られている)の差分を持っていないawk、sedとgrep(または標準Busyboxのインスタンスに含まれている場合があります他のツール)。次のようなマージファイルに移動します。 command1 > mylist.merge command2 mylist.merge > originallist 大丈夫です。単一行のコマンドである必要はありません。 私が使用しているBusyboxのインスタンスで現在定義されている関数(デフォルトOpenWRT):[、[[、arping、ash、awk、basename、brctl、bunzip2、bzcat、cat、chgrp、chmod、chown、chroot、clear、cmp、 cp、crond、crontab、cut、date、dd、df、dirname、dmesg、du、echo、egrep、env、expr、false、fgrep、find、free、fsync、grep、gunzip、gzip、halt、head、hexdump、 hostid、hwclock、id、ifconfig、init、insmod、kill、killall、klogd、less、ln、lock、logger、logread、ls、lsmod、md5sum、mkdir、mkfifo、mknod、mktemp、mount、mv、nc、netmsg、 netstat、nice、nslookup、ntpd、passwd、pgrep、pidof、ping、ping6、pivot_root、pkill、poweroff、printf、ps、pwd、reboot、reset、rm、rmdir、rmmod、route、sed、seq、sh、sleep、 sort、start-stop-daemon、strings、switch_root、sync、sysctl、syslogd、tail、tar、tee、telnet、telnetd、test、time、top、touch、tr、traceroute、true、udhcpc、umount、uname、uniq、uptime、vconfig、vi、watchdog、wc、wget、which、xargs、yes、zcat
18 bash  grep  sed  awk  busybox 

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