一、學(xué)習(xí)內(nèi)容:
- 什么是linux,什么是服務(wù)器?
- 為什么學(xué)生信要用linux?
- 怎樣召喚linux--阿里云服務(wù)器
- 怎樣登錄服務(wù)器--putty和terminal
- linux有哪些最基本的操作?
1.linux是什么?
linux是個操作系統(tǒng)(OS)。
- 應(yīng)用場景
- 權(quán)限控制
- 命令行模式
- 目錄結(jié)構(gòu)
2. 為什么學(xué)生信的要用linux?
這是因為生物軟件基于linux,系統(tǒng)開源免費,不需要圖形界面,有效節(jié)約資源。命令行模式可以批量、高效地處理文件,滿足數(shù)據(jù)分析的要求。當(dāng)你需要跑幾十、幾百G數(shù)據(jù)的時候,用windows,電腦立刻就掛了。
3. 怎樣召喚linux?
3.1. Windows10上的linux
(1)設(shè)置-更新和安全-針對開發(fā)人員-啟用開發(fā)人員模式
(2)控制面板-控制面板-程序-啟用或關(guān)閉windows功能-適用于Linux的windows子系統(tǒng)
(3)重啟
(4)下載ubuntu。microsoft store里有
(5)啟動ubuntu 和用戶設(shè)置
正在安裝-安裝成功,設(shè)置用戶名和密碼,相當(dāng)于注冊,這里輸入密碼是沒有任何提示的,一次性打完。
(6)更新
輸入 sudo apt update
完成后輸入 sudo apt upgrade
sudo 代表管理員,apt相當(dāng)于install(安裝),下載和安裝了更新,就可以投入使用啦。
3.2. Windows7 上的linux
如果電腦配置不是很好的話,不推薦安裝虛擬機,會很耗內(nèi)存;一般的電腦配置(i3、i5CPU + 4G內(nèi)存)推薦使用git bash ,有32位和64位選擇https://git-scm.com/download/win
一路默認安裝即可。
3.3. Mac上的linux
不需要安裝任何東西,自帶terminal,直接使用
3.4. 云服務(wù)器上的linux
注冊阿里云免費服務(wù)器
https://free.aliyun.com/ntms/free/personal.html?handle=true
點免費領(lǐng)取=》登陸=》最下面支付寶圖標(biāo)(點擊使用支付寶掃碼登陸)=》實名認證=》返回領(lǐng)取
彈出的窗口是這樣:需要選擇操作系統(tǒng)(我們這里選擇CentOS/7.4 64位系統(tǒng))
【關(guān)于Linux系統(tǒng),最常見的是CentOS和Ubuntu,二者大致相同】
點擊控制臺=》選三個杠=》選云服務(wù)器ECS
需要進行修改,實例id會在你登錄服務(wù)器后顯示,總不希望是一串亂碼吧~然后登錄密碼肯定要自己設(shè)置的。
修改登錄名
需要重啟! 必須重啟!!!
重啟后,就可以遠程登錄了。
首次登陸的用戶名是root用戶,也就是管理員用戶登陸。
我們可以用Windows的putty或者Mac的terminal登陸。
4.1. 如何使用putty遠程登錄服務(wù)器?
一開始注冊的用戶名是root,登陸密碼就是你自定義的,但是輸入密碼是沒有任何顯示的(連星星符號都沒有),你只管一次性打完,不要懷疑鍵盤壞了,輸對了就能進去,輸錯了會給你三次重試的機會。
練習(xí)的時候使用云服務(wù)器的這個root用戶是可以的,因為不管你出了什么差錯,都可以重置恢復(fù),但是實際運行項目肯定不能使用root用戶,一般都是需要服務(wù)器管理員給你一個賬號密碼,讓你遠程登錄。
4.2. 如何使用terminal遠程登錄服務(wù)器?
mac terminal使用 ssh 用戶名@IP地址 進行登錄
5. linux有哪些最基本的操作?
目錄管理
-
pwd : print working directory,也就是打印當(dāng)前路徑,
/root 就是當(dāng)前路徑【路徑就是你的位置】
/boot:系統(tǒng)啟動相關(guān)文件,如內(nèi)核,initrd,以及grub(BootLoader)
/dev:設(shè)備文件 — 體現(xiàn)了LInux的“一切皆文件”思想
/etc : 配置文件。大多數(shù)為純文本文件
/home:用戶的家目錄
/root:管理員的家目錄
/lib:公共庫文件(不能單獨執(zhí)行, 只能被調(diào)用)
/lib/modeles:內(nèi)核模塊文件。
/media:掛載點目錄,掛載移動設(shè)備(如U盤)
/mnt: 掛載額外的臨時文件(如第二塊硬盤)
/opt:可選目錄(現(xiàn)在基本沒用)
/proc:偽文件系統(tǒng),內(nèi)核映射文件,系統(tǒng)啟動后才出現(xiàn)文件, 關(guān)機就空
/sys:偽文件系統(tǒng),跟硬件設(shè)備相關(guān)的屬性映射文件,關(guān)機就空
/tmp:臨時文件,/var/tmp是另一個臨時文件目錄
【所有用戶都可以操作,但只能刪自己的,不能刪別人的】
/var:可變化的文件
/bin:(binary) 可執(zhí)行文件,用戶命令
/sbin:管理命令
/bin、/sbin都是可執(zhí)行程序,運行時依賴的庫都放在/lib下,配置文件放在/etc
/usr:(universal shared readonly,只讀文件)
/usr下也有/bin,/sbin,/lib,與系統(tǒng)提供基本功能相關(guān);
根目錄下的/bin,/sbin,/lib與系統(tǒng)啟動相關(guān),必需的;
/usr/local:/bin,/sbin,/lib,第三方軟件存放路徑,非必需
- ls 顯示列表,不管是文件夾還是文件,都能顯示
ls -l使用ls的長格式,可以顯示更多的信息,包括文件的權(quán)限、所有者、大小、最后更改日期等。
ls -a查看包含以.開頭的隱藏文件
ls -lh顯示文件大小
- cd 接一個目錄名,進入該目錄
cd -或cd .. 返回剛才的目錄
cd . "."表示當(dāng)前目錄
cd / "/"表示根目錄
主目錄(家目錄):直接cd 或者cd ~(波浪線)
練習(xí):進入tmp目錄,然后查看當(dāng)前路徑,然后返回主目錄
- mkdir :make directory-- 創(chuàng)建你的空目錄
mkdir -p ~/MM/NN :建立主目錄下的MM包含的子目錄NN
mkdir -p mnt/test/{x/m,y} 在mnt/test/文件夾下創(chuàng)建x和y文件夾,x文件夾下創(chuàng)建m文件
mkdir biosoft ##存放生信軟件
mkdir project ##存放生信項目
mkdir tmp ##存放一些雜七雜八
mkdir src ##存放源代碼
mkdir del ##過會要用
‘#’后面是注釋,就是解釋代碼的文字。是不參與運行的
文件管理
- rm 刪除操作
rm file刪除文件直接
rmdir刪除空文件夾
rm -r刪除有內(nèi)容的文件夾,逐級刪除目錄下的子目錄
rm * 刪除當(dāng)前目錄下所有文件
rm –f 強制刪除文件,刪除時,不提出任何警告訊息。
rm –i 刪除文件前均會詢問是否刪除,y/n指示下一步。
rmdir dirname 刪除空目錄。
練習(xí):刪除剛才的del空目錄
- touch通過改時間戳來創(chuàng)建新的空文件,可連續(xù)創(chuàng)建。
-
vi 新建腳本或者文本文檔(vi是linux中的文本編輯器)
- stat 用于顯示文件的屬性/狀態(tài)信息。能看到那三個時間戳 [訪問、更改、改變]。
-
cp 復(fù)制文件
使用:cp file1 file2
多個文件到一個目錄
使用:cp {file1, 2,3} /dir/ --> 花括號展開機制
cp –i 覆蓋相同名稱文件前先詢問用戶
cp –R 遞歸拷貝,即拷貝時將所有目錄一并拷貝
cp -p 保留源文件或目錄的屬性
cp -d 當(dāng)復(fù)制鏈接文件時,把指向的文件一并復(fù)制。簡而言之,保持鏈接
cp -a(= -dpR) 保留所有原始屬性,比-p保留的更多,常用于備份目錄或文件
練習(xí):將剛才新建的文件復(fù)制一個,叫做new_file.txt
-
mv 將文件移入文件夾,或者重命名
使用:mv file 路徑
練習(xí):將新文件new_file.txt,重命名為home.txt ,移動到主目錄下(路徑是~)
文本查看【只用于文本!不要用來打開二進制文件】
- cat 查看并直接將內(nèi)容輸出到屏幕
cat > file.txt
.....(輸入內(nèi)容)【按Ctrl+c 可結(jié)束輸入】
cat –n file.txt 在顯示內(nèi)容前加上行號
cat -ns file1 > file2 將1文件拷貝到2中,并加上行號(-n),遇到多行空格只顯示一行(-s)
nl -n ln -b t file : file中的每行最前邊顯示行號(-n ln),并且空格不加行號
(-b t), 如果想在空格處加上,用-b a
- tac 反向顯示cat
- head 默認輸出前10行
- tail 默認輸出后10行
tail -n 自定義輸出幾行
例如:head -n 3 hello_world.txt
【注意-n與head之間有空格,-n和3之間空格可有可無】
練習(xí): 查看剛才自己的文件
tail -f 查看文件尾部,不退出,等待顯示后續(xù)追加至此文件的新內(nèi)容
【用途:監(jiān)控web服務(wù)器中哪個用戶正在訪問哪個網(wǎng)頁】
- less 逐頁顯示文本
less -S 規(guī)則輸出
less -N 顯示行號
文本處理
- cut 用來分割字段
cut -d (delimiter)指定分隔符, 默認tab。【不需要空格,直接加分隔符即可】
cut -f 顯示第幾個字段
cut -f 1,3 顯示第1和第3個
cut -f 1-3 顯示第1-3個
例如cut -d: -f1 /etc/passwd
就抽取了這個文件的第一列
- sort 默認根據(jù)ASCII表中的順序升序排序
sort -n 按照數(shù)值大小排序,而非字母
sort -r (reverse) 降序排序
sort -t 指定字段分隔符 【等同于cut -d
】
sort -k 指定字段【等同于cut -f
】
sort -u 不管是否相鄰,只要重復(fù),行就顯示一次
sort -f 排序時忽略字符大小寫
-
uniq
【與sort不同。在它看來,只有相鄰的重復(fù)行才算做重復(fù)行。所以常與sort連用】
uniq -c 每列旁邊顯示該行重復(fù)出現(xiàn)的次數(shù)
uniq -d 僅顯示重復(fù)出現(xiàn)的行列 (一個代表)
uniq -D 顯示所有的重復(fù)行列 (全部)
-
wc word count 文本統(tǒng)計
結(jié)果依次顯示為:行數(shù)、單詞數(shù)、字節(jié)數(shù)
wc -l 只顯示行數(shù)
wc -w 只顯示單詞數(shù)
wc -c 顯示字節(jié)
wc -L 最長的一行包含了多少個字符
統(tǒng)計/bin目錄下命令個數(shù):
ls /bin | wc -l
- tr 字符轉(zhuǎn)換或刪除 translate or delete characters
例如: tr 'ab' 'AB' 引號中的叫做字符集
這樣就把包含字符集a、b的文件對應(yīng)替換為A、B
但是tr不能直接加文件,如果想對一個文件中字符進行替換
使用輸入重定向<
tr 'ab' 'AB' < /etc/passwd
將所有小寫都換成大寫:tr 'a-z' 'A-Z'
tr -d 刪除出現(xiàn)在字符集中的所有字符
如: tr -d 'ab'
- sed 編輯工具
sed -s 替換
sed 's/A/B/'
A替換成B
sed -a 行下添加
sed 'a X'
在每一行下面添加X
sed ‘1,2a A\nB\nC’
在1-2行的下邊分別添加3行,3行內(nèi)容分別是A、B、C,\n是換行
sed -i 行上添加
sed 'i X'
在每一行上面添加X
sed -c 行替換
sed ‘c A’
所有的行內(nèi)容都分別替換為A
sed ‘1,2c A’
1-2行作為整體替換為A
sed ‘1,2c A\nA’
1-2行分別替換為A
sed -d 行刪除
sed -y 字符替換
sed 'y/a:/f@/' a.txt
a替換為f,:替換為@
刪除前7行沒用的,并輸出至txt文件中
sed '1,7d' *.gff3 > test.txt
-
grep 查找文件里符合條件的字符串
主要有兩種,一種基礎(chǔ)模式就是grep,一種拓展模式叫做egrep。
egrep的特點就是支持更多的元字符
正則表達式:
它的語法結(jié)構(gòu)有兩套系統(tǒng)組成,元字符(metacharacters) + 普通字符
元字符主要由以下字符組成:
^ $ . [] {} - ? + () | \
grep -n 輸出包含匹配字符串的行數(shù)。
grep -c 顯示有多少行被匹配到(count)
grep -i 忽略匹配字段和匹配內(nèi)容的大小寫
grep -o 只打印匹配到的內(nèi)容
grep -A/B n 顯示搜索內(nèi)容后面n行/顯示搜索內(nèi)容的前面n行
grep -v 反轉(zhuǎn)查找。即顯示出沒有 '搜尋字符串' 內(nèi)容的那一行。
grep --color=always 始終高亮顯示搜索字段
【~/.bashrc 內(nèi)加上這行:alias grep='grep --color=auto
再以source ~/.bashrc
來立即生效即可,這樣每次運行g(shù)rep都會自動加上顏色顯示。】
grep -E 將范本樣式為延伸的普通表示法來使用。(即使用擴展正則表達式)
行首字節(jié) ^
行尾字節(jié) $
^[0-9] 以數(shù)字開始的行,[]內(nèi)可列舉字母
^[124ab] 以1,2,4,a,或b開頭的行
grep \'^.\' myfile.txt
列出所有以句點開頭的行
ls -l | grep '^a'
通過管道過濾ls -l輸出的內(nèi)容,只顯示以a開頭的行。
grep '[a-z]{5}' aa
顯示所有包含每個字符串至少有5個連續(xù)小寫字符的字符串的行。
grep \'w(es)t.*1\' aa
如果west被匹配,則es就被存儲到內(nèi)存中,并標(biāo)記為1,然后搜索任意個字符(.*),這些字符后面緊跟著另外一個es(1),找到就顯示該行。
- awk 目前只會提取符合要求的列,默認分隔符是空格
awk {’print $1‘} test.txt 提取第一列
awk -F : '{print $2}' 以‘:’為分隔符 提取第二列
- echo 打印到終端
echo -e "Hello world\nI love bioinformatics" > test.txt
-e 內(nèi)容中有特殊字符就需要加(比如換行符\n)處理特殊字符
""中就是打印的內(nèi)容
>字符輸出到哪里(覆蓋原文件)
>> (添加到原文件底部)
解壓
tar結(jié)尾
tar -xvf
gz 結(jié)尾gunzip
tar.gz結(jié)尾tar -xzvf
bz2結(jié)尾tar -jxvf
zip結(jié)尾unzip
rar結(jié)尾unrar e
- 附加
- ls輸出的是橫向的列表,怎樣輸出長格式列表(提示:搜索ls)
ls -l - 如何查看長格式列表中文件的大小?(提示:ls)
ls -lh
- 查看Linux系統(tǒng)版本、內(nèi)存與硬盤空間?(提示:分別是三個命令)
lsb_release -a
free -m
df -lm
- 怎樣建立類似/tmp/tmp1/tmp1.1 這樣的層級目錄(提示:搜索mkdir)
mkdir -p tmp/tmp1/tmp1.1
- 怎樣刪除這些層級目錄(提示:搜索rm)
rm -r tmp*
rm -rf tmp* 不要使用
實用小技能
tree
下載安裝:
http://mama.indstate.edu/users/ice/tree/src/tree-1.7.0.tgz
tar -zxvf tree-1.7.0.tgz
cd tree-1.7.0.tgz && make install
記得將安裝完的程序?qū)胱约旱沫h(huán)境變量
那么如何設(shè)置自己的環(huán)境變量呢,簡單說一下:
mkdir -p /place you like/soft
(這里命名和存放位置自定義)
echo export PATH=/your install environment path/bin:$PATH >> ~/.bashrc
source ~/.bashrc
設(shè)置好后,將軟件copy到環(huán)境變量
cp tree /your environment PATH/
使用就很簡單啦:tree -h dir
(-h 意思是-human-readable,很方便地將文件大小表示出來)
常用Linux查看配置tip
- df : disk free 顯示磁盤空余
- du: disk usage 是對文件和目錄磁盤使用的空間的查看
du -ch file1 file2 顯示幾個文件大小并count總和
du -h | sort -nr | head -10 列出前10個占空間最大的文件,降序排列
cat /proc/cpuinfo | grep process | wc -l 查看cpu個數(shù),方便以后跑程序設(shè)置線程數(shù)
uname -a 查看linux 內(nèi)核/操作系統(tǒng)/CPU信息
grep練習(xí)
1. 搜索特定信息
搜索基因組注釋文件.gff中特定基因信息
grep "AT1G01680" *.gff | head -n5
2. 排除特定信息
搜索AT1G01680這個基因,但排除其中feature項的protein
grep "AT1G01680" *.gff | grep -v "protein" | head -n5
3. 查找特定序列并計算出現(xiàn)了幾次
grep -c "CAAATTGAATTAAG" *.fas
或者: grep "CAAATTGAATTAAG" *.fas | wc -l
如果單純輸出 就用grep -o
4. 精準匹配某個基因
搭配正則表達式。要匹配開頭為AT1G250,結(jié)尾為3的基因名
grep "AT1G250.*3$" *.gff
- 非空行計數(shù)
grep -c "[^ \\n\\t]"
grep并非完美
查找TAIR10_chr_all.fas 中95-100之內(nèi)的‘CCACT’堿基
- 先查看一下
tail -n100 TAIR10_chr_all.fas | head -n5
- 用肉眼就能看到'CCACT',但是如果用grep搜索 是沒有結(jié)果的
tail -n100 TAIR10_chr_all.fas | head -n5 | egrep 'CCACT'
- 用grep還是能實現(xiàn),就是不那么優(yōu)雅:
tail -n100 TAIR10_chr_all.fas | head -n5 | tr -d '\n' | egrep 'CCACT'
【tr -d(delete) 是刪除特定字段】
更快捷的辦法
可以使用emboss套件下的dreg, 它是針對核酸;如果是氨基酸序列和翻譯后的蛋白序列,使用preg
tail -n 1000 chr22.fa | head -n 5 | dreg -filter -pattern 'TAATA'