Linux shell基础知识
8.1 shell介绍
1.shell其实并不是shell脚本,shell脚本仅仅是shell的一种表现。shell是一个命令解释器,提供用户和机器之间的交互。
2.支持特定语法,比如逻辑判断、循环
3.每个用户都可以有自己特定的shell。普通用户默认的shell是/bin/bash
4.centos7默认shell为bash
5.还有zsh、ksh等。用起来与bash挺像的,有一些细节上的差异
8.2 命令历史
- history命令
敲过的命令可以使用方向键的上下键来查看。Z这是因为有一个保存的文件 在用户的家目录下.bash_history 例如root用户
2.history命令可以查看之前敲过的命令
3.这里可以看到累计敲过218条,最大值为1000 系统内置的环境变量
4.当有时敲命令出现1000以上时,因为还未写入到这个文件里去,运行的命令暂时存在云内存中
5.history -c 清空当前内存的历史命令 ,但不能删除配置文件。
6.敲过的命令只有退出终端后才会被写入到 .bash_history里面
7.变量HISTSIZE是在/etc/progile中去修改
这里是1000 可以自己设置 但是改完后history命令历史最大值生效 需要重新进入终端 或是执行source /etc/profile
8.history命令里面只能看到ID号和对应的命令是什么。要想看到某命令是什么时候被执行的,需要变量重新赋值
HISTTIMEFORMAT(指定该变量的格式)=”%Y/%m/%d %H:%M:%S ”
该环境变量只会在当前终端下生效 在另一终端上就没有,系统默认是不存在的 需要自定义
永久生效需要编辑vim /etc/profile
将HISTTIMEFORMAT=”%Y/%m/%d %H:%M:%S”
放在里面
执行source /etc/profilesource就能生效
%Y年
/%m月
/%d日
%H小时
:%M分钟
:%S秒
9.命令历史永久保存,只能追加,不能删除,增加隐藏权限
chattr +a ~/.bash_history
10.敲过的命令只有在合法退出后才会完整的写入到.bash_history中,否则保存的命令不完全。
- . !!命令会执行命令历史中最后一条命令
.!n(n表示数字)
可以指定执行命令历史中哪一个命令!echo它会在命令历史中从最后往前查找以echo开头的命令 并执行 。
8.3 命令补全和别名
- tab键,可以补全命令或者文件路径。
当命令或者文件路径开头一样 并存在多个命令或者文件路径时,敲2次就可以查看到以这个开头或者文件路径全部的。当命令或者文件路径是唯一时,敲一下就补全。在centos6中不支持命令的参数补全,在centos7中就支持命令的参数补全。但是需要安装包yum install -y bash-completion
重启才会生效。再敲命令的时候就可以补全参数了。 -
当经常使用的名字比较长,虽然有tab键补全,但是效率还是不太理想 那就可以考虑将这个命令做别名
例:alias直接执行可以把系统中所有的alias列出来。包括自定义的。
alias
存在于用户家目录.bashrc下配置了3条alias
其他的存在于/etc/profile.d/下
-取消别名unalias restartnet (自定义名字)
8.4 通配符
- *号表示通配 可以放在文件的前面或者2边 例
2.?号表示匹配一个任意字符
3.[ ]里面的字符表示指定的范围
4.{ }也是指定范围用,号隔开
8.5 输入输出重定向
1. cat 1.txt > 2.txt 这里的>就是把前面内容的输出直接输入到后面的文件里去 ,后面的文件内容删除掉重新将前面的内容写到后面文件去
2. cat 2.txt >> 2.txt 这里的>> 表示追加 不会删除后面文件里的内容
3. ls aaa.txt 2>err 这里2>会把这个命令产生的错误信息指定输入到某文件里去
4. >表示正确的输出 2>表示错误的输出
5. &>表示正确错误的输出信息定向到一个文件中去
也支持追加
6.将正确和错误的输出区分开来
7.wc -l <1.txt (查看1.txt文本文档的行数)
不能文件到文件 左边必须是命令