- ナビゲーション(トップへ戻る)
- 1. プロンプトジェネレータ
- 2. カスタムコマンド補完
- 3. 履歴補完
- 4. 最近の履歴
- 5. コマンドが見つからない場合
- 6. history
- 7. 色付きman
- 8. LESS_TERMCAP_*変数に関するドキュメント?
- 8.1 TerminfoとTermcap(詳細情報)
- 9. その他の便利な.bashrc設定
この記事では、Arch Linuxにおけるbashの基本的な設定について紹介します。
参考: Arch Wiki - Bash
1. プロンプトジェネレータ
PS1ジェネレータ - ドラッグ&ドロップインターフェースを使って.bashrc / PS1 bashプロンプトを生成します。
例: 時刻、パス、改行、前回のコマンドの終了コード、標準プロンプト、スペース
PS1="\[\\A\]\\w\\n\\$?\\\\$ \\\[$(tput sgr0)\\\]"
カラー版:
PS1="\[\\\[$(tput sgr0)\\\]\\\[$(tput bold)\\\]\\\[\\033\[38;5;208m\\\]\\A\\\[$(tput sgr0)\\\]\]\\\[$(tput sgr0)\\\]\\\[\\033\[38;5;81m\\\]\\w\\\[$(tput sgr0)\\\]\\n\\$?\\\\$ \\\[$(tput sgr0)\\\]"
終了コードを時刻の後に表示:
PS1="\[\\\[$(tput sgr0)\\\]\\\[$(tput bold)\\\]\\\[\\033\[38;5;202m\\\]\\A\\\[$(tput sgr0)\\\]\]\\\[$(tput sgr0)\\\]\\\[\\033\[38;5;205m\\\]\\$?\\\[$(tput sgr0)\\\] \\\[$(tput sgr0)\\\]\\\[\\033\[38;5;87m\\\]\\w\\\[$(tput sgr0)\\\]\\n\\\\$ \\\[$(tput sgr0)\\\]"
2. カスタムコマンド補完
注意:complete機能はbash-completionと競合する可能性があります。
Bashでは通常、Tabキーを押すとファイル名のみが補完されます。complete -cコマンドにより、特定のコマンドに対して補完をコマンドとして指定できます。例えば:
complete -c sudo
または、complete -cfを使用して、補完をコマンドとファイルの両方として定義できます。
3. 履歴補完
Bashの履歴内での検索に上下キーを割り当てることができます(Readline (簡体字中国語)#履歴とReadline起動ファイル構文を参照):
~/.bashrc
bind '"\\e\[A": history-search-backward'
bind '"\\e\[B": history-search-forward'
または、すべてのReadlineプログラムに適用するには:
~/.inputrc
"\\e\[A": history-search-backward
"\\e\[B": history-search-forward
4. 最近の履歴
HISTCONTROL変数は特定のコマンドを履歴に記録しないように設定できます。例えば、重複したコマンドを無視するように設定できます。
~/.bashrc
export HISTCONTROL=ignoredups
HISTCONTROLは、HISTIGNOREと同様に、特定の履歴を除外するために使用されます。
- HISTCONTROL=ignoredups:連続した重複コマンドを無視
- HISTCONTROL=ignorespace:先頭が空白文字のコマンドを無視
- HISTCONTROL=ignoreboth:上記2つを同時に無視
- HISTCONTROL=erasedups:すべての履歴から重複を削除
5. コマンドが見つからない場合
pkgfileは「コマンドが見つからない」時に、公式ソフトウェアパッケージを自動的に検索するフックを提供します。
このフックを有効にするには、以下のように設定してください:
~/.bashrc
source /usr/share/doc/pkgfile/command-not-found.bash
6. history
export HISTFILESIZE=20000
export HISTSIZE=10000
$ echo $HISTFILE
/home/tom/.bash_history
※このファイルを直接編集することで履歴を変更できます。
$ echo $HISTFILESIZE
20000
$ echo $HISTSIZE
10000
7. 色付きman
export LESS_TERMCAP_mb=$(tput bold; tput setaf 2) # green
export LESS_TERMCAP_md=$(tput bold; tput setaf 6) # cyan
export LESS_TERMCAP_me=$(tput sgr0)
export LESS_TERMCAP_so=$(tput bold; tput setaf 3; tput setab 4) # yellow on blue
export LESS_TERMCAP_se=$(tput rmso; tput sgr0)
export LESS_TERMCAP_us=$(tput smul; tput bold; tput setaf 7) # white
export LESS_TERMCAP_ue=$(tput rmul; tput sgr0)
export LESS_TERMCAP_mr=$(tput rev)
export LESS_TERMCAP_mh=$(tput dim)
export LESS_TERMCAP_ZN=$(tput ssubm)
export LESS_TERMCAP_ZV=$(tput rsubm)
export LESS_TERMCAP_ZO=$(tput ssupm)
export LESS_TERMCAP_ZW=$(tput rsupm)
export GROFF_NO_SGR=1 # For Konsole and Gnome-terminal
略語の対照表。詳細は $ man terminfo を参照してください。
| termcap | terminfo | 説明 | cn |
|---|---|---|---|
| ks | smkx | キーパッドをコマンド送信モードにする | キーパッドがコマンドを送信するようにする |
| ke | rmkx | キーパッドを数値送信モードにする | キーパッドが数値を送信するようにする |
| vb | flash | 視覚ベルを発生させる | 視覚ベルを発生 |
| mb | blink | 点滅開始 | 点滅開始 |
| md | bold | 太字開始 | 太字開始 |
| me | sgr0 | 太字、点滅、下線を解除 | 太字、点滅、下線を解除 |
| so | smso | 強調表示開始(反転表示) | 強調表示開始 |
| se | rmso | 強調表示終了 | 強調表示終了 |
| us | smul | 下線開始 | 下線開始 |
| ue | rmul | 下線終了 | 下線終了 |
8. LESS_TERMCAP_*変数に関するドキュメント?
参考:Stack Overflow: Documentation on less termcap variables
8.1 TerminfoとTermcap(詳細情報)
Terminfo(以前のTermcap)は、端末機能やその他の情報を含むデータベースです。各端末モデルについて、アプリケーションがその端末が何ができるかを示します。端末に送られるエスケープシーケンス(または制御文字)を示し、カーソルの移動、画面のクリア、スクロール、モード変更、外観の変更(色、明るさ、点滅、下線、反転表示など)を行うことができます。
terminfoの略語は通常、termcapよりも長いため、意味が推測しやすくなります。terminfoのマニュアルページはより詳細で、古いtermcapの略語も含まれています。また、termcap項目にはterminfoには存在しないサイズ制限があります。そのため、すでにtermcapを使用している場合を除き、terminfoの使用を推奨します。
現在使用中の端末(PCモニターを含む)のデータベースを表示するには、「infocmp」と入力してください。これにより、その端末のソースとなるterminfoファイルが表示されます。
1 $ infocmp
2 # Reconstructed via infocmp from file: /usr/share/terminfo/x/xterm-256color
3 xterm-256color|xterm with 256 colors,
4 am, bce, ccc, km, mc5i, mir, msgr, npc, xenl,
5 colors#0x100, cols#80, it#8, lines#24, pairs#0x10000,
6 acsc=``aaffggiijjkkllmmnnooppqqrrssttuuvvwwxxyyzz{{||}}~~,
7 bel=^G, blink=\E[5m, bold=\E[1m, cbt=\E[Z, civis=\E[?25l,
8 clear=\E[H\E[2J, cnorm=\E[?12l\E[?25h, cr=\r,
9 csr=\E[%i%p1%d;%p2%dr, cub=\E[%p1%dD, cub1=^H,
10 cud=\E[%p1%dB, cud1=\n, cuf=\E[%p1%dC, cuf1=\E[C,
11 cup=\E[%i%p1%d;%p2%dH, cuu=\E[%p1%dA, cuu1=\E[A,
12 cvvis=\E[?12;25h, dch=\E[%p1%dP, dch1=\E[P, dim=\E[2m,
13 dl=\E[%p1%dM, dl1=\E[M, ech=\E[%p1%dX, ed=\E[J, el=\E[K,
14 el1=\E[1K, flash=\E[?5h$<100/>\E[?5l, home=\E[H,
15 hpa=\E[%i%p1%dG, ht=^I, hts=\EH, ich=\E[%p1%d@,
16 il=\E[%p1%dL, il1=\E[L, ind=\n, indn=\E[%p1%dS,
17 initc=\E]4;%p1%d;rgb\:%p2%{255}%*%{1000}%/%2.2X/%p3%{255}%*%{1000}%/%2.2X/%p4%{255}%*%{1000}%/%2.2X\E\\,
18 invis=\E[8m, is2=\E[!p\E[?3;4l\E[4l\E>, kDC=\E[3;2~,
19 kEND=\E[1;2F, kHOM=\E[1;2H, kIC=\E[2;2~, kLFT=\E[1;2D,
20 kNXT=\E[6;2~, kPRV=\E[5;2~, kRIT=\E[1;2C, ka1=\EOw,
21 ka3=\EOy, kb2=\EOu, kbs=^H, kc1=\EOq, kc3=\EOs, kcbt=\E[Z,
22 kcub1=\EOD, kcud1=\EOB, kcuf1=\EOC, kcuu1=\EOA,
23 kdch1=\E[3~, kend=\EOF, kent=\EOM, kf1=\EOP, kf10=\E[21~,
24 kf11=\E[23~, kf12=\E[24~, kf13=\E[1;2P, kf14=\E[1;2Q,
25 kf15=\E[1;2R, kf16=\E[1;2S, kf17=\E[15;2~, kf18=\E[17;2~,
26 kf19=\E[18;2~, kf2=\EOQ, kf20=\E[19;2~, kf21=\E[20;2~,
27 kf22=\E[21;2~, kf23=\E[23;2~, kf24=\E[24;2~,
28 kf25=\E[1;5P, kf26=\E[1;5Q, kf27=\E[1;5R, kf28=\E[1;5S,
29 kf29=\E[15;5~, kf3=\EOR, kf30=\E[17;5~, kf31=\E[18;5~,
30 kf32=\E[19;5~, kf33=\E[20;5~, kf34=\E[21;5~,
31 kf35=\E[23;5~, kf36=\E[24;5~, kf37=\E[1;6P, kf38=\E[1;6Q,
32 kf39=\E[1;6R, kf4=\EOS, kf40=\E[1;6S, kf41=\E[15;6~,
33 kf42=\E[17;6~, kf43=\E[18;6~, kf44=\E[19;6~,
34 kf45=\E[20;6~, kf46=\E[21;6~, kf47=\E[23;6~,
35 kf48=\E[24;6~, kf49=\E[1;3P, kf5=\E[15~, kf50=\E[1;3Q,
36 kf51=\E[1;3R, kf52=\E[1;3S, kf53=\E[15;3~, kf54=\E[17;3~,
37 kf55=\E[18;3~, kf56=\E[19;3~, kf57=\E[20;3~,
38 kf58=\E[21;3~, kf59=\E[23;3~, kf6=\E[17~, kf60=\E[24;3~,
39 kf61=\E[1;4P, kf62=\E[1;4Q, kf63=\E[1;4R, kf7=\E[18~,
40 kf8=\E[19~, kf9=\E[20~, khome=\EOH, kich1=\E[2~,
41 kind=\E[1;2B, kmous=\E[<, knp=\E[6~, kpp=\E[5~,
42 kri=\E[1;2A, mc0=\E[i, mc4=\E[4i, mc5=\E[5i, meml=\El,
43 memu=\Em, mgc=\E[?69l, oc=\E]104\007, op=\E[39;49m, rc=\E8,
44 rep=%p1%c\E[%p2%{1}%-%db, rev=\E[7m, ri=\EM,
45 rin=\E[%p1%dT, ritm=\E[23m, rmacs=\E(B, rmam=\E[?7l,
46 rmcup=\E[?1049l\E[23;0;0t, rmir=\E[4l, rmkx=\E[?1l\E>,
47 rmm=\E[?1034l, rmso=\E[27m, rmul=\E[24m,
48 rs1=\Ec\E]104\007, rs2=\E[!p\E[?3;4l\E[4l\E>, sc=\E7,
49 setab=\E[%?%p1%{8}%<%t4%p1%d%e%p1%{16}%<%t10%p1%{8}%-%d%e48;5;%p1%d%;m,
50 setaf=\E[%?%p1%{8}%<%t3%p1%d%e%p1%{16}%<%t9%p1%{8}%-%d%e38;5;%p1%d%;m,
51 sgr=%?%p9%t\E(0%e\E(B%;\E[0%?%p6%t;1%;%?%p5%t;2%;%?%p2%t;4%;%?%p1%p3%|%t;7%;%?%p4%t;5%;%?%p7%t;8%;m,
52 sgr0=\E(B\E[m, sitm=\E[3m, smacs=\E(0, smam=\E[?7h,
53 smcup=\E[?1049h\E[22;0;0t,
54 smglr=\E[?69h\E[%i%p1%d;%p2%ds, smir=\E[4h,
55 smkx=\E[?1h\E=, smm=\E[?1034h, smso=\E[7m, smul=\E[4m,
56 tbc=\E[3g, u6=\E[%i%d;%dR, u7=\E[6n,
57 u8=\E[?%[;0123456789]c, u9=\E[c, vpa=\E[%i%p1%dd,
参考:Wikipedia: Termcap
参考:Wikipedia: Terminfo
Terminfoは、表示端末をデバイスに依存せず使用できるライブラリおよびデータベースです。terminfoデータベースは数百の異なる表示端末の機能を記述でき、外部プログラムが端末の種類に関係なく文字ベースの表示出力を持つことができます。一部の設定は以下の通りです:
- 画面の行数
- モノクロモード:色を抑制
- ベル音の代わりに可視ベルを使用
terminfoデータベースは1つ以上の端末記述で構成されています。
ReadlineはGNUプロジェクトのライブラリであり、Bashや他のCLIインターフェースプログラムでコマンドラインの編集とインタラクションに使用されます。詳細についてはreadline(3)を参照してください。
9. その他の便利な.bashrc設定
参考:ServerFault: What useful things can one add to one's bashrc?
参考:Ubuntu Forums: Useful bashrc settings