Linux shell脚本攻略学习

1.数组有关:

(1)定义数组,打印数组

这些值将会存储在以0为起始索引的连续位置上。

#!/bin/bash
array_var=(1 2 3 4 5 6)
array_y[0]="test1"
array_y[1]="test2"
array_y[2]="test3"
array_y[3]="test4"
index=3
echo $index
echo ${array_y[$index]}
echo ${array_y[3]}
echo ${array_y[*]}
echo ${array_var[3]}
echo ${array_var[@]}
echo ${#array_var[@]}
array_va=(1 2 3 4 5 6 8 9 10)
echo ${#array_va[*]}

结果如下:

打印$index的原因是我把index起始定义到了4,然后位置4是没有值的,所以一直无法打印出来echo ${array_y[$index]},要注意一下这一点。

(2)定义关联数组

#!/bin/bash
declare -A fruit_array
aaa=(1 2 3 4 5)
echo ${aaa[*]}
fruit_array=([banana]='120 dollars' [xigua]='80 dollars')
fruit_array[apple]='100 dollars'
fruit_array[orange]='150 dollars'
echo ${fruit_array[*]}
fruit_array[banana]='180 dollars'
#打印数组内容
echo ${fruit_array[*]}
#打印数组的索引
echo ${!fruit_array[*]}

结果如下:

fruit_array=([banana]='120 dollars' [xigua]='80 dollars')在前,fruit_array[apple]='100 dollars'在后,数组会是三个值。

fruit_array[apple]='100 dollars'在前,fruit_array=([banana]='120 dollars' [xigua]='80 dollars')在后,数组里面只有banana和xigua,没有apple。

2.使用别名

(1)创建一个别名

扫描二维码关注公众号,回复: 4725076 查看本文章

$alias ls='echo lslslslsl'

则再输入ls命令,就不再是原来的作用了,会输出lslslslsl

加上一个\对别名进行转义,则可以起到原来的作用。

alias命令只是暂时的。关闭终端后,所设置过的别名就失效了。要一直起作用就放到~/.bashrc文件中。

可以这样操作:

echo 'alias ls="echo lalalalla"' >>~/.bashrc

如果发现还未生效使用:

source ~/.bashrc

(2)删除别名可以使用unalias命令或者alias aaa=,会取消名为aaa的别名。

使用unalias命令:

对于一些还是有原有作用的别名,不建议使用alias aaa=

(因为类似于ls,是有原本的作用的,使用alias ls=后,连原本作用都失去了)

3.获取终端信息

(1)stty

选项 -echo禁止将输出发送到终端,而选项echo则允许发送输出。

在输入密码时,不显示输入内容demo:

#!/bin/sh
echo -e "Enter password:"
stty -echo
read password
stty echo
#echo $password 
echo Password read.

(2)tput命令和在脚本中生成延时:

echo -n Count:
#存储光标位置
tput sc

count=0;
while true;
do
        if [ $count -lt 40 ];
        then
                let count++;
                sleep 1;
                #恢复光标位置
                tput rc
                #清除
                tput ed
                echo -n $count;
           else exit 0;
           fi
   done

*获取终端的行数和列数:

tput cols
tput lines

*打印出当前终端名称:

tput longname

*将光标坐标移动到坐标(100,100)处:

tput cup 100 100

*设置终端背景色和文本前景色

#n可以在0-7之间取值
#(0-黑色;1-蓝色;2-绿色;3-青色;4-红色;5-洋红色;6-黄色;7-白色)
tput setab n
tput setaf n

*设置文本样式为粗体

tput bold

*设置下划线的起止

tput smul
tput rmul

4.获取设置日期和延时:

(1)读取日期:

   $ date

   2018年 11月 08日 星期四 14:40:10 CST

  (2)读取纪元时:(纪元时被定义为从世界标准时间1970年1月1日0时0分0秒起至当前时刻的总秒数)

    $ date +%s

    154165927

  (3)获取某个日期串的纪元时:

    date --date "2018年 11月 08日 星期四 14:40:10 CST" +%s
    1541679480

(4)获取给定的日期格式:

   date --date "2018年 11月 08日" +%A
   星期四

  (5)按照指定格式打印日期:

    date "+%d %B %Y %A"
    08 十一月 2018 星期四

(6)检查一组命令所花费的时间:

秒级别和毫秒级别的方式:

#!/bin/bahs
start=$(date +%S)
echo $(date +%S)
echo $start;
echo "准备倒数5秒:"
for i in $(seq 5 -1 1)
    do
#sleep在脚本中生成延时
       echo -en "$i";sleep 1
    done
    echo -e "开始"
end=$(date +%S)
difference=$((end - start))
echo Time taken to execute commands is $difference seconds.


start1=$(date +%s%N)
echo $start1
start_ms=${start1:0:16}
 for i in $(seq 2 -1 1)
     do
        echo -en "$i";sleep 1
     done
end1=$(date +%s%N)
end_ms=${end1:0:16}
echo "cost time is:"
echo "scale=6;($end_ms- $start_ms)/1000000" | bc

(7)日期格式表:

星期

%a(例如:Sat)

%A(例如:Saturday)

%b(例如:Nov)

%B(例如:November)

%d(例如:31)
固定格式日期(mm/dd/yy) %D(例如:10/18/10)

%y(例如:10)

%Y(例如:2010)

小时 %I或%H(例如:08)
分钟 %M(例如:33)
%S(例如:10)
纳秒 %N(例如:695208515)
Unix纪元时 %s(例如:1290049486)

猜你喜欢

转载自blog.csdn.net/third_/article/details/83820875