Linux shell 特性
补全
系统用的shell有 cat /etc/shells
默认使用的是 echo $SHELL
1)命令补全
shell会帮助你补全命令
比如说,你想打history这个命令,打到hist后不会打了,按一下 Tab键 即可自动补全
2)路径补全
比如说我现在想看 目录下某个子目录或者子文件,但是我没记住它
比如说查看.bash_history里面的内容,我没背过,我只记得是.下的东西
那么就可以先输入cat . 按Tab键补齐,但是因为.下的文件名很多,他不会直接补全,所以我们再按一次Tab键,他会显示出来.下的目录和文件
如果想继续输入则需要加上区别于其他文件或目录的字符,我们要找的是.bash_history,所以可以在写成cat .b 补全,他就会变成 cat .bash,按两次Tab键后会变成
输入cat .bash_h,因为h后就一个文件,所以直接按Tab键后补全成功
bash 快捷键
Ctrl+c 结束前台命令的使用
Ctrl+d 退出
Ctrl+l 清屏 这个意思的直接将[root@localhost ~]#放在新的一面第一行,上面的东西还在,只是在上一面,向上翻可以看见
Ctrl+a 光标移到在前面
Ctrl+e 光标移到最后面
Ctrl+u 删除掉光标前面的
Ctrl+k 删除掉光标后面的
Ctrl+r 搜索历史记录,需要使用关键词
历史命令
history
history 可以查看我们使用过的命令
HISTFILE 是持久保存命令
HISTSIZE 是历史可以保存的命令条数
echo $HISTSIZE 可以查看当前可以保存的命令条数
如果想要更改这个数字,可以使用
[root@localhost ~]# HISTSIZE=5000
[root@localhost ~]# echo $HISTSIZE
5000
当你知道history可以查看命令后,你会发现它一次性展示的太多了,要是我只想看最进10条的
用法就是history # ,#就是你要查看的条数,
你要查看最近10条的,就是 history 10 ,这个10你也可以改成你需要的
调用历史列表的命令:
!# 使用第#个历史命令
!!再使用上一次刚使用过的命令
!STRING:再一次执行命令历史列表中最近一个以STRING开头的命令
别名修改
alias 命令
alias 可以给一个命令起一个别名
使用方法就是:alias name=‘命令’
例如:给rm =-rf skj取了个nb的别名
如果不想使用这个命令了,用unalias name
变量
全局变量 :生效范围是整个shell进程
本地变量 :生效范围是当前shell进程中的某个代码片段
局部变量 :只生效于当前shell进程
特殊符号(管道符 | )
| 相当于是一个筛子,把通过的文件内容进行筛选
比如我要将IP地址所在的行显示,用法如下
grep 是将行内容提取出来
如果想将提取的内容输入到文件中,使用tee管道
tee管道是将筛选的东西输入到新的文件中,例如
这个就是将查到的IP行筛选出来,并将其输出到new7.txt中
也可以直接重定向
如果你想连续执行多条语句,可以使用;来隔开
例如:
输入输出重定向
标准输入 0
标准输出 1
标准错误 2
正常我们使用重定向符输出东西
正常我们使用的是 >或>> 来输入,可以看到diff比较两种用法所输出的文件内容,发现1> 和 > 是一样的,那是因为1可以省略
1>和>
1>>和>> 功能都一样
但是2就不可以省略,
例如
这个就是将正确的输出到new.txt里面,标准错误输出到new9.txt里面,
如果你想将他们两个输出到同一个文件里面有以下几种方法:
1)
将标准错误追加进new8.txt里面
2)使用&
这个&就可以将1和2都输出到new9.txt里面
这种方法也是可以的,他先是将标准输出输出到new10.txt里面,再将标准错误输出到标准输出里面
标准输入
例子:
一般来说,输入重定向用的比较少
命令行通配符
*匹配任意长度的字符
如果你想看D开头的目录,给D后加*,表示D开头的所以目录
空设备
/dev/null 相当于是一个没有限制垃圾桶,如果你不想在终端输出东西的话,可以将其输出到这个里面
例如:yum install tree -y > /dev/null
零设备
/dev/zero 可以无限制输出0,可以用来构造大文件
空设备和零设备可以搭配dd命令来使用
例如:
[root@localhost ~]# dd if=/dev/zero of=/dev/null bs=10M count=10
[root@localhost ~]# dd if=/dev/zero of=/dev/null bs=10M count=10 10+0 records in 10+0 records out 104857600 bytes (105 MB) copied, 0.0296194 s, 3.5 GB/s