linux bash shell 简单记录

变量的设定规则:

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 && cmd21,,若cmd1 执行完毕且正确执行($?=0), 则开始执行 cmd2 ls /temp/abc && touch /tmp/abc/hehe 如果有有该目录则在目录下简历hehe

2,若cmd1执行完毕且为错误($? != 0), 则cmd2不执行

cmd1 || cmd21,若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 script循环语法与个别注意事项(链接)

与shell有关的命令:

偶尔,我一个人站在黄昏的荒野,

linux bash shell 简单记录

相关文章:

你感兴趣的文章:

标签云: