Ubuntu linux命令練習1 shell seq rand 格式化
linux命令練習1
一些基礎命令,以下為方便演示均用shell指令碼演示
- od
#!/bin/bash -v
echo -n "$IFS" | od -c
echo -n "$IFS" | od -b
#左側輸出為變數地址(八進位制)
# -c 選擇可列印字元或反斜槓轉義
# -b 選擇八進位制位元組
- type
#!/bin/bash -v
type type
type let
type expr
type awk
#let 是 Shell 內建命令,其他幾個是外部命令,都在 /usr/bin 目錄 下
#而 expr 和 bc 因為剛用過,已經載入在記憶體的 hash 表中
#說明:如果要檢視不同命令的幫助,對於 let 和 type 等 Shell 內建命令,可以通過 Shell 的一個內建命令 help 來檢視相關幫助,而一些外部命令可以通過 Shell 的一個外部命令 man 來檢視幫助,用法諸如 help let , man expr 等。
- while
#!/bin/bash
# calc.sh
i=0;
while [ $i -lt 10000 ]
do
((i++))
done
echo $i
#$ time calc.sh
#10000
#real 0m1.319s user
#0m1.056s
#sys 0m0.036s
#time 命令可以用來統計命令執行時間,這部分時間包括總的執行時間,使用者空間執 行時間,核心空間執行時間,它通過 ptrace 系統呼叫實現。
- ++
#!/bin/bash
((i++)) #最快
let i++; #內建命令,效率也很高
i=$(expr $i + 1)
i=$(echo $i+1|bc)
i=$(echo "$i 1" | awk '{printf $1+$2;}') # expr , bc , awk 的計算效率就比較低
- 檔案讀取
#!/bin/bash
#sumA_B.sh
#[ $# -lt 1 ] && echo "please input the income file" && exit -1
#[ ! -f $1 ] && echo "$1 is not a file" && exit -1
income=1
awk '{
printf("%d\n",$2+$1);
}'
#-lt(less than) : 測試一個數是否小於另一個數;小於,為真;否則,為假;
#-f : 判斷引數是否為檔案
#-gt(greter than) : 測試一個數是否大於另一個數;大於,為真;否則,為假;
#-lt(less than) : 測試一個數是否小於另一個數;小於,為真;否則,為假;
#-ge(greter equal): 大於或等於
#-le(less equal) :小於或等於
- 獲取一系列數
#!/bin/bash -v
for i in {1..5};
do echo -n "$i ";
done
- seq
#!/bin/bash -v
#獲取一系列數.sh
#其實通過一個迴圈就可以產生一系列數,但是有相關工具為什麼不用呢! seq 就是這麼一個 小工具,它可以產生一系列數,你可以指定數的遞增間隔,也可以指定相鄰兩個數之間的分 割符
seq 5
seq 1 5
seq 1 2 5
seq -s: 1 2 5
seq 1 2 15
seq -w 1 2 14
seq -s: -w 1 2 14
seq -f "0x%g" 1 5
#!/bin/bash -v
for i in `seq -f"http://thns.tsinghua.edu.cn/thnsebooks/ebook73/%02g.pdf" 1 21`;
do wget -c $i;
done
for i in `seq -w 1 21`;do wget -c "http://thns.tsinghua.edu.cn/thnsebooks/ebook73/$i ";
done
- 隨機rand
#!/bin/bash -v
#獲取一個隨機數.sh
echo $RANDOM
echo "" | awk '{srand();printf("%f",rand());}'
#說明: srand() 在無引數時,採用當前時間作為 rand() 隨機數產生器的一個 seed
#!/bin/bash -v
#隨機產生一個從 0 到 255 之間的數字.sh
expr $RANDOM / 128
echo "" | awk '{srand();printf("%d\n",rand()*255);}'
#可以通過 RANDOM 變數的縮放和 awk 中 rand() 的放大來實現
#!/bin/bash -v
# getip.sh -- get an usable ipaddress automatically
# set your own network, default gateway, and the time out of "ping" command
net="192.168.1"
default_gateway="192.168.50.2"
over_time=2
# check the current ipaddress
ping -c 1 $default_gateway -W $over_time
[ $? -eq 0 ] && echo "the current ipaddress is okey!" && exit -1;
while :; do
# clear the current configuration
ifconfig eth0 down
# configure the ip address of the eth0
ifconfig eth0 \
$net.$(($RANDOM /130 +2)) \
up
# configure the default gateway
route add default gw $default_gateway
# check the new configuration
ping -c 1 $default_gateway -W $over_time
# if work, finish
[ $? -eq 0 ] && break
done
# $?:表示上一個命令執行的退出狀態
- 格式化
#!/bin/bash -v
echo "scale=5; 1/6" | bc
echo "1 6" | awk '{printf("%0.5f\n",$1/$2)}'
- 餘弦值轉角度
#!/bin/bash -v
export cos=0.800123;
echo "scale=100; a(sqrt(1-$cos^2)/$cos)*180/(a(1)*4)" | bc -l
#在用 bc 進行運算時,如果不用 scale 指定精度,而在 bc 後加上 -l 選項,也可 以進行浮點運算,只不過這時的預設精度是 20 位
echo 0.800123 | awk '{ printf("%s\n", atan2(sqrt(1-$1^2),$1)*180/3.1415926535);}'
相關文章
- linux命令之seqLinux
- linux常用命令練習Linux
- 使用 Linux seq 命令生成數字序列Linux
- linux shell 學習摘記(1)Linux
- Linux命令和shell指令碼學習Linux指令碼
- linux shell 動態生成 陣列系列 seq使用技巧Linux陣列
- Linux Shell 動態生成 陣列系列 Seq 使用技巧Linux陣列
- Shell練習 行列轉換
- Linux shell格式化XML檔案LinuxXML
- Linux常用精簡命令實訓練習Linux
- 每天學習linux命令(1)Linux
- Find命令練習
- [Linux命令]格式化mkfsLinux
- Shell學習【test命令】
- 深度學習的seq2seq模型深度學習模型
- Linux shell命令總結Linux
- MYSQL練習1: DQL查詢練習MySql
- [Shell] linux df 輸出內容格式化Linux
- 系統學習NLP(十五)--seq2seq
- python學習1——1.3shell基本命令簡解Python
- Hbase shell 常用命令1
- linux自定義shell(bash)命令Linux
- Linux Shell之sort命令(轉)Linux
- linux之shell命令之一Linux
- 21 個 curl 命令練習
- Redis 命令練習彙總Redis
- linux學習day1——linux常見命令Linux
- Linux shell基礎1Linux
- linux Shell 命令列-03-array Shell 陣列Linux命令列陣列
- Linux基礎命令---enable開啟shell命令Linux
- shell學習總結-1
- R1-004 Shell命令種類
- 1、Shell命令列書寫規則命令列
- Linux命令(1)——xargs命令Linux
- Linux SHELL if 命令引數說明Linux
- linux shell 互動, read 命令Linux
- Linux系統命令許可權搜尋等練習題Linux
- Linux Shell程式設計(1)Linux程式設計