8.1 shell介绍
8.2 命令历史
8.3 命令补全和别名
8.4 通配符
8.5 输入输出重定向
8.1Shell介绍
Shell是一个命令解释器 介于用户和内核之前 相当于中介,把用户的命令传递给内核并把内核的信息反馈给用户。
每个用户都在登录系统时候都有自己的Shell。CentOS默认Shell是bash 还有zsh ksh等等
8.2命令历史
history:查看命令历史
1 | [root@localhost ~]# history |
这可以看到已经记录有600+的命令 其实这些命令都记录在用户/.bash_history
下 它是专门来记录用户的命令的 当我们正常退出终端才会把这些命令记录去配置文件上1
[root@localhost ~]# less /root/.bash_history ##.bash_history记录用户所用的命令的文件
-c:清空内存中的命令历史
1 | [root@localhost ~]# history -c ##不影响.bash_history的内容 |
而系统默认能存放1000条命令到命令历史上,由环境变量HISTSIZE决定的1
2[root@localhost ~]# echo $HISTSIZE
1000
想修改环境变量可以去 /etc/profile
修改1
[root@localhost ~]# vim /etc/profile
1
[root@localhost ~]# source /etc/profile ##初始化/etc/profile文件中的环境变量
现在新建一个环境变量来使命令历史可以显示使用的时间HISTTIMEFORMAT="%Y/%m/%d %H:%M:%S "
并放在/etc/profile上 这样以后登录终端就不用重新定义它了
为了让命令历史永久保存 不让其他人删除他1
[root@localhost ~]# chattr +a ~/.bash_history ##防删除
!!:上一条命令
1 | [root@localhost ~]# !! |
!n(n为数字):命令历史中该序号的命令
!word:最近上一条带此word的命令
8.3命令补全
tab键 可以自动补全命令 当同时有两个相同的文件是按两下可以把文件显示出来
按一下
按两下
8.4别名
alias:给命令起别名
用法:alias aa='命令'
1
[root@localhost ~]# alias kun='ls -lad'
直接打alias就会显示系统定义的别名。其中他们都是存放在~/.bashrc
和/etc/profile.d/clolorls.sh
下
取消别名
用法:unalias aa
1
[root@localhost ~]# unalias kun
8.4通配符
?:表示一个任意字符
1 | [root@localhost ~]# ls ?.txt |
*:表示一个或多个任意字符
1 | [root@localhost ~]# ls *.txt |
[]{}:表示范围
1 | [root@localhost ~]# ls [0-9].txt ##表示0到9中的其中一个数字 |
1 | [root@localhost ~]# ls [0-9a-z].txt |
1 | [root@localhost ~]# ls {1,2,3}.txt ##表示1,2,3中的其中一个 |
8.5输入输出重定向
>:把前一条命令的内容输出到文件里
1 | [root@localhost ~]# echo 'sadfsd'> a.txt ##把sadfsd输出到a里 a原来的内容会删除 |
>>:把前一条命令的内容追加到文件里
1 | [root@localhost ~]# echo 'sadfsd'>> a.txt ##把sadfsd追加到a里 a原来的内容不删除 |
2>:把前一条命令的错误内容输出到文件里
1 | [root@localhost ~]# eadf 2> a.txt |
2>>:把前一条命令的错误内容追加到文件里
1 | [root@localhost ~]# eadf 2>> a.txt |
&>:把前一条命令正确和错误内容输出到文件里
1 | [root@localhost ~]# ls [0-9].txt sd.txt &> a.txt |
&>>:把前一条命令正确和错误内容追加到文件里
1 | [root@localhost ~]# ls [0-9].txt sd.txt &>> a.txt |
1 | [root@localhost ~]# ls [0-9].txt sd.txt > a.txt 2> 2.txt ##把正确的内容输出到a.txt 错误的内容输出到2.txt |
<:把文件的内容输入给命令
1 | [root@localhost ~]# wc -l < a.txt ##把a.txt行数输入给wc命令 |