shell介绍
-
shell是一个命令解释器,提供用户和机器之间的交互
-
支持特定语法,比如逻辑判断,循环
-
每个用户都可以有自己特定的shell
-
CentOS7默认shell为bash(Bourne Agin Shell)
-
还有zsh,ksh等
命令历史 history
[[email protected] ~]# ls /root/.bash_history
/root/.bash_history
[[email protected] ~]#
-
最大存1000条。
[[email protected] ~]# echo $HISTSIZE
1000
[[email protected] ~]#
-
变量HISTSIZE 在/etc/profile中修改
vi /etc/profile 找到 HOSTNAME=`/usr/bin/hostname 2>/dev/null` HISTSIZE=1000 if [ "$HISTCONTROL" = "ignorespace" ] ; then 如果觉得1000条不够可以改成5000
更改之后必须退出一下终端重新进或者source /etc/profile 才会更改
[[email protected] ~]# echo $HISTSIZE
1000
[[email protected] ~]# source /etc/profile
[[email protected] ~]# echo $HISTSIZE
5000
[[email protected] ~]#
-
变量重新赋值
HISTTIMEFORMAT="%Y/%m/%d %H:%M:%S"
[[email protected] ~]# history
1 ls
2 ls /etc/passwd
3 cat /etc/passwd
4 [[email protected] ~]# cat /etc/passwd
5 root:x:0:0:root:/root:/bin/bash
6 bin:x:1:1:bin:/bin:/sbin/nologin
7 daemon:x:2:2:daemon:/sbin:/sbin/nologin
8 adm:x:3:4:adm:/var/adm:/sbin/nologin
9 lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin
重新赋值之后
[[email protected] ~]# HISTTIMEFORMAT="%Y/%m/%d %H:%M:%S "
[[email protected] ~]# history
1 2017/08/30 19:20:18 ls
2 2017/08/30 19:20:18 ls /etc/passwd
3 2017/08/30 19:20:18 cat /etc/passwd
4 2017/08/30 19:20:18 [[email protected] ~]# cat /etc/passwd
5 2017/08/30 19:20:18 root:x:0:0:root:/root:/bin/bash
6 2017/08/30 19:20:18 bin:x:1:1:bin:/bin:/sbin/nologin
7 2017/08/30 19:20:18 daemon:x:2:2:daemon:/sbin:/sbin/nologin
8 2017/08/30 19:20:18 adm:x:3:4:adm:/var/adm:/sbin/nologin
这时候再打开一个新的终端,这个环境变量是不生效的。
如果想让此环境变量全局生效,需要编辑 /etc/profile把HISTTIMEFORMAT="%Y/%m/%d %H:%M:%S "加到里面
fi
HOSTNAME=`/usr/bin/hostname 2>/dev/null`
HISTSIZE=5000
HISTTIMEFORMAT="%Y/%m/%d %H:%M:%S"
if [ "$HISTCONTROL" = "ignorespace" ] ; then
export HISTCONTROL=ignoreboth
source /etc/profile后生效
-
永久保存命令历史
chattr +a ~/.bash_history
只能追加不能删除
-
如果没有正常退出,历史命令保存不全
-
!!
表示运行最后一条历史命令
-
!n
指定运行历史行数命令
-
!命令
表示命令历史里面最后一次输入这个命令的命令
命令补全及别名
-
tab键,敲一下,敲两下
-
Centos7 支持参数补全,默认不可以,需要安装yum install -y bash-completion 之后重启下系统才能生效。
-
alias别名,给命令从新起个名字
[[email protected] ~]# alias restartnet=‘systemctl restart network.service‘
[[email protected] ~]# restartnet
[[email protected] ~]# alias
alias cp=‘cp -i‘
alias egrep=‘egrep --color=auto‘
alias fgrep=‘fgrep --color=auto‘
alias grep=‘grep --color=auto‘
alias l.=‘ls -d .* --color=auto‘
alias ll=‘ls -l --color=auto‘
alias ls=‘ls --color=auto‘
alias mv=‘mv -i‘
alias restartnet=‘systemctl restart network.service‘
alias rm=‘rm -i‘
alias which=‘alias | /usr/bin/which --tty-only --read-alias --show-dot --show-tilde‘
[[email protected] ~]#
alias 存在用户家目录下的 .bashrc文件里。
还有一些存在 /etc/profile.d/下面
unalias 取消自定义别名
通配符
*
[[email protected] ~]# ls
111 1eer 1.txt 2.txt anaconda-ks.cfg erwe
[[email protected] ~]# ls *.txt
1.txt 2.txt
[[email protected] ~]#
[[email protected] ~]# ls 1*
1eer 1.txt
111:
[[email protected] ~]# ls *1*
1eer 1.txt
111:
[[email protected] ~]#
?
问号表示任意一个字符
[[email protected] ~]# ls ?.txt
1.txt 2.txt
[[email protected] ~]# ls *.txt
1.txt 2.txt bbcc.txt bb.txt
[[email protected] ~]#
[]
选择范围
[[email protected] ~]# ls [123].txt
1.txt 2.txt
[[email protected] ~]# ls [0-9].txt
1.txt 2.txt
[[email protected] ~]# ls [1].txt
1.txt
[[email protected] ~]# ls [2].txt
2.txt
[[email protected] ~]#
{}
也是选择范围,跟[]差不多,但是中间有逗号
[[email protected] ~]# ls {1,2}.txt
1.txt 2.txt
[[email protected] ~]#
输入输出重定向
>
把>前面的内容删除掉重定向到后面内容去。
>>
把>>前面的内容追加到后面内容去。
2>
表示把运行错误的信息定向到一个文件里
[[email protected] ~]# fddd
-bash: fddd: 未找到命令
[[email protected] ~]# fddd 2> 1.txt
[[email protected] ~]# cat 1.txt
-bash: fddd: 未找到命令
2>>
错误追加重定向
&>
错误和正确都有的输出重定向
[[email protected] ~]# ls [12].txt asffsfs.txt &> 1.txt
[[email protected] ~]# cat 1.txt
ls: 无法访问asffsfs.txt: 没有那个文件或目录
1.txt
2.txt
[[email protected] ~]#
<
输入重定向
把<右边的文件内容输入到<左边的命令里面去
[[email protected] ~]# wc -l < 1.txt
3
[[email protected] ~]#
原文地址:http://blog.51cto.com/11751505/2106029
时间: 2024-10-28 19:36:58