shell基础知识

一.什么是shell

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

二.命令历史

概述

history命令用于显示指定数目的指令命令,读取历史命令文件中的目录到历史命令缓冲区和将历史命令缓冲区中的目录写入命令文件。

该命令单独使用时,仅显示历史命令,在命令行中,可以使用符号!执行指定序号的历史命令。例如,要执行第2个历史命令,则输入!2

历史命令是被保存在内存中的,当退出或者登录shell时,会自动保存或读取。在内存中,历史命令仅能够存储1000条历史命令,该数量是由环境变量HISTSIZE进行控制。

语法

history(选项)(参数)

选项

-c:清空当前历史命令;
-a:将历史命令缓冲区中命令写入历史命令文件中;
-r:将历史命令文件中的命令读入当前历史命令缓冲区;
-w:将当前历史命令缓冲区命令写入历史命令文件中。

参数

n:打印最近的n条历史命令。

实例

[root@cc-01 ~]# ls /root/.bash_history  #命令路径
/root/.bash_history
[root@cc-01 ~]# echo $HISTSIZE  #history的值,环境变量
1000
[root@cc-01 ~]# vi /etc/profile  #配置文件
[root@cc-01 ~]# source /etc/profile  #生效
[root@cc-01 ~]#HISTTIMEFORMAT="%Y/%m/%d %H:%M:%S "  #设置环境变量
永久保存 chattr +a ~/.bash_history
!!  运行上一条命令
!n  运行第n条命令
!word  运行某条命令


[root@cc-01 ~]# history     #显示近1000条命令
    1  yum -y install bash-completion 
    2  ip
    3  ip addr
    4  hostnamectl set-hostname cc-o1
    5  hostnamectl set-hostname cc-01
    6  ping www.baidu.com
    7  history
[root@cc-01 ~]# history 3  #显示最近使用3条命令
    6  ping www.baidu.com
    7  history
    8  history 3

三. 命令补全和别名

命令补全:

tab键,敲一下,敲两下
参数补全,安装bash-completion

别名-alias:

概述

给命令重新取个名字,还可以加某些参数,让我们的工作更加方便快捷。

语法

alias(选项)(参数)

选项

-p:打印已经设置的命令别名。

参数

命令别名设置:定义命令别名,格式为“命令别名=‘实际命令’”。

实例

alias 的基本使用方法为:

alias 新的命令='原命令 -选项/参数'

要删除一个别名,可以使用 unalias 命令,如 unalias l。

查看系统别名

218778f4a14173e2910dee203a41293fb21.jpg

设置别名

1dc2e92ab49ded3cf64983be3995f50b886.jpg

删除别名

fa83d13e5242dbfad42bd4326ffc280113b.jpg

别名路径:

  1. 各用户都有自己配置别名的文件 ~/.bashrc
  2.  ls /etc/profile.d/    其他别名配置文件
  3.  自定义的alias放到~/.bashrc

四.通配符与输出重定向

ls *.txt    *匹配所有文件
ls ?.txt    ?匹配一个任意字符的文件
ls [0-9].txt  [0-9]匹配0-9任意一个数字的文件
ls [a-z].txt  [a-z]匹配a-z任意一个字符的文件
ls [12].txt   [12]匹配1或者2的文件
ls {1,2}.txt   {1,2}匹配1或者2的文件
cat 1.txt >2.txt     重定向:把1.txt内容追加到2.txt里面,直接覆盖2.txt里面的内容
cat 1.txt >> 2.txt   追加重定向:把1.txt内容追加到2.txt里面,在2.txt末尾处添加内容。
ls aaa.txt 2>err     错误重定向:ls aaa.txt 错误信息追加到err里面,覆盖。
ls aaa.txt 2>>err    错误追加重定向:ls aaa.txt 错误信息追加到err,直接添加在末尾。
ls [12].txt aaa.txt &>a.txt  正确的错误的都追加到a.txt里面
ls [12].txt aaa.txt >1.txt 2>2.txt   正确的追加到1.txt,错误的追加到2.txt
wc -l < 1.txt        反向重定向:把1.txt内容通过wc -l显示
command >1.txt 2>&1  把command执行的是否正确的东西都输入到1.txt 之打开一次,效率更高
  
/dev/null 表示空设备文件
0 表示stdin标准输入
1 表示stdout标准输出
2 表示stderr标准错误

bea1cef4a429e77c30d7001a809df8ebbdd.jpg94caef191f4f257593f22f85e5bfce895f8.jpg

五. 管道符和作业控制

概述

管道符:把前面命令的输出结果传递给后面的命令

示例说明

28a3ed8499aef20ba63277c8d309bb1b239.jpg

71949f0b303922ceb9e9787a7f344d1c72d.jpg

作业控制:

ctrl z 暂停一个任务   回到主窗口

127122f193c6fb90f41bb74a6d9d20226e1.jpg

jobs查看后台的任务  

1191c9ed23947484a2abd8ba2dce90c7b27.jpg

bg[id]把任务调到后台  

1f216dc6d18ab1ad66f47544b2024cd7e19.jpg

fg[id]把任务调到前台  

1b338cb738df955ca4ea4f0ddf343bb2cb0.jpg

命令后面加&直接丢到后台

831a1cb2e2c44e11b85bc1c1d21a4c33ef3.jpg

变量:

PATH,HOME,PWD,LOGNAME  

env命令  查看常用系统环境变量信息  第一列就是我们系统变量,大写!

40bb78abbf7894a6a57de53855a143744a7.jpg

set命令多了很多变量,并且包括用户自定义的变量,很多类似shell脚本

b0a09e50a6c600da137c94bf768c1aab050.jpg6dbbc8d8f6dbef226207b4454a4d57a66e5.jpg

系统环境变量

2058d47cc6baa3493866bccaf5caa5fed3c.jpg

自定义变量

dc5a967d563787571bb5d88ad30407f9157.jpg

e0efbfce25602e46b1e37899e2aeeff5881.jpg

变量名规则:字母、数字下划线,首位不能为数字  

变量值有特殊符号时需要用单引号括起来

全局变量  当前终端下任何一个shell都能够识别,只能向下识别。

pstree 以树状图的方式展现进程之间的派生关系,显示效果比较直观

export b=2

unset b  取消变量的值

环境变量配置文件

系统层次  一般不去动(全局需要时才会去编辑)

/etc/profile 用户环境变量,交互,登录才执行  

/etc/bashrc 用户不用登录,执行shell就生效  

用户层次  只针对用户需要

~/.bashrc  

~/.bash_profile  

~/.bash_history  

~/.bash_logout  

 /etc/bashrc 下有PS1(Linux系统下的终端命令提示符设置)

PS1='\[\033[01;32m\]\u@\h\[\033[00m\]:\[\033[01;36m\]\w\[\033[00m\]\$ '

PS2——再谈提示符

PS3——Shell脚本中使用select时的提示符

PS4——PS4-“set -x"用来修改跟踪输出的前缀

特殊符号

* 任意个任意字符
? 任意一个字符
# 注释字符
\ 脱义字符
| 管道符

几个和管道有关的命令

cut 分割,-d 分隔符  -f 指定段号   -c 指定第几个字符

ec7edb83fdee811cd507c6192e649dd85db.jpg

bcaa657fd9676d21e14656fe41fcbfe821d.jpg

a613413ee932c3113c38c0211cb1868810c.jpg

sort 排序, -n 以数字排序 -r 反序  -t 分隔符 -kn1/-kn1,n2 第几段

默认按ASCII码值进行排序 

aa9b3f9447bbd8d1d978c275639a13c9169.jpg

sort -n 以数字排序(字母或者特殊符号默认是0)

018f214e9bd5803b9ad849f0534cd4d6ce7.jpg

sort -nr 反序

c8ebd7f06fb65ba393f223a5ce7af070b17.jpg

wc -l 统计行数 -m 统计字符数(注意换行符$) -w 统计词

c8f0c7a16562746916e9e9ee2047486985f.jpg

uniq 去重, -c统计行数  (注意得先排序,在去重)

73164bdb3df15551de1218377cd7e99d38a.jpg

cc2ec2bb1264ce0bf8b33af1133b8037d68.jpg

tee 和>类似,重定向的同时还在屏幕显示  

a26c3988b88f877d6f96b74316ab78d6e41.jpg

tr 替换字符,tr 'a' 'b',大小写替换tr '[a-z]' '[A-Z]'   支持多个

6470ae9fd97f9c60dc66dea8af967eba692.jpg

split 切割,-b大小(默认单位字节),-l行数

271fbdee838fe51cd5a53a0caa6cf7f4629.jpg

8ad5da8a4e319e90faccb410c4dc66836f7.jpg

自定义前缀

cca6702f950956c8689f3fb7a36e6ca9771.jpg

-l 以行来切割

928c33b66c7b848c1f525ee6cb8838fb961.jpg

特殊符号小结

$ 变量前缀,!$组合,正则里面表示行尾
;多条命令写到一行,用分号分割
~ 用户家目录,后面正则表达式表示匹配符
& 放到命令后面,会把命令丢到后台
> >> 2> 2>> &>
[ ] 指定字符中的一个,[0-9],[a-zA-Z],[abc]
|| 当前面的命令执行不成功的时候,执行后面的命令
&& 当前面的命令执行成功的时候,执行后面的命令
[ -d cc ] 判断是否有cc这目录

 

转载于:https://my.oschina.net/ccLlinux/blog/1837388

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值