了解追加重定向及别名
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了了解追加重定向及别名相关的知识,希望对你有一定的参考价值。
shell介绍
shell是一个命令解释器,提供用户与机器之间交互
支持特定语法,比如逻辑判断、循环(for in和while)等
每个用户有自己特定的shell,centos7默认shell为bash(Bourne Agin Shell)
其他shell环境还有zsh、ksh等
命令历史 history
history在系统中是一个内置环境变量,默认设置的值是最大记录1000条命令历史,使用echo $HISTSIZE查看默认记录的条数
history -c 清除命令历史,这个记录是只保存到内存当中的,不会实时的保存到文件当中,只有退出当前bash终端,才能够保存命令历史
修改history的命令历史记录条数
[[email protected] ~]# 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条历史命令
[[email protected] ~]# source /etc/profile
[[email protected] ~]# echo $HISTSIZE
2000
修改完成后使用source重新加载一下系统配置文件
让history记录命令操作时间
HISTTIMEFORMAT="%Y/%m%d %H:%M:%S"
[[email protected] ~]# HISTTIMEFORMAT="%Y/%m%d %H:%M:%S"
[[email protected] ~]# echo $HISTTIMEFORMAT
%Y/%m%d %H:%M:%S
[[email protected] ~]# 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/系统环境变量文件中
[[email protected] ~]# 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生效配置
[[email protected] ~]# source /etc/profile
[[email protected] ~]# HISTTIMEFORMAT="%Y/%m%d %H:%M:%S"
[[email protected] ~]# echo $HISTTIMEFORMAT
%Y/%m%d %H:%M:%S
[[email protected] ~]# 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/系统环境变量文件中
[[email protected] ~]# 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生效配置
[[email protected] ~]# source /etc/profile
保护history历史命令,让命令历史只能追加,不能被删除,修改
[[email protected] ~]# chattr +a ~/.bash_history
命令历史快捷操作
!! 执行上条命令
!n n表示一个数字,代表运行命令历史中第N条历史的命令
!echo echo代表以echo开头的最近一次执行的命令,顺序是从最近命令中去找以echo开头的历史命令
命令补全及别名
命令补全:
输入一个路径或命令时在只有一个结果匹配下按一下即可补全,命令或目录名称相同的有多个的话按两下Tab键会出现多个相近的命令和路径以供参考
安装bash-completion支持系统服务命令补全
[[email protected] ~]# 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 已安装并且是最新版本
无须任何处理
[[email protected] ~]# systemctl res
rescue reset-failed restart 服务管理命令补全示例
[[email protected] ~]# systemctl restart network.service
定义命令别名
alias 自定义命令名称 = ‘可执行的命令‘,如定义网络重启命令别名,alias是查看所有的别名
[[email protected] ~]# alias restartnet=‘systemctl restart network.service‘
[[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‘
查看别名存储的位置,别名分别存在于用户家目录下的.bashrc文件、/etc/profile.d/目录下的color命名的文件并以sh结尾的脚本文件中,如下:
[[email protected] ~]# 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
[[email protected] ~]# 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
[[email protected] ~]# 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
取消一个命令别名
[[email protected] ~]# unalias restartnet
命令行中定义的为临时的,退出终端后不会被保存
永久定义是保存到用户家目录的bashrc或/etc/profile.d/目录下的文件当中去
统配符、输入输出重定向
- 统配一个或N个字符前面的字符,列出所有的txt文件,不论命名字符长度,如:
[[email protected] tmp]# ls *.txt
1.txt 3.txt 4.txt 5.txt 722.txt 72.txt 7.txt abc.txt a.txt c.txt
? 表示只匹配一个任意的字符,如列出一个字符命名的.txt文件
[[email protected] tmp]# ls ?.txt
1.txt 3.txt 4.txt 5.txt 7.txt a.txt c.txt
[0-9] 表示匹配0-9范围内的字符命名的文件
[[email protected] tmp]# ls [0-9].txt
1.txt 3.txt 4.txt 5.txt 7.txt
{1,abc,4,a,722} 表示列出条件内符合的字符命名的文件
[[email protected] tmp]# ls {1,abc,4,a,722}.txt
1.txt 4.txt 722.txt abc.txt a.txt
追加重定向
>输出重定向,会覆盖之前或文件中已存在的内容
[[email protected] tmp]# echo "abcd" >1.txt
[[email protected] tmp]# cat 1.txt
abcd
>>追加输出重定向,会在文件或内容最后保存新的输出内容,追加上次输出内容
[[email protected] tmp]# echo "abcdefg" >>1.txt
[[email protected] tmp]# cat 1.txt
abcd
abcdefg
2> 指定错误的输出重定向输出
[[email protected] tmp]# ls aaaa.txt 2>3.txt
[[email protected] tmp]# cat 3.txt
ls: 无法访问aaaa.txt: 没有那个文件或目录
2>> 错误追加重定向输出,追加上次输出内容
[[email protected] tmp]# ls aaaa.txt 2>3.txt
[[email protected] tmp]# cat 3.txt
ls: 无法访问aaaa.txt: 没有那个文件或目录
ls: 无法访问aaaa.txt: 没有那个文件或目录
&>错误和正确的统一输出显示或保存
[[email protected] tmp]# ls 1.txt 222.txt &>4.txt
[[email protected] tmp]# cat 4.txt
ls: 无法访问222.txt: 没有那个文件或目录
1.txt
&>> 错误和正确追加重定向输出,追加上次输出内容
[[email protected] tmp]# ls 722.txt abcdef.txt &>>4.txt
[[email protected] tmp]# cat 4.txt
ls: 无法访问222.txt: 没有那个文件或目录
1.txt
ls: 无法访问abcdef.txt: 没有那个文件或目录
722.txt
<输入重定向,如分屏查看用户配置文件:less </etc/passwd
[r[email protected] tmp]# less </etc/passwd
以上是关于了解追加重定向及别名的主要内容,如果未能解决你的问题,请参考以下文章
8.1 shell介绍 8.2 命令历史 8.3 命令补全和别名 8.4 通配符 8.5 输入输出重
Linux系统编程:基础IO 下dup2 实现输出重定向输入重定向追加重定向 | 理解磁盘 | 理解文件系统中inode的概念 | 软硬链接
Linux系统编程:基础IO 下dup2 实现输出重定向输入重定向追加重定向 | 理解磁盘 | 理解文件系统中inode的概念 | 软硬链接
Linux系统编程:基础IO 下dup2 实现输出重定向输入重定向追加重定向 | 理解磁盘 | 理解文件系统中inode的概念 | 软硬链接
Linux系统编程:基础IO 下dup2 实现输出重定向输入重定向追加重定向 | 理解磁盘 | 理解文件系统中inode的概念 | 软硬链接