Linux centos7 shell 介绍 命令历史命令补全和别名通配符输入输出重定向
Posted Stripling悟
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Linux centos7 shell 介绍 命令历史命令补全和别名通配符输入输出重定向相关的知识,希望对你有一定的参考价值。
一、shell介绍
shell脚本是日常Linux系统管理工作中必不可少的,不会shell,就不是一个合格管理员。
shell是系统跟计算机硬件交互使用的中间介质,一个系统工具。实际上在shell和计算机硬件之间还有一层——系统内核。如果吧计算机比作人的躯体,那系统内核就是人的大脑,至于shell,把它比做人的五官更贴切。
其实,用户直接面对的不是计算机硬件而是shell,用户把指令告诉shell,然后shell再传给系统内核,接着内核再去支配计算机硬件去执行各种操作。
CentOS安装的shell版本是bash(Bourne Again Shell),是sh(Bourne Shell)的增强版。Bourne Shell是最早流行起来的版本,创始人是Steven Bourne,为了纪念他将其命名为Bourne Shell 简称sh
二、命令历史
我们执行过的命令都会记录,预设可记录1000条历史命令,这些命令保存在用户的家目录的.bash_history文件中。
只有当用户正常退出当前shell时,在当前shell中运行的命令才会保存至.bash_history
!是与命令历史有关的一个特殊字符
!!:连续连个表示执行上一条指令
!n:这里的n是数字,表示执行命令史中的第n条指令
!字符串(字符串大于等于1):!pw表示执行历史最近一次以pw开头的命令
[[email protected] ~]# ls /root/.bash_history
/root/.bash_history
[[email protected] ~]#
[[email protected] ~]# cat !$ 可存1000条
cat /root/.bash_history
ping wwwbaiducom
vi /etc/sysconfig/network-scripts/ifcfg-ens33
systemctl restart network.service
ifconfig
route -n
ping www.baidu.com
if config
ifconfig
ping wwww.baudu.com
systemctl restsrt network.service
systemctl restart network.service
journactl -xe
systemctl status network.service
etc/profile
systemctl restart network.service
ssh 192.168.1.106
....
[[email protected] ~]# echo $HISTSIZE 查看可保存多少
1000
[[email protected] ~]#history -c 清除历史命令,但不会删除命令,依旧可以使用命令
[[email protected] ~]# history 查看使用过的命令
[[email protected] ~]# vi /etc/profile 查看文本
HOSTNAME=`/usr/bin/hostname 2>/dev/null`
HISTSIZE=1000 最大存储量
改为500条
HISTSIZE=5000
[[email protected] ~]# echo $HISTSIZE
1000
[[email protected] ~]# source /etc/profile 刷新一下
[[email protected] ~]# echo $HISTSIZE
5000
[[email protected] ~]#
[[email protected] ~]# HISTTIMEFORMAT="%Y/%m/%d %H:%M:%S " 指定格式
[[email protected] ~]# echo $HISTTIMEFORMAT
%Y/%m/%d %H:%M:%S
[[email protected] ~]# vi /etc/profile
HOSTNAME=`/usr/bin/hostname 2>/dev/null`
HISTSIZE=5000
HISTTIMEFORMAT="%Y/%m/%d %H:%M:%S " 粘贴变量
[[email protected] ~]#
[[email protected] ~]# vi /etc/profile
[[email protected] ~]# source /etc/profile
[[email protected] ~]# echo $HISTTIMEFORMAT
%Y/%m/%d %H:%M:%S
[[email protected] ~]#
chattr +a ~ /.bash_history 永久保存
[[email protected] ~]# chattr +a ~/.bash_history
[[email protected] ~]# init 0 正常关机才能保存
[[email protected] ~]# pwd
/root
[[email protected] ~]# !! 执行上一条命令
pwd
/root
[[email protected] ~]# !555 执行第555条命令
fdisk -l
[[email protected] ~]# !pw 执行最近一次以pw开头的命令
pwd
/root
[[email protected] ~]#
三、命令补全和别名
1.命令补全:Tab,敲一下,可以帮我们补全一个指令、一个路径或者一个文件名;敲两下,系统会把所有的命令或者文件都列出来
参数补全,安装bash-completion
[[email protected] ~]# yum install -y bash-completion
已加载插件:fastestmirror
base | 3.6 kB 00:00:00
extras | 3.4 kB 00:00:00
updates | 3.4 kB 00:00:00
Loading mirror speeds from cached hostfile
* base: mirrors.cn99.com
* extras: mirrors.aliyun.com
* updates: mirrors.aliyun.com
正在解决依赖关系
--> 正在检查事务
---> 软件包 bash-completion.noarch.1.2.1-6.el7 将被 安装
--> 解决依赖关系完成
依赖关系解决
=========================================================================================================================================
Package 架构 版本 源 大小
=========================================================================================================================================
正在安装:
bash-completion noarch 1:2.1-6.el7 base 85 k
事务概要
=========================================================================================================================================
安装 1 软件包
总下载量:85 k
安装大小:259 k
Downloading packages:
bash-completion-2.1-6.el7.noarch.rpm | 85 kB 00:00:00
Running transaction check
Running transaction test
Transaction test succeeded
Running transaction
正在安装 : 1:bash-completion-2.1-6.el7.noarch 1/1
验证中 : 1:bash-completion-2.1-6.el7.noarch 1/1
已安装:
bash-completion.noarch 1:2.1-6.el7
完毕!
[[email protected] ~]# reboot
[[email protected] ~]# system
systemctl systemd-coredumpctl systemd-inhibit systemd-run
systemd-analyze systemd-delta systemd-loginctl systemd-stdio-bridge
systemd-ask-password systemd-detect-virt systemd-machine-id-setup systemd-sysv-convert
systemd-cat systemd-escape systemd-notify systemd-tmpfiles
systemd-cgls systemd-firstboot systemd-nspawn systemd-tty-ask-password-agent
systemd-cgtop systemd-hwdb systemd-path
[[email protected] ~]# systemctl res
rescue reset-failed restart
2.别名
alias给命令重新起名字
用户自己的配置别名文件 ~/.bashrc
或者在ls /etc/profile.d/
取消自定义别名
unalias
自定义alias放到~/.bashrc
[[email protected] ~]# systemctl restart network.service
[[email protected] ~]# alias restartsev=‘systemctl restart network.service‘
[[email protected] ~]# restartsev
[[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 restartsev=‘systemctl restart network.service‘
alias rm=‘rm -i‘
alias which=‘alias | /usr/bin/which --tty-only --read-alias --show-dot --show-tilde‘
[[email protected] ~]#
用户自己的配置别名文件 ~/.bashrc
[[email protected] ~]# vi .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] ~]# unalias restartsev 取消别名
[[email protected] ~]#
[[email protected] ~]# restartsev
-bash: restartsev: 未找到命令
[[email protected] ~]#
四、通配符、、输入输出重定向
ls *.txt
ls ?.txt
ls [0-9].txt
ls {1,2}.txt
cat 1.txt > 2.txt 把1.txt指定输入到2.txt
cat 1.txt >> 2.txt 把1.txt追加到2.txt
ls aaa.txt 2 >err
ls aaa.txt 2 >>err
wc -| < 1.txt
command >1.txt 2>&1
[[email protected] ~]# ls *.txt
[[email protected] ~]# ls *
0.txt.gz 4913 5036 anaconda-ks.cfg.01 anaconda-ks.cfg.1 davery davery~ user1
1.txt:
make:
uear1:
[[email protected] ~]#
[[email protected] ~]# touch 1.txt
[[email protected] ~]# touch 2.txt
[[email protected] ~]# touch 3.txt
[[email protected] ~]# ls ?.txt
2.txt 3.txt
1.txt:
[[email protected] ~]#
[[email protected] ~]# ls [0-3].txt
2.txt 3.txt
1.txt:
[[email protected] ~]# ls [1].txt
[[email protected] ~]# ls [123].txt
2.txt 3.txt
1.txt:
[[email protected] ~]# ls [13].txt
3.txt
1.txt:
[[email protected] ~]# ls [23].txt
2.txt 3.txt
[[email protected] ~]#
[[email protected] ~]# ls [0-9a-zA-Z].txt
2.txt 3.txt
1.txt:
[[email protected] ~]#
[[email protected] ~]# ls {1,2,3,}.txt
ls: 无法访问.txt: 没有那个文件或目录
2.txt 3.txt
1.txt:
[[email protected] ~]#
输入、输出重定向
[[email protected] ~]# cat 1.txt > 2.txt
[[email protected] ~]# cat 1.txt >> 2.txt
[[email protected] ~]# ls [12].txt aaa.txt &> 2.txt
[[email protected] ~]# ls 2.txt
2.txt
[[email protected] ~]# ls [12].txt aaa.txt &>> 2.txt
[[email protected] ~]# wc -l < 1.txt
以上是关于Linux centos7 shell 介绍 命令历史命令补全和别名通配符输入输出重定向的主要内容,如果未能解决你的问题,请参考以下文章
5周第3次课 shell介绍 命令历史 命令补全和别名 通配符 输入输出重定向
Linux centos7 shell特殊符号cut命令sort_wc_uniq命令tee_tr_split命令shell特殊符号