linux bash shell 简单记录

来源:互联网 发布:天正软件教学 编辑:程序博客网 时间:2024/05/01 21:20

变量的设定规则:

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


与shell有关的命令: 百度网盘







0 0