中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

Linux shell 示例(一)

發布時間:2020-07-11 07:51:24 來源:網絡 閱讀:795 作者:woonli 欄目:開發技術

一、環境
系統:Centos6.6 x64
shell:bash、sh

[centos@Shell ~]$ hostname
Shell
[centos@Shell ~]$ lsb_release -a
LSB Version:    :base-4.0-amd64:base-4.0-noarch:core-4.0-amd64:core-4.0-noarch:graphics-4.0-amd64:graphics-4.0-noarch:printing-4.0-amd64:printing-4.0-noarch
Distributor ID: CentOS
Description:    CentOS release 6.6 (Final)
Release:    6.6
Codename:   Final
[centos@Shell ~]$ echo $SHELL
/bin/bash
[centos@Shell ~]$ ifconfig eth0 |grep "t addr"| awk -F '[: ]+' '{print $4}'
192.168.101.110

二、腳本示例
1、終端打印

#!/bin/bash
#The printf of Linux termnal,Include "echo,printf"
#author by woon 
echo "The shell\`s name is $0"

#examples of echo,printf
#默認打印。輸出換行
echo "Hello World!" 
echo 'Hello World!'
#echo -n參數接受不換行輸出
echo -n "Hello World"
echo "Hello World"
#-e參數接受雙引號內字符串的轉移列表
echo "Hello\tWorld!"
echo -e "Hello\tWorld!"
#printf使用文本或由空格分割的參數,可指定輸出的寬度、對其方式等,可以格式化輸出,默認情況下,printf不輸出換行
printf "%-5s %-10s %-4s\n" No. NAME Mark
printf "%-5s %-10s %-4s\n" 1 Lee 80
printf "%-5s %-10s %-4.2f\n" 2 Woon 90.456
printf "%-5s %-10s %-4.2f\n" 3 James 85.654321
printf "%-5s %-10s %-5.3f\n" 4 Jeff 85.123789

運行結果:

The shell`s name is shell_print.sh
Hello World!
Hello World!
Hello WorldHello World
Hello   World!
-e Hello    World!
No.   NAME       Mark
1     Lee        80  
2     Woon       90.46
3     James      85.65
4     Jeff       85.124

2、環境變量

#!/bin/bash
#author by woon
#env#獲取全局環境變量
env > /tmp/env_$(date +%Y%m%d).$$
head -n 10 /tmp/env_$(date +%Y%m%d).$$
echo "^^^^^^^^^^^^^^^^^分隔符^^^^^^^^^^^^^^^^^^^^^^" 
#獲取單個全局變量的值
echo $PATH
echo "^^^^^^^^^^^^^^^^^分隔符^^^^^^^^^^^^^^^^^^^^^^"
#自定義變量和自定義全局變量,刪除環境變量
var="Hello World"
echo -n "$var" 
echo -n $var
echo ${var}
#設置全局環境變量
export VAR

#獲取當前的shell版本
echo $SHELL
#or
echo $0
#獲取變量的長度
var="Hello World"
echo ${#var}

#變量內容的刪除
path=$PATH
echo $path
echo "最短刪除,非貪婪模式,由前向后刪除"
var1=${path#/*:}
echo $var1
echo "貪婪模式,刪除匹配到最長的,由前向后刪除"
var2=${path##/*:}
echo $var2
echo "非貪婪模式%,由后向前刪除"
var3=${path%:*bin}
echo $var3

echo "貪婪模式,由后向前刪除最長的"
var4=${path%%:*bin}
echo $var4

3、shell數學運算

#!/bin/bash
#author by woon.
#數學運算
sum_jia=0
sum_cheng=1
i=1

while [ $i -le 10 ]; 
do
     let "sum_jia+=i"
     let "sum_cheng*=i"
     let "i += 2"
done
sum_jian1=$[ sum_cheng - sum_jia]
sum_jian2=$(( sum_cheng - sum_jia ))

echo $sum_jia
echo $sum_cheng
echo $sum_jian1
echo $sum_jian2

運行結果
$ ./shell_num.sh
25
945
920
920

4、文件查找和文件列表幾操作

#!/bin/bash
#author by woon
#find 可以基于名字、類型、時間、大小、目錄深度、大小權限、用戶等查找并執行動作
#example

sudo find /etc/ -iregex ".*\(\.py\|\.sh\)" -type f  -atime -1 -user root -size -2k -perm 644 -print
#sudo find /etc/ -iregex ".*\(\.py\|\.sh\)" -type f  -atime -1 -user root -size -2k -perm 644 -delete
sudo find /etc/ -iregex ".*\(\.py\|\.sh\)" -type f  -atime -1 -user root -size -2k -perm 644 -exec ll {} \;
sudo find /etc/ -iregex ".*\(\.py\|\.sh\)" -type f  -atime -1 -user root -size -2k -perm 644 -print0 | xargs -0  ls -l

5、tr轉換
tr參數屬于集合映射關系
tr刪除

[centos@Shell scripts]$ uuidgen | tr -d [a-z]
37643-2050-48-25-547825

tr替換
本替換其實值將0-a、1-b …… 9-j的映射關系替換

[centos@Shell scripts]$ echo | md5sum |tr [0-9] [a-z]
gibdcjdajijdedeajjchdiadfcbjcjea  -

6、校驗和核實
md5sum

[centos@Shell scripts]$ ls
dialog_t.md5  os_monitor-dialog.sh  shell_print.sh    test.sh
dialog_t.sh   pcpu_usage.sh         shell_search.sh   top10_commands.sh
inpath        shell_num.sh          shell_varable.sh
[centos@Shell scripts]$ md5sum os_monitor-dialog.sh >os_monitor-dialog.md5
[centos@Shell scripts]$ md5sum -c os_monitor-dialog.md5 
os_monitor-dialog.sh: 確定

腳本示例

#!/bin/bash
#為/etc/passwd生成一個MD5并校驗,在生成MD5前檢查/etc/passwd文件是否已經被排過序

sort -C /etc/passwd
if [ $? -eq 0 ]; then
        echo "Sorted"
else
        echo "Unsorted!"
        md5sum /etc/passwd > passwd.md5
fi
md5sum -c passwd.md5

7、生成隨機數
$RANDOM生成一個隨機數;date +%s%N獲取隨機數字字符串
腳本如下:

#!/bin/bash
#創建example目錄,在該目錄下批量生成10個日志文件,日志文件名包含10個隨機小寫字母和固定字符串example;當前用戶不具有權限,需要設置權限
if [ ! -d /example ]; then
        echo "centos"|sudo -S mkdir /example
        echo "centos" | sudo -S chown centos:centos /example -R
fi
#產生隨機數$RANDOM,或uuidgen命令或者用MD5sum,然后替換
for num in $(seq 1 10)
do
         touch /example/$(echo $RANDOM | md5sum |tr "0-9" "a-z"|cut -c 1-10)_example.log
done

8、根據擴展名切分文件名

#!/bin/bash
#shell name:shell_split.sh
#切分文件名并批量重命名或移動,比如圖形文件等
num=1;
for img in *.jpg *.img
do
        mv $img image-$num.{img##*.} 2>/dev/null
        if [ $? -eq 0 ]; then
                echo  "Rename $img to image-$num.${img##*.}"
                let num++
        fi

done

9、列舉文件類型統計信息
給出一個路徑,統計該路徑下各文件類型的數量

#!/bin/bash
#shell name:shell_filestat.sh
#列舉文件類型數量

if [ $# -ne 1 ]; 
then
    echo -e "$0 path\nexample:$0 /etc/"
else
    path=$1
    declare -A array;
while read line;
do
#echo $(file -b $line)
    ftype=$(file -b $line)
    let array["$ftype"]++;
done< <(find $path -type f -print)
fi
echo ========== File types and counts ===========
for ftype in "${!array[@]}"
do
    echo $ftype : ${array["$ftype"]}
done

10、判斷當前系統是否支持該命令

#!/bin/sh

in_path()
{

  cmd=$1        path=$2         retval=1
  oldIFS=$IFS   IFS=":"

  for directory in $path
  do
    if [ -x $directory/$cmd ] ; then
      retval=0  
    fi
  done
  IFS=$oldIFS
  return $retval
}

checkForCmdInPath()
{
  var=$1

  if [ "$var" != "" ] ; then
    if [ "${var%${var#?}}" = "/" ] ; then
      if [ ! -x $var ] ; then
        return 1
      fi
    elif ! in_path $var $PATH ; then
      return 2
    fi
  fi
}

if [ $# -ne 1 ] ; then
 echo "Usage: $0 command" >&2 ; exit 1
fi

checkForCmdInPath "$1"
case $? in
  0 ) echo "$1 found in PATH"                  ;;
  1 ) echo "$1 not found or not executable"    ;;
  2 ) echo "$1 not found in PATH"              ;;
esac

exit 0
向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

北辰区| 潍坊市| 马山县| 永宁县| 宜兴市| 吉林省| 大埔区| 西贡区| 阳山县| 保德县| 黔西县| 蒙城县| 敦煌市| 铅山县| 城市| 鹤壁市| 澄江县| 秀山| 永康市| 渝北区| 拜城县| 大安市| 嘉峪关市| 车险| 山西省| 林西县| 山阴县| 邯郸县| 达拉特旗| 司法| 黔西县| 贵溪市| 石家庄市| 永善县| 常熟市| 盐池县| 夹江县| 宁河县| 安义县| 黔东| 五河县|