了解追加重定向及别名

shell介绍

shell是一个命令解释器,提供用户与机器之间交互
支持特定语法,比如逻辑判断、循环(for in和while)等
每个用户有自己特定的shell,centos7默认shell为bash(Bourne Agin Shell)
其他shell环境还有zsh、ksh等

命令历史 history

history在系统中是一个内置环境变量,默认设置的值是最大记录1000条命令历史,使用echo $HISTSIZE查看默认记录的条数
history -c 清除命令历史,这个记录是只保存到内存当中的,不会实时的保存到文件当中,只有退出当前bash终端,才能够保存命令历史
修改history的命令历史记录条数

[root@localhost ~]# vim /etc/profile       修改系统启动配置文件
# /etc/profile

# System wide environment and startup programs, for login setup
# Functions and aliases go in /etc/bashrc
HOSTNAME=`/usr/bin/hostname 2>/dev/null`
HISTSIZE=1000                                 修改HISTSIZE为记录的数量,这里记录2000条历史命令
[root@localhost ~]# source /etc/profile
[root@localhost ~]# echo $HISTSIZE
2000
修改完成后使用source重新加载一下系统配置文件

让history记录命令操作时间
HISTTIMEFORMAT="%Y/%m%d %H:%M:%S"

[root@localhost ~]# HISTTIMEFORMAT="%Y/%m%d %H:%M:%S"
[root@localhost ~]# echo $HISTTIMEFORMAT
%Y/%m%d %H:%M:%S
[root@localhost ~]# history 
    1 2018/0628 11:09:20ip a
    2 2018/0628 11:09:20/etc/init.d/network restart
    3 2018/0628 11:09:20ip a

HISTTIMEFORMAT这个变量只是在这个终端里生效,如果打开新的终端则不生效了,需要写入/etc/profile/系统环境变量文件中
[root@localhost ~]# vim /etc/profile       修改系统启动配置文件
# /etc/profile

# System wide environment and startup programs, for login setup
# Functions and aliases go in /etc/bashrc
HOSTNAME=`/usr/bin/hostname 2>/dev/null`
HISTSIZE=1000           
HISTTIMEFORMAT="%Y/%m%d %H:%M:%S"              添加HISTTMEFORMAT的历史命令的记录格式,保存后使用source生效配置
[root@localhost ~]# source /etc/profile

[root@localhost ~]# HISTTIMEFORMAT="%Y/%m%d %H:%M:%S"
[root@localhost ~]# echo $HISTTIMEFORMAT
%Y/%m%d %H:%M:%S
[root@localhost ~]# history 
    1 2018/0628 11:09:20ip a
    2 2018/0628 11:09:20/etc/init.d/network restart
    3 2018/0628 11:09:20ip a

HISTTIMEFORMAT这个变量只是在这个终端里生效,如果打开新的终端则不生效了,需要写入/etc/profile/系统环境变量文件中
[root@localhost ~]# vim /etc/profile       修改系统启动配置文件
# /etc/profile

# System wide environment and startup programs, for login setup
# Functions and aliases go in /etc/bashrc
HOSTNAME=`/usr/bin/hostname 2>/dev/null`
HISTSIZE=1000           
HISTTIMEFORMAT="%Y/%m%d %H:%M:%S"              添加HISTTMEFORMAT的历史命令的记录格式,保存后使用source生效配置
[root@localhost ~]# source /etc/profile

保护history历史命令,让命令历史只能追加,不能被删除,修改

[root@localhost ~]# chattr  +a  ~/.bash_history

命令历史快捷操作
!! 执行上条命令
!n n表示一个数字,代表运行命令历史中第N条历史的命令
!echo echo代表以echo开头的最近一次执行的命令,顺序是从最近命令中去找以echo开头的历史命令

命令补全及别名

命令补全:
输入一个路径或命令时在只有一个结果匹配下按一下即可补全,命令或目录名称相同的有多个的话按两下Tab键会出现多个相近的命令和路径以供参考

安装bash-completion支持系统服务命令补全

[root@localhost ~]# yum install -y bash-completion
已加载插件:fastestmirror
base | 3.6 kB 00:00:00     
epel/x86_64/metalink | 7.8 kB 00:00:00     
epel | 3.2 kB 00:00:00     
extras | 3.4 kB 00:00:00     
updates | 3.4 kB 00:00:00     
(1/2): epel/x86_64/updateinfo | 924 kB 00:00:00     
(2/2): epel/x86_64/primary | 3.5 MB 00:00:02     
Loading mirror speeds from cached hostfile
 * base: mirrors.aliyun.com
 * epel: mirrors.aliyun.com
 * extras: mirrors.aliyun.com
 * updates: mirrors.tuna.tsinghua.edu.cn
epel 12602/12602
软件包 1:bash-completion-2.1-6.el7.noarch 已安装并且是最新版本
无须任何处理
[root@localhost ~]# systemctl res 
rescue        reset-failed  restart                    服务管理命令补全示例
[root@localhost ~]# systemctl restart network.service

定义命令别名
alias 自定义命令名称 = '可执行的命令',如定义网络重启命令别名,alias是查看所有的别名

[root@localhost ~]# alias restartnet='systemctl restart network.service'
[root@localhost ~]# 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'

查看别名存储的位置,别名分别存在于用户家目录下的.bashrc文件、/etc/profile.d/目录下的color命名的文件并以sh结尾的脚本文件中,如下:
[root@localhost ~]# cat .bashrc 
# .bashrc

# User specific aliases and functions

alias rm='rm -i'
alias cp='cp -i'
alias mv='mv -i'

# Source global definitions
if [ -f /etc/bashrc ]; then
 . /etc/bashrc
fi
[root@localhost ~]# cat /etc/profile.d/colorls.sh |grep alias
  alias ll='ls -l' 2>/dev/null
  alias l.='ls -d .*' 2>/dev/null
alias ll='ls -l --color=auto' 2>/dev/null
alias l.='ls -d .* --color=auto' 2>/dev/null
alias ls='ls --color=auto' 2>/dev/null
[root@localhost ~]# cat /etc/profile.d/colorgrep.sh |grep alias
alias grep='grep --color=auto' 2>/dev/null
alias egrep='egrep --color=auto' 2>/dev/null
alias fgrep='fgrep --color=auto' 2>/dev/null

取消一个命令别名

[root@localhost ~]# unalias restartnet

命令行中定义的为临时的,退出终端后不会被保存
永久定义是保存到用户家目录的bashrc或/etc/profile.d/目录下的文件当中去

统配符、输入输出重定向

  • 统配一个或N个字符前面的字符,列出所有的txt文件,不论命名字符长度,如:
[root@localhost tmp]# ls *.txt
1.txt 3.txt 4.txt 5.txt 722.txt 72.txt 7.txt abc.txt a.txt c.txt

? 表示只匹配一个任意的字符,如列出一个字符命名的.txt文件

扫描二维码关注公众号,回复: 1776210 查看本文章
[root@localhost tmp]# ls ?.txt
1.txt 3.txt 4.txt 5.txt 7.txt a.txt c.txt

[0-9] 表示匹配0-9范围内的字符命名的文件

[root@localhost tmp]# ls [0-9].txt
1.txt 3.txt 4.txt 5.txt 7.txt

{1,abc,4,a,722} 表示列出条件内符合的字符命名的文件

[root@localhost tmp]# ls {1,abc,4,a,722}.txt
1.txt 4.txt 722.txt abc.txt a.txt

追加重定向

>输出重定向,会覆盖之前或文件中已存在的内容
[root@localhost tmp]# echo "abcd" >1.txt 
[root@localhost tmp]# cat 1.txt 
abcd

>>追加输出重定向,会在文件或内容最后保存新的输出内容,追加上次输出内容
[root@localhost tmp]# echo "abcdefg" >>1.txt 
[root@localhost tmp]# cat 1.txt 
abcd
abcdefg

2> 指定错误的输出重定向输出
[root@localhost tmp]# ls aaaa.txt 2>3.txt 
[root@localhost tmp]# cat 3.txt 
ls: 无法访问aaaa.txt: 没有那个文件或目录

2>>  错误追加重定向输出,追加上次输出内容
[root@localhost tmp]# ls aaaa.txt 2>3.txt 
[root@localhost tmp]# cat 3.txt 
ls: 无法访问aaaa.txt: 没有那个文件或目录
ls: 无法访问aaaa.txt: 没有那个文件或目录

&>错误和正确的统一输出显示或保存
[root@localhost tmp]# ls 1.txt 222.txt &>4.txt 
[root@localhost tmp]# cat 4.txt 
ls: 无法访问222.txt: 没有那个文件或目录
1.txt

&>> 错误和正确追加重定向输出,追加上次输出内容
[root@localhost tmp]# ls 722.txt abcdef.txt &>>4.txt 
[root@localhost tmp]# cat 4.txt 
ls: 无法访问222.txt: 没有那个文件或目录
1.txt
ls: 无法访问abcdef.txt: 没有那个文件或目录
722.txt

<输入重定向,如分屏查看用户配置文件:less </etc/passwd
[root@localhost tmp]# less </etc/passwd

猜你喜欢

转载自blog.51cto.com/8844414/2133706
今日推荐