鸟哥私房菜 十一章 bash

本文详细介绍了Shell脚本中的变量设置与使用方法,包括环境变量与自定义变量的区别,变量的显示与取消,单引号与双引号的区别等。此外还介绍了命令别名设置、命令执行顺序及常用命令如cut、grep、sort等的使用。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

本章纯操作内容,把自己认为比较重点的地方做了下笔记

1、type 这个指令我们可以知道每个指令是否为 bash 的内建指令,type用来找指令用。
2、指令的执行:
     为了区别与自定义变量的不同,环境变量通常以大写字母表示
3、变量的显示 echo $变量名 注意不要忘记“$”符号。
4、变量的设置规则:变量两边不能接空格;变量名称只能是英文字母与数字,且开头不能是数字;若该变量需要在其他子进程执行,则需要以export来使变量变成环境变量: export PATH
取消变量的方法为“unset 变量名称”
单引号与双引号必须要成对。
5、单引号与双引号的区别:双引号仍然可以保留变量的内容,但单引号内仅能是一般的字符,而不会有特殊字符。如使用了单引号 myname='$name its me' 此时,如果执行echo $myname ,则原样返回'$name its me'.
6、在一串命令中,在` `之内的命令将会被先执行,而其执行出来的结果将作为外部的输入信息。
7、环境变量跟自定义变量之间的区别:变量是否会被子进程所继续引用。
8、子进程只会继承父进程的环境变量,不会继承父进程的自定义变量。如果想用父进程的自定义变量,那就使用export。
如果想将环境变量转成自定义变量,则需呀declare。
9、为什么环境变量可以被子程序使用?这是因为内存配置的关系

(1)当启动一个shell时,操作系统会分配一块内存区域给shell,此内存可以让子进程使用

(2)若父进程使用了export,可以让自定义变量内容写到上述的记忆区块当中(此时的自定义变量已经被当成环境变量)

(2)当加载另一个shel(亦即子进程)l时,子shell可以将父shell的环境变量所在的记忆区块导入自己的环境变量区块中。

???如果多层继承,是不是需要很大的内存呢?一般系统允许最大有多少层的shell继承???

10、变量键盘读取、数组与声明:read,array,decalre
(1)read 输入:-p 后面可以接提示符   -t后面可以接等待时间。   eg.read -p "Please input your name" -t 30 named

(2)decalre 定义变量类型:

   参数比较重要:
   -a :将后面名为 variable 的发量定义成为数组 (array) 类型
   -i :将后面名为 variable的发量定义成为整数数字 (integer) 类型
   -x :用法不 export 一样,就是将后面的 variable 发成环境发量;
    -r :将变量规定成为 readonly 类型,该发量不可被更改内容,也不能 unset

(3)数组的定义:var[index]=content   显示echo ${var[1]}

11、与文件系统及程序的限制关系:ulimit

12、发量内容的删除、取代与替换

#:符合替换文字的“最短的”那一个;(从前往后)eg. ${var#startChar*endChar} 其中var为变量名,startChar为开始的字符,endChar为结束的字符。
##:符合替换文字的“最长的”那一个。(从后往前)
%,%%跟以上二者类似,只是从后往前删除。
/:替换最近的一个 eg:${var/oldChar/newChar}  var为变量名,oldChar为原来要替换的字符。newChar为新的字符串。
//:两条则表示全部替换
13、命令别名设置
alias设置 eg.alias vi='vim' 
unalias eg.unalias vi 取消设置
14、命令运行顺序:
(1)以相对/绝对路径执行命令
(2)由alias找到该命令来执行
(3)有bash内置的命令来执行;
(4)通过$PATH这个变量的顺序找到的第一个命令来执行。
15、数据流重定向 
16、命令执行的判断依据:一般来说,假设判断式有三个,也就是:
command1 && command2 || command3
17、管道命令:
管道命令"|"仅能处理经由前面一个命令传来的正确信息,即standard output的信息,对于standard error 并没有直接处理的能力。管道命令后面接的必定是"命令",而且这个命令必须要能够接收standard input的数据才行。
管道命令中比较重要的几个:
(1)cut :主要用途在于将同一行里面的数据进行分解,最常使用在分析一些数据或文字数据的时候。
(2)grep:用于分析一行的信息。grep '查找字符串' filename
     -n :顺便输出行号 grep -n '查找字符串' filename
   -i :忽略大小写
(3) 排序命令:
    sort: 可以依据不同的数据类型来排序。 sort [-fbMnrtuk] [file or stdin]
   uniq:拍完序,将重复的数据仅列出一个显示。uniq [-ic]   i:忽略大小写 c计数   
   wc:计算输出的信息的整体信息,如多少行,多少字,多少字符等。 wc [-lwm] l 行,w 字 ,m多少字符。
(4)双向重定向 tee
(5)join :将两个文件当中有相同数据的那一行加在一起。 join file1 file2
在join之前,需要处理的文件应该要事先经过排序(sort)处理。
(6)past :past 直接将两个文件的两行贴在一起,且中间以[tab]键隔开。
(7)expand 将tab键转换成空格键。
(8)切割命令:split
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值