shell編程,linux命令內容清單
-
shell腳本配置引用
-
查看端口
-
去掉字符串空格的操作(三種方法)
-
ls文件查看
-
文件轉碼
-
全局查找文件,遍歷機器所有目錄
-
創建軟鏈接
-
split文件切分命令
-
特定位置替換
-
shell線程併發執行命令
-
數值計算
-
浮點型數值計算
-
top命令詳解
-
壓縮和解壓詳解
詳細介紹:
-
shell腳本配置引用
#!/bin/sh #!/bin/bash
兩者區別:
/bin/sh與/bin/bash雖然大體上沒什麼區別,但仍存在不同的標準。
標記爲#!/bin/sh的腳本不應使用任何POSIX沒有規定的特性
------------------------------------------------------
配置文件引用:
執行順序爲:/etc/profile -> (~/.bash_profile | ~/.bash_login | ~/.profile) -> ~/.bashrc -> /etc/bashrc -> ~/.bash_logout
1 /etc/profile: 此文件爲系統的每個用戶設置環境信息,當用戶第一次登錄時,該文件被執行. 並從/etc/profile.d目錄的配置文件中搜集shell的設置。
2 /etc/bashrc: 爲每一個運行bash shell的用戶執行此文件.當bash shell被打開時,該文件被讀取。
3 ~/.bash_profile: 每個用戶都可使用該文件輸入專用於自己使用的shell信息,當用戶登錄時,該文件僅僅執行一次!默認情況下,他設置一些環境變量,執行用戶的.bashrc文件。
4 ~/.bashrc: 該文件包含專用於你的bash shell的bash信息,當登錄時以及每次打開新的shell時,該該文件被讀取。
5 ~/.bash_logout: 當每次退出系統(退出bash shell)時,執行該文件. 另外,/etc/profile中設定的變量(全局)的可以作用於任何用戶,而~/.bashrc等中設定的變量(局部)只能繼承/etc /profile中的變量,他們是"父子"關係。
6 ~/.bash_profile 是交互式、login 方式進入 bash 運行的~/.bashrc 是交互式 non-login 方式進入 bash 運行的通常二者設置大致相同,所以通常前者會調用後者。
-
查看端口
netstat -nap | grep 6625 #查看端口
-
去掉字符串空格的操作(三種方法)
echo ${str// /}
echo $str | sed 's/ //g'
echo $str | tr -d " "
-
ls文件查看
查看文件大小
ls -Slr -h(從小到大)
ls -Sl -h(從大到小)
ls -l |grep "^-"|wc -l --查看目錄下文件的個數
-
文件轉碼
cat $DataFile | iconv -f gbk -t utf8 > $DataFileUtf
-
全局查找文件,遍歷機器所有目錄
locate core-site.xml --顯示相關的全部結果
locate core-site.xml | grep -v aa --查找目錄下跳過aa目錄下的查找
-
創建軟鏈接
ln -s 源文件 目標文件
-
split文件切分命令
split命令
語法: split [-bl] 輸入文件 輸出文件
參數說明
-b :以文件大小來分
-l:以行數來分
例如split -l 100 test.txt out
就是把test.txt每100行輸出一個文件outaa,outab,outcd以此類推。。。實現了文本文件的分割。
split -b 100k test.txt out
就是把test.txt每100KB輸出一個文件outaa,outab,outcd以此類推。
-
特定位置替換
--將每行第12個字符替換成逗號(,)
cat all_11.txt | sed 's/./,/12' > all_112.txt
-
shell線程併發執行命令
mkfifo tmp4
exec 9<>tmp4
THREAD_NUM=15 --併發線程數
for ((i=0;i<$THREAD_NUM;i++))
do
echo -ne "\n" 1>&9
done
newline=$'\n'
summ=0 --循環計數器
while read line
do
summ=$[summ+1]
echo `date +"%Y%m%d %H:%M:%S"`"第$summ行"
#進程控制
read -u 9
{
echo ${line} --執行主體
#hive -e "${line}" >> ${resultfile}
echo -ne "\n" 1>&9
}&
done<${tmpsql}
wait --等待所有線程結束
rm tmp4
-
數值計算
--bc、expr、let可用於數值計算
echo 3 + 5 |bc --結果 8
echo 30 - 5 |bc --結果 25
echo 3 /* 5 |bc --結果15
echo 30 / 5 |bc --結果6
----------------------------------------------------
expr 3 + 5 --結果 8
expr 30 - 5 --結果 25
expr 3 /* 5 --結果15
expr 30 / 5 --結果6
----------------------------------------------------
let i=3 + 5 echo $i --以此類推
----------------------------------------------------
((i=$j+$k)) 等價於 i=`expr $j + $k`
((i=$j-$k)) 等價於 i=`expr $j -$k`
((i=$j*$k)) 等價於 i=`expr $j \*$k`
((i=$j/$k)) 等價於 i=`expr $j /$k`
-
浮點型數值計算
expr $a / $b --結果爲整數,只支持整除,保留整數部分,小數點後省略
echo "scale=2;$a/$b" | bc --scale 可以設置保留小數點後幾位數
awk 'BEGIN{printf "%.2f\n",('$a'/'$b')}' --結果也是保留小數點後兩位小數
-
top命令詳解
top - 13:54:57 up 417 days, 20:48, 1 user, load average: 4.89, 6.08, 5.52
Tasks: 213 total, 1 running, 212 sleeping, 0 stopped, 0 zombie
Cpu(s): 58.4%us, 4.2%sy, 0.0%ni, 25.9%id, 1.0%wa, 0.0%hi, 10.5%si, 0.0%st
Mem: 32882860k total, 32784448k used, 98412k free, 472604k buffers
Swap: 32768092k total, 6157576k used, 26610516k free, 9535136k cached
PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
4295 hadoop 25 0 1371m 89m 11m S 148.7 0.3 0:04.48 java
4207 hadoop 25 0 1370m 87m 11m S 104.2 0.3 0:04.43 java
4418 hadoop 25 0 1347m 35m 10m S 29.9 0.1 0:00.90 java
23975 hadoop 25 0 6172m 2.7g 11m S 21.6 8.7 27273:51 java
...............
1. 第一行是任務隊列信息
13:54:57 當前時間
up 417 days 系統運行時間,格式爲時:分
1 user 當前登錄用戶數
load average: 4.89, 6.08, 5.52
系統負載,即任務隊列的平均長度。 三個數值分別爲 1分鐘、5分鐘、15分鐘前到現在的平均值。
2. 第二、三行爲進程和CPU的信息
Tasks: 213 total 進程總數
1 running 正在運行的進程數
212 sleeping 睡眠的進程數
0 stopped 停止的進程數
0 zombie 殭屍進程數
Cpu(s): 58.4%us 用戶空間佔用CPU百分比
4.2%sy 內核空間佔用CPU百分比
0.0% ni 用戶進程空間內改變過優先級的進程佔用CPU百分比
25.9%id 空閒CPU百分比
1.0%wa 等待輸入輸出的CPU時間百分比
3. 第四五行爲內存信息
Mem: 32882860k total 物理內存總量
32784448k used 使用的物理內存總量
98412k free 空閒內存總量
472604k buffers 用作內核緩存的內存量
Swap: 192772k total 交換區總量
0k used 使用的交換區總量
192772k free 空閒交換區總量
123988k cached 緩衝的交換區總量。
內存中的內容被換出到交換區,而後又被換入到內存,但使用過的交換區尚未被覆蓋
該數值即爲這些內容已存在於內存中的交換區的大小。
相應的內存再次被換出時可不必再對交換區寫入。
-
壓縮和解壓詳解
壓縮 --remove-files 參數刪除文件
tar -cvf jpg.tar *.jpg //將目錄裏所有jpg文件打包成tar.jpg
tar -czf jpg.tar.gz *.jpg //將目錄裏所有jpg文件打包成jpg.tar後,並且將其用gzip壓縮,生成一個gzip壓縮過的包,命名爲jpg.tar.gz
tar -cjf jpg.tar.bz2 *.jpg //將目錄裏所有jpg文件打包成jpg.tar後,並且將其用bzip2壓縮,生成一個bzip2壓縮過的包,命名爲jpg.tar.bz2
tar -cZf jpg.tar.Z *.jpg //將目錄裏所有jpg文件打包成jpg.tar後,並且將其用compress壓縮,生成一個umcompress壓縮過的包,命名爲jpg.tar.Z
rar a jpg.rar *.jpg //rar格式的壓縮,需要先下載rar for linux
zip jpg.zip *.jpg //zip格式的壓縮,需要先下載zip for linux
解壓
tar -xvf file.tar //解壓 tar包
tar -xzvf file.tar.gz //解壓tar.gz
tar -xjvf file.tar.bz2 //解壓 tar.bz2
tar -xZvf file.tar.Z //解壓tar.Z
unrar e file.rar //解壓rar
unzip file.zip //解壓zip
解壓之後重命名
tar -xzf 2016-11-21.tar.gz -O > a.txt
總結
1、*.tar 用 tar -xvf 解壓
2、*.gz 用 gzip -d或者gunzip 解壓
3、*.tar.gz和*.tgz 用 tar -xzf 解壓
4、*.bz2 用 bzip2 -d或者用bunzip2 解壓
5、*.tar.bz2用tar -xjf 解壓
6、*.Z 用 uncompress 解壓
7、*.tar.Z 用tar -xZf 解壓
8、*.rar 用 unrar e解壓
9、*.zip 用 unzip 解壓