Linux terminal 或许是Linux 上最频繁用到的工具之一。有个用的顺手的命令行,大大提高工作生活效率。
下面来看看:
1. 命令行提示符号
通过定义一组预先定义好的一组值,以及控制PS1 和PS2 环境变量来控制提示符号.
echo $PS1
通过修改直接生效。比如让命令行来显示命令的行号。
export PS1="\#" 来显示命令行号
可以通过man bash 开查看,搜key world: PS1
2. tab 补全
补全文集名,补全命令,补全环境变量都支持。 double press Tab key.
3. 命令行的中位置跳转和编辑
比如从当前位置(光标)返回到行头或者行尾,向前跳转一个单词或者向后,如果vim 里面的快捷键。
有很多功能支持,可以通过bind -p 来查看。 同时也可以修改到.bash.rc 文件中保存。
常用的: 获得上次运行的参数,比如C-1, M-.(也就是上一次运行命令的第一个参数)
M-. 缺省获得上次运行的最后一个参数。
M-#( Alt-Shift-3) 可以将该命令给注释掉。
C-a / C-e 移动到行头或者行尾。
C-w 删掉之前一个单词。 当然这些都可以设置成适合自己的键。
还有命令行扩展 : M-*'(insert-completions)
可以将 ls t* 扩展为 ls test.txt test.cpp.(假设当前目录有连个以test开头的我文件名)
'C-x*'(先按ctrl-x,然后按*) 也可以补全(glob-expand-word)
ls *.txt 将扩展为 ls test.txt log.txt (假设当前目录只有连个以txt为后缀的文件名)
"\C-g": abort "\C-x\C-g": abort "\e\C-g": abort "\C-j": accept-line "\C-m": accept-line # alias-expand-line (not bound) # arrow-key-prefix (not bound) # backward-byte (not bound) "\C-b": backward-char "\eOD": backward-char "\e[D": backward-char "\C-h": backward-delete-char "\C-?": backward-delete-char "\C-x\C-?": backward-kill-line "\e\C-h": backward-kill-word "\e\C-?": backward-kill-word "\eb": backward-word "\e<": beginning-of-history "\C-a": beginning-of-line "\eOH": beginning-of-line "\e[H": beginning-of-line "\C-xe": call-last-kbd-macro "\ec": capitalize-word "\C-]": character-search "\e\C-]": character-search-backward "\C-l": clear-screen "\C-i": complete "\e\e": complete "\e!": complete-command "\e/": complete-filename "\e@": complete-hostname "\e{": complete-into-braces "\e~": complete-username "\e$": complete-variable # copy-backward-word (not bound) # copy-forward-word (not bound) # copy-region-as-kill (not bound) # dabbrev-expand (not bound) "\C-d": delete-char "\e[3~": delete-char # delete-char-or-list (not bound) "\e\\": delete-horizontal-space "\e-": digit-argument "\e0": digit-argument "\e1": digit-argument "\e2": digit-argument "\e3": digit-argument "\e4": digit-argument "\e5": digit-argument "\e6": digit-argument "\e7": digit-argument "\e8": digit-argument "\e9": digit-argument "\C-x\C-v": display-shell-version "\C-xA": do-lowercase-version "\C-xB": do-lowercase-version "\C-xC": do-lowercase-version "\C-xD": do-lowercase-version "\C-xE": do-lowercase-version "\C-xF": do-lowercase-version "\C-xG": do-lowercase-version "\C-xH": do-lowercase-version "\C-xI": do-lowercase-version "\C-xJ": do-lowercase-version "\C-xK": do-lowercase-version "\C-xL": do-lowercase-version "\C-xM": do-lowercase-version "\C-xN": do-lowercase-version "\C-xO": do-lowercase-version "\C-xP": do-lowercase-version "\C-xQ": do-lowercase-version "\C-xR": do-lowercase-version "\C-xS": do-lowercase-version "\C-xT": do-lowercase-version "\C-xU": do-lowercase-version "\C-xV": do-lowercase-version "\C-xW": do-lowercase-version "\C-xX": do-lowercase-version "\C-xY": do-lowercase-version "\C-xZ": do-lowercase-version "\eA": do-lowercase-version "\eB": do-lowercase-version "\eC": do-lowercase-version "\eD": do-lowercase-version "\eE": do-lowercase-version "\eF": do-lowercase-version "\eG": do-lowercase-version "\eH": do-lowercase-version "\eI": do-lowercase-version "\eJ": do-lowercase-version "\eK": do-lowercase-version "\eL": do-lowercase-version "\eM": do-lowercase-version "\eN": do-lowercase-version "\eP": do-lowercase-version "\eQ": do-lowercase-version "\eR": do-lowercase-version "\eS": do-lowercase-version "\eT": do-lowercase-version "\eU": do-lowercase-version "\eV": do-lowercase-version "\eW": do-lowercase-version "\eX": do-lowercase-version "\eY": do-lowercase-version "\eZ": do-lowercase-version "\el": downcase-word # dump-functions (not bound) # dump-macros (not bound) # dump-variables (not bound) "\e\C-i": dynamic-complete-history "\C-x\C-e": edit-and-execute-command # emacs-editing-mode (not bound) "\C-x)": end-kbd-macro "\e>": end-of-history "\C-e": end-of-line "\eOF": end-of-line "\e[F": end-of-line "\C-x\C-x": exchange-point-and-mark # forward-backward-delete-char (not bound) # forward-byte (not bound) "\C-f": forward-char "\eOC": forward-char "\e[C": forward-char "\C-s": forward-search-history "\ef": forward-word "\eg": glob-complete-word "\C-x*": glob-expand-word "\C-xg": glob-list-expansions # history-and-alias-expand-line (not bound) "\e^": history-expand-line # history-search-backward (not bound) # history-search-forward (not bound) "\e#": insert-comment "\e*": insert-completions "\e.": insert-last-argument "\e_": insert-last-argument # kill-line (not bound) "\C-k": kill-region # kill-whole-line (not bound) "\ed": kill-word # magic-space (not bound) # menu-complete (not bound) # menu-complete-backward (not bound) "\C-n": next-history "\eOB": next-history "\e[B": next-history "\en": non-incremental-forward-search-history # non-incremental-forward-search-history-again (not bound) "\ep": non-incremental-reverse-search-history # non-incremental-reverse-search-history-again (not bound) # old-menu-complete (not bound) "\C-o": operate-and-get-next # overwrite-mode (not bound) "\C-x!": possible-command-completions "\e=": possible-completions "\e?": possible-completions "\C-x/": possible-filename-completions "\C-x@": possible-hostname-completions "\C-x~": possible-username-completions "\C-x$": possible-variable-completions "\C-p": previous-history "\eOA": previous-history "\e[A": previous-history "\C-q": quoted-insert "\C-v": quoted-insert # redraw-current-line (not bound) "\C-x\C-r": re-read-init-file "\C-r": reverse-search-history "\e\C-r": revert-line "\er": revert-line " ": self-insert "!": self-insert "\"": self-insert "#": self-insert "$": self-insert "%": self-insert "&": self-insert "'": self-insert "(": self-insert ")": self-insert "*": self-insert "+": self-insert ",": self-insert "-": self-insert ".": self-insert "/": self-insert "0": self-insert "1": self-insert "2": self-insert "3": self-insert "4": self-insert "5": self-insert "6": self-insert "7": self-insert "8": self-insert "9": self-insert ":": self-insert ";": self-insert "<": self-insert "=": self-insert ">": self-insert "?": self-insert "@": self-insert "A": self-insert "B": self-insert "C": self-insert "D": self-insert "E": self-insert "F": self-insert "G": self-insert "H": self-insert "I": self-insert "J": self-insert "K": self-insert "L": self-insert "M": self-insert "N": self-insert "O": self-insert "P": self-insert "Q": self-insert "R": self-insert "S": self-insert "T": self-insert "U": self-insert "V": self-insert "W": self-insert "X": self-insert "Y": self-insert "Z": self-insert "[": self-insert "\\": self-insert "]": self-insert "^": self-insert "_": self-insert "`": self-insert "a": self-insert "b": self-insert "c": self-insert "d": self-insert "e": self-insert "f": self-insert "g": self-insert "h": self-insert "i": self-insert "j": self-insert "k": self-insert "l": self-insert "m": self-insert "n": self-insert "o": self-insert "p": self-insert "q": self-insert "r": self-insert "s": self-insert "t": self-insert "u": self-insert "v": self-insert "w": self-insert "x": self-insert "y": self-insert "z": self-insert "{": self-insert "|": self-insert "}": self-insert "~": self-insert "\200": self-insert "\201": self-insert "\202": self-insert "\203": self-insert "\204": self-insert "\205": self-insert "\206": self-insert "\207": self-insert "\210": self-insert "\211": self-insert "\212": self-insert "\213": self-insert "\214": self-insert "\215": self-insert "\216": self-insert "\217": self-insert "\220": self-insert "\221": self-insert "\222": self-insert "\223": self-insert "\224": self-insert "\225": self-insert "\226": self-insert "\227": self-insert "\230": self-insert "\231": self-insert "\232": self-insert "\233": self-insert "\234": self-insert "\235": self-insert "\236": self-insert "\237": self-insert " ": self-insert "¡": self-insert "¢": self-insert "£": self-insert "€": self-insert "¥": self-insert "Š": self-insert "§": self-insert "š": self-insert "©": self-insert "ª": self-insert "«": self-insert "¬": self-insert "": self-insert "®": self-insert "¯": self-insert "°": self-insert "±": self-insert "²": self-insert "³": self-insert "Ž": self-insert "µ": self-insert "¶": self-insert "·": self-insert "ž": self-insert "¹": self-insert "º": self-insert "»": self-insert "Œ": self-insert "œ": self-insert "Ÿ": self-insert "¿": self-insert "À": self-insert "Á": self-insert "Â": self-insert "Ã": self-insert "Ä": self-insert "Å": self-insert "Æ": self-insert "Ç": self-insert "È": self-insert "É": self-insert "Ê": self-insert "Ë": self-insert "Ì": self-insert "Í": self-insert "Î": self-insert "Ï": self-insert "Ð": self-insert "Ñ": self-insert "Ò": self-insert "Ó": self-insert "Ô": self-insert "Õ": self-insert "Ö": self-insert "×": self-insert "Ø": self-insert "Ù": self-insert "Ú": self-insert "Û": self-insert "Ü": self-insert "Ý": self-insert "Þ": self-insert "ß": self-insert "à": self-insert "á": self-insert "â": self-insert "ã": self-insert "ä": self-insert "å": self-insert "æ": self-insert "ç": self-insert "è": self-insert "é": self-insert "ê": self-insert "ë": self-insert "ì": self-insert "í": self-insert "î": self-insert "ï": self-insert "ð": self-insert "ñ": self-insert "ò": self-insert "ó": self-insert "ô": self-insert "õ": self-insert "ö": self-insert "÷": self-insert "ø": self-insert "ù": self-insert "ú": self-insert "û": self-insert "ü": self-insert "ý": self-insert "þ": self-insert "ÿ": self-insert "\C-@": set-mark "\e ": set-mark # shell-backward-kill-word (not bound) # shell-backward-word (not bound) "\e\C-e": shell-expand-line # shell-forward-word (not bound) # shell-kill-word (not bound) # skip-csi-sequence (not bound) "\C-x(": start-kbd-macro # tab-insert (not bound) "\e&": tilde-expand "\C-t": transpose-chars "\et": transpose-words # tty-status (not bound) "\C-x\C-u": undo "\C-_": undo # universal-argument (not bound) # unix-filename-rubout (not bound) "\C-u": unix-line-discard "\C-w": unix-word-rubout "\eu": upcase-word # vi-append-eol (not bound) # vi-append-mode (not bound) # vi-arg-digit (not bound) # vi-back-to-indent (not bound) # vi-bword (not bound) # vi-bWord (not bound) # vi-change-case (not bound) # vi-change-char (not bound) # vi-change-to (not bound) # vi-char-search (not bound) # vi-column (not bound) # vi-complete (not bound) # vi-delete (not bound) # vi-delete-to (not bound) # vi-editing-mode (not bound) # vi-end-word (not bound) # vi-eof-maybe (not bound) # vi-eword (not bound) # vi-eWord (not bound) # vi-fetch-history (not bound) # vi-first-print (not bound) # vi-fword (not bound) # vi-fWord (not bound) # vi-goto-mark (not bound) # vi-insert-beg (not bound) # vi-insertion-mode (not bound) # vi-match (not bound) # vi-movement-mode (not bound) # vi-next-word (not bound) # vi-overstrike (not bound) # vi-overstrike-delete (not bound) # vi-prev-word (not bound) # vi-put (not bound) # vi-redo (not bound) # vi-replace (not bound) # vi-rubout (not bound) # vi-search (not bound) # vi-search-again (not bound) # vi-set-mark (not bound) # vi-subst (not bound) # vi-tilde-expand (not bound) # vi-yank-arg (not bound) # vi-yank-to (not bound) "\C-y": yank "\e.": yank-last-arg "\e_": yank-last-arg "\e\C-y": yank-nth-arg "\ey": yank-pop
4. alias
别名,对于经常用到的自定义命令可以用shellout方式封装一下,或者最简单的就是别名。
5. 配置文件
上面这些都个放到配置文件里,避免一次有一次的修改. 放在.bashrc 中,同时在.profile 文件里面调用bashrc.
进一步可以把这个文件放到云上面去,通过One Ubuntu 来同步不同计算机之间被的配置文件。 这样所有的机器,即使从新装机,也不用怕配额之文件丢失,也不用再去修改。
强烈建议做这么一次,公欲利其事必先利其器:)
reference:
http://www.kerneltravel.net/newbie/bash_readline.htm