补全
补全 | 机制 |
---|---|
命令补全 | shell会把最左侧的字符串当作命令识别,补全时会在通过PATH环境变量设定的目录中从左到右逐个搜索,若能唯一标识,则直接补全,若不能,再按一次,给出列表 |
路径补全 | 在给定的起始路径下,能唯一标识直接补全,否则再按一次给出列表 |
补全提高了速度的同时也可以提高命令以及路径的正确率
快捷键
快捷键 | 功能 |
---|---|
ctrl+c | 终止前台运行的程序 |
ctrl+d | 退出 |
ctrl+l | 清屏 |
ctrl+r | 搜索历史命令,利用关键词 |
编辑命令快捷键 | 功能 |
---|---|
ctrl+a | 光标移到命令行的最前端 |
ctrl+e | 光标移到命令行的最后 |
ctrl+u | 删除光标前的所有字符 |
ctrl+k | 删除光标后的所有字符 |
命令历史
$HISTSIZE 记录shell进程可以保留的命令历史的条数
$HISTFILE 持久保存命令历史的文件
$HISTFILESIZE 命令历史文件的大小
每个用户在自己的家目录下使用ls -a都可以看到有个.bash_history文件,存储着上一次退出shell之前用过的命令历史
history: 查看命令历史
选项 | 功能 |
---|---|
-c | 清空命令历史 |
-r | 从命令历史文件读取命令历史至命令历史列表中 |
-d offset | 删除历史命令列表中指定序号的命令 |
-w | 把历史列表中的命令追加到历史文件中 |
命令 | 功能 |
---|---|
history # | 显示最近#条命令 |
!# | 再次执行历史列表中第#条命令 |
!! | 再次执行上一条命令 |
!STRING | 再次执行命令历史列表中最近一个以STRING开头的命令 |
esc+. | 调用上一条命令的最后一个参数 |
!$ | 调用上一条命令最后一个参数 |
命令别名
将一个命令或一条长命令定义为简短,好记的其它词句,方便使用。
bash中有系统自己定义的命令别名,输入alias查看
[root@zangqingfa ~]# alias
alias cp='cp -i'
alias l.='ls -d .* --color=auto'
alias ll='ls -l --color=auto'
alias ls='ls --color=auto'
alias mv='mv -i'
alias rm='rm -i'
alias which='alias | /usr/bin/which --tty-only --read-alias --show-dot --show-tilde'
定义别名
[root@zangqingfa ~]# alias see='ls -a -l'
[root@zangqingfa ~]# see
总用量 60
dr-xr-x---. 2 root root 4096 11月 30 18:43 .
dr-xr-xr-x. 22 root root 4096 11月 30 18:41 ..
-rw-------. 1 root root 939 11月 22 17:24 anaconda-ks.cfg
-rw-------. 1 root root 4096 11月 30 06:42 .bash_history
-rw-r--r--. 1 root root 18 5月 20 2009 .bash_logout
-rw-r--r--. 1 root root 176 5月 20 2009 .bash_profile
-rw-r--r--. 1 root root 176 9月 23 2004 .bashrc
-rw-r--r--. 1 root root 100 9月 23 2004 .cshrc
-rw-r--r--. 1 root root 13368 11月 22 17:24 install.log
-rw-r--r--. 1 root root 3482 11月 22 17:24 install.log.syslog
-rw-r--r--. 1 root root 129 12月 4 2004 .tcshrc
-rw-------. 1 root root 168 11月 30 18:43 .Xauthority
撤销别名
[root@zangqingfa ~]# unalias see
[root@zangqingfa ~]# see
-bash: see: command not found
上面的方法仅对当前正在运行的shell有效,当机器重启时,之前的定义操作不再存在
使用 type -a ls可查看ls命令的别名信息以及命令所在目录
[root@zangqingfa ~]# type -a ls
ls is aliased to `ls --color=auto'
ls is /bin/ls
[root@zangqingfa etc]# ls 别名优先
[root@zangqingfa etc]# /bin/ls 跳过别名
永久性定义别名
vim /etc/bashrc
在此文件中写入想定义的别名,重启后会写入别名
alias see='ls -a -l'
变量
变量是计算内存的单元,其中存放的值可以改变,当Shell脚本需要保存一些信息时,如一个文件名或是一个数字,就把它存放在一个变量中。每个变量有一个名字,所以很容易引用它。使变量可以保存有用的信息,使系统获知用户相关设置,变量也可以用于保存暂时信息
在Linux系统中,变量分为了本地变量,局部变量,环境变量
本地变量 | 生效范围为当前shell进程中的某代码片段,通常指函数 |
局部变量 | 又称标准变量或普通变量,指生效范围为当前shell进程;对当前shell之外的其他shell进程,包括当前shell的子shell进程均无效 |
环境(全局)变量 | 生效范围为当前shell进程及其子进程 |
特殊重要符号
| 管道
执行格式为 命令A | 命令B
作用:把前一个命令原本要输出到屏幕的正常数据输出当作是后一个命令的标准输入
例:
[root@zangqingfa ~]# ls /dev/ |grep sda
sda
sda1
sda2
sda3
. 点号
… 双点号
输入ls -a 可查看当前目录下的所有文件
[root@zangqingfa ~]# ls -a
. anaconda-ks.cfg .bash_logout .bashrc install.log .tcshrc .Xauthority
.. .bash_history .bash_profile .cshrc install.log.syslog .viminfo
点号代表当前目录
双点号代表上一级目录
; 分号
Linux在执行多条命令时,用分号分开,按照顺序独立的执行各条命令,不论其他命令正确错误,所有命令都会执行
’ ’ 单引号
强引用,不做变量替换
" " 双引号
弱引用,可以实现变量和命令的替换
{ }大括号
做扩展,或者构建代码块
输入输出重定向
Linux提供了三种I/O设备
标准输入 | -0默认接受来自键盘的输入 |
标准输出 | -1默认输出到终端窗口 |
标准错误 | -2默认输出到终端窗口 |
重定向即改变系统默认的标准输入输出错误端口,而由自己指定
输出重定向
正确输出 | |
---|---|
1>或 > | 正确输出重定向,后面的内容会覆盖以前的内容 |
1>>或 >> | 正确输出重定向,后面的内容会追加到以前内容之后 |
错误输出 | |
---|---|
2> | 错误输出重定向,后面的内容会覆盖以前的内容 |
2>> | 错误输出重定向,后面的内容会追加到以前内容之后 |
<实现输入重定向,使用比较少
混合输出重定向:&>
正确错误输出重定向到相同位置: 2>&1
一般用于查看脚本执行状态或记录定时任务执行结果
命令行通配符
通配符 | 含义 |
---|---|
* | 匹配任意长度的任意字符 |
? | 匹配任意长度单个字符 |
[ ] | 匹配指定范围内的任意单个字符,如[a-z],[A-Z],[0-9] |
[^] | 匹配指定范围外的任意单个字符 |
[[:upper:]] | 所有大写字母 |
[[:lower:]] | 所有小写字母 |
[[:alpha:]] | 所有字母 |
[[:digit:]] | 所有数字 |
[[:alnum:]] | 所有字母和数字 |
[[:space:]] | 所有空白字符 |
[[:punct:]] | 所有标点符号 |
例:
[root@zangqingfa ~]# ls /etc/s*[[:punct:]][[:alnum:]]
/etc/statetab.d:
/etc/sudoers.d:
/etc/sysctl.d:
这是查看/etc/以s开头,后面有标点符号,后面有任意字符的文件