CentOsでbashの設定をする①
はじめに
くーばねてすをやっつけるためにLinuxさんと仲良くしはじめた。Linuxさんとさらに仲良くなるために自分が使いやすくなるようなシェルの環境を設定することにした。くーばねてす倒す。
概要
■エイリアス~いつも使っているコマンドにあだ名をつける~
■bashのオプション設定をする
をまとめた
エイリアス~いつも使っているコマンドにあだ名をつける~
既存のコマンドにあだ名をつけて実行できるようにしようと思う。
えっ、そんな機能あったの?って思った。
■エイリアスとは
オプション指定の多いコマンドに短縮名を付けてコマンドを使いやすくする機能。
■エイリアスでの設定
$ alias 名前=コマンド
めっちゃ楽じゃん!!!
ディストリビューションによってはrmコマンドなど削除確認してほしいコマンドに-iをつけてくれる設定になっているものもある。
■エイリアスの確認
使っているコマンドがエイリアスなのかそうでないのか確認したい時は
$ type 確認したいコマンド
↓cdとrmとlsを確認してみた
$ type cd
cd is a shell builtin
$ type rm
rm is aliased to `rm -i'
$ type ls
ls is aliased to `ls --color=auto'
なんか色々出てきた!
私何にもいじってなかったけどおまえらそんな設定だったのか。
■エイリアスを削除する
$ unalias エイリアス名
bashのオプション設定をする
bashではシェルの色んな便利機能を使うことができる。オプションはそれぞれオンかオフで各機能ごとに設定できる。
■例えばどんな機能があるの?
・history コマンド履歴を有効にする(対話シェルではデフォルトで有効)
・noglob 「*」などによるパス名展開を無効にする
・verbose シェルの入力行を表示する
たくさんある。シェルオプションは、
setコマンドで設定できるものと、
shoptコマンドで設定できるものに分かれている。
■setコマンド
↓bashオプション一覧と有効か無効か確認
$ set -o(※+oでもわかる)
allexport off
braceexpand on
emacs on
errexit off
errtrace off
functrace off
hashall on
histexpand on
history on
ignoreeof off
interactive-comments on
keyword off
monitor on
noclobber off
noexec off
noglob off
nolog off
notify off
nounset off
onecmd off
physical off
pipefail off
posix off
privileged off
verbose off
vi off
xtrace off
※なんかわからないけど色々出てきた!まだまだ使ってない機能がたくさんあって使いこなせてないな!って思った!
↓bashオプションの有効、無効を切り替える
$ set -o(もしくは+o) シェルオプション名
紛らわしいのが、
-oで有効化
+oで無効化
※逆でセット?って覚えた!
↓よく使われるsetコマンドオプション
ignoreeof Ctrl + D を間違えて押してもシェルを終了しない
noclobber すでに存在するファイルをリダイレクトで上書き保存しない
noglob パス名展開を無効にする。*はそのまま*になる。
終了しないを有効、保存しないを有効、無効にするを有効?って感じで設定するのかな?
■shoptコマンド
shoptコマンドはsetコマンドと一緒でオプションをオン、オフするコマンド。
↓bashオプションの有効、無効を切り替える
$ shopt -s(もしくは-u) シェルオプション名
こちらは-sで有効化、-uで無効化になる!
↓シェルオプションの設定状況を一覧表示する
$ shopt -p
shopt -u autocd
shopt -u cdable_vars
shopt -u cdspell
shopt -u checkhash
shopt -u checkjobs
shopt -s checkwinsize
shopt -s cmdhist
shopt -u compat31
shopt -u compat32
shopt -u compat40
shopt -u compat41
shopt -u direxpand
shopt -u dirspell
shopt -u dotglob
shopt -u execfail
shopt -s expand_aliases
shopt -u extdebug
shopt -s extglob
shopt -s extquote
shopt -u failglob
shopt -s force_fignore
shopt -u globstar
shopt -u gnu_errfmt
shopt -s histappend
shopt -u histreedit
shopt -u histverify
shopt -u hostcomplete
shopt -u huponexit
shopt -s interactive_comments
shopt -u lastpipe
shopt -u lithist
shopt -s login_shell
shopt -u mailwarn
shopt -u no_empty_cmd_completion
shopt -u nocaseglob
shopt -u nocasematch
shopt -u nullglob
shopt -s progcomp
shopt -s promptvars
shopt -u restricted_shell
shopt -u shift_verbose
shopt -s sourcepath
shopt -u syslog_history
shopt -u xpg_echo
いっぱいあるなぁ('_')ショプトピー!
ちなみに、
$ shopt -o setコマンドオプション名
で「set -o」で指定できるシェルオプションを対象にする。
なんで2つにそもそも分けてしまったの?
↓よく使うshoptコマンドオプション一覧
autocd ディレクトリ名のコマンドを実行するとそれがcdコマンドの引数に指定されたとして実行される
dotglf *や?を使ったパス名の展開に.ではじまるファイルも含める
cdspell cdコマンド実行時ちょっといしたスペルミスを許してくれる
globstar パス名展開で**を使うとサブディレクトリまで含めてすべてのファイルにマッチする
histappend bashを終了する時履歴ファイルにコマンド履歴を追記し上書きしない
cdspellめっちゃいいじゃん!って思った。
まとめ
ここまで勉強しなくても使いこなせないよ~と思った。でもcdspellは常に有効化しようと思った。
おすすめオプションがあったら教えてください。
Discussion