Shell編程、linux命令工作常用,提高工作效率系列,快快收藏

shell編程,linux命令內容清單

  1. shell腳本配置引用
  2. 查看端口
  3. 去掉字符串空格的操作(三種方法)
  4. ls文件查看
  5. 文件轉碼
  6. 全局查找文件,遍歷機器所有目錄
  7. 創建軟鏈接
  8. split文件切分命令
  9. 特定位置替換
  10. shell線程併發執行命令
  11. 數值計算
  12. 浮點型數值計算
  13. top命令詳解
  14. 壓縮和解壓詳解

詳細介紹:

  1. 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 運行的通常二者設置大致相同,所以通常前者會調用後者。
  1. 查看端口
netstat -nap | grep 6625   #查看端口
  1. 去掉字符串空格的操作(三種方法)
echo ${str// /}
echo $str | sed 's/ //g'
echo $str | tr -d " "
  1. ls文件查看
查看文件大小 
ls -Slr -h(從小到大)  
ls -Sl -h(從大到小)
ls -l |grep "^-"|wc -l  --查看目錄下文件的個數
  1. 文件轉碼
cat $DataFile | iconv -f gbk -t utf8 > $DataFileUtf
  1. 全局查找文件,遍歷機器所有目錄
locate core-site.xml  --顯示相關的全部結果
locate core-site.xml | grep -v aa  --查找目錄下跳過aa目錄下的查找 
  1. 創建軟鏈接
ln -s 源文件 目標文件
  1. 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以此類推。
  1. 特定位置替換
--將每行第12個字符替換成逗號(,)
cat all_11.txt | sed 's/./,/12' > all_112.txt
  1. 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
  1. 數值計算
--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`
  1. 浮點型數值計算
 expr $a / $b   --結果爲整數,只支持整除,保留整數部分,小數點後省略
 echo "scale=2;$a/$b" | bc   --scale 可以設置保留小數點後幾位數
 awk 'BEGIN{printf "%.2f\n",('$a'/'$b')}'  --結果也是保留小數點後兩位小數
  1. 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 緩衝的交換區總量。 
內存中的內容被換出到交換區,而後又被換入到內存,但使用過的交換區尚未被覆蓋
該數值即爲這些內容已存在於內存中的交換區的大小。
相應的內存再次被換出時可不必再對交換區寫入。
  1. 壓縮和解壓詳解
壓縮	  --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 解壓
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章