2014年9月3日 星期三

[Linux] 如何選擇壓縮格式&常見壓縮指令

在Linux中,有許多不同的壓縮格式。會存在許多的選擇意味著各種方法都各有優劣,也因此才會在科技洪流中被保存。當我們要決定使用哪一種壓縮格式前,我們必須思考下列幾項因素:

  1. 壓縮率(compression ratio, 壓縮後檔案/原始檔案)。
  2. 壓縮/解壓縮所需要的時間。
  3. 壓縮/解壓縮所需的記憶體。
  4. 在各系統上的相容性。
若僅比較常見的gzip和bzip這兩種壓縮格式,則:

  • gzip所需的計算時間和記憶體都比較小,若電腦資源較差,建議使用gzip;因為gzip是常見的壓縮格式,因此相容性也較佳,若要確認所有使用者均能順利解壓縮,gzip是首選。
  • bzip的壓縮率較佳,如果儲存空間相當吃緊時,建議使用bzip。

常見壓縮指令:


.tar
打包:tar cvf FileName.tar DirName
解包: tar xvf FileName.tar

.gz
壓縮:gzip FileName
解壓1:gunzip FileName.gz
解壓2:gzip -d FileName.gz

.tar.gz
壓縮:tar zcvf FileName.tar.gz DirName
解壓:tar zxvf FileName.tar.gz

.bz2
壓縮: bzip2 -z FileName
解壓1:bzip2 -d FileName.bz2
解壓2:bunzip2 FileName.bz2

.tar.bz2
壓縮:tar jcvf FileName.tar.bz2 DirName
解壓:tar jxvf FileName.tar.bz2


較不常見的壓縮指令:

.bz
壓縮:unkown
解壓1:bzip2 -d FileName.bz
解壓2:bunzip2 FileName.bz

.tar.bz
壓縮:unkown
解壓:tar jxvf FileName.tar.bz

.Z
壓縮:compress FileName
解壓:uncompress FileName.Z

.tar.Z
壓縮:tar Zcvf FileName.tar.Z DirName
解壓:tar Zxvf FileName.tar.Z

.tgz
壓縮:unkown
解壓:tar zxvf FileName.tgz


.tar.tgz
壓縮:tar zcvf FileName.tar.tgz FileName
解壓:tar zxvf FileName.tar.tgz

.zip
壓縮:zip FileName.zip DirName
解壓:unzip FileName.zip

.rar
壓縮:rar e FileName.rar
解壓:rar a FileName.rar

.lha
壓縮:lha -a FileName.lha FileName
解壓:lha -e FileName.lha

2014年8月31日 星期日

[Matla] 羅馬符號對照表

[Matlab] 畫圖指令 (座標軸設定)

%重設目前X軸參數之範圍  
set(gca,'XTick',-180:90:180); 
 
%重設X軸之內標
set(gca,'XTickLabel',{'-180','-90','0','90','180'})
 
%設定x軸的label
xlabel('座標軸單位','fontsize',20);
 
%設定圖檔title
title=('圖檔title','fontsize',20)
 
%設定legend及
legend('t1',t2')

%設定legend位置和大小
temp=legend('t1','t2',4);
%4表示把legend放在圖的右下角,其他代號如下

       0 = 自動調整到最好位置
       1 = 右上角(內定值)
       2 = 左上角
       3 = 左下角
       4 = 右下角
      -1 =圖案的右邊
 
 set(temp,'fontsize',8,'position',[a,b,c,d);
%把legend字體設為8,且其位置座標為(a,b,c,d) 
 
 legend('boxoff'); %不畫legend的外框

% 在legend中,讓字體能夠對齊 (需挑選所有字元都是等寬度的字體)
h = lengend('show')
set(h,'FontName','FixedWidth')

 

[Matlab] Useful Command

[Matlab] Useful Command

PBS 指令


** Setting in the Shell script **

#PBS -N   XXX                           !  Job Name
#PBS -o    XXX.o                       !  Output message
#PBS -e     XXX.e                       !  Error message
#PBS -l nodes=4:ppn=4    !  Use 4 nodes and each node has 4 cpu(ppn)
#PBS -u chichien              !  User name




** The commands under linux **


qsub job_name.sh  ==>  run the job by shell
qdel  job_ID             ==>   cancel the job
qrun job_ID              ==>  force the job to run
qstat                          ==>  get the jobs information

Shell script 的陣列(array)處理

在shell中,同樣可以使用陣列來記憶變數。

假設需要儲存三筆溫度時,若不使用陣列處理,那就只能這樣寫:

#!/bin/ bash
temp1= 35
temp2= 42
temp3= 22
 
echo ${temp1}
echo ${temp2}
echo ${temp3}
但若是使用陣列處裡的話:
#!/bin/bash
temp=(35 42 22)

for ((i=0; i<${#temp[@]; i++})); do 
      echo ${ temp[$i] }
done
迴圈的意思為:
令i為迴圈的index,讓i=0到 array的總數(也就是 ${#temp[@] )
${temp [0] }代表array的第一個變數值,也就是35。

Shell 常用指令

取得目前主機時間並輸出


    #! /usr/sh
     time= $(date " +%Y/%m%d %H:%M:%S")  # to obtain the system time

     echo ${time} 


在資料夾中依filelist 的順序將其命名為filename
 for filename in filelist ; do
       statements
done
Example:

for wrfbdy in `ls wrfbdy* |sort `; do    #1
    echo $wrfbdy                                #2
    dd=`echo $wrfbdy |cut -d '_' -f 2`   #3
    hh=`echo $wrfbdy |cut -d '_' -f 3`
    echo $dd ' ' $hh
done 
#1:filelist=  `ls wrfbdy* |sort`  ,
        將資料夾中所有以wrfbdy為檔頭的檔案依序排好( | sort ),
        並且在迴圈中,以"wrfbdy"稱呼該檔名。 (迴圈次數由檔案數目決定)
#2:回傳 變數值
#3:擷取變數中的訊息。 
       | cut -d '_' -f 2  ==> 將  $wrfbdy 此一字串變數以 "_"符號分隔,
       並取出第二個空間(區塊)中的字串,導向為dd 此變數。 
       同理,變數hh則是為第三空間中的變數。
       如:

wrfbdy=wrfbdy_149988_0_1
 dd=`echo $wrfbdy |cut -d '_' -f 2`
dd= 149988

以 "ls "指令顯示目錄與檔案數目
顯示目錄數目:
ls -al | grep "^d" | awk 'END {print "Number of directories: " NR}'

顯示檔案數目:
ls -al | grep "^_" | awk 'END {print "Number of files: " NR}'

Example:

nt= `ls -al |grep "ens" |awk 'END {print NR}`
echo ' number=' ${nt}
如此就會將所在位置底下,檔頭為ens的的目錄數目回傳為 "nt'