命令行编辑:
光标跳转: Ctrl+a:跳到命令行首 Ctrl+e:跳到命令行尾 Ctrl+u: 删除光标至命令行首的内容 Ctrl+k: 删除光标至命令行尾的内容 Ctrl+l: 清屏 Ctrl+d: 删除光标后面内容命令历史:
查看命令历史:history -c:清空命令历史 -d OFFSET [n]: 删除指定位置的命令 -w:保存命令历史至历史文件中 环境变量PATH:命令搜索路径HISTSIZE: 命令历史缓冲区大小命令历史的使用技巧:
!n:执行命令历史中的第n条命令;[rhel@localhost ~]$ !1
whatis manman (1) - format and display the on-line manual pagesman (1p) - display system documentationman (7) - macros to format man pagesman.config [man] (5) - configuration data for manman [manpath] (1) - format and display the on-line manual pagesman-pages (7) - conventions for writing Linux man pages[rhel@localhost ~]$ history 1 whatis man !-n:执行命令历史中的倒数第n条命令;85 whatis man
86 history[rhel@localhost ~]$ !-2whatis manman (1) - format and display the on-line manual pagesman (1p) - display system documentationman (7) - macros to format man pagesman.config [man] (5) - configuration data for manman [manpath] (1) - format and display the on-line manual pagesman-pages (7) - conventions for writing Linux man pages!!: 执行上一条命令;
[rhel@localhost ~]$ !!
whatis manman (1) - format and display the on-line manual pagesman (1p) - display system documentationman (7) - macros to format man pagesman.config [man] (5) - configuration data for manman [manpath] (1) - format and display the on-line manual pagesman-pages (7) - conventions for writing Linux man pages!string:执行命令历史中最近一个以指定字符串开头的命令
[rhel@localhost ~]$ !man
man history[rhel@localhost ~]$ [rhel@localhost ~]$!$:引用前一个命令的最后一个参数;
[rhel@localhost ~]$ ls /tmp/
abc inittabl.2 keyring-C6bpQR orbit-gdm pulse-Y030iPht7UnR testhi keyring-11UHBi keyring-HXk4gf orbit-rhel rc virtual-rhel.T2NxT0inittab keyring-4aFGvD keyring-tTiDCT passwd rc.2inittab.1 keyring-6hak4Z keyring-V1nCMd pulse-kYyFfO5RNhPL rc.3[rhel@localhost ~]$ ll !$ll /tmp/total 84drwxr-xr-x. 2 root root 4096 Nov 19 20:26 abcdrwxr-xr-x. 2 root root 4096 Nov 19 20:28 hi-rw-r--r--. 1 root root 884 Nov 20 02:59 inittabdrwxr-xr-x. 2 root root 4096 Nov 19 21:01 inittab.1drwxr-xr-x. 2 root root 4096 Nov 19 21:01 inittabl.2drwx------. 2 rhel rhel 4096 Nov 19 17:54 keyring-11UHBidrwx------. 2 rhel rhel 4096 Jun 23 2015 keyring-4aFGvD Esc, . 与 !$相同 Alt+. (远程终端不支持)命令补全:
PATH:路径补全:pstree:显示进程树
NAME
pstree - display a tree of processes[rhel@localhost ~]$ pstree
init─┬─NetworkManager─┬─dhclient │ └─{NetworkManager} ├─abrtd ├─acpid ├─atd ├─auditd───{auditd} ├─bonobo-activati───{bonobo-activat} ├─clock-applet ├─console-kit-dae───63*[{console-kit-da}] ├─crond ├─cupsd ├─2*[dbus-daemon───{dbus-daemon}] ├─2*[dbus-launch] ├─devkit-power-da ├─gconfd-2history:命令历史使用
[rhel@localhost ~]$ history
1 whatis man 2 whatis /etc/passwd 3 man whatis 4 whatis cd 5 whatis ls 6 whatis type 7 whatis du 8 whatis echo 9 whatis mv 10 whatis man 11 man cut 12 cut -d : /etc/passwd 13 cut -d : -f1 /etc/passwd-c:清空历史
-n:删除指定位置命令
-w:保存命令至历史文件
命令别名
alias CMDALIAS='COMMAND [options] [arguments]'在shell中定义的别名仅在当前shell生命周期中有效;别名的有效范围仅为当前shell进程;[rhel@localhost ~]$ alias
alias l.='ls -d .* --color=auto'alias ll='ls -l --color=auto'alias ls='ls --color=auto'alias vi='vim'alias which='alias | /usr/bin/which --tty-only --read-alias --show-dot --show-tilde'[rhel@localhost ~]$[rhel@localhost ~]$ type alias
alias is a shell builtin[rhel@localhost ~]$ help aliasalias: alias [-p] [name[=value] ... ] Define or display aliases. Without arguments, `alias' prints the list of aliases in the reusable form `alias NAME=VALUE' on standard output. Otherwise, an alias is defined for each NAME whose VALUE is given. A trailing space in VALUE causes the next word to be checked for alias substitution when the alias is expanded. Options: -p Print all defined aliases in a reusable format Exit Status: alias returns true unless a NAME is supplied for which no alias has been defined.[rhel@localhost ~]$取消命令别名
ualias CMDALIAS
使用原有命令
\CMD
[rhel@localhost ~]$ \ls /tmp/
abc inittabl.2 keyring-C6bpQR orbit-gdm pulse-Y030iPht7UnR testhi keyring-11UHBi keyring-HXk4gf orbit-rhel rc virtual-rhel.T2NxT0inittab keyring-4aFGvD keyring-tTiDCT passwd rc.2inittab.1 keyring-6hak4Z keyring-V1nCMd pulse-kYyFfO5RNhPL rc.3[rhel@localhost ~]$命令替换: $(COMMAND), 反引号:`COMMAND`
把命令中某个子命令替换为其执行结果的过程file-2013-02-28-14-53-31.txt bash支持的引号:``: 命令替换[rhel@localhost ~]$ echo "dir is `pwd`"
dir is /home/rhel[rhel@localhost ~]$ cd /tmp/[rhel@localhost tmp]$ echo "dir is `pwd`"dir is /tmp[rhel@localhost tmp]$ "": 弱引用,可以实现变量替换[rhel@localhost tmp]$ echo "the path is $PATH"
the path is /usr/lib64/qt-3.3/bin:/usr/local/bin:/bin:/usr/bin:/usr/local/sbin:/usr/sbin:/sbin:/home/rhel/bin[rhel@localhost tmp]$'': 强引用,不完成变量替换
[rhel@localhost tmp]$ echo 'the path is $PATH'
the path is $PATH[rhel@localhost tmp]$ 文件名通配, globbing*: 任意长度的任意字符?:任意单个字符[]:匹配指定范围内的任意单个字符 [abc], [a-m], [a-z], [A-Z], [0-9], [a-zA-Z], [0-9a-zA-Z] [:space:]:空白字符 [:punct:]:标点符号 [:lower:]:小写字母 [:upper:]: 大写字母 [:alpha:]: 大小写字母 [:digit:]: 数字 [:alnum:]: 数字和大小写字母 # man 7 glob[^]: 匹配指定范围之外的任意单个字符[[:alpha:]]*[[:space:]]*[^[:alpha:]]
练习:
1、创建a123, cd6, c78m, c1 my, m.z, k 67, 8yu, 789等文件;注意,以上文件是以逗号隔开的,其它符号都是文件名的组成部分;2、显示所有以a或m开头的文件;ls [am]*3、显示所有文件名中包含了数字的文件;ls *[0-9]* ls *[[:digit:]]*4、显示所有以数字结尾且文件名中不包含空白的文件;ls *[^[:space:]]*[0-9] ?????????5、显示文件名中包含了非字母或数字的特殊符号的文件;ls *[^[:alnum:]]*