知识点小结~2

一、变量

1、环境变量

普通变量:VAR=value;临时环境变量:export VAR=value
shell进程的普通变量作用域是shell进程,当export导入到系统变量时,则作用域时shell进程及其shell子进程。【${#变量}:为变量字符串长度;${变量:起始位置:切片长度};】

2、变量的设定规则:

(1)变量与变量的内容以一个等号来链接;
(2)等号两边不能直接接空格符;
(3)变量名称只能是数字和字母,但是开头字符不能是数字;
(4)变量内容若有空格可使用双引号“”或单引号将变量内容结合起来
  双引号内的特殊字符,可以保持原本特性;
  单引号内的特殊字符仅为一般字符;

3、实现运算:(其中的变量不用加$) 

  (1) let var=算术表达式
  (2) var=$[算术表达式]
  (3) var=$((算术表达式))
  var=$(expr 表达式们)表达式之间需要使用空格分隔

  $[] 和$(()):在其中进行算数运算,变量前的$符可以省略掉。

  [ ]内部(前后都要有空格)变量使用""引起来,可以避免变量未被定义时为空(等价于变量缺失)带来的其他麻烦。

  [[]]内部(前后都要有空格)支持扩展的正则表达式,适用于需要扩展正则表达式判断时使用,一般情况下使用[]即可。(=~)后面筛选的条件直接写即可,不需要使用“”或‘'括起来,否则会错误。

4、数值比较:

-gt 是否大于
-ge 是否大于等于
-eq 是否等于
-ne 是否不等于
-lt 是否小于
-le 是否小于等于 

5、字符串比较:

= 是否等于(也可用 == )已验证
> ascii码是否大于ascii码
< 是否小于
!= 是否不等于
=~ 左侧字符串是否能够被右侧的PATTERN所匹配 注意: 此表达式一般用于[[ ]]中;扩展的正则表达式
-z "STRING“ 字符串是否为空,空为真,不空为假 可以这样理解:-zero:空位真,不空为假
-n "STRING“ 字符串是否不空,不空为真,空为假 也可理解为:-not zero:不为空真,为空假

注意:用于字符串比较时的用到的操作数都应该使用引号

6、()与{}变量传递

  ()开启的子进程与bash命令开启的子进程不同,在()内开启的子进程会继承其父进程定义的变量,但如果()内有与该变量同名的变量,则从父进程继承来的变量便会被覆盖,以()内的变量为准,()开启的子进程执行完其中语句后进程自动结束,其中的变量也会被释放。管道命令也会开启子进程,管道后的命令进程执行完毕后自动结束,与()相类似,而{}不会开启子进程。{}与()相比,除前后都需要加空格外,{}中每条命令后面都需要加;()中最后一条命令后不需要加;。例如:(cmd1;cmd2;cmd3) ,{ cmd1;cmd2;cmd3;} 。

7、read命令输入变量

  read -p "input" INPUT 等价于echo -e "input\c" INPUT=$1

  read -n 5 name :在给name进行输入时只允许输入5个字符,读满5个后自动退出。

  read -d C name :C为输入结束标志符,在读到C字符后,输入结束,name变量中不包含C字符。

  read -t 3 name:在为name变量输入值时,等待3秒。

  read命令也支持多变量输入,以空格分隔开。

  只读变量  readonly  或 declare -r    定义只读变量。只读变量不能使用unset命令释放,exit退出即可。

二、文件查找与压缩打包

1、通过whereis -l来查看执行whereis命令时所查找的文件夹。
  whereis 主要是针对 /bin /sbin 底下的执行档, 以及 /usr/share/man 底下的 man page文件,跟几个比较特定的目录来处理而已。

2、whatis 搜索主要依赖于数据库使用,数据库makewhatis或mandb命令生成。
3、locate(查找文件)同样依赖于数据库,数据库使用updatedb命令,根据/etc/updaetdb.conf的设定去搜索系统硬盘内的文件名,并更新/var/lib/mlocate内的数据库文件。

4、find命令各项参数():
  find /etc -newer /etc/passwd:在etc下找出比/etc/passwd更新的文件。
  find(查找文件)命令:使用 -7000 表示只要至少同时含有 ---s--s--t (每一位数字代表的权限均为且的关系)的所有三个权限。而只需要至少有任意一个权限,就是 /7000  +7000(centos7上已经不支持+7000搜索)(每一位数字代表的权限均为或的关系),虽然s、s、t占用了x位但计算权限数值示仍要计算x。

5、find 执行额外命令格式:
  find 文件目录 选项 条件 -exec 额外命令 {} \;例如:find / -perm /7000 -exec ls -l {} \;{}代表的是由find找到的内容,会将find找到的内容放到{}内;-exec一直到\;是关键词,代表find的额外动作;由于;在bash环境下是有特殊意义,因此利用\来转义。

  find 目录 -mtime -4 (-4:表示4天以内变动过的;+4:表示4天以前变动过的;4:表示在第四天当天变动过的)

  find 目录 -size   -2M  (-1M:表示[0-2M]);+1M:表示(2M,无穷);2M:表示(1M,2M])

6、常用压缩工具及参数

(1)compress(仅对文件压缩)    

  -d:解压缩,相当于uncompress

  -c:结果输出至标准输出,不删除源文件

  -v:显示详情

(2)gzip(仅对文件压缩)

  -d:解压缩,相当于gunzip

  -c:结果输出至标准输出,保留源文件改变

  bzip2(仅对文件压缩)

  -k:keep,保留源文件

  -d:解压缩

(3)xz(仅对文件压缩)

  -k:keep,保留源文件

  -d:解压缩

(4)zip(压缩及打包,可对文件及目录)

  例如: zip -r 被打包压缩文件路径   打包压缩生成的目录

  unzip -p message > message(解压重定向输出)

  cat messages | zip messages - (其中-代表前一条命令的参数)

(5)tar(打包,可通过参数增加压缩功能)

  tar -cpvf 打包生成的文件名 .tar 被打包文件 (归档打包)

  tar -rf 以有打包文件.tar 被追加文件 (追加文件只归档)

  tar -tf 打包文件.tar (查看归档文件中的文件列表)

  tar -xvf 打包文件 -C 解压文件路径 (解压)

  tar -(z|j|J)(c|x)vf (结合压缩工具实现归档并压缩,z:gzip;j:bzip2;J:xz)

 

(6)cpio(打包,需配合重定向输入输出使用)

  find  ./etc -print | cpio -ov > bak.cpio   (将etc目录备份)

  find /data | cpio  -oA -F bak.cpio    (将/data内容住家到bak.cpio,-F指定文件输出)

  cpio -tv  < etc.cpio    (内容预览,配合重定向输入)

  cpio -idv  <  etc.cpio  (解包文件,配合重定向输入)

 

 

 

 

 

 

 

posted @ 2019-05-26 12:06  FightMG  阅读(128)  评论(0编辑  收藏  举报