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

BashはBourne Again SHellであり、古典的なUnix sh(シェル)の後継です。

1
シェルスクリプトを使用してrsyncが変更を行ったかどうかを確認する
rsyncの2つのディレクトリを使用するbashスクリプトがあります。時々変化があり、何もない可能性があります。 rsyncが実際に変更(ファイルの追加/更新)を行った場合にのみ、コマンドを実行したいと思います。それ以外の場合はスキップします。私が見ているべき返答はありますか?
10 unix  bash  rsync  unix-shell 

3
バッシュ:最後のコマンドの出力が改行で終わっているかどうかを知る方法は?
ほとんどの場合、コマンドの出力は改行文字で終わります。ただし、そうでない場合もあるため、次のシェルプロンプトが出力と同じ行に出力されます。 例: root @ hostname [〜] #echo -n hello helloroot @ hostname [〜]# 私はいつもそれが非常に迷惑だと思っていました。 これで、PS1変数の先頭に「\ n」を追加するだけで済みますが、ほとんどの場合、不要な1行が追加で出力されます。 最後のコマンドの出力が改行で終わったかどうかを知ることは可能ですか? 解決策: (Dennisに感謝) PS1='$(printf "%$((`tput cols`-1))s\r")\u@\h [\w]\$ '
10 linux  bash  shell  prompt 

5
ファイルを移動したディレクトリに変更するにはどうすればよいですか?
だから私が今やったと仮定しましょう: mv ./myfile /to/some/other/place/ ファイルをたどり、そのディレクトリに移動することにしました。 マウスに向かっている間に、テキストを選択し、「cd」と入力してから右クリックして貼り付けます。キーボードベースの高速なディレクトリを使用したいと思います。 それで、それを行うための最良の方法は何ですか? (一般に、異なる場合は具体的にはCentos + Bash)
10 linux  unix  bash  shell  directory 

4
.bashrcがcygwinで読み取られないのはなぜですか?
私の.bashrcは次のようになります。 alias name@server="ssh server sname" echo "bashrc read" このechoステートメントは、読み取られたかどうかを確認するためのものです。しかし、エコーは何もしません。より高速なsshのエイリアスを、リモートボックスで機能するエイリアスである特定のコマンドを実行するボックスに設定したい。
10 bash  cygwin  bashrc 

13
便利なbashエイリアスと最もよく使用されるコマンドのリストの生成
ロックされています。この質問とトピックへの回答はロックされています。質問はトピックから外れていますが、歴史的に重要です。現在、新しい回答や相互作用を受け入れていません。 私が見つかりました。この記事はあなたのbashの履歴をソートし、あなたが最もを使用どのコマンドを参照する簡単な方法を議論します: cut -f1 -d" " .bash_history | sort | uniq -c | sort -nr | head -n 30 エイリアスを作成する必要があるタスクと、完全にcronjobで削除する必要があるタスクについて、本当に目が開かれます。 仕事の時間を節約できる、推奨されるコマンドラインエイリアスのServerFaultリストを参照してください。あなたはどれだけ持ってる? 私たちの間では、この投稿を読んだすべてのユーザーを少なくとも1日10分保存できると思います。(もちろん、最初の日は、仕事をするのではなく、ServerFaultを読むのにすべての時間を浪費します!)
10 bash  alias 

7
特定の末尾のファイルが欠落しているディレクトリを見つける
特定のファイルで終わるファイルを含まないすべてのディレクトリを表示したいのですが。したがって、次のコードを使用してみました: find . -type d \! -exec test -e '{}/*.ENDING' \; -print この例では、末尾がのファイルが含まれていないすべてのディレクトリを表示したいのです.ENDINGが、これは機能しません。 私の間違いはどこですか?
10 linux  bash  shell 


3
bashでsshとsudoを一緒に使用する方法は?
この特定のシナリオを説明する質問を見つけることができませんでした。 非常に基本的なbashスクリプトを実行して、複数のマシンからロギングを取得しようとしています。スクリプトをローカルで実行していますが、ssh経由で外部マシンにアクセスする必要があります。また、そのマシンで特権ユーザーにsudoを実行する必要があります... ssh myuser@machine.net sudo su - privledged_user cat logs > file.txt これをsh -xで実行すると、bashが「ssh」行でスタックしていることがわかります。だから私はそれをこれに改訂しようとしました: ssh myuser@machine.net sudo su - privledged_user cat logs > file.txt これも無期限に停止しているようです。この問題のより良い解決策はありますか?sudo suを使用する方法がわかりません... 助けてくれてありがとう!
10 linux  bash 

2
here-documentでSSH経由でコマンドを実行するときにTTYが存在しない
私はヒアドキュメントでこのようにSSH経由でコマンドを実行しようとしています: ssh example.com <<END sudo /etc/init.d/apache2 reload END これは、sudoのパスワードなど、入力が必要なものを実行しようとしている場合を除いて、通常は機能します。その場合、次のメッセージが表示されます。 sudo: no tty present and no askpass program specified -tSSH のフラグを使用して、次のような疑似ttyを割り当てることができます。 ssh -t example.com "sudo /etc/init.d/apache2 reload" 動作しますが、ヒアドキュメントで同じことをしようとすると、動作せず、ttyが存在しないという同じエラーが発生します。 ssh -t example.com <<END sudo /etc/init.d/apache2 reload END どうすればこれを機能させることができますか? また、なぜ同じ行に渡すのではなく、ヒアドキュメントを操作する必要があるのか​​疑問に思う場合は、入力コマンド(いくつかある場合があります)がスクリプトによって読み取られた構成ファイルから取得されるためです引用符や二重引用符などのコマンドをエスケープする問題を回避できると聞きました。
10 ssh  bash  sudo 

4
シェルスクリプトレベルでファイルサイズ(stdout)を制限する簡単な方法は?
OK、これは私の観点からは非常に実用的なユースケースです。 出力をファイルに記録する単純なシェルワンライナーがあるとします。これは、たとえばtcpdumpのように、何でもかまいません。出力ファイルが指定されたサイズを超えないようにするための一般的で簡単な方法はありますか? これは、誤ってマウントポイントの使用可能なスペース全体を埋めるのを防ぐためです。スクリプトを忘れた場合、またはスクリプトが1時間あたりGBのデータを生成する場合、この単純なデバッグタスクでシステムがクラッシュする可能性があります。 今、私はいくつかのツール(tcpdumpでの-W / -Cの組み合わせなど)に組み込まれているオプションを認識しています。私に必要なのは、非常に一般的なフェイルセーフです。 短い話-私が次のようなスクリプトを実行すると: % this -is --my=very|awsome|script >> /var/tmp/output.log output.logが1GBを超えないようにする方法。 スクリプトはクラッシュしたり、強制終了したりすることがあります。 私が探している解決策は、ubuntu / debian / fedoraのような人気のあるディストリビューションで利用可能なツールのみを使用して、簡単でシンプルであるべきです。一般に、広く入手可能なもの。複雑な複数行プログラムは、言語/テクノロジーに関係なく、ここではオプションではありません。
10 bash 

4
単位のサフィックスが付いた数値の解析に便利ですか?
の出力など、人間が読める形式の数量のデータがありdu -h、それらの数値をさらに操作したいとします。そのデータのサブセットの合計を行うために、grepを介してデータをパイプしたいとします。これまでに見たことのない多くのシステムでこのアドホックを実行し、最小限のユーティリティしかありません。すべての標準10 ^ nサフィックスのサフィックス変換が必要です。 パイプライン内で接尾辞付きの数値を実数に変換するgnu-linuxユーティリティが存在しますか?これを行うために作成されたbash関数、または正規表現の置換やいくつかのsedステップの代わりに覚えやすいかもしれないperlがありますか? 38M /var/crazyface/courses/200909-90147 2.7M /var/crazyface/courses/200909-90157 1.1M /var/crazyface/courses/200909-90159 385M /var/crazyface/courses/200909-90161 1.3M /var/crazyface/courses/200909-90169 376M /var/crazyface/courses/200907-90171 8.0K /var/crazyface/courses/200907-90173 668K /var/crazyface/courses/200907-90175 564M /var/crazyface/courses/200907-90178 4.0K /var/crazyface/courses/200907-90179 | grep 200907 | <amazing suffix conversion> | awk '{s+=$1} END {print s}' 関連参照: サイズでdu -h出力を並べ替える方法 /programming/2557649/convert-memory-size-human-readable-into-actual-number-bytes-in-perl

3
Ubuntu dpkg、非対話型インストール
私はそれらと対話する必要なしに.debファイルの束をインストールしようとしています。たとえば、MySQLサーバーは、dpkgの構成時に管理パスワードを入力するためのインタラクティブメニューを要求します。 私が試してみました。 export DEBIAN_FRONTEND=noninteractive && export DEBIAN_PRIORITY=critical && sudo /usr/bin/dpkg -i ./files/* 私は設定なしでファイルを抽出できることを知っています。Apache、php、mySQLなどのデフォルトインストールが事前設定されたサーバーをデプロイするbashスクリプトを作成しようとしています。しかし、この「対話型インストール」が問題を引き起こしています。 それを無効にする方法についてのアイデアはありますか?または回避策? ありがとう

1
FreeBSDでデフォルトのシェルを変更する方法は?
FreeBSDのデフォルトのシェルはsh、私には本当に我慢できません。オートコンプリートは非常に制限されており、rehashコマンドは私を殺します。私は一人の武装した男と一人の脚の男のように感じます... シェルをグローバルに、zshまたはbashrootと現在および将来のすべてのユーザーに変更するにはどうすればよいですか?
10 bash  shell  freebsd  zsh  sh 

2
wgetの進行状況がどうなったのか:メガはもうそれを切りませんか?
大きなファイルをキューにダウンロードするスクリプトがあります。まともなログがあれば、本当に感謝しています。-oor -aオプションの指定は明らかにそのために特別に作られていますが、現時点では、この「非常に大きなファイル」を書いている時点では、マンページに記載されているように、サイズが50mではなくギガバイトになっています。--progress=dot:mega3GBファイルの場合のみ、1000行の出力を生成します(明らかに3000 * 80ドット( '。')になります)。だから私は疑問に思っています:実際にログ機能を利用できるように、進行スタイルの設定をカスタマイズする方法はありますか?

4
ワンライナーをバッシュして、ファイルが存在しない場合にアトミックに作成します
ファイルが存在しない場合に自動的にファイルを作成するBashワンライナーが必要です。つまり、「ファイルが存在しない場合は作成する」ということですが、ifを実行してからファイルを作成するまでの間に、他のユーザーが小さなスペースでファイルを作成できないようにします。
9 bash  files 

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