タグ

bashに関するdollarssのブックマーク (6)

  • いい加減シェルスクリプトで [ $? -eq 0 ] や [ $? -ne 0 ] なんて エラー処理を書くのはやめよう! - Qiita

    はじめに [ $? -eq 0 ] や [ $? -ne 0 ] は冗長でデメリットしかありません。非常に多く見かける書き方ですが、1979 年に Bourne シェルが広く公開された時からこのようなコードは必要ありませんでした。実際に当時はこのような書き方は使われておらず、このような書き方をしなければならなかった歴史的な経緯などはありません。これはなぜか広まってしまった良くない書き方です。 優れたコードとは無駄がないシンプルなコードです。丁寧なコードとは無駄な処理を書くことではありません。[ $? -eq 0 ] や [ $? -ne 0 ] は書かないほうが、簡単で読みやすくわかりやすくなります。優れた文法を持つシェルは短いコードで正しく動作し、良い書き方は最短の時間と最小の手間で目的を達成することができます。コマンドのエラー処理を簡潔に書くことができるのが、シェル言語の優れている点の

    いい加減シェルスクリプトで [ $? -eq 0 ] や [ $? -ne 0 ] なんて エラー処理を書くのはやめよう! - Qiita
  • 名著「入門UNIXシェルプログラミング」の超詳細なレビューをしてみた(古い内容の訂正) - Qiita

    Deleted articles cannot be recovered. Draft of this article would be also deleted. Are you sure you want to delete this article? はじめに そりゃまあ 30 年も経てば古くなりますよ。「入門UNIXシェルプログラミング」は今もシェルスクリプトに関するオススメのとして名前が挙がる名著です。しかしこのは古いです。POSIX でシェルが標準化される以前ので、内容から判断するとおそらく 1990 年ぐらいの常識に基づいて書かれています。 古いから参考にならないと言うつもりはありません。しかしどれだけ優れたでも時間の流れには勝てません。良書であると思っているからこそ、古くなってしまった内容は訂正する必要があると考えています。なおシェルスクリプトに関する古いはこれ

    名著「入門UNIXシェルプログラミング」の超詳細なレビューをしてみた(古い内容の訂正) - Qiita
  • 逆引きUNIXコマンド/wgetの取得情報を標準出力(STDOUT)に出力するオプション - Linuxと過ごす

    wgetの取得情報を標準出力(STDOUT)に出力するオプション† wgetにURLを指定すると取得した情報を自動的に保存されます。 資料では、wgetで取得した情報をファイルに出力するのではなく、 標準出力(STDOUT)に出力する方法を記します。 -O -により標準出力(STDOUT)へ出力する† 標準出力(STDOUT)に出力するオプションは -O - になります。 以下に書式を記します。 wget -O - URL 実際に実行した結果です。 ダウンロードの進捗情報など各種情報も一緒に出力されています。 この情報を抑止する方法も以下に記します。 sakura@ubuntu:~$ wget -O - http://www.just4fun.biz/ --2013-09-25 01:17:49-- http://www.just4fun.biz/ www.just4fun.biz (w

  • シェルスクリプトを書くときにいつもやるやつを調べた

    bash のシェルスクリプトを書くときに、いつも脳死で以下をやっている。(同僚が整備してくれたものをコピペしている) エディタなり CI で shellcheck をまわす set -euxo pipefail と冒頭に書く こんな感じ #!/bin/bash set -euxo pipefail いつまでもコピペではさすがにアレなので、意味を調べたメモ。 shellcheck koalaman/shellcheck: ShellCheck, a static analysis tool for shell scripts イケてない書き方に警告を出してくれる それぞれの警告にはエラーコード割り振られていてとても便利 エラーコードごとに正誤例、解説が書かれているのでわかりやすい SC1000 の例 CI もそうだし、エディタのプラグインも充実 しているのでとりあえず入れておくと良い set

    シェルスクリプトを書くときにいつもやるやつを調べた
  • sh -cで呼び出したコマンドがbashだと孫プロセスにならないことがある | おそらくはそれさえも平凡な日々

    前提として、/bin/sh は、デフォルトでは、RHEL系の場合bashシェル、Debian系の場合dashシェルへのsymlinkになっています。この2つのシェルの挙動は細かいところで結構異なります。そもそもの思想として、dashシェルはPOSIX互換を目指す軽量なシェルであり、bashは拡張された高機能なシェル。なのでbash前提で書かれたシェルスクリプトがdashでは動かない、みたいなことはよくあります。そういう感じで困ることがままありますが今回もそういう話。 例えば % sh -c "sleep 100" のようなコマンドを実行した場合、呼び出し元の子プロセスが sh になり、その更に子プロセスが sleep になると直感的には思うでしょう。つまり以下のような具合。 . \_ sh -c sleep 100 \_ sleep 100 しかし、 sh の実体が bash である場合な

    sh -cで呼び出したコマンドがbashだと孫プロセスにならないことがある | おそらくはそれさえも平凡な日々
  • 毎日使えるBashコマンドテクニック

    Opensource.comは6月14日(米国時間)、「Bash tips for everyday at the command line|Opensource.com」において、知っていると、日常の活動においてキーストロークを減らすことができる隠し機能やショートカットを紹介した。 紹介されているテクニックは次のとおり。 複数のターミナルでbashを使っている場合、そのすべてのコマンド履歴を保存するようにする設定 shopt -s histappend 直前のコマンドを先頭にsudoを追加して実行する。管理者権限が必要なコマンドを間違ってsudoを指定せずに実行した場合に利用する sudo !! 直前のコマンドの引数を!*に展開して実行する コマンド !* コマンド履歴から該当しそうなものを探す方法 history | grep キーワード インタラクティブにコマンド履歴検索を実行 Ct

    毎日使えるBashコマンドテクニック
  • 1