shell 基础

《鸟哥的linux私房菜》 shell 学习笔记

1.     命令别名设置功能: alias,如

alias lm=”ls –al”

alias rm=’rm –i’            //防止误删文件

取消命令别名:unalias,如:unalias lm

2.     变量的显示:echo $variable, 如

echo $PATH

3.     变量的设置:等号两边不能直接加空格,如有空格需要加双引号或单引号。双引号内的特殊字符如$可以保有原本的特性,单引号内的特殊字符一般为纯文本。

4.     在命令执行过程中,反单引号(`)之内的命令会先被执行,其执行出来的结果将作为外部的输入信息。

5.     设置变量的作用:假如有一个常用的长目录,可以设置一个变量work=路径,以后只要执行 cd $work即可。

6.     子进程只会继承父进程的环境变量,不会继承父进程的自定义变量。因此,需要使用export命令将自定义变量转换为环境变量:export 变量名称

环境变量=全局变量,自定义变量=局部变量

7.     变量键盘读取:read [-pt] varible

-p: 接提示符, -t 接等待的秒数

例:#read atest                 #echo $atest

#read –p “Please keyin your name:” –t 30 named      #echo $named

8.     声明变量类型: declare/typeset [-aixr] variable

-a:将变量定义为数组array类型

-i:将变量定义为整型

-x:将变量变成环境变量

-r:将变量变为readonly类型

例:declare –Isum=100+30

9.     数组的声明:例var[1]=”small min”  var[2]=”bigmin”

读取:echo “${var[1]},${var[2]}”

10.  限制用户的某些系统资源:ulimit[-SHacdflu] 配额

例:列出目前身份的所有限制数据数值: ulimit –a

限制用户只能建立10MB以下容量的文件:ulimit –f 1024

11.  变量的测试与替换

例:echo$username 出现空白,可能变量没有设置或者设置为空字符串

username=${username-root} echo $username

此时打印的结果是root。如果username已经设置,执行上述替换字符串的命令并不生效。

username=${username:-root} 不管username是否为空,都用root替代。

12.  history命令:

history n  列出最近的n条命令

history –c  将目前的shell中的所有history内容全部清除

13.  ~/.bashrc文件中有PATH变量,并使用export将PATH变成环境变量。    如PATH=$PATH:$HOME/bin

export PATH

这样就可以讲自己创建的执行文件放到~/bin目录下,就可以直接执行该执行文件而不用使用绝对路径来执行。

注意修改该文件后,需要用source命令,因为该文件通过source命令来读取的。

14.  source命令:读入环境配置文件名,用法: source 配置文件名

15.  sort命令:排序,与编码有关。 sort [-fbMnrtuk] [file or stdin]

-r 忽略大小写的差异

-b 忽略最前面的空格符部分

-M 以月份的名字来排序

-n 使用数字进行排序

-t 分隔符,默认是用tab键来分隔

-k 以那个区间来进行排序

例: cat/etc/passwd | sort

       cat /etc/passwd | sort –t ‘ :’ –k 3  以第三列来排序

16. uniq命令:排序后重复的数据只列出一个显示: uniq [-ic]

-i 忽略大小写字符的不同

-c 进行计数

例:last | cut –d ‘ ’ –fl | sort | uniq–c

17.  wc命令,计算输出的信息的整体数据: wc [-lwm]

-l 仅列出行

-w 仅列出多少字

-m 多少字符

例:cat/etc/man.config | wc

18.  tee命令,双向重定向,tee [-a] filename 

-a 以累加的方式将数据写入文件中

19.tr命令:可以用来删除一段信息中的文字,或者进行文字信息的替换

      例:tr [-ds] SET1     

      -d 删除信息当中的SET1这个字符串

      -s 替换掉重复的字符

      例:将last输出的信息中所有的小写字符变成大写字符:

           last | tr ‘[a-z]’ ‘[A-Z]’

           将/etc/passwd输出的信息中的冒号删除:cat /etc/passwd | tr –d ‘:’

19. test 命令:测试功能,检测系统某些文件或属性。例如检测某个文件是否存在:test –e filename.  为了显示结果,可以将上述命令修改为:

test –e filename &&echo “exist” || echo “Not exist”

test 命令的其他参数:

-f 该文件名是否存在且为文件

-d 该文件名是否存在且为目录

-r –w –x 等

test 命令也可用于比较两个数值大小,两个字符串大小等。

如 test n1 eq n2            test–z string 判断字符串是否为0

     多重条件判定:test –r filename –a –xfilename  两个条件同时成立(-a)

           任何一个条件成立–o,  反向状态:!

20.  使用判断符号 [] : 例如判断$HOME这个变量是否为空:

[ -z “$HOME” ] ; echo $?

注意:使用中括号作为判断时,两边必须有空格。并且中括号内的每个组件都需要有空格。中括号内的变量或常量最好以双引号括起来。

21. shell 的默认变量:$0 是执行的脚本文件名,$1,$2,$3……分别是第一、二、三个参数。$# 代表后接的参数的个数,$@ 代表“$1””$2”等。

22. 条件判断式:

if [ 条件判断式 ]; then

            当条件判断式成立时执行的命令

fi              

多个条件可用 && 或 || 连接,注意中括号两边要有空格,其他符号也必须有必要的空格。

if [ 条件判断式 ]; then

     ……

else

     ……

fi

if [ 条件判断式 ]; then

     ……

elif [ 条件判断式 ]; then

     ……

else

     ……

fi

23. case 判断句

case $变量名称 in “第一个变量内容”)

     程序段;

     ;;              //注意两个分号结尾

“第二个变量内容”)

     程序段;

     ;;

*)

     exit1

           ;;

esac

24. 循环

while [ conditon ]

     do

done

 

until [ contition ]      //当条件成立时终止循环

do

done

 

for var in con1 con2 con3 ...

do

done

 

for (( 初始值;限制值;执行步长))

do

done

25. shell的跟踪与调试

sh [ -nvx ] script.sh

-n 不要执行script,仅查询语法的问题

-v 在执行script前,先将script的内容输出到屏幕上

-x 将使用到的script的内容显示到屏幕上

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值