变量的设定规则:
1,myname=hehe (中间不能有空格,系统变量全部大写)
2,变量若有空格可使用双引号或单引号。
双引号内特殊字符如$,可保持原本特性。例:var="language is $LANG" echo $var 输出:lang is en_US
单引号内的特殊字符仅为一般字符。例:var='lang is $LANG' 输出:lang is $LANG
3,可使用 \ 转义一些特殊字符,比如空格,就不用写在 引号 内了。如:var=lang\ is\ \$LANG 输出:lang is $LANG
4,把一串指令赋值给一个变量。使用 $(指令) 如:var=$(ls -al) , 第二种 var=`ls -al` `是和 ~ 在一起的那个键 最好使用第一种
5,扩展变量内容。例:var=haha var="$var"hehe 输出:hahahehe
6,取消变量 例:unset var
7,变量需要在其他子程序中执行,使用 export 使变量变为环境变量。例:name=haha export name
8, bash 创建一个shell子程序 exit 退出shell子程序 在子程序中:echo $name 输出 haha 不用export 不能输出
一些特殊变量介绍:
1,变量PS1 为命令行 前面显示的提示。初始 PS1='\h: \W \u\$ ' 加入时间 PS1='\T \h: \W \u\$ ' 其他参数网上查
2,$ echo $$ 目前shell的线程号
3,? echo $? 上一个执行指令的回传值 0 操作成功 127 有错误 错误码依软件有不同 可利用错误码网上查出错原因
bash的配置文件 与其相关的配置文件(自己网上查吧)
变量内容的修改与取代,上网查吧
通配符与特殊符号:
符号 意义用法 注意
* 代表 0个到无穷个 ls -l /etc/h* 列出该目录下得 h开头的档案
? 代表一个任意字符ls -l /etc/?.rtf 列出前面有一个字母的 .rtf档案
[] 代表一定有个字符在括号内ls -l /zky/linux/*[2,3]*.rtf 列出有2,3的 .rtf文件 [] 的两边必须要带 *
[-] 代表编码顺序内的所有字符ls -l /zky/linux/*[a-z]*.rtf 列出包含a-z字符的文件 [] 的两边必须要带 *
[^] 代表反向ls -l /zky/linux/[^a-z]*.rtf 列出不含a-z字符的rtf文件 [] 的左边必须不带 *,右边必须带 *
其他特殊符号:
数据流导向:
1 标准输入 stdin,使用< 和 << 将键盘内容改为档案内容来取代 << 可以设置输入的结束字符 cat>xxx<<"eof" 键盘输入到文件 输入eof结束键盘输入或 ^(ctrl)+d结束
2 标准输出 stdout,使用> 和 >> >以覆盖的方法将输入输出到指定档案(写入之前会清空) >>以累加方式输出在档案上(从档案的最后一行写入)
3 标准错误输出 stderr, 使用2> 和 2>> cat>xxx<<cpp.sh 会把cpp.sh的内容读到 xxx 档案中
(将正确与错误的数据全写入一个档案中 用法:find /home -name .bshrc >list 2>&1(正确用法) 两股档案可能交叉写入导致错误)
命令执行:;与 && 与 ||
; 在终端连续下达指令中间的分割
$? 指令执行完的回传值
cmd1 && cmd2 1,若cmd1 执行完毕且正确执行($?=0), 则开始执行 cmd2 ls /temp/abc && touch /tmp/abc/hehe 如果有有该目录则在目录下简历hehe
2,若cmd1执行完毕且为错误($? != 0), 则cmd2不执行
cmd1 || cmd2 1,若cmd1执行完毕且正确执行($?=0), 则cmd2 不执行 ls ./temp || mkdir ./temp 查看是否有temp目录 没有则创建该目录
2,若cmd1执行完毕为错误,则开始执行 cmd2
判断式写法:ls ./temp && echo "exist" || echo "not exist"(正确) ls ./temp || mkdir ./temp && touch ./temp/hehe (错误)
管线命令 |:
如果一群数据必须经过几道手续之后才能得到想要格式,就牵扯到管线命令。例:ls -al /etc | less 分页显示文件列表
1,管线命令,仅会处理标准输出 (standard output),对于错误输出(standard error output) 会忽略
2,管线命令必须要能够接受来自前一个指令的数据, 成为standard input 继续处理才行。例如:less more head tail 是管线命令, ls cp mv 就不是管线命令
例如: last | tail -n 5 取出登录者记录的最后5条数据
export | cut -c 12- 取出环境变量 超过12个字符的变量 cut(剪切)是对一行进行处理
last | grep -v 'root' 只要登录者中没有root去取出 grep 分析一行文字,取得关键字,若改行存在关键词,就整行取出来,可设置颜色
last | cut -d ' ' -f 1 | sort | uniq last将账号列出 仅显示账号栏 进行排序后 仅出一个不重复的
管线命令:主要有cut,grep,sort,wc,uniq,tee,tr,col,join,paste,expand,split,xargs 等。
与shell有关的命令: 百度网盘