shell 介绍
- shell是一个壳,是基于内核提供的一个用户接口,用来解释用户输入信息及执行和反馈用户相关命令。
- shell 具有自己的逻辑和判断处理方法,支持特定语法
- 用户的shell设定: /etc/passwd 用户登录shell设定。centos默认是bash.另外其它shell有zsh,ksh,tcsh等。
命令历史
-
用户输入命令,默认会保存若干条。
-
可通过shell中上下键进行查找或重复执行命令。
-
可通过快捷键 ctrl+R 进行查找历史命令。
-
也可通过
!
+命令的前些字符或是!
+命令所在记录的编号 进行执行命令。``` shell #如 最近 执行的 ls -la /tmp 查看 /tmp 目录 文件。可通过下面方法执行 !ls #假如上条 ls -la /tmp 命令在命令历史中 编号是 888 那么可通过下面命令执行 !888 ```
-
最近的一条命令相关信息:
#执行最近命令 !! #查看上条命令执行结果 echo $?
-
-
用户默认的历史命令保存在家目录下
~/ .bash_history
文件。 -
默认历史命令可存 1000条,通过 环境变量
$HISTSIZE
控制存储条数。 -
当前登录用户在没有退出前,默认输入的命令会保存在内存中,在退出时会写入该文件中。
-
清空当前用户 内存中存储 的历史命令:
history -c
-
系统设置 history 命令条数文件:
/etc/profile
可通过重声明来修改。如:export HISTSIZE=5000
-
默认系统是只保留相关的命令,没有命令执行时间 。可通过修改 环境变量保存格式来保存相关信息:
HISTTIMEFORMAT="%Y/%m/%d %H:%M:%S "
。也可保存在 profile 文件中。 -
用户历史命令保存禁止删除,可通过对保存文件
.history
添加隐藏追加权限. 如:chattr +a ~/.bash_history
命令补全和别名
- 为帮助用户减少输入和提醒用户命令的全名和命令的参数,linux中提供命令补全,默认是TAB键。
- 在centos6中只支持命令补全,centos7添加参数补全。相关的包是:
yum install -y bash-completion
。安装后,需重启服务器。 - 另外,有些命令和参数比较多,又比较常用,为帮助用户减少重复输入,引入别名。将长命令重命令以简短不重复的单词。
- 查看系统默认别名:
alias
- 设置命令别名:
alias xxx="命令"
。如常用 的ll命令:alias ll='ls -l --color=auto'
- 取消别名设置:
unalias xxx
- 默认全局别名设置:
/etc/.bashrc
和 目录/etc/profile.d/
下脚本文件。个人设置别名存放于用户家目录下:~/.bashrc
通配符
- 除命令补全外,linux对命令的对象也引入帮助机制--通配符。
- 常见通配符如下:
星号
*
:可匹配所有的字符,不限个数,如命令:ls 1*
,可匹配1.txt,133.sh 问号?
:可匹配所有字符,只匹配一个。 单个字符范围:[123],[1-3],[abc],[a-z]等。 单个字符范围另种表示方法:{1,2,a,3,6}等。
输入输出重定向
- 某些命令输入输出比较多时,或是输出信息需要保存时,linux引入了输入输出重定向符号。
- 重定向包含两种类型:重定向和追加重定向。
- 输入重定向:
<
常用来表示输入文件内容。 - 输入追加重定向:
<<
后需跟终止符 如"EOF" 。表示后续输入信息都是输入的内容,直到遇见终止 符后。wc -l << EOF #此处回车 hello world good
EOF
* 输出重定向:`>`。输出追加重定向:`>>`
* 输出重定向表示:命令输出的信息 保存在后面跟随的文件中,如果原文件有内容,那么之前信息会删除掉。
* 输出追加重定向:原文件内容不变,将当前命令的输出信息追加到该文件中。
* 一般命令输出分为两类:正确输出和错误输出。文件描述符是1和2。可通过指定文件描述符输出追加重定向来指定命令输出 的保存位置。
>如:cat 1.txt > ~/2.txt
>cat 3.txt 1&2 >> ~/2.txt
>cat 4.txt &>> ~/2.txt
>cat 6.txt 1>>~/2.txt 2>1