お知らせ

現在サイトのリニューアル作業中のため、全体的にページの表示が乱れています。

Bash Tips

投稿日:
OS::Linux::コマンドソフトウェア::Bash

シェルスクリプトが設置されているパスを取得する

  • cwd=$(cd $(dirname $0); pwd)
    • $0はシェルスクリプトのフルパス
    • dirnameでスラッシュから始まるファイル名を除去
    • cdで移動
    • pwdで表示

現在のパスを移動せずにシェルスクリプト内でパスを移動する

これはサブシェルを使うと出来る
サブシェルとは()で囲まれた部分で、この中では別のシェルが動いている
例えば次のスクリプトはfoo/に移動し中のファイルリストを表示するが、2行目では現在の位置にあるファイルリストを表示するため移動していない
コマンド展開記法$()もサブシェルが動いている

(cd foo/; ls -la)
ls -la

複数コマンドをワンライナーで実行する

;

  • 以下のように書くと連続で線形実行される。手前が異常終了しても続く
    • curl; echo 2;

&

コマンドの末尾に&をつけるとバックグラウンドで実行される

  • 以下の例では左がバックグラウンド、右がフォアグラウンドで実行される
    • echo 1 & echo 2

&&

AndAlso的な動きをする

  • 以下のように書くと連続で線形実行される。手前が異常終了すると続かない
    • curl && echo 2

|

コマンドの末尾に|をつけると標準出力が次にリダイレクトされる

  • 以下のように書くと連続で線形実行される。手前の標準出力が次にリダイレクトされる
    • echo 1 | xargs -I{} echo {}2

||

OrElse的な動きをする

  • 以下のように書くと連続で線形実行される。手前が異常終了した場合のみ次が動く
    • curl || echo 1