变量设定规则
变量与内容以一个等号【=】连结,并且等号两边不能有空格。例如name=wang
变量内容若有空格符可使用双引号或者单引号。但是双引号内容 特殊字符如$等,可以保有原本的特性。例如var=“lang is $LANG”,输出lang is en_US;如果是单引号内的特殊字符则仅为一般字符(纯文本)例如:var="lang is $LANG",输出lang is $LANG
可用跳脱字符【\】将特殊符号(如[Enter] ,$ ,\空格等)变成一般字符
在一串指令中,还需要有其他指令提供的信息可以用$(指令)。例如:version=$(uname -r)
若该变量为扩增变量内容时,则可用“$变量名称”或${变量名称}累加,并且后接冒号【:】。例如path=${path}:/home
若该变量需要在其他子程序执行,则需要以export来使变量变成环境变量。例如export path
取消变量的方式使用unset 变量名称
env、set、export区别
env命令可以显示当前用户的环境变量,还可以用来在指定环境变量下执行其他命令。下面来比较一下set,env和export命令的异同:set命令显示当前shell的变量,包括当前用户的变量;env命令显示当前用户的变量;export命令显示当前导出成用户变量的shell变量。每个shell有自己特有的变量(set)显示的变量,这个和用户变量是不同的,当前用户变量和你用什么shell无关,不管你用什么shell都在,比如HOME,SHELL等这些变量,但shell自己的变量不同shell是不同的,比如BASH_ARGC,BASH等,这些变量只有set才会显示,是bash特有的,export不加参数的时候,显示哪些变量被导出成了用户变量,因为一个shell自己的变量可以通过export “导出”变成一个用户变量。
变量键盘读取、数组与声明
bash环境信息read:从键盘中读取信息:语法read [-pt] 变量名称选项与参数:-p:后面可以接提示字符-t:后面可以接等待的时间(秒为单位)declare:声明变量 :语法:declare[-aixr] 变量名称选项与参数:-a:将后面的【变量】定义为数组array类型-i:将后面的【变量】定义为整数数字类型-x:用法 与export一样,就是将后面的变量变成环境变量-r:将变量设定为readonly类型,该变量不可变更改
bash环境配置文件bash的进站信息:/etc/issuebash登录以后信息:/etc/motd
login shell:取得bash时需要完整的登入流程no-login shell:取得bash接口的方法不需要重复登入login shell需要读取的文件/etc/profile:这个是系统整体设定,最好不要修改~/.bash_profile, ~/.bash_login, ~/.profile:属于使用者个人设定。注意:bash读完整体环境设定/etc/profile并且呼叫其他配置文件,接下来依次都读取个人配置文件,顺序如上,但是只会读取其中一个文件。如果~/.bash_profile存在就,不读取其他文件no-login shell需要读取的文件只读取~/.bash_profilelogin-out shell需要读取的文件读取~/.bash_logout
source:读取环境配置文件:语法:source 配置文件名称
管线应用
数据流应用
&&与||应用默认>代表1>;>>代表2>>
- 1>:以覆盖的方法将正确的数据输出到指定的文档或装置;
- 1>>:以累加的方法将正确的数据输出到指定的文档或装置;
- 2>:以覆盖的方法将错误的数据输出到指定的文档或装置
- 2>>:以累加的方法将错误的数据输出到指定的文档或装置
例如:find /home -name .bashrc>right 2>error例如:find /home -name .bashrc>right 2>/dev/null注意:/dev/null垃圾筒,即将信息忽略掉,不显示存储
命令1 && 命令2:若命令1执行完毕且正确,则开始执行命令2若命令2执行完毕且错误,则命令2不执行命令1 || 命令2:若命令1执行完毕且正确执行,则命令2不执行若命令1执行完毕且错误,则开始执行命令2
管道命令
cut:切出某段信息:语法:cut -d “分隔字符” -f 数字【cut -c 字符区间即从第几个字符开始到第几个结束】选项与参数:-d:后面接分隔字符。与-f 一起使用-f:依据-d的分隔字符将一段信息分割成数段,用-f取出第几段-c:以字符为单位取出固定字符区间例如:[QQ@localhost ~]$ ls -l|cut -c 3-[QQ@localhost ~]$ ls -l|cut -d " " -f 1
grep:分析信息,若如果是需要的信息,就输出来
语法:grep [-acinv] [--color=auto] "搜索的字符串" 文件名称-a:将binary文档以text文档方式搜索-c:计算找搜索字符串的 次数-i:忽略大小写-n:顺便输出行号--color=auto:可以将找到关键词部分加上颜色显示
sort排序语法:sort [-fbMnrtuk] [file or stdin]选项与参数:-f:忽略大小写的差异-b:忽略最前面空格符部分-M:以月份的名字来排序-n:使用纯数字进行排序,默认是以文字型态来排序的-r:反向排序-u:相同的数据中,仅出现一行代表;-t:分隔符,预设是用[tab]分隔-k:以那个区间(field)来进行排序的意思例如[QQ@localhost ~]$ ls / |sort -t " " -k 3
tee双向重导向语法:tee [-a] 文件名选项与参数:-a:以累加方式,将数据加入file文件例如:ls / |sort -t " " -k 3|tee QQ
sed工具语法:sed [-nefr] [动作]选项与参数:-n:只有经过sed处理过的哪一行或者动作才会被列出来-e:直接在指令列模式上进行sed的动作 处理-f:将sed的动作写在一个文件内,-f 【文件名称】 则可以执行【文件名称】内的ssed动作-i:直接修改读取的文档内容,而不是由屏幕输出【n1 】【n2 】动作参数a:新增,a后面可以接字符串,而这些字符串会在新的一行出现c:取代,c的后面可以接字符串可以取代n1,n2之间的行d:删除,i:插入p:打印s:取代,可以直接进行取代工作,通常可以搭配正则表达式例如1,20s/old/new/g例如把查询出来的内容替换[root@localhost home]# ls / | sed "s/DD/QQ/g"例如直接往文件中添加“QQQ”内容[root@localhost home]# sed -i '1a QQQ' test.txt