一、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开头的命令

[root@davery ~]# ls /root/.bash_history
/root/.bash_history
[root@davery ~]# 
[root@davery ~]# 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

....

[root@davery ~]# echo $HISTSIZE  查看可保存多少
1000
[root@davery ~]#history -c 清除历史命令,但不会删除命令,依旧可以使用命令

[root@davery ~]# history   查看使用过的命令

[root@davery ~]# vi /etc/profile 查看文本

HOSTNAME=`/usr/bin/hostname 2>/dev/null`
HISTSIZE=1000  最大存储量

改为500条

HISTSIZE=5000

[root@davery ~]# echo $HISTSIZE
1000
[root@davery ~]# source /etc/profile       刷新一下
[root@davery ~]# echo $HISTSIZE
5000
[root@davery ~]#

[root@davery ~]# HISTTIMEFORMAT="%Y/%m/%d %H:%M:%S " 指定格式

[root@davery ~]# echo $HISTTIMEFORMAT
%Y/%m/%d %H:%M:%S

[root@davery ~]# vi /etc/profile

HOSTNAME=`/usr/bin/hostname 2>/dev/null`
HISTSIZE=5000
HISTTIMEFORMAT="%Y/%m/%d %H:%M:%S "     粘贴变量

[root@davery ~]#

[root@davery ~]# vi /etc/profile
[root@davery ~]# source /etc/profile
[root@davery ~]# echo $HISTTIMEFORMAT
%Y/%m/%d %H:%M:%S
[root@davery ~]#

chattr +a ~ /.bash_history   永久保存

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

[root@davery ~]# init 0  正常关机才能保存

[root@davery ~]# pwd

/root
[root@davery ~]# !! 执行上一条命令
pwd
/root

[root@davery ~]# !555 执行第555条命令
fdisk -l

[root@davery ~]# !pw 执行最近一次以pw开头的命令
pwd
/root
[root@davery ~]#

三、命令补全和别名

1.命令补全:Tab,敲一下,可以帮我们补全一个指令、一个路径或者一个文件名;敲两下,系统会把所有的命令或者文件都列出来

参数补全,安装bash-completion

[root@davery ~]# 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

完毕!
[root@davery ~]# reboot

[root@davery ~]# 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 
[root@davery ~]# systemctl res
rescue reset-failed restart

2.别名

alias给命令重新起名字

用户自己的配置别名文件 ~/.bashrc

或者在ls /etc/profile.d/

取消自定义别名

unalias 

自定义alias放到~/.bashrc

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

用户自己的配置别名文件 ~/.bashrc

[root@davery ~]# 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
~

[root@davery ~]# unalias restartsev 取消别名
[root@davery ~]# 
[root@davery ~]# restartsev
-bash: restartsev: 未找到命令
[root@davery ~]#

四、通配符、、输入输出重定向

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

[root@davery ~]# ls *.txt

[root@davery ~]# ls *
0.txt.gz 4913 5036 anaconda-ks.cfg.01 anaconda-ks.cfg.1 davery davery~ user1

1.txt:

make:

uear1:
[root@davery ~]#

[root@davery ~]# touch 1.txt
[root@davery ~]# touch 2.txt
[root@davery ~]# touch 3.txt
[root@davery ~]# ls ?.txt
2.txt 3.txt

1.txt:
[root@davery ~]#

[root@davery ~]# ls [0-3].txt
2.txt 3.txt

1.txt:
[root@davery ~]# ls [1].txt
[root@davery ~]# ls [123].txt
2.txt 3.txt

1.txt:
[root@davery ~]# ls [13].txt
3.txt

1.txt:
[root@davery ~]# ls [23].txt
2.txt 3.txt
[root@davery ~]#

[root@davery ~]# ls [0-9a-zA-Z].txt
2.txt 3.txt

1.txt:
[root@davery ~]#

[root@davery ~]# ls {1,2,3,}.txt
ls: 无法访问.txt: 没有那个文件或目录
2.txt 3.txt

1.txt:
[root@davery ~]#

输入、输出重定向

[root@davery ~]# cat 1.txt > 2.txt

[root@davery ~]# cat 1.txt >> 2.txt

[root@davery ~]# ls [12].txt aaa.txt &> 2.txt
[root@davery ~]# ls 2.txt
2.txt

[root@davery ~]# ls [12].txt aaa.txt &>> 2.txt

[root@davery ~]# wc -l < 1.txt

转自:https://www.cnblogs.com/davery/p/8721049.html

Linux centos7 shell 介绍、 命令历史、命令补全和别名、通配符、输入输出重定向的更多相关文章

  1. Linux在shell中输入历史命令

    在Linux的shell中,经常输入的命令有很多雷同,甚至是一样的, 如果是长命令,再次敲一遍效率真的是很低, 不过可以通过Ctl+r,  查找history中以前输入的命令,很是好用. 按Ctrl+ ...

  2. 8.1 shell介绍 8.2 命令历史 8.3 命令补全和别名 8.4 通配符 8.5 输入输出重定向 

    8.1 shell介绍 8.2 命令历史 8.3 命令补全和别名 8.4 通配符 8.5 输入输出重定向 什么是shell? shell是一个命令解释器,提供用户和及其之间的交互 致辞特定语法,比如逻 ...

  3. shell介绍、命令历史、命令补全和别名、通配符、输入输出重定向

    第5周第5次课(4月20日) 课程内容: 8.1 shell介绍8.2 命令历史8.3 命令补全和别名8.4 通配符8.5 输入输出重定向 8.1 shell介绍 使用yum+管道方式查看zsh和ks ...

  4. Linux笔记(shell基础,历史命令,命令补全/别名,通配符,输出重定向)

    一.shell 基础 shell是个命令解释器,提供用户和机器之间的交互 每个用户都可以拥有自己特定的shell centos7默认Shell为bash(Bourne Agin shell) 除了ba ...

  5. 【Linux基础】history查看历史命令

    1.history命令 “history”命令就是历史记录.它显示了在终端中所执行过的所有命令的历史. history //显示终端执行过的命令 history //显示最近10条终端执行过的命令 C ...

  6. Linux的简单介绍和常用命令的介绍

    Linux的简单介绍和常用命令的介绍 本说明以Ubuntu系统为例 Ubuntu系统的安装自行百度,或者参考http://www.cnblogs.com/CoderJYF/p/6091068.html ...

  7. rlwrap: command not found和解决linux下sqlplus 提供浏览历史命令行的功能

    rlwrap工具可以解决linux下sqlplus 提供浏览历史命令行的功能,和删除先前输入错误的字母等问题 1.安装 需要readline包 这个安装光盘就有 [root@asm RedHat]# ...

  8. .Neter玩转Linux系列之四:Linux下shell介绍以及TCP、IP基础

    基础篇 .Neter玩转Linux系列之一:初识Linux .Neter玩转Linux系列之二:Linux下的文件目录及文件目录的权限 .Neter玩转Linux系列之三:Linux下的分区讲解 .N ...

  9. bash特性-命令历史命令行编辑

    bash: GUI:Gnome,KDE,XFCE CLI:sh,csh,bash,ksh,tcsh,zsh shell,子shell tree:查看目录树 pstree:查看进程目录树 bash: 1 ...

随机推荐

  1. 测试准确率计算方法说明 pre.eq(target).float().sum().item()

    测试准确率计算方法说明 pre.eq(target).float().sum().item() 待办 pred = logits.argmax(dim=1) correct += pred.eq(ta ...

  2. 并查集路径分裂优化 UnionFind PathSpliting(C++)

    /* * UnionFind.h * 有两种实现方式,QuickFind和QuickUnion * QuickFind: * 查找O(1) * 合并O(n) * QuickUnion:(建议使用) * ...

  3. python | 网络编程(socket、udp、tcp)

    一.套接字 socket 1.1 作用:实现不同主机间的进程间通信(不同电脑.手机等设备之间收发数据) 1.2 分类:udp.tcp 1.3 创建 socket import socket socke ...

  4. jqGrid colModel 参数(来自中文手册)

    jqGrid colModel 参数 ColModel 是jqGrid里最重要的一个属性,设置表格列的属性. 属性 数据类型 备注 默认值 align string left, center, rig ...

  5. 第一次刷leetcode小结

    LeetCode 上不会的 Reverse Integer Gray Code Generate Parentheses Pascal's Triangle II 正方向读和反方向读保持不变的区别 T ...

  6. css+div上下左右自适应居中

    主要记录自己日常积累的布局相关的东西,持续更新中. 1.登录框上下左右自适应居中 以前想要把登录表单始终放置在页面的中间,花了不少心思,一直以来用的解决方法都是用js,感觉有点麻烦不是很好,于是在网上 ...

  7. 使用正则提取字符串中URL等信息

    一.说明 背景:最近在做同步京东商品信息时遇到一个问题,同步后的商品详情无法在富文本中修改,强制修改会导致图片无法正常显示,研究发现详情中的图片是在css的作为背景图指定的. 解决:经过多次尝试,最后 ...

  8. 简单实现一个Unity3d的Timer

    数量使用的不太多,没有实现对象池. using System.Collections; using System.Collections.Generic; using UnityEngine; usi ...

  9. bootstrap联动校验(转载)

    接触bootstrapvalidator时间不久,最近需要多个字段共同验证,网上查了一下未找到,查阅api文档,发现确实可以实现. 先看dom <div class="form-gro ...

  10. centos 7 pip install MySQL-python 报错

    pip install MySQL-python 报错 pip install MySQL-python DEPRECATION: Python . Please upgrade your Pytho ...