Memo/Linux/Bash

http://dexlab.net/pukiwiki/index.php?Memo%2FLinux%2FBash
 

Bash


パイプとリダイレクト

  • 標準出力(stdout)をファイルへ
    1. command > file
    2. command 1> file
  • 標準エラー(stderr)をファイルへ
    1. command 2> file
  • 標準出力/エラーをファイルへ
    1. command &> file
  • set -C : リダイレクトによるファイルの上書き禁止
  • >| : オプションに関係なく上書き
  • >>| : オプションに関係なく追記

~/.bashrc を ~/.bash.d/ に分割する

長くなりがちな ~/.bashrc ~/.bash.d/*.sh に分割する。
ansible等で管理しやすくなる

  • ファイル名の昇順で呼ばれるので、順序を付けたい場合は、「10-*.sh」「90-*.sh」等にすると良い
  • 指定shだけ無効「chmod -x ~/.bash.d/example.sh」
  1. mkdir ~/.bash.d
  2.  
  3. vim ~/.bashrc
  4. --
  5. if [ -d "${HOME}/.bash.d" ] ; then
  6.     for f in "${HOME}"/.bash.d/*.sh ; do
  7.         [ -x "$f" ] && . "$f"
  8.     done
  9.     unset f
  10. fi
  11. --
  12.  
  13. # 例: colordiff
  14. vim /home/user01/.bash.d/colordiff.sh
  15. --
  16. if $(type colordiff > /dev/null 2>&1);then
  17.   alias diff='colordiff -u'
  18. else
  19.   alias diff='diff -u'
  20. fi
  21. --
  22. chmod +x ~/.bash.d/*.sh
  23. source ~/.bashrc

bashのfunctionをxargsで使う

  1. function say_hello() { echo "Hello, world: $1"; }
  2. export -f say_hello
  3. ls | xargs -i bash -c "say_hello {}"

bashショートカット

Ctrl + l画面をクリア。カレント行を表示
Ctrl + dログアウト
Ctrl + a行頭へ移動
Ctrl + e行末へ移動
Ctrl + uカーソルの左を削除
Ctrl + kカーソルの右を削除
Ctrl + wカーソルの右を削除
Ctrl + y削除した部分をペースト
TABファイルやコマンドの自動補完
Ctrl + rコマンドヒストリ
!!直前のコマンドを再実行
Ctrl + z現在のジョブを一時停止
fg:元に戻す
bg:裏に回す
Ctrl + c現在のジョブの強制終了

.bash_profile と .bashrcの違い

  • CentOS6/7の場合: ~/.bash_profile => ~/.bashrc => /etc/bashrc と呼ばれる
    • ~/.bash_profile

      1. # Get the aliases and functions
      2. if [ -f ~/.bashrc ]; then
      3.         . ~/.bashrc
      4. fi
    • /.bashrc

      1. # Source global definitions
      2. if [ -f /etc/bashrc ]; then
      3.         . /etc/bashrc
      4. fi
  • /.bashrc

    • bash起動時に毎回呼ばれる
    • 基本ここに書けば良い
  • /.bash_profile

    • 変更する必要は無い。デフォルトのままで良い
    • OSへのログイン時に読み込まれる
    • 端末操作以外で必要な環境変数(export)の設定に使用
/etc/profile, /etc/profile.d/全ユーザ共通。ログインした時。
~/.bash_profile/etc/profileの次
~/.bash_loginログイン後、~/.bash_profile が無い場合
~/.profileログイン後、~/.bash_login が無い場合
~/.bashrc新しいbashシェルが起動した時
~/.bash_logoutログインしたシェルを終了する時

bashでコマンドヒストリー検索

↑ or CTRL+P
前の履歴
↓ or CTRL+N
次の履歴
CTRL+R
後方インクリメンタル検索。押す度に検索。
ESC or CTRL+G
インクリメンタル検索の中止
CTRL+S
ターミナルロック or 前方インクリメンタル検索(押す度に検索)
CTRL+Q
ターミナルロック解除
  • ターミナルロック機能の停止。前方インクリメンタル検索をよく使うのであれば、ターミナルロック機能の停止を ~/.bashrc 等に書いておく
    1. stty stop undef

トップ   編集 凍結 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 単語検索 最終更新   ヘルプ   最終更新のRSS
Last-modified: 2018-03-29 (木) 18:48:14 (27d)