,2009 年 8 月}\\
6 | \codelnr{\ 6\ }\\
7 | \codelnr{\ 7\ }\codeStatement{cd}\codePreProc{()}\\
8 | \codelnr{\ 8\ }\codeSpecial{\{}\\
9 | \codelnr{\ 9\ }\tab{}\codeStatement{if }\codeSpecial{[[} \codePreProc{\$1} \codeStatement{=}\textasciitilde{} \textasciicircum{}(\codeStatement{[}+-\codeStatement{]})(\codeStatement{[}\codeConstant{0-9}\codeStatement{]}*)\$ \codeSpecial{]]}\\
10 | \codelnr{10\ }\tab{}\codeStatement{then}\\
11 | \codelnr{11\ }\tab{}\tab{}\codeIdentifier{CDR}=\codePreProc{\$(}\codeSpecial{ }\codeStatement{expr}\codeSpecial{ }\codePreProc{\$CDR}\codeSpecial{ }\codePreProc{\$\{}\codePreProc{BASH\_REMATCH}\codePreProc{[}\codeConstant{1}\codePreProc{]}\codePreProc{\}}\codeSpecial{ }\codePreProc{\$\{}\codePreProc{BASH\_REMATCH}\codePreProc{[}\codeConstant{2}\codePreProc{]}\codeStatement{:-}1\codePreProc{\}}\codeSpecial{ }\codePreProc{)}\\
12 | \codelnr{12\ }\tab{}\tab{}\codeSpecial{[[} \codePreProc{\$CDR} \codeStatement{-lt} \codeConstant{1} \codeSpecial{]]} \codeStatement{\&\&} \codeIdentifier{CDR}=\codeConstant{1}\\
13 | \codelnr{13\ }\tab{}\tab{}\codeSpecial{[[} \codePreProc{\$CDR} \codeStatement{-gt} \codePreProc{\$\{\#}\codePreProc{CDP}\codePreProc{[}@\codePreProc{]}\codePreProc{\}} \codeSpecial{]]} \codeStatement{\&\&} \codeIdentifier{CDR}=\codePreProc{\$\{\#}\codePreProc{CDP}\codePreProc{[}@\codePreProc{]}\codePreProc{\}}\\
14 | \codelnr{14\ }\tab{}\tab{}\codeIdentifier{I}=\codePreProc{\$((}\codePreProc{\$CDR}\codeConstant{-1}\codePreProc{))}\\
15 | \codelnr{15\ }\tab{}\tab{}\codeStatement{builtin} \codeStatement{cd} \codePreProc{\$\{}\codePreProc{CDP}\codePreProc{[}\codePreProc{\$I}\codePreProc{]}\codePreProc{\}}\\
16 | \codelnr{16\ }\tab{}\codeStatement{elif} \codeSpecial{[[} \codePreProc{\$1} \codeStatement{=}\textasciitilde{} \textasciicircum{}\codeStatement{[}+\codeStatement{][}+\codeStatement{]}(\codeStatement{[}\codeConstant{0-9}\codeStatement{]}*)\$ \codeSpecial{]]}\\
17 | \codelnr{17\ }\tab{}\codeStatement{then}\\
18 | \codelnr{18\ }\tab{}\tab{}\codeIdentifier{CDR}=\codePreProc{\$\{}\codePreProc{BASH\_REMATCH}\codePreProc{[}\codeConstant{1}\codePreProc{]}\codeStatement{:-}1\codePreProc{\}}\\
19 | \codelnr{19\ }\tab{}\tab{}\codeSpecial{[[} \codePreProc{\$CDR} \codeStatement{-lt} \codeConstant{1} \codeSpecial{]]} \codeStatement{\&\&} \codeIdentifier{CDR}=\codeConstant{1}\\
20 | \codelnr{20\ }\tab{}\tab{}\codeSpecial{[[} \codePreProc{\$CDR} \codeStatement{-gt} \codePreProc{\$\{\#}\codePreProc{CDP}\codePreProc{[}@\codePreProc{]}\codePreProc{\}} \codeSpecial{]]} \codeStatement{\&\&} \codeIdentifier{CDR}=\codePreProc{\$\{\#}\codePreProc{CDP}\codePreProc{[}@\codePreProc{]}\codePreProc{\}}\\
21 | \codelnr{21\ }\tab{}\tab{}\codeIdentifier{I}=\codePreProc{\$((}\codePreProc{\$CDR}\codeConstant{-1}\codePreProc{))}\\
22 | \codelnr{22\ }\tab{}\tab{}\codeStatement{builtin} \codeStatement{cd} \codePreProc{\$\{}\codePreProc{CDP}\codePreProc{[}\codePreProc{\$I}\codePreProc{]}\codePreProc{\}}\\
23 | \codelnr{23\ }\tab{}\codeStatement{elif} \codeSpecial{[[} \codePreProc{\$1} \codeStatement{==} \codeStatement{-i} \codeSpecial{]]}\\
24 | \codelnr{24\ }\tab{}\codeStatement{then}\\
25 | \codelnr{25\ }\tab{}\tab{}\codeStatement{unset} CDP\\
26 | \codelnr{26\ }\tab{}\tab{}CDP\codeStatement{[}\codeConstant{0}\codeStatement{]}\codeStatement{=}\codePreProc{\$PWD}\\
27 | \codelnr{27\ }\tab{}\tab{}\codeIdentifier{CDR}=\codeConstant{1}\\
28 | \codelnr{28\ }\tab{}\codeStatement{elif} \codeSpecial{[[} \codePreProc{\$1} \codeStatement{==} \codeStatement{-l} \codeSpecial{]]}\\
29 | \codelnr{29\ }\tab{}\codeStatement{then}\\
30 | \codelnr{30\ }\tab{}\tab{}\codeIdentifier{I}=\codeConstant{0}\\
31 | \codelnr{31\ }\tab{}\tab{}\codeStatement{for }item \codeStatement{in} \codePreProc{\$\{}\codePreProc{CDP}\codePreProc{[}@\codePreProc{]}\codePreProc{\}}\\
32 | \codelnr{32\ }\tab{}\tab{}\codeStatement{do}\\
33 | \codelnr{33\ }\tab{}\tab{}\tab{}\codeIdentifier{I}=\codePreProc{\$((}\codePreProc{\$I}\codeSpecial{+}\codeConstant{1}\codePreProc{))}\\
34 | \codelnr{34\ }\tab{}\tab{}\tab{}\codeStatement{echo} \codeStatement{-n} \codeStatement{[}\codePreProc{\$I}\codeStatement{]}\\
35 | \codelnr{35\ }\tab{}\tab{}\tab{}\codeStatement{if }\codeSpecial{[[} \codePreProc{\$I} \codeStatement{-eq} \codePreProc{\$CDR} \codeSpecial{]]}\\
36 | \codelnr{36\ }\tab{}\tab{}\tab{}\codeStatement{then}\\
37 | \codelnr{37\ }\tab{}\tab{}\tab{}\tab{}\codeStatement{echo} \codeStatement{-n} \codeStatement{\char13{}}\codeConstant{*}\codeStatement{\char13{}}\\
38 | \codelnr{38\ }\tab{}\tab{}\tab{}\codeStatement{else}\\
39 | \codelnr{39\ }\tab{}\tab{}\tab{}\tab{}\codeStatement{echo} \codeStatement{-n} \codeStatement{\char13{}}\codeConstant{ }\codeStatement{\char13{}}\\
40 | \codelnr{40\ }\tab{}\tab{}\tab{}\codeStatement{fi}\\
41 | \codelnr{41\ }\tab{}\tab{}\tab{}\codeStatement{echo} \codeStatement{-n} \codeStatement{\char13{}}\codeConstant{ }\codeStatement{\char13{}}\\
42 | \codelnr{42\ }\tab{}\tab{}\tab{}\codeStatement{echo} \codePreProc{\$item}\\
43 | \codelnr{43\ }\tab{}\tab{}\codeStatement{done}\\
44 | \codelnr{44\ }\tab{}\codeStatement{else}\\
45 | \codelnr{45\ }\tab{}\tab{}\codeStatement{builtin} \codeStatement{cd} \codePreProc{\$@}\\
46 | \codelnr{46\ }\tab{}\tab{}CDP\codeStatement{[}\codePreProc{\$CDR}\codeStatement{]}\codeStatement{=}\codePreProc{\$PWD}\\
47 | \codelnr{47\ }\tab{}\tab{}\codeIdentifier{CDR}=\codePreProc{\$((}\codePreProc{\$CDR}\codeSpecial{ + }\codeConstant{1}\codePreProc{))}\\
48 | \codelnr{48\ }\tab{}\codeStatement{fi}\\
49 | \codelnr{49\ }\codeSpecial{\}}
50 |
--------------------------------------------------------------------------------
/frontcover.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/JerryFleming/bashdoc/HEAD/frontcover.png
--------------------------------------------------------------------------------
/frontcover.psd:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/JerryFleming/bashdoc/HEAD/frontcover.psd
--------------------------------------------------------------------------------
/frontcover.xcf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/JerryFleming/bashdoc/HEAD/frontcover.xcf
--------------------------------------------------------------------------------
/geofuture.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/JerryFleming/bashdoc/HEAD/geofuture.png
--------------------------------------------------------------------------------
/geofuture_h.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/JerryFleming/bashdoc/HEAD/geofuture_h.png
--------------------------------------------------------------------------------
/inputrc.sh:
--------------------------------------------------------------------------------
1 | # vim:filetype=readline
2 | #
3 | # 本文件控制所有使用 readline 库的程序的行输入行为。
4 | # 这些程序包括 FTP,Bash 和 GDB。
5 | #
6 | # 可以用 C-x C-r 命令重新加载该文件。
7 | # 以 '#' 开头的行是注释。
8 | #
9 | # 首先,包含 /etc/Inputrc 中的任何系统绑定和变量。
10 | $include /etc/Inputrc
11 | #
12 | # 设置 emacs 风格的绑定。
13 | set editing-mode emacs
14 |
15 | $if mode=emacs
16 | Meta-Control-h: backward-kill-word 命令后面的文本会被忽略掉
17 | #
18 | # 小键盘上的方向键
19 | #
20 | #"\M-OD": backward-char
21 | #"\M-OC": forward-char
22 | #"\M-OA": previous-history
23 | #"\M-OB": next-history
24 | #
25 | # ANSI 模式的方向键
26 | #
27 | "\M-[D": backward-char
28 | "\M-[C": forward-char
29 | "\M-[A": previous-history
30 | "\M-[B": next-history
31 | #
32 | # 八位小键盘上的方向键
33 | #
34 | #"\M-\C-OD": backward-char
35 | #"\M-\C-OC": forward-char
36 | #"\M-\C-OA": previous-history
37 | #"\M-\C-OB": next-history
38 | #
39 | # 八位 ANSI 模式的方向键
40 | #
41 | #"\M-\C-[D": backward-char
42 | #"\M-\C-[C": forward-char
43 | #"\M-\C-[A": previous-history
44 | #"\M-\C-[B": next-history
45 | C-q: quoted-insert
46 | $endif
47 |
48 | # 旧式的绑定。这恰好也是默认的。
49 | TAB: complete
50 | # 便于 shell 交互的宏。
51 |
52 | $if Bash
53 | # 编辑 PATH 路径
54 | "\C-xp": "PATH=${PATH}\e\C-e\C-a\ef\C-f"
55 | # 准备输入引用的单词:插入引号的开始和结束,然后移到开始引号的后面。
56 | "\C-x\"": "\"\"\C-b"
57 | # 插入反斜杠(测试反斜杠转义序列和宏)。
58 | "\C-x\\": "\\"
59 | # 用引号引用当前或前一个单词。
60 | "\C-xq": "\eb\"\ef\""
61 | # 绑定刷新本行的命令;这原来是没有绑定的。
62 | "\C-xr": redraw-current-line
63 | # 编辑本行中的变量。
64 | "\M-\C-v": "\C-a\C-k$\C-y\M-\C-e\C-a\C-y="
65 | $endif
66 |
67 | # 如果可以响铃就使用
68 | set bell-style visible
69 | # 读取输入时不要把字符截成 7 位。
70 | set input-meta on
71 | # 允许插入 iso-latin1 字符,而不是把它们变成 Meta 化的序列。
72 | set convert-meta off
73 | # 直接显示八位的字符,而不是把它们当成 Meta 化的字符来显示。
74 | set output-meta on
75 | # 如果可以补全的项目超过 150 条,询问用户是否要显示全部。
76 | set completion-query-items 150
77 |
78 | # 用于 FTP
79 | $if Ftp
80 | "\C-xg": "get \M-?"
81 | "\C-xt": "put \M-?"
82 | "\M-.": yank-last-arg
83 | $endif
84 |
--------------------------------------------------------------------------------
/inputrc.tex:
--------------------------------------------------------------------------------
1 | \codelnr{\ 1\ }\codeComment{\# vim:filetype=readline}\\
2 | \codelnr{\ 2\ }\codeComment{\#}\\
3 | \codelnr{\ 3\ }\codeComment{\# 本文件控制所有使用 readline 库的程序的行输入行为。}\\
4 | \codelnr{\ 4\ }\codeComment{\# 这些程序包括 FTP,Bash 和 GDB。}\\
5 | \codelnr{\ 5\ }\codeComment{\#}\\
6 | \codelnr{\ 6\ }\codeComment{\# 可以用 C-x C-r 命令重新加载该文件。}\\
7 | \codelnr{\ 7\ }\codeComment{\# 以 \char13{}\#\char13{} 开头的行是注释。}\\
8 | \codelnr{\ 8\ }\codeComment{\#}\\
9 | \codelnr{\ 9\ }\codeComment{\# 首先,包含 /etc/Inputrc 中的任何系统绑定和变量。}\\
10 | \codelnr{10\ }\codePreProc{\$include} /etc/Inputrc\\
11 | \codelnr{11\ }\codeComment{\#}\\
12 | \codelnr{12\ }\codeComment{\# 设置 emacs 风格的绑定。}\\
13 | \codelnr{13\ }\codeStatement{set} \codeType{editing-mode} \codeConstant{emacs}\\
14 | \codelnr{14\ }\\
15 | \codelnr{15\ }\codeStatement{\$if} \codeType{mode}=\codeConstant{emacs}\\
16 | \codelnr{16\ }\codeConstant{Meta-Control-h}\codeStatement{:} \codeType{backward-kill-word} 命令后面的文本会被忽略掉\\
17 | \codelnr{17\ }\codeComment{\#}\\
18 | \codelnr{18\ }\codeComment{\# 小键盘上的方向键}\\
19 | \codelnr{19\ }\codeComment{\#}\\
20 | \codelnr{20\ }\codeComment{\#"\textbackslash{}M-OD":\tab{}\tab{}backward-char}\\
21 | \codelnr{21\ }\codeComment{\#"\textbackslash{}M-OC":\tab{}\tab{}forward-char}\\
22 | \codelnr{22\ }\codeComment{\#"\textbackslash{}M-OA":\tab{}\tab{}previous-history}\\
23 | \codelnr{23\ }\codeComment{\#"\textbackslash{}M-OB":\tab{}\tab{}next-history}\\
24 | \codelnr{24\ }\codeComment{\#}\\
25 | \codelnr{25\ }\codeComment{\# ANSI 模式的方向键}\\
26 | \codelnr{26\ }\codeComment{\#}\\
27 | \codelnr{27\ }\codeConstant{"}\codeSpecial{\textbackslash{}M-}\codeConstant{[D"}\codeStatement{:}\tab{}\tab{}\codeType{backward-char}\\
28 | \codelnr{28\ }\codeConstant{"}\codeSpecial{\textbackslash{}M-}\codeConstant{[C"}\codeStatement{:}\tab{}\tab{}\codeType{forward-char}\\
29 | \codelnr{29\ }\codeConstant{"}\codeSpecial{\textbackslash{}M-}\codeConstant{[A"}\codeStatement{:}\tab{}\tab{}\codeType{previous-history}\\
30 | \codelnr{30\ }\codeConstant{"}\codeSpecial{\textbackslash{}M-}\codeConstant{[B"}\codeStatement{:}\tab{}\tab{}\codeType{next-history}\\
31 | \codelnr{31\ }\codeComment{\#}\\
32 | \codelnr{32\ }\codeComment{\# 八位小键盘上的方向键}\\
33 | \codelnr{33\ }\codeComment{\#}\\
34 | \codelnr{34\ }\codeComment{\#"\textbackslash{}M-\textbackslash{}C-OD":\tab{} backward-char}\\
35 | \codelnr{35\ }\codeComment{\#"\textbackslash{}M-\textbackslash{}C-OC":\tab{} forward-char}\\
36 | \codelnr{36\ }\codeComment{\#"\textbackslash{}M-\textbackslash{}C-OA":\tab{} previous-history}\\
37 | \codelnr{37\ }\codeComment{\#"\textbackslash{}M-\textbackslash{}C-OB":\tab{} next-history}\\
38 | \codelnr{38\ }\codeComment{\#}\\
39 | \codelnr{39\ }\codeComment{\# 八位 ANSI 模式的方向键 }\\
40 | \codelnr{40\ }\codeComment{\#}\\
41 | \codelnr{41\ }\codeComment{\#"\textbackslash{}M-\textbackslash{}C-[D":\tab{} backward-char}\\
42 | \codelnr{42\ }\codeComment{\#"\textbackslash{}M-\textbackslash{}C-[C":\tab{} forward-char}\\
43 | \codelnr{43\ }\codeComment{\#"\textbackslash{}M-\textbackslash{}C-[A":\tab{} previous-history}\\
44 | \codelnr{44\ }\codeComment{\#"\textbackslash{}M-\textbackslash{}C-[B":\tab{} next-history}\\
45 | \codelnr{45\ }\codeConstant{C-q}\codeStatement{:} \codeType{quoted-insert}\\
46 | \codelnr{46\ }\codeStatement{\$endif}\\
47 | \codelnr{47\ }\\
48 | \codelnr{48\ }\codeComment{\# 旧式的绑定。这恰好也是默认的。}\\
49 | \codelnr{49\ }\codeSpecial{TAB}\codeStatement{:} \codeType{complete}\\
50 | \codelnr{50\ }\codeComment{\# 便于 shell 交互的宏。}\\
51 | \codelnr{51\ }\\
52 | \codelnr{52\ }\codeStatement{\$if} Bash\\
53 | \codelnr{53\ }\codeComment{\# 编辑 PATH 路径}\\
54 | \codelnr{54\ }\codeConstant{"}\codeSpecial{\textbackslash{}C-}\codeConstant{xp"}\codeStatement{:} "PATH=\$\{PATH\}\textbackslash{}e\textbackslash{}C-e\textbackslash{}C-a\textbackslash{}ef\textbackslash{}C-f"\\
55 | \codelnr{55\ }\codeComment{\# 准备输入引用的单词:插入引号的开始和结束,然后移到开始引号的后面。}\\
56 | \codelnr{56\ }\codeConstant{"}\codeSpecial{\textbackslash{}C-}\codeConstant{x}\codeSpecial{\textbackslash{}"}\codeConstant{"}\codeStatement{:} "\textbackslash{}"\textbackslash{}"\textbackslash{}C-b"\\
57 | \codelnr{57\ }\codeComment{\# 插入反斜杠(测试反斜杠转义序列和宏)。}\\
58 | \codelnr{58\ }\codeConstant{"}\codeSpecial{\textbackslash{}C-}\codeConstant{x}\codeSpecial{\textbackslash{}\textbackslash{}}\codeConstant{"}\codeStatement{:} "\textbackslash{}\textbackslash{}"\\
59 | \codelnr{59\ }\codeComment{\# 用引号引用当前或前一个单词。}\\
60 | \codelnr{60\ }\codeConstant{"}\codeSpecial{\textbackslash{}C-}\codeConstant{xq"}\codeStatement{:} "\textbackslash{}eb\textbackslash{}"\textbackslash{}ef\textbackslash{}""\\
61 | \codelnr{61\ }\codeComment{\# 绑定刷新本行的命令;这原来是没有绑定的。}\\
62 | \codelnr{62\ }\codeConstant{"}\codeSpecial{\textbackslash{}C-}\codeConstant{xr"}\codeStatement{:} \codeType{redraw-current-line}\\
63 | \codelnr{63\ }\codeComment{\# 编辑本行中的变量。}\\
64 | \codelnr{64\ }\codeConstant{"}\codeSpecial{\textbackslash{}M-\textbackslash{}C-}\codeConstant{v"}\codeStatement{:} "\textbackslash{}C-a\textbackslash{}C-k\$\textbackslash{}C-y\textbackslash{}M-\textbackslash{}C-e\textbackslash{}C-a\textbackslash{}C-y="\\
65 | \codelnr{65\ }\codeStatement{\$endif}\\
66 | \codelnr{66\ }\\
67 | \codelnr{67\ }\codeComment{\# 如果可以响铃就使用}\\
68 | \codelnr{68\ }\codeStatement{set} \codeType{bell-style} \codeConstant{visible}\\
69 | \codelnr{69\ }\codeComment{\# 读取输入时不要把字符截成 7 位。}\\
70 | \codelnr{70\ }\codeStatement{set} \codeType{input-meta} \codeConstant{on}\\
71 | \codelnr{71\ }\codeComment{\# 允许插入 iso-latin1 字符,而不是把它们变成 Meta 化的序列。}\\
72 | \codelnr{72\ }\codeStatement{set} \codeType{convert-meta} \codeConstant{off}\\
73 | \codelnr{73\ }\codeComment{\# 直接显示八位的字符,而不是把它们当成 Meta 化的字符来显示。}\\
74 | \codelnr{74\ }\codeStatement{set} \codeType{output-meta} \codeConstant{on}\\
75 | \codelnr{75\ }\codeComment{\# 如果可以补全的项目超过 150 条,询问用户是否要显示全部。}\\
76 | \codelnr{76\ }\codeStatement{set} \codeType{completion-query-items} \codeConstant{150}\\
77 | \codelnr{77\ }\\
78 | \codelnr{78\ }\codeComment{\# 用于 FTP}\\
79 | \codelnr{79\ }\codeStatement{\$if} Ftp\\
80 | \codelnr{80\ }\codeConstant{"}\codeSpecial{\textbackslash{}C-}\codeConstant{xg"}\codeStatement{:} "get \textbackslash{}M-?"\\
81 | \codelnr{81\ }\codeConstant{"}\codeSpecial{\textbackslash{}C-}\codeConstant{xt"}\codeStatement{:} "put \textbackslash{}M-?"\\
82 | \codelnr{82\ }\codeConstant{"}\codeSpecial{\textbackslash{}M-}\codeConstant{."}\codeStatement{:} \codeType{yank-last-arg}\\
83 | \codelnr{83\ }\codeStatement{\$endif}
84 |
--------------------------------------------------------------------------------
/irc.sh:
--------------------------------------------------------------------------------
1 | if [ -n "$BASH_ENV" ]; then . "$BASH_ENV"; fi
2 |
--------------------------------------------------------------------------------
/irc.tex:
--------------------------------------------------------------------------------
1 | \codelnr{1\ }\codeStatement{if }\codeStatement{[} \codeStatement{-n} \codeStatement{"}\codePreProc{\$BASH\_ENV}\codeStatement{"} \codeStatement{]}\codeStatement{;} \codeStatement{then}\codeStatement{ . }\codeStatement{"}\codePreProc{\$BASH\_ENV}\codeStatement{";} \codeStatement{fi}
2 |
--------------------------------------------------------------------------------
/prompt.sh:
--------------------------------------------------------------------------------
1 | CL="\[\e[0m\]"
2 | GREEN="$CL\[\e[0;32m\]"
3 | BGREEN="$CL\[\e[0;32;1m\]"
4 | XORG="$CL\[\e[0;36m\]"
5 | XRED="$CL\[\e[0;35m\]"
6 | BRED="$CL\[\e[0;35;1m\]"
7 | ORG="$CL\[\e[0;33m\]"
8 | DARK_GRAY="$CL\[\e[1;30m\]"
9 | CYAN="$CL\[\e[1;36m\]"
10 | BLUE="$CL\[\e[1;34m\]"
11 |
12 | # 为了显示方便,下面一行用命令替换进行赋值。实际使用时应该用单引号。
13 | PROMPT_COMMAND=$(
14 | echo -ne "\033]0;${USER}@${HOSTNAME}: ${PWD}\007"
15 | NTTY=$(tty | cut -d"/" -f3-4)
16 | LS=$(ls | wc -l)
17 | LSA=$(ls -a | wc -l)
18 |
19 | L1a="$BLUE[$BGREEN\u$GREEN@\h:$NTTY\s$BLUE]$BLUE"
20 | L1b="$ORG\t$BLUE"
21 | L1c="$BLUE<$BRED\w$BLUE>$BLUE"
22 | L1d="($XRED$LS/$LSA$BLUE)$BLUE"
23 | L2="$CYAN\\\$$CL"
24 | export PS1="$L1a-$L1b-$L1c-$L1d-\n$L2 "
25 | #export PS1="[\u@\h:$NTTY\s]-\t-<\w:$LS/$LSA>-\n\\$ "
26 | history -a
27 | )
28 | # 实际使用时,上面一行也应该改成单引号
29 |
--------------------------------------------------------------------------------
/prompt.tex:
--------------------------------------------------------------------------------
1 | \codelnr{\ 1\ }\codeIdentifier{CL}=\codeStatement{"}\codeConstant{\textbackslash{}[}\codeSpecial{\textbackslash{}e}\codeConstant{[0m\textbackslash{}]}\codeStatement{"}\\
2 | \codelnr{\ 2\ }\codeIdentifier{GREEN}=\codeStatement{"}\codePreProc{\$CL}\codeConstant{\textbackslash{}[}\codeSpecial{\textbackslash{}e}\codeConstant{[0;32m\textbackslash{}]}\codeStatement{"}\\
3 | \codelnr{\ 3\ }\codeIdentifier{BGREEN}=\codeStatement{"}\codePreProc{\$CL}\codeConstant{\textbackslash{}[}\codeSpecial{\textbackslash{}e}\codeConstant{[0;32;1m\textbackslash{}]}\codeStatement{"}\\
4 | \codelnr{\ 4\ }\codeIdentifier{XORG}=\codeStatement{"}\codePreProc{\$CL}\codeConstant{\textbackslash{}[}\codeSpecial{\textbackslash{}e}\codeConstant{[0;36m\textbackslash{}]}\codeStatement{"}\\
5 | \codelnr{\ 5\ }\codeIdentifier{XRED}=\codeStatement{"}\codePreProc{\$CL}\codeConstant{\textbackslash{}[}\codeSpecial{\textbackslash{}e}\codeConstant{[0;35m\textbackslash{}]}\codeStatement{"}\\
6 | \codelnr{\ 6\ }\codeIdentifier{BRED}=\codeStatement{"}\codePreProc{\$CL}\codeConstant{\textbackslash{}[}\codeSpecial{\textbackslash{}e}\codeConstant{[0;35;1m\textbackslash{}]}\codeStatement{"}\\
7 | \codelnr{\ 7\ }\codeIdentifier{ORG}=\codeStatement{"}\codePreProc{\$CL}\codeConstant{\textbackslash{}[}\codeSpecial{\textbackslash{}e}\codeConstant{[0;33m\textbackslash{}]}\codeStatement{"}\\
8 | \codelnr{\ 8\ }\codeIdentifier{DARK\_GRAY}=\codeStatement{"}\codePreProc{\$CL}\codeConstant{\textbackslash{}[}\codeSpecial{\textbackslash{}e}\codeConstant{[1;30m\textbackslash{}]}\codeStatement{"}\\
9 | \codelnr{\ 9\ }\codeIdentifier{CYAN}=\codeStatement{"}\codePreProc{\$CL}\codeConstant{\textbackslash{}[}\codeSpecial{\textbackslash{}e}\codeConstant{[1;36m\textbackslash{}]}\codeStatement{"}\\
10 | \codelnr{10\ }\codeIdentifier{BLUE}=\codeStatement{"}\codePreProc{\$CL}\codeConstant{\textbackslash{}[}\codeSpecial{\textbackslash{}e}\codeConstant{[1;34m\textbackslash{}]}\codeStatement{"}\\
11 | \codelnr{11\ }\\
12 | \codelnr{12\ }\codeComment{\# 为了显示方便,下面一行用命令替换进行赋值。实际使用时应该用单引号。}\\
13 | \codelnr{13\ }\codeIdentifier{PROMPT\_COMMAND}=\codePreProc{\$(}\\
14 | \codelnr{14\ }\codeSpecial{\tab{}}\codeStatement{echo}\codeSpecial{ -ne }\codeStatement{"}\codeSpecial{\textbackslash{}033}\codeConstant{]0;}\codePreProc{\$\{}\codePreProc{USER}\codePreProc{\}}\codeConstant{@}\codePreProc{\$\{}\codePreProc{HOSTNAME}\codePreProc{\}}\codeConstant{: }\codePreProc{\$\{}\codePreProc{PWD}\codePreProc{\}}\codeSpecial{\textbackslash{}007}\codeStatement{"}\\
15 | \codelnr{15\ }\codeSpecial{\tab{}}\codeIdentifier{NTTY}=\codeSpecial{\$}\codeStatement{(}\codeStatement{tty}\codeSpecial{ }\codeStatement{|}\codeSpecial{ }\codeStatement{cut}\codeSpecial{ -d}\codeStatement{"}\codeConstant{/}\codeStatement{"}\codeSpecial{ -f3}\codeConstant{-4}\codeStatement{)}\\
16 | \codelnr{16\ }\codeSpecial{\tab{}}\codeIdentifier{LS}=\codeSpecial{\$}\codeStatement{(}\codeStatement{ls}\codeSpecial{ }\codeStatement{|}\codeSpecial{ }\codeStatement{wc}\codeSpecial{ -l}\codeStatement{)}\\
17 | \codelnr{17\ }\codeSpecial{\tab{}}\codeIdentifier{LSA}=\codeSpecial{\$}\codeStatement{(}\codeStatement{ls}\codeSpecial{ -a }\codeStatement{|}\codeSpecial{ }\codeStatement{wc}\codeSpecial{ -l}\codeStatement{)}\\
18 | \codelnr{18\ }\\
19 | \codelnr{19\ }\codeSpecial{\tab{}}\codeIdentifier{L1a}=\codeStatement{"}\codePreProc{\$BLUE}\codeConstant{[}\codePreProc{\$BGREEN}\codeConstant{\textbackslash{}u}\codePreProc{\$GREEN}\codeConstant{@\textbackslash{}h:}\codePreProc{\$NTTY}\codeConstant{\textbackslash{}s}\codePreProc{\$BLUE}\codeConstant{]}\codePreProc{\$BLUE}\codeStatement{"}\\
20 | \codelnr{20\ }\codeSpecial{\tab{}}\codeIdentifier{L1b}=\codeStatement{"}\codePreProc{\$ORG}\codeSpecial{\textbackslash{}t}\codePreProc{\$BLUE}\codeStatement{"}\\
21 | \codelnr{21\ }\codeSpecial{\tab{}}\codeIdentifier{L1c}=\codeStatement{"}\codePreProc{\$BLUE}\codeConstant{<}\codePreProc{\$BRED}\codeConstant{\textbackslash{}w}\codePreProc{\$BLUE}\codeConstant{>}\codePreProc{\$BLUE}\codeStatement{"}\\
22 | \codelnr{22\ }\codeSpecial{\tab{}}\codeIdentifier{L1d}=\codeStatement{"}\codeConstant{(}\codePreProc{\$XRED\$LS}\codeConstant{/}\codePreProc{\$LSA\$BLUE}\codeConstant{)}\codePreProc{\$BLUE}\codeStatement{"}\\
23 | \codelnr{23\ }\codeSpecial{\tab{}}\codeIdentifier{L2}=\codeStatement{"}\codePreProc{\$CYAN}\codeSpecial{\textbackslash{}\textbackslash{}\textbackslash{}\$}\codePreProc{\$CL}\codeStatement{"}\\
24 | \codelnr{24\ }\codeSpecial{\tab{}}\codeStatement{export}\codeSpecial{ }\codePreProc{PS1}\codeStatement{="}\codePreProc{\$L1a}\codeConstant{-}\codePreProc{\$L1b}\codeConstant{-}\codePreProc{\$L1c}\codeConstant{-}\codePreProc{\$L1d}\codeConstant{-}\codeSpecial{\textbackslash{}n}\codePreProc{\$L2}\codeConstant{ }\codeStatement{"}\\
25 | \codelnr{25\ }\codeSpecial{\tab{}\#}\codeStatement{export}\codeSpecial{ }\codePreProc{PS1}\codeStatement{="}\codeConstant{[\textbackslash{}u@\textbackslash{}h:}\codePreProc{\$NTTY}\codeConstant{\textbackslash{}s]-}\codeSpecial{\textbackslash{}t}\codeConstant{-<\textbackslash{}w:}\codePreProc{\$LS}\codeConstant{/}\codePreProc{\$LSA}\codeConstant{>-}\codeSpecial{\textbackslash{}n}\codeSpecial{\textbackslash{}\textbackslash{}}\codeConstant{\$ }\codeStatement{"}\\
26 | \codelnr{26\ }\codeSpecial{\tab{}}\codeStatement{history}\codeSpecial{ -a}\\
27 | \codelnr{27\ }\codePreProc{)}\\
28 | \codelnr{28\ }\codeComment{\# 实际使用时,上面一行也应该改成单引号}
29 |
--------------------------------------------------------------------------------
/select.sh:
--------------------------------------------------------------------------------
1 | select fname in *;
2 | do
3 | echo you picked $fname \($REPLY\)
4 | break;
5 | done
6 |
--------------------------------------------------------------------------------
/select.tex:
--------------------------------------------------------------------------------
1 | \codelnr{1\ }\codeStatement{select }fname \codeStatement{in} *;\\
2 | \codelnr{2\ }\codeStatement{do}\\
3 | \codelnr{3\ }\tab{}\codeStatement{echo} you picked \codePreProc{\$fname} \codeSpecial{\textbackslash{}(}\codePreProc{\$REPLY}\codeSpecial{\textbackslash{})}\\
4 | \codelnr{4\ }\tab{}\codeStatement{break}\codeStatement{;}\\
5 | \codelnr{5\ }\codeStatement{done}
6 |
--------------------------------------------------------------------------------
/shelltype.sh:
--------------------------------------------------------------------------------
1 | # 第一种方法
2 | case "$-" in
3 | *i*)
4 | echo 这个是交互式的 shell。
5 | ;;
6 | *)
7 | echo 这个不是交互式的 shell。
8 | ;;
9 | esac
10 |
11 | # 第二种方法
12 | if [ -z "$PS1" ]; then
13 | echo 这个不是交互式的 shell。
14 | else
15 | echo 这个是交互式的 shell。
16 | fi
17 |
--------------------------------------------------------------------------------
/shelltype.tex:
--------------------------------------------------------------------------------
1 | \codelnr{\ 1\ }\codeComment{\# 第一种方法}\\
2 | \codelnr{\ 2\ }\codeStatement{case} \codeStatement{"}\codePreProc{\$-}\codeStatement{"} \codeStatement{in}\\
3 | \codelnr{\ 3\ }\tab{}*i*\codeStatement{)}\\
4 | \codelnr{\ 4\ }\tab{}\tab{}\codeStatement{echo} 这个是交互式的 shell。\\
5 | \codelnr{\ 5\ }\tab{}\tab{}\codeStatement{;;}\\
6 | \codelnr{\ 6\ }\tab{}*\codeStatement{)}\\
7 | \codelnr{\ 7\ }\tab{}\tab{}\codeStatement{echo} 这个不是交互式的 shell。\\
8 | \codelnr{\ 8\ }\tab{}\tab{}\codeStatement{;;}\\
9 | \codelnr{\ 9\ }\codeStatement{esac}\\
10 | \codelnr{10\ }\\
11 | \codelnr{11\ }\codeComment{\# 第二种方法}\\
12 | \codelnr{12\ }\codeStatement{if }\codeStatement{[} \codeStatement{-z} \codeStatement{"}\codePreProc{\$PS1}\codeStatement{"} \codeStatement{]}\codeStatement{;} \codeStatement{then}\\
13 | \codelnr{13\ }\tab{}\codeStatement{echo} 这个不是交互式的 shell。\\
14 | \codelnr{14\ }\codeStatement{else}\\
15 | \codelnr{15\ }\tab{}\codeStatement{echo} 这个是交互式的 shell。\\
16 | \codelnr{16\ }\codeStatement{fi}
17 |
--------------------------------------------------------------------------------
/vimrc:
--------------------------------------------------------------------------------
1 | let html_use_css = 1
2 | let html_output_xhtml = 1
3 | let html_whole_filler=1
4 | let use_xhtml = 1
5 | let html_use_encoding = 'utf-8'
6 |
7 | set number
8 | set wrap
9 | set tabstop=4
10 | set shiftwidth=4
11 | set textwidth=72
12 | set syntax
13 | set noexpandtab
14 |
15 | colorscheme delek
16 |
17 | source /usr/share/vim/vim72/syntax/2html.vim
18 |
19 | " the rest line will insert new backslashes, so the original have to be marked
20 | " dirrerently
21 | %s/\\/\\textbackslashes/g
22 | %s/{\|}\|_/\\&/g
23 | %s@\#@\\#@g
24 | %s@%@\\%@g
25 | %s@\$@\\$@g
26 | %s/ /\\tab{}/g
27 | %s/\^/\\textasciicircum{}/g
28 | %s/\~/\\textasciitilde{}/g
29 | %s@&@\\\&@g
30 | %s@>@>@g
31 | %s@<@<@g
32 | %s/"/"/g
33 | %s@'@\\char13{}@g
34 | %s@\(.\{-\}\)@\\code\1{\2}@g
35 | %s@\(codelnr{\)\([0-9 ]\+ \)}@\=submatch(1).substitute(submatch(2),' ', '\\\\ ', 'g').'}'@g
36 | %s/textbackslashes/textbackslash{}/g
37 | /^/+1mark a
38 | /^<\/pre>/-1mark b
39 | 0,'b-1s@$@\\\\@g
40 | 'a,'bwrite! %:.:r:r.tex
41 | qall!
42 |
--------------------------------------------------------------------------------