/Linuxコマンド

基本

端末とシェルの設定

使うシェルの変更、.bashrc / .zshrc の設定、補完、端末の色やサイズ、作業の記録など。

設定ファイル

ファイル読まれるとき
~/.bashrcbash を対話的に起動するたび(エイリアスや関数はここに)
~/.profile / ~/.bash_profileログインしたとき(環境変数はここに)
~/.zshrczsh を対話的に起動するたび
/etc/profile・/etc/bash.bashrc全ユーザー共通
~/.bashrc に書く例
export EDITOR=vim
export PATH="$HOME/.local/bin:$HOME/go/bin:$PATH"
alias ll='ls -alF'
alias ..='cd ..'
alias gs='git status'
HISTSIZE=10000
HISTCONTROL=ignoreboth:erasedups   # 空白で始まるコマンドと重複を履歴に残さない
mkcd() { mkdir -p "$1" && cd "$1"; }

変更したら source ~/.bashrc か、新しい端末を開くと反映されます。

chshログインシェルを変える

ログインしたときに使うシェルを変えます。

bash
$ chsh -s "$(which zsh)"      # zsh に変える(ログインし直すと反映)
$ chsh -s /bin/bash
$ echo $SHELL                 # 今のログインシェル
$ cat /etc/shells             # 使えるシェルの一覧

zsh高機能なシェル

bash とほぼ同じ書き方で使え、補完や履歴がより強力です。

~/.zshrc に書く例
autoload -Uz compinit && compinit          # 補完を有効にする
zstyle ':completion:*' menu select         # 補完候補を矢印で選ぶ
setopt AUTO_CD                             # ディレクトリ名だけで cd
setopt HIST_IGNORE_DUPS SHARE_HISTORY      # 重複を残さない・端末間で履歴を共有
bindkey -e                                 # emacs 風のキー操作
PROMPT='%F{green}%n@%m%f:%F{blue}%~%f$ '
zsh ならではの書き方意味
ls **/*.mdサブディレクトリまで一致(設定なしで使える)
ls *(.) / ls *(/)ファイルだけ / ディレクトリだけ
ls *(om[1,5])更新日時の新しい順に5個
cd -<Tab>最近のディレクトリから選ぶ

complete補完を足す

Tab キーの補完候補を追加します。

bash
$ complete -W "start stop restart status" myctl      # 候補を固定で指定
$ complete -F _git g                                   # 別名 g にも git の補完を使う
$ source <(kubectl completion bash)                    # ツールが用意している補完を読み込む

bindキー操作を変える(bash)

bash のキーの割り当てを変えます。

bash
$ bind '"\e[A": history-search-backward'   # ↑ で入力途中に一致する履歴だけたどる
$ bind '"\e[B": history-search-forward'
$ bind -P | head                           # 今の割り当ての一覧

tput端末の情報と色

文字の色や太字、端末の幅などを扱います。

bash
$ tput cols; tput lines          # 端末の幅と高さ
$ echo "$(tput setaf 2)成功$(tput sgr0)"      # 緑の文字(sgr0 で元に戻す)
$ echo "$(tput bold)太字$(tput sgr0)"
$ tput colors                    # 使える色の数

直接エスケープシーケンスで書く方法もあります。

bash
$ printf '\e[31m赤\e[0m \e[1;32m太い緑\e[0m \e[38;2;255;160;0mオレンジ(24bit)\e[0m\n'

stty端末の設定

端末の設定を表示・変更します。

bash
$ stty size                 # 行数と桁数
$ stty -echo; read pw; stty echo    # 入力を表示しない
$ stty sane                 # おかしくなった端末を元に戻す

reset表示が崩れた端末を直す

バイナリを cat して文字化けしたときなどに実行します(入力が見えなくても打てば効きます)。

bash
$ reset

script端末の操作をまるごと記録する

端末での操作と出力を、まるごとファイルに記録します。

bash
$ script -q session.log       # 以降の入出力を記録(exit で終了)
$ script -T timing.log -q session.log
$ scriptreplay timing.log session.log   # 記録を再生する

dircolorsls の色の設定

ls で表示される色を設定します。

bash
$ dircolors -p > ~/.dircolors    # 設定を書き出して編集する
$ eval "$(dircolors ~/.dircolors)"

kittyGPUで描く高速な端末

Ubuntu には最初から入っていません。 で入れられます。

GPU で描画する高速な端末アプリです。

bash
$ kitty +kitten icat photo.png         # 端末の中に画像を表示
$ kitty +kitten themes                 # 配色を選ぶ
$ kitty +kitten ssh user@host          # 相手側でも kitty の機能が使える ssh
$ kitty @ launch --type=tab            # 新しいタブ(allow_remote_control が必要)

設定は ~/.config/kitty/kitty.conf に書きます。Ctrl+Shift+F2 で設定ファイルを開けます。