鸟哥的Linux私房菜——第三部分|第11章 认识与学习bash

1 认识bash这个shell

用户通过shell与内核进行通信,而内核与硬件进行通信。
shell的功能只是提供用户操作系统的一个接口,因此它需要调用其他独立的软件(应用程序)。

1.1 环境变量的功能
  • env命令:查看环境变量
  • set命令:查看所有变量(含环境变量与自定义变量)
  • export命令:自定义变量转成环境变量
    • 登陆Linux并取得一个bash后,这个bash就是一个独立的进程。在bash下面执行的任何命令都是由这个bash衍生出来的,那些被执行的命令称为子进程。子进程会继承父进程的环境变量,但不会继承父进程的自定义变量。
    • export 变量名称 将自定义变量转为环境变量
1.1 变量内容的删除、替代与替换
// 先让小写path与PATH内容相同
path=${PATH}
echo path
> /usr/kk/sbin:/usr/kk/bin:/usr/local/sbin

现在要删除kk

echo ${path#/*kk/bin:}

2 命令别名与历史命令:alias、unalias

  • alias使用别名
alias lm='ls -l | more'
alias rm = 'rm -i'
  • unalias取消别名
unalias lm='ls -l | more'
unalias rm = 'rm -i'

3 历史命令:history

history [n]
history [-c]
history [-raw] histfiles

n:数字,要列出最近的n条命令行
-c:clear目前shell中的所有history内容
-a:将目前新增的history命令新增如histfiles中,若没有加histfiles,则默认写入~/.bash_history
-r:读histfiles内容至shell的history
-w:将shell的history写入histfiles

4 数据流重定向

4.1 standard output 与 standard error output

标准输出——命令执行所回传的正确信息;
标准错误输出——命令执行失败后,所回传的错误信息;

数据流重定向可以将stdout于stderr分别传送到其他文件或设备,而分别传送所用的特殊字符则如下所示:

1 标准输入:代码为0,使用<或<<
2 标准输出:代码为1,使用> (覆盖已有数据) 或>>(append操作)
3 标准错误输出:代码为2,使用2> (覆盖已有数据) 或2>>(append操作)

4.2 命令执行的判断根据:;,&&,ll
几种一次性输入多条指令的方法
  • cmd; cmd【不考虑命令相关性的连续命令执行】

  • $?(命令回传码)与&&或|| 【后一个命令与前一个命令有关】

    若前一个命令执行正确,Linux则会回传一个$?=0的值

    通过回传码及 “&&” 与 “||” 来判断后续命令是否要执行.
    在这里插入图片描述

5 管道命令(pipe)

bash命令执行的时候有输出的数据出现,若这群数据必须要经过几道手续后才能得到我们想要的格式,应该如何来设置?——使用管道命令。
举例:

  • 对ls -al /etc的输出执行less操作
    ls -al /etc | less
    
    管道命令“ | ”仅能处理经由前面一个命令传来的正确信息(即stdout),而不支持stderr。

6 选取命令:cut, grep

选取命令,即对一段数据进行分析取出我们所想要的信息。选取信息通常是针对“行”来分析的,而不是对整篇信息分析。

  • cut

    cut -d '分割字符' -f fields  <= 用于分隔字符
    cut -c 字符范围  <= 用于排列整齐的信息
    

    -d:后面接分隔字符,与-f一起使用;
    -f:依据-d的分隔字符将一段信息分割成为数段,用-f取出第几段的意思
    -c:以字符的单位取出固定字符区间

例子:

export

在这里插入图片描述

export | cut -c 12-  //【将export的内容 按行取第12个字符之后的所有数据】

在这里插入图片描述

  • grep:分析一行信息,若含有我们所需信息则取出

    grep [-acinv] [--color=auto] '查找字符串' filename
    

    -a:将binary文件以text文件的方式查找数据;
    -c:计算找到’查找字符串’的次数;
    -i:忽略大小写差异
    -n:顺便输出行号;
    -v:反向选择,即显示出没有’查找字符串’内容的那一行
    –color=auto:可以将找到的关键字部分加上颜色显示

    # ①将 last 当中有出现root的那一行取出来
    last | grep ‘root’
    # ②将 last 当中没有出现root的那一行取出来
    last | grep -v ‘root’
    # ③在 last 的输出信息中, 只要有root就取出来,且取第一列
    last | grep ‘root’ | cut -d ’ ’ -f1

7 双向重定向:tee

tee会同时将数据流传到文件与屏幕screen(stdout);

tee [-a] file
参数:
-a:以append的方式将数据加入至file中
last | tee last.list | cut -d " " -f1
# 将 last 的输出存一份到last.list中
ls -l /home | tee [-a] ~/homefile | more
# 将 last 的输出存一份到last.list中,同时屏幕也有输出信息

8 切割命令:split

  • split 将一个大文件切割成若干个小文件

    split [-bl] file PREFIX
    

    -b:后街欲切割成的文件大小,可加单位,如b,k,m等;
    -l:以行数来切割;
    PREFIX:前导符,可作为切割文件的前导文字

    cd /tmp; split -b 300k /etc/termcap termcap
    #将/etc/termcap切割成300k大小的若干小文件,前导符为termcap
    # 结果会生成termcapaa, termcapab, termcapac等文件
    
  • 如何将若干小文件合成一个大文件?

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值