Memo/Linux/Bash

http://dexlab.net/pukiwiki/index.php?Memo/Linux/Bash
 

Bash


historyコマンドで日付を表示

  • iso-8601形式にしたい場合
    1. # 個人のみ
    2. bash -c "cat <<EOF>> ~/.bashrc
    3. export HISTTIMEFORMAT='%FT%T%z '
    4. EOF"
    5.  
    6. # ユーザ全員
    7. sudo bash -c "cat <<EOF>> /etc/profile.d/history.sh
    8. export HISTTIMEFORMAT='%FT%T%z '
    9. EOF"

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

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

  • ファイル名の昇順で呼ばれるので、順序を付けたい場合は、「10-*.sh」「90-*.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/moriyama/.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
  • /.bash_profile

    • sshログイン時に1回だけ実行される
    • 環境変数(export)の設定に使用。exportした変数はプロセス間で引き継がれるため1回で良い
  • /.bashrc

    • bash起動時に毎回呼ばれる
/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-08-21 (火) 22:11:58 (2h)