Linux常用的命令
目錄操作命令
- ls 顯示目錄文件
ls -al
-a 顯示所有文件,包括.及..
-l 詳細信息
-d 顯示目錄本身的信息,而不看目錄下的內容
-i 顯示文件i nodes
- mkdir 目錄創建命令
mkdir -p ~/abc/def 同時創建目錄abc及子目錄def
-p 遞歸創建,可同時遞歸創建多個目錄
- cd 變換進入目標目錄
cd ~ 代表進入家目錄
cd ..返回上一級目錄
- rmdir 刪除空目錄
rmdir [dir] 目標目錄必須為空目錄才能刪除,否則報錯
rm -r [dir] 刪除目錄(包括空與非空目錄)
- pwd 輸出當前目錄
pwd
文件操作命令
- cp 文件或目錄復制命令;復制的同時支持修改文件名
cp [源文件] [目標文件]
-r 復制目錄
-p 保留文件屬性
- mv 剪切文件、重命名
mv [源文件] [目標文件]
- rm 刪除文件或目錄
-r 刪除目錄
-f 強制執行
- touch 創建空文件
touch filename
- cat 顯示文件內容(不適合文件分屏查看)
cat filename
-n顯示行號
- more 分頁顯示文件內容
more filename
- head 顯示文件內容頭幾行
-n 制定行數 (默認顯示頭10行)
壓縮及解壓縮命令
- .gz Linux下最常用的壓縮格式
命令:gzip(壓縮),gunzip|gzip -d(解壓縮)
壓縮后不保留源文件
- tar Linux下的壓縮命令不能壓縮目錄,只能壓縮單個文件,那么如果需要壓縮目錄需要對目錄先進行打包
tar [打包后的文件名] [需要打包的目錄]
通常我們下載的文件或安裝包文件名大部分以.tar.gz結尾,解壓縮的命令可用
tar -zxvf filename
壓縮生成.tar.gz的文件可用tar -cxvf filename.tar.gz filename
-c: 建立壓縮檔案
-x:解壓
-t:查看內容
-r:向壓縮歸檔文件末尾追加文件
-u:更新原壓縮包中的文件
這五個是獨立的命令,壓縮解壓都要用到其中一個,可以和別的命令連用但只能用其中一個。
下面的參數是根據需要在壓縮或解壓檔案時可選的。
-z:有gzip屬性的
-j:有bz2屬性的
-Z:有compress屬性的
-v:顯示所有過程
-O:將文件解開到標準輸出
如果是tar.bz2結尾的文件則用一下命令解壓
tar -xjvf filename.tar.bz2
壓縮命令
tar -cjf filename.tar.bz2
"|"管道符
將上一個命令的標準輸出結果作為下一個命令的標準輸入
實例演示
創建目錄~/biostarhandbook/lec03
mldir -p ~/biostarhandbook/lec03
進入目錄
cd biostarhandbook/lec03
下載文件:SGD_features.tab及SGD_features.README
wget https://downloads.yeastgenome.org/curation/chromosomal_feature/SGD_features.tab
wget https://downloads.yeastgenome.org/curation/chromosomal_feature/SGD_features.README
查看目錄下文件
ls -l
總用量 3192
-rw-rw-r-- 1 *** *** 1557 11月 19 2014 SGD_features.README
-rw-rw-r-- 1 *** *** 3264490 1月 14 2017 SGD_features.tab
顯示當前所在目錄
pwd
將兩個文件打包并壓縮為gz格式
cd ..
tar -czvf lec03.tar.gz lec03
ls
# lec03 lec03.tar.gz
解壓縮
tar -xzvf lec03.tar.gz
查看SGD_features.tab
more SGD_features.tab
cat命令查看文件
cat SGD_features.tab
用wc命令查看SGD_features.tab文件的行數、字數、字符數
cat SGD_features.tab | wc
將cat命令的標準輸出做為wc的標準輸入
16454 425719 3264490
如果僅需查看行數
cat SGD_features.tab | wc -l
16454
查看文件的頭10行
cat SGD_features.tab | head
grep與正則表達式
在初步學習了grep之后,覺得grep類似與我們常用的文本程序下的查找與替換工具,且支持了強大正則表達式,所以grep的功能變得非常強大。
grep
grep過濾來自一個文件成標準輸入匹配模式的內容,是一種強大的文本搜索工具,它能使用正則表達式搜索文本,并把匹配的行打印出來。
具體的參數可用man grep
查看
實例演示
查找SGD_features.tab文件匹配“YAL060W”的行
cat SGD_features.tab | grep YAL060W
grep -i pattern files :不區分大小寫地搜索。默認情況區分大小寫,
grep -l pattern files :只列出匹配的文件名,
grep -L pattern files :列出不匹配的文件名,
grep -w pattern files :只匹配整個單詞,而不是字符串的一部分(如匹配’magic’,而不是’magical’),
grep -C number pattern files :匹配的上下文分別顯示[number]行,
grep pattern1 | pattern2 files :顯示匹配 pattern1 或 pattern2 的行,
grep pattern1 files | grep pattern2 :顯示既匹配 pattern1 又匹配 pattern2 的行。
grep -n pattern files 即可顯示行號信息
grep -c pattern files 即可查找總行數
grep -v pattern files 查找不包含匹配項的行
查看不包含Dubious的總行數
cat SGD_features.tab | grep -v Dubious | wc -l
15737
輸入與輸出的重定向
Linux的標準輸入輸出
設備 | 設備文件名 | 文件描述符 | 類型 |
---|---|---|---|
鍵盤 | /dev/stdin | 0 | 標準輸入 |
顯示器 | /dev/stdout | 1 | 標準輸出 |
顯示器 | /dev/stderr | 2 | 標準錯誤輸出 |
輸出重定向
類型 | 符號 | 作用 |
---|---|---|
標準輸出重定向 | 命令>文件 | 以覆蓋的方式 |
命令>>文件 | 以追加的方式 | |
標準錯誤輸出重定向 | 錯誤命令 2>文件 | 以覆蓋的方式 |
錯誤命令 2>>文件 | 以覆蓋的方式 |
實例演示
如何將匹配得到的行輸出為文件。grep命令默認的標準輸出的顯示器,即為/dev/stdout,要保存為文件,需要將輸出重定向>
cat SGD_features.tab | grep YAL060W > match.tab
ls
match.tab SGD_features.README SGD_features.tab
查看match.tab
more match.tab
查看匹配gene的行數
cat SGD_features.tab | grep gene | wc -l
2093
利用cut命令截取第二列中匹配ORF的行
先查看第二列的頭10行
cat SGD_features.tab | cut -f 2 | head
-d : 指定字段分隔符,默認是制表符
-f :指定要顯示的字段
-f1 :顯示第一個字段
-f 1,3 顯示第一個和第三個
-f 1-3 顯示第一個到第三個
-b : 截取字節數
-c : 截取字符
cat SGD_features.tab | cut -f 2 | grep ORF | head
查看匹配的總行數
cat SGD_features.tab | cut -f 2 | grep ORF | wc -l
同時截取多列
cat SGD_features.tab | cut -f 2,3,4 | grep ORF | head
去除含有Dubious的行
cat SGD_features.tab | cut -f 2,3,4 | grep ORF | grep -v Dubious | wc -l
上述命令如用awk實現
cat SGD_features.tab | awk '{print $2}' | grep ORF | head
cat SGD_features.tab | awk '{print $2,$3,$4}' | grep ORF | head
截取第二列保存為type.txt文件
cat SGD_features.tab | cut -f 2 > type.txt
對type.txt條目進行連續排序并查看頭10條
cat type.txt | sort | head
將相同的條目顯示為1個
cat type.txt | sort |uniq | head
顯示重復條目的個數
cat type.txt | sort | uniq -c | head
顯示條目的種類
cat type.txt | sort | uniq -c | wc -l
正則表達式
bash的正則表達式包括基礎正則表達式和擴展正則表達式,它用來匹配預期要求的字符串。
基礎正則表達式:
符號 | 描述 |
---|---|
. | 匹配除換行符以外的單個字符 |
^ | 匹配前面字符串的開頭 |
$ | 匹配前面字符的結尾 |
* | 匹配前一個字符的0或多個 |
[] | 匹配中括號中的任意一個字符 |
[a-z][0-9][A-Z] | 匹配范圍內的任意一個字符 |
[^] | 匹配除中括號內的字符以外的字符 |
{n}{n,} | 匹配大括號前面字符至少n個字符 |
{n,m} | 匹配大括號前面字符至少n個字符,最多m個字符 |
< | 邊界符,匹配字符串開始 |
> | 邊界符,匹配字符串解釋 |
擴展正則表達式:
符號 | 描述 |
---|---|
+ | 匹配前一個字符的1個或多個 |
? | 匹配前一個字符的0個或多個 |
| | 或 |
() | 單元或組合 |
sed及awk
目前還學習,感覺好難理解,尤其是awk,真的是一門編程語言。等待日后完善吧。