💩

CentOsでbashの設定をする①

2020/12/29に公開

はじめに

くーばねてすをやっつけるために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