鸟哥的私房菜——BASH&Shell


shell是用户与内核沟通的桥梁,通过shell可以让内核知道我们输入的命令,然后内核再控制硬件完成工作。

变量

顾名思义是一个可以变化的量,通过使用变量,可以简化一些工作。最简单的例子,定义一个变量并给了一个初始值,在后边的代码中多次使用该变量,如果需要修改,则只对变量定义处修改,而后边所有使用该变量的地方均得到修改。

设置与输出

变量定义时等号两边不允许有空格
在这里插入图片描述
bash中的’或"是成对出现的,如果定义一个值为VBird’s的变量,可以使用双引号内加单引号的方式,或者是转义,输出变量时一定要加上$符号,单引号是按照从左向右两两为一对。
在这里插入图片描述
变量内容扩增,变量后边紧跟要扩增的内容,如果有空格则需要转义
在这里插入图片描述
子进程中继续使用父进程中的变量,则需要将变量声明为export
在这里插入图片描述
使用外部命令
在这里插入图片描述
取消设置的变量
在这里插入图片描述
单引号与双引号区别,双引号内可以保存变量的内容,单引号则不可以
在这里插入图片描述

环境变量

通过env指令可以查看当前所有的环境变量

在这里插入图片描述
对部分环境变量进行解释
HOME:用户的根目录,即/home/用户名
SHELL:当前环境所使用的SHELL程序,一般为/bin/bash
HISTSIZE:记录的历史命令条数
MAIL:与邮箱有关
PATH:执行文件的查找路径,通过:隔开
LANG:系统所使用的编码语系
RANDOM:随机数变量,介于0~32767之间
locale

read
使用该命令可以从键盘读取输入,-p可以加提示字符,-t设置等待时间
在这里插入图片描述
declare, typeset
二者具有相同的功能,声明变量的类型,默认是字符串
-a:数组类型
-i:整数类型
-x:设置为环境变量
-r:设置为只读,不可以修改,也不可以取消
在定义数组时,如果之前已经声明了是整数类型,那么在输入字符串则显示为0
在这里插入图片描述
ulimit
限制用户的某些系统资源

变量的内容修改

删除

echo ${variable#内容}

#后边加的就是要删除的部分,#代表从前向后最短匹配的一个,##代表从前向后最长匹配的一个
%代表从后向前最短匹配的一个,%%代表从后向前最长匹配的一个
最前边要加上echo或其他内容,不然就相当于在执行指令,无法删除
删除没有改变原来path的内容,可以使用新的变量来存放删除后的内容
在这里插入图片描述
替换
使用new来替换old,单斜杠替换一个,双斜杠替换所有的

echo ${variable/old/new}

在这里插入图片描述
条件替换
当一个变量不存在时,设置一个内容,若存在则不设置
在这里插入图片描述
当一个变量为空字符时,上面的设置也不会改变其内容,可以通过加:来使空字符的变量也改变内容
在这里插入图片描述
错误提示
如果一个变量不存在,增加提示
在这里插入图片描述

命令别名与历史命令

可以通过alias命令来设置别名,也可以查看当前已设置的命令别名

alias name='命令'

可以通过history查看历史命令,还有参数:
n:表示数字,要列出最近的n条命令
-c:将目前的shell中的所有历史命令清除
-a:将目前新增的历史命令加入histfiles中,若没有,则默认写入~/.bash_history
-r:将histfiles中的记录读取到目前这个shell中的history中
-w:将目前的history记录写入histfiles中

通配符与特殊符号

*[ ][-][^]#\|
0到无穷多个任意字符一个任意字符一定有一个在括号内的字符,如[abcd]一定有一个字符a/b/c/d在编码顺序内的所有字符,[0-9] /[a-z]反向选择,[^abc]除去abc以外的任意一个字符注释符号转义符号管道
;~$&!/>、>><、<<
连续命令的分隔符用户的家目录变量前导符将命令变为后台任务逻辑非目录符号输出重定向,替换、累加输入重定向
’ ‘“ ”· ·( ){ }
不具有变量替换功能具有变量替换功能可以先执行的功能在中间为子shell的起始与结束在中间为命令区块的组合

数据流重定向

标准输入:代码为0,使用<或<<
标准输出:代码为1,使用>或>>
标准错误输出:代码为2,使用2>或2>>
在将标准输出和标准错误输出重定向到一个文件时,需要使用特殊的写法,不然数据会错乱

command > txt 2>&1
command &> txt

将一个文件中的内容复制到另一个文件中
在这里插入图片描述
命令执行的判断根据
;:一次输入多个命令执行
&&:前一个命令正确才执行后一个命令,前一个命令错误的话后一个命令不会执行
||:前一个命令错误才执行后一个命令,前一个命令正确的话后一个不会执行

管道命令

管道使用 | 作为界定符号,前边的输出可以作为后一个的输入
cut
将一行中的某一段信息切出来
-d:后面接分隔字符,与-f一起使用
-f:根据-d的分割字符将一段信息分割成数段,来选择取第几段
-c:以字符的单位取出固定字符区间

在这里插入图片描述
grep
如果某一行中存在我们需要的信息,就将某一行拿出来
-a:将二进制文件以文本文件的方式查找数据
-c:计算找到’查找字符’的次数
-n:输出行号
-v:反向选择,显示没有查找字符的那一行
在这里插入图片描述
sort
排序
-f:忽略大小写差异
-b:忽略最前面的空格
-M:以月份的名字来排序
-n:使用纯数字进行排序
-r:反向排序
-u:去除重复数据,仅显示一行
-t:分隔符号,默认使用[Tab]键
-k:以哪个区间进行排序
在这里插入图片描述
在这里插入图片描述
uniq
-i:忽略大小写
-c:计数
在这里插入图片描述
wc
-l:仅列出行
-w:仅列出多少字
-m:多少字符
在这里插入图片描述
tr
这个命令可以删除一段信息中的文字,也可以进行文字信息的替换
-d:删除某个字符
-s:替换字符
col
将tab键替换为对等的空格
join
将两个文件中具有相同数据的那一行加在一起
paste
直接将两行贴在一起,中间以tab键隔开
expand
将tab键转换成空格键
split
将一个大文件按照行数或者文件大小来划分
-b:后面可接划分成文件的大小,可以加单位,如b,k,m等
-l:以行数来划分
xargs
为某个命令产生参数

-
可以代替标准输入标准输出

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值