本章纯操作内容,把自己认为比较重点的地方做了下笔记
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