六、认识与学习BASH

一、Shell的变量功能

1.1 变量的取用与设置:echo, 变量设置规则,unset
  • 取用变量:echo
# echo $变量
# echo ${变量}

上述两种都可以。
设置和修改变量:

# echo ${myname} //变量内容默认为空
# myname=syf

变量设置规则:
(1)’='左右不能有空格
(2)变量名称只可以是英文字母与数字,且开头字符不能是数字
(3)若该变量需要在其他子程序中执行,则需要以export来使变量变成环境变量:“export PATH”
还有很多其他规则,不详细介绍了

  • unset: 取消变量,“unset myname”
1.2 环境变量的功能
  • env:观察环境变量与常见环境变量说明
    在这里插入图片描述
    在这里插入图片描述
    HOME:使用者的主文件夹
    SHELL:目前环境使用的是SHELL的哪支程序(linux默认/bin/bash)
    PATH:可执行文件搜索路径
    LANG:语系数据

  • set:观察所有变量(包括环境变量和自定义变量)

  • PS1:提示字符的设置
    例如本机提示符为 syf@ubuntu:
    在这里插入图片描述
    \d:日期
    \u:使用者账号
    \h:主机名(取第一个小数点前的名称)
    \w:完整工作目录(但主文件夹会以~取代)
    \W:利用basename函数取得工作目录名称
    $: 提示字符。如果是root,则是‘#’

  • $:关于本shell的PID
    $本身也是个变量。
    在这里插入图片描述

  • ?:上一个执行指令的返回值
    在这里插入图片描述
    成功则返回0,失败则返回错误码,上述127即为失败指令的错误码

  • export:自订变量转为环境变量
    子程序仅会继承父程序的环境变量,而不会继承自订变量。想让该变量内容继续在子程序中使用,则执行

# export 变量名

常用在script编写中

1.3 变量键盘读取、阵列与宣告:read,array,declare
  • read:读取来自键盘输入的变量
    常用于script
# read [-pt] variable

-p:后面接字符串作为提示符
-t:等待时间(秒)
在这里插入图片描述

  • declare/typeset:声明变量类型
# declare [-aixr] variable

-a:将variable变量定义为array类型
-i:将variable变量定义为int类型
-r:将variable变量定义为read-only类型(类似const)
-x:将变量变成环境变量(与export功能相同)

在这里插入图片描述
变量类型默认为字符串类型;bash数值运算精度默认为整数。

  • array变量类型
    在这里插入图片描述
1.4 与文件系统及程序的限制关系:ulimit
1.5 变量内容的删除、取代与替换(Optional)

通过简单的动作将变量内容进行微调,而无需直接设置修改原本的内容
在这里插入图片描述

  • 删除

假设我不喜欢local/bin,所以要删除前1个目录:
在这里插入图片描述
#代表从前面开始删除,仅删除最短的那个
如果我想只显示最后一个目录:
在这里插入图片描述
##代表从前面开始删除最长的那个。即删除‘/’到’:'之间最长的字符串(*统配符)
%和%%表示从后面开始删除,其他用法与#和##一样

  • 取代

${变量/旧字符串/新字符串}
${变量//旧字符串/新字符串}
(1)将第一个符合的字符串替换为新字符串
(2)将所有符合的字符串替换为新字符串

  • 变量的测试与内容替换
    判断变量是否存在,若存在,则使用已有的设置;若不存在,则给予一个设置。
    在这里插入图片描述

二、命令别名和历史命令(history)

命令别名设置:alias,unalias

简化指令,例如

# alias lm='ls -al | more'

就多了一个可执行命令lm。alias命名规则与变量定义规则几乎相同。
还可以取代既有指令:

# alias rm='rm -i'

防止误删。
直接使用alias可以查看已有的命令别名,使用"unalias 命令别名"可以取消别名。

历史命令
# history [n]

n:查看最近n条历史命令

三、Bash Shell的操作环境

四、数据流重导向

4.1 什么是数据流重导向

在这里插入图片描述

  • 标准输入(stdin):1,使用<或<<
  • 标准输出(stdout):2,使用>或>>
  • 标准错误输出(stderr):3,使用2>或2>>

Command是默认输入到屏幕,可重定向到文件/设备
在这里插入图片描述
若linuxfile不存在,则自动创建。>是覆盖,>>是追加。

<:用文件内容代替键盘输入
在这里插入图片描述

4.2 命令执行的判断依据
  • ;(分号):不考虑指令相关性的连续指令下达
  • && || :"$?"指令返回值,正确执行会返回0。
    cmd1&&cmd2: cmd1执行完毕且正确执行(返回值为0)才会执行cmd2。
    cmd1||cmd2:cmd1执行完毕且正确执行,则cmd2不执行;否则执行cmd2。

五、管线命令(pipe)

在这里插入图片描述
例:

# ls -al /etc | less

ls指令输出后的内容就能够被less读取,并且利用less的功能可以前后翻动。
即将前一个命令的standard output作为自己的standard input。
注:
(1)管线命令仅会处理standard output,对于standard error output则会忽略
(2)管线命令必须能够接受来自前一个指令的数据称为standard input继续处理才行(例如 ls,cp等就不是管线命令)

5.1 提取命令:cut, grep
  • cut : 切割,主要用于一行里的数据进行分解。对于多空格的情况可能会使用awk
# cut -d '分割字符' -f fields
# cut -c 字符区间

在这里插入图片描述

  • grep
5.2 排序命令:sort, wc, uniq
# sort [-fbMnrtuk] [file or stdin]

-f:忽略大小写差异
-b:忽略最前面的空格
-r:反向排序
-u:uniq功能
-t:指定分割符,默认是tab

在这里插入图片描述

5.3 双向重导向:tee
5.4 字符转换命令:tr,col,join,paste,expand
5.5 分区命令:split
5.6 参数代换:xargs
5.7 减号’-'的用途
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值