Shell(一)

1.2终端打印
在默认情况下,echo在每次调用后会添加一个换行符。
如果你想打印 ! ,那就不要将其放入双引号中,或者加上转义字符。
echo Hello World !或 echo 'Hello World !'echo "Hello world \!"
每种方法的副作用如下:
使用不带引号的echo时,没法显示分号(;),因为分号(;)在bash中被用作命令定界符。如:echo hello;hello 这被视为两个命令。
使用带单引号的echo时,Bash不会对单引号中的变量(如$var)求值,而只是照原样显示。如:echo '$var' 返回$var.
当在echo中使用带双引号的文本时,在echo之前使用set +H,可正常显示!。
(1)echo -e:处理特殊字符。
若字符串中出现以下字符,则特别加以处理,而不会将它当成一般文字输出:
\a 发出警告声;
\b 删除前一个字符;
\c 最后不加上换行符号;
\f 换行但光标仍旧停留在原来的位置;
\n 换行且光标移至行首;
\r 光标移至行首,但不换行;
\t 插入tab;
\v 与\f相同;
\ 插入\字符;
\nnn 插入nnn(八进制)所代表的ASCII字符;

$echo -e "a\bdddd"
dddd
$echo -e "a\adddd" //输出同时会发出报警声音
adddd
$echo -e "a\ndddd" //自动换行
a
dddd
(2)echo -n:不换行输出。

1.3变量和环境变量
export命令用来设置环境变量。
如果需要在PATH中添加一条新路径,可以使用:export PATH=" $PATH:/home/user/bin"或PATH="$PATH:/home/user/bin" export PATH
获得字符串的长度:length=${#var}
root 用户的UID是0.
1.4 通过shell进行数学运算
利用let、(())和[]执行基本的算术操作。
let no++
result= [no1+no2]result= ((no1+no2))
1.5文件描述符合重定向
文件描述符:
0——stdin
1——stdout
2——stderr
echo "this is a text" > tmp.txt #覆盖tmp.txt文件
echo "this is a text">> tmp.txt #追加到tmp.txt文件中
如果想使用特定的文件描述符,你必须将描述符置于操作符之前(>等同于1>)。
当一个命令发生错误并退回时,他会返回一个非0的推出状态,可以通过echo $? 命令进行查看。
/dev/null 是一个特殊的设备文件,null设备通常也被称为位桶。
cat <<FOF>> log.txt 与下一个EOF行之间的所有文本都会被当做stdin数据,重定向到log.txt
可以使用 exec 命令创建自定义的文件描述符。
1.6数组
普通数组只能使用整数作为数组索引,而关联数组可以使用字符串作为数组索引。
定义数组:arry=(1 2 3 4)或arry[0]="test"

    echo ${arry[0]}
    echo ${arry[*]} #打印数组中所有值
    echo ${#arry[*]} #打印数组的长度

关联数组

declare -A ass_array #声明ass_array为关联数组
声明之后,将元素添加到关联数组中:
ass_arrray=([index1]=val1 [index2]=var2)或ass_array[index1]=val1 ass_array[index2]=val2
    echo ${!array_var[*]}echo ${!array_var[@]} #列出数组索引.

1.7别名
alias new_command=’command sequence’
alias命令的作用只是暂时的。一旦关闭当前终端,所有设置过的别名就失效了。为了使之一直保持作用,可以将它放入~/.bashrc文件中。

1.9日期

    date -s "21 June 2016 11:23:22" #设置日期和时间

1.10调试
把shebang从#!bin/bash改成#!/bin/bash -xv,不用任何其他选项就可以启用调试功能了
1.12读取命令序列输出

cmd_output=$(ls | cat -n)  echo $cmd_output
反引号也可以存储命令输出
cmd_output=`ls | cat -n`  echo $cmd_output

1.13read
read -s var #以不用回显的方式读取var
read -t 2 var #两秒种内将键入的字符串读入变量var
1.14IFS(internal field separator)

    #读取data中的每一个条目
    data ="name,sex,rollno,location"
    oldIFS=$IFS
    IFS=, #IFS设置为逗号
    for item in $data
    do
    echo Item:$item
    done
    IFS=$oldIFS

1.15比较

[ $var -eq 0 ] #等于0返回真
-gt:大于
-lt:小于
-ge:大于或等于
-le:小于或等于

文件系统测试

    [ -f $var ]:如果给定的变量包含正常的文件路径或文件名,则返回真。
    [ -x $var ]:如果给定的变量包含的文件可执行,则返回真
    [ -d $var ]:如果给定的变量包含的是目录,返回真
    [ -e $var ]:如果给定的变量包含的文件存在,返回真
    [ -w $var ]:如果给定的变量包含的文件可写```
    [[ $str1 == $str2 ]] #字符串比较,相等返回真。
    [[ -z $str1 ]] #str1包含的是空字符串,返回真
    [[ -n $str2 ]] #str2非空,返回真。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值