shell 学习记录一

1、一般用户的命令提示符是 $   root 的命令提示符是 #

2、在bash中每个命令之间都是通过 分号或者换行符来分割的例如

      $ cmd1 ; cmd2

3、echo 每次调用后默认会添加换行符,后面的内容可以用 单引号,也可以用双引号,也可以不用引号。区别是

      使用不带单引号的echo时 没法显示 “;”变量在单引号中也无效,变量一般加双引号

      双引号中不能打印特殊符号,需要用转义符号

4、echo -e "\e[1;31m 这里是内容 [0m " 这表示显示彩色字体,30,31,32,33,34,35,36,37 分别表示 黑色,红色,绿色,***,蓝色。。。。

5、echo -e "\e[1;41m 这里是内容 [0m" 这表示显示彩色背景  40,41,42.43,44,分别表示黑色,红色,绿色,***。。。。

6、printf 可以进行格式化输出,需要手动输入换行

      printf  "%-5s  %-10s  %-4.2s\n" NO  NAME  Mark   表示设置宽度分别为 5个,10个字符,4.2 表示可以保留两位小数 ,-表示左对齐,\n表示换行

7、如果要在PATH中添加一条新路径,使用:export PATH="$PATH:/home/usr/bin"  也可以用 如下

       PATH=$PATH:/home/usr/bin

        export $PATH

8、uid 可以获取用户的id号 ,可以直接用 echo $UID 查看。root用户的uid是 0

9、可以用shell来进行数字运算

      方法1、用let,变量名前不需要加$

                   no1=1;

                   nod2=2;

                   let result=nod1+nod2

                   nod自加操作   let nod1++ 自减  let nod1--   

                   let no+=6   和  let no=no+6 是一样的意思

      方法2、result=$[ nod1 + nod2 ]  或者 result=$[ $nod1 + 5 ]

      方法3、result=$(( nod1 + nod2 ))  或者 result=$ (( $nod1 + 5))

      方法4、result=`expr 3 + 4` 或者 result=$(expr $nod1 + 5) 以上计算方法均不支持浮点数

      方法5、result=`echo "scale=3; $nod1/$nod2" |bc` 

                   利用bc进行小数计算,scale表示小数点的位数

                   echo "obase=10;ibase=2;100" |bc 

                    将二进制的100转换成十进制

10、文件描述及重定向

  •         0  ---  stdin  (标准输入)

  •         1 ----- stdout (标准输出)

  •         2----- stderr (标准错误)

  • cmd 2> error.txt  将错误全部重定向至error.txt

  • cmd 2>&1 all.txt 将所有输重定向至all.txt 等于 cmd  &> all.txt

11、数组

        arry_var=(1 2 3 4 5 6)

        打印出特定数组的元素 echo ${arry_var[1]}  其值为 2

        列出数组中的所有值  echo ${arry_var[*]} 结果为 1 2 3 4 5 6

12、关联数组

        declare -A  fruites_value

        fruits_value=([apple]=‘10yuan‘ [orange]=‘15yuan‘)

        显示特定数组内容 echo ${fruits_value[apple]} 结果为 10yuan

        列出所有索引列表  echo ${!fruits_value[*]}


本文出自 “如果技术可以做成艺术!” 博客,请务必保留此出处http://jesus110.blog.51cto.com/376008/1575676

郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。