在Linux下生物信息學(xué)工作(經(jīng)典推薦)_第1頁(yè)
在Linux下生物信息學(xué)工作(經(jīng)典推薦)_第2頁(yè)
在Linux下生物信息學(xué)工作(經(jīng)典推薦)_第3頁(yè)
在Linux下生物信息學(xué)工作(經(jīng)典推薦)_第4頁(yè)
在Linux下生物信息學(xué)工作(經(jīng)典推薦)_第5頁(yè)
已閱讀5頁(yè),還剩41頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說(shuō)明:本文檔由用戶(hù)提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

1、在在Linux下工作下工作致攀登Linux高峰的勇士余浩 ()序章序章Linux技術(shù)不是一天練成的。我們假定您已經(jīng)具備少量的技術(shù)不是一天練成的。我們假定您已經(jīng)具備少量的Linux基礎(chǔ)知識(shí),所以基礎(chǔ)知識(shí),所以本課程的重點(diǎn)將放在使用技巧的探討部分,而基礎(chǔ)命令將以復(fù)習(xí)的形式呈現(xiàn)。本課程的重點(diǎn)將放在使用技巧的探討部分,而基礎(chǔ)命令將以復(fù)習(xí)的形式呈現(xiàn)。由于由于 grep, sort, sed, awk, perl 命令過(guò)于強(qiáng)大,本課程暫不深入討論。命令過(guò)于強(qiáng)大,本課程暫不深入討論。1.基礎(chǔ)命令的復(fù)習(xí)a)文件操作命令b)文本處理命令c)打包、壓縮與解壓命令d)進(jìn)程管理命令1.權(quán)限、進(jìn)程的管理2.環(huán)境變量與配

2、置文件a)了解配置文件b)設(shè)置環(huán)境變量i.設(shè)置PATHii.設(shè)置別名iii.設(shè)置Vi/Vimiv.設(shè)置動(dòng)態(tài)鏈接庫(kù)v.設(shè)置Perl庫(kù)3.軟件的安裝4.其它可能用得到的技巧本課件包含了大量的本課件包含了大量的Linux使用技巧,使用技巧,雖然算不上很具體、很全面,但我相雖然算不上很具體、很全面,但我相信如果能認(rèn)真將其閱讀完,您的信如果能認(rèn)真將其閱讀完,您的Linux操作技術(shù)將會(huì)更上一層樓。操作技術(shù)將會(huì)更上一層樓。2014年年4月月11日日 深圳深圳shellshell是是Linux的命令解析器,它的任務(wù)就是解析用戶(hù)輸入的命令,是的命令解析器,它的任務(wù)就是解析用戶(hù)輸入的命令,是Linux中中直接與用

3、戶(hù)交互的程序。直接與用戶(hù)交互的程序。大多數(shù)Linux默認(rèn)的shell是bash(BioLinux-7默認(rèn)是zsh)。常見(jiàn)的shell有sh、bash、csh、tcsh、ksh、zsh,它們本身就是一種程序,各有各的特點(diǎn)。本課程以bash為例。改變默認(rèn)shell的命令是 chsh無(wú)所不能的幫助文檔無(wú)所不能的幫助文檔Help選項(xiàng)COMMAND -help 或 COMMAND -helpCOMMAND -hManual文檔man COMMANDInformation文檔info COMMAND官方Readme文檔網(wǎng)絡(luò)(wiki、論壇)Manual文檔截圖文檔截圖基礎(chǔ)命令的回顧基礎(chǔ)命令的回顧良好的基礎(chǔ)

4、是高效工作的源泉需要回顧的基礎(chǔ)命令需要回顧的基礎(chǔ)命令文件操作文件操作文本處理文本處理打包、壓縮與解壓打包、壓縮與解壓進(jìn)程管理進(jìn)程管理pwdcattartoplslessgzippscdgrepbzip2killcpsortzcatpkillmvperlzlessrmsedzgrepmkdirawkbzcatlnbzlessbzgrep常用的文件操作命令常用的文件操作命令命令命令 & 選項(xiàng)選項(xiàng)說(shuō)明說(shuō)明舉例舉例pwd查看當(dāng)前工作目錄pwdls查看目錄內(nèi)容ls; ls /binls -l列表方式查看目錄內(nèi)容ls -l; ls -l /usr/libls -a查看隱藏文件(.開(kāi)頭)ls -a;

5、 ls -a $HOMEls -R遞歸方式查看目錄ls -R; ls -R /usr/share/libcd改變目錄cd ./; cd /; cd cp復(fù)制文件cp ./a.fa b.facp -r復(fù)制目錄cp -r ./dir ././dir2mv移動(dòng)文件或目錄mv ././dir2 ./dir3rm刪除文件rm a.fa; rm a.fa b.farm -r刪除目錄rm -r ./dir3rm -f強(qiáng)制刪除文件(慎用)rm -f *mkdir建立文件夾mkdir dir4mkdir -p遞歸方式建立文件夾mkdir -p dir5/dir6/dir7ln建立硬鏈接ln b.fa x.fal

6、n -s建立軟鏈接ln -s b.fa y.fa常用的文本處理命令常用的文本處理命令命令命令 & 選選項(xiàng)項(xiàng)說(shuō)明說(shuō)明舉例舉例cat查看文本文件內(nèi)容cat 1.faless分頁(yè)查看文本文件內(nèi)容less 1.faless -S分頁(yè)且不自動(dòng)換行查看文本文件內(nèi)容less -S 1.fagrep從文本文件中匹配出指定的行g(shù)rep 1.fagrep -w從文本文件中嚴(yán)格匹配出指定的行g(shù)rep -w a 1.fagrep -v從文本文件中不匹配出指定的行g(shù)rep -v CDS 2.gffgrep -E以擴(kuò)展型正則表達(dá)式匹配grep -E ab 1.fasort -k按列排序(數(shù)字或字典順序)sort

7、-k4n 2.gffsort -u排序并合并相同的行sort -u 3.listperlPerl語(yǔ)言解析器perl; perl -d x.plperl -nePerl的命令行模式并按需輸出perl -ne print $_nperl -pePerl的命令行模式并全部輸出perl -pe s/xxx/yyy/gsed文本流編輯器sed s/xxx/yyy/gawkAWK語(yǔ)言解析器awk if($2=0.5)print常用的常用的打包、打包、壓縮與解壓壓縮與解壓命令命令命令命令 & 選項(xiàng)選項(xiàng)說(shuō)明說(shuō)明舉例舉例tar cvf將文件打包將文件打包tar cvf 1.tar 1/tar zxvf將

8、tar.gz格式的文件解包tar zxvf 2.tar.gztar jxvf將tar.bz2格式的文件解包tar jxvf 3.tar.bz2tar tvf查看tar包的內(nèi)容tar tvf 4.targzip -c壓縮成gz文件gzip -c a.fa a.fa.gzgzip -cd解壓gz文件gzip -cd a.fa.gz a.fagunzip解壓gz文件,同 gzip -dgunzip a.fa.gzbzip2 -c壓縮成bz2文件bzip2 -c a.fa a.fa.bz2bzip2 -cd解壓bz2文件bzip2 -cd a.fa.bz2 a.fabunzip2解壓bz2文件,同 b

9、zip2 -dbunzip2 a.fa.gzzcatcat查看gz壓縮文件的內(nèi)容zcat a.fa.gzzlessless查看gz壓縮文件的內(nèi)容zless a.fa.gzzgrepgrep過(guò)濾gz壓縮文件內(nèi)容zgrep a.fa.gzbzcatcat查看bz2壓縮文件的內(nèi)容bzcat a.fa.bz2bzlessless查看bz2壓縮文件的內(nèi)容bzless a.fa.bz2bzgrepgrep過(guò)濾bz2壓縮文件內(nèi)容bzgrep a.fa.bz2常用的進(jìn)程管理命令常用的進(jìn)程管理命令命令命令 & 選項(xiàng)選項(xiàng)說(shuō)明說(shuō)明舉例舉例toptop進(jìn)程控制臺(tái)topps顯示當(dāng)前screen進(jìn)程psps a顯

10、示全部進(jìn)程ps aps u顯示當(dāng)前用戶(hù)進(jìn)程ps ups x以PID形式顯示當(dāng)前用戶(hù)進(jìn)程ps xkill按PID殺死進(jìn)程kill 11381pkill按PNAME殺死進(jìn)程pkill qsub-sge.pl使用技巧的探討使用技巧的探討很多技巧是通過(guò)反復(fù)嘗試而形成的Linux的權(quán)限設(shè)置的權(quán)限設(shè)置Linux之所以安全,其自身的文件訪(fǎng)問(wèn)權(quán)限設(shè)置功不可沒(méi)。之所以安全,其自身的文件訪(fǎng)問(wèn)權(quán)限設(shè)置功不可沒(méi)。Linux的文件權(quán)限分為“讀(r)、寫(xiě)(w)、執(zhí)行(x)”,其作用域分為“所有者(own)、同組成員(groups)、其他成員(others)”。文件只有當(dāng)訪(fǎng)問(wèn)者屬于正確的作用域,才能進(jìn)行相應(yīng)的訪(fǎng)問(wèn)。改變權(quán)限

11、和所有者的命令分別是 chmod 和 chown屬性屬性所有者所有者同組成員同組成員其他成員其他成員-rwxrwxrwx-數(shù)字表示法數(shù)字表示法r = 4w = 2x = 1rw = 6rx = 5wx = 3rwx = 7屬性屬性d = 目錄目錄l = 軟鏈接軟鏈接- = 普通文件普通文件管理任務(wù)與進(jìn)程管理任務(wù)與進(jìn)程在我們的正常工作中,對(duì)任務(wù)與進(jìn)程的管理能力是必不可少的。事實(shí)上,大多數(shù)在我們的正常工作中,對(duì)任務(wù)與進(jìn)程的管理能力是必不可少的。事實(shí)上,大多數(shù)人只會(huì)簡(jiǎn)單地殺任務(wù),卻無(wú)法應(yīng)對(duì)一些較為復(fù)雜的局面。人只會(huì)簡(jiǎn)單地殺任務(wù),卻無(wú)法應(yīng)對(duì)一些較為復(fù)雜的局面。最常用的任務(wù)管理程序莫過(guò)于 top, PS

12、, kill, pkill 命令。運(yùn)行 top 可以不帶任何選項(xiàng),它將提供一個(gè)控制臺(tái)界面,通過(guò)鍵盤(pán)操作。而 ps 命令往往需要帶一些常用選項(xiàng),如:-a, -u, -x命令 kill 和 pkill 都是中止任務(wù)與進(jìn)程的命令,區(qū)別在于 kill 命令通過(guò)PID中止進(jìn)程,而 pkill 則通過(guò)進(jìn)程名。利用 kill 中止任務(wù)與進(jìn)程:kill PID利用 pkill 中止任務(wù)與進(jìn)程:pkill PNAME利用 pkill 和通配符配合使用,可以批量中止任務(wù)。top VS. pstop 命令命令(上圖)和上圖)和 ps 命令(下圖)都是命令(下圖)都是Linux下的任務(wù)管理程序下的任務(wù)管理程序,但這兩

13、者區(qū)別很大。但這兩者區(qū)別很大。top 通過(guò)周期性地讀取 /proc 中的文件,來(lái)達(dá)到監(jiān)控進(jìn)程的目的。ps 是直接讀取內(nèi)存中的系統(tǒng)狀態(tài)。所以 ps 的反應(yīng)要比 top 快,但 top 更加直觀。topps u內(nèi)存占用量?jī)?nèi)存占用量CPU占用比占用比內(nèi)存占用比內(nèi)存占用比進(jìn)程的進(jìn)程的CPU時(shí)間時(shí)間鏈接的妙用鏈接的妙用Linux中的鏈接,相當(dāng)于中的鏈接,相當(dāng)于windows下的下的“拷貝拷貝”和和“快捷方式快捷方式”。然而,從使。然而,從使用角度來(lái)講,鏈接的用處更為廣泛,更加精巧。用角度來(lái)講,鏈接的用處更為廣泛,更加精巧。鏈接分為軟鏈接(快捷方式快捷方式)和硬鏈接(拷貝)。不論哪種都可以通過(guò) ln 或

14、link 這兩個(gè)命令創(chuàng)建(其實(shí)是一個(gè)命令的兩種寫(xiě)法)。創(chuàng)建軟、硬鏈接的區(qū)別是軟鏈接的創(chuàng)建需要加上 -s 這個(gè)選項(xiàng)。創(chuàng)建硬鏈接:ln/link SOURCE TARGET創(chuàng)建軟鏈接:ln/link -s SOURCE TARGET如果不輸入 TARGET ,則會(huì)使用“本體”的文件名代替。軟鏈接軟鏈接本體本體硬鏈接硬鏈接本體本體軟鏈接占用的磁盤(pán)空間軟鏈接占用的磁盤(pán)空間硬鏈接占用的磁盤(pán)空間硬鏈接占用的磁盤(pán)空間了不起的管道與重定向了不起的管道與重定向Linux的管道和重定向是一項(xiàng)了不起的設(shè)計(jì)。對(duì)它們熟練使用的程度甚至一度被的管道和重定向是一項(xiàng)了不起的設(shè)計(jì)。對(duì)它們熟練使用的程度甚至一度被認(rèn)為是認(rèn)為是Li

15、nux用戶(hù)水平的標(biāo)志。用戶(hù)水平的標(biāo)志。管道的符號(hào)是“|”(分隔符),表示將其左邊的標(biāo)準(zhǔn)輸出作為右邊的標(biāo)準(zhǔn)輸入。案例案例 11:典型的典型的“管道管道”典型的典型的“重定向重定向”重定向重定向說(shuō)明說(shuō)明舉例舉例將標(biāo)準(zhǔn)輸出生成文件cat a b將文件讀入標(biāo)準(zhǔn)輸入read 將標(biāo)準(zhǔn)輸出追加到現(xiàn)有文件cat a cEOF進(jìn)行標(biāo)準(zhǔn)輸入,直到遇到EOFcat a 將標(biāo)準(zhǔn)輸出生成文件,同“”cat d 1 e2將標(biāo)準(zhǔn)錯(cuò)誤輸出生成文件perl e.pl 2 /dev/null沒(méi)有空格沒(méi)有空格,否則會(huì)報(bào)錯(cuò)否則會(huì)報(bào)錯(cuò)環(huán)境變量與配置文件環(huán)境變量與配置文件Linux的環(huán)境變量有點(diǎn)類(lèi)似與Windows的控制面板中的各種選項(xiàng)

16、(更像注冊(cè)表),但其功能要強(qiáng)大許多,也更加安全。配置文件是用來(lái)存儲(chǔ)環(huán)境變量的。環(huán)境變量往往分為用戶(hù)級(jí)別和系統(tǒng)級(jí)別。相應(yīng)的,配置文件也可以存放在用戶(hù)目錄和系統(tǒng)目錄。多數(shù)情況下,用戶(hù)目錄下的配置文件和系統(tǒng)目錄下的配置文件,其文件名幾乎相同,但用戶(hù)目錄的配置文件名開(kāi)頭往往會(huì)多一個(gè)點(diǎn)(“.”),表示這是個(gè)隱藏文件,通常只能通過(guò) ls -a 或TAB自動(dòng)補(bǔ)全(要雙擊TAB)查看。用戶(hù)沒(méi)有設(shè)置某個(gè)環(huán)境變量,并不代表這個(gè)變量沒(méi)有被設(shè)置。原因是當(dāng)用戶(hù)沒(méi)有去設(shè)置某個(gè)環(huán)境變量時(shí),這個(gè)環(huán)境變量自動(dòng)將其系統(tǒng)級(jí)別的值作為默認(rèn)值。系統(tǒng)有環(huán)境變量和配置文件,一些程序也可以有自己的環(huán)境變量和配置文件。ls -a 結(jié)果結(jié)果一些

17、一些重要的用戶(hù)級(jí)別配置文件目錄重要的用戶(hù)級(jí)別配置文件目錄文件文件備注備注/.bashrcBash的配置文件,在bash運(yùn)行時(shí)讀取/.bash_profileBash的配置文件,一般通過(guò).bashrc調(diào)用/.profile用戶(hù)配置文件,在登錄時(shí)讀取/.vimrcVi/Vim配置文件/.ssh/存放OpenSSH配置文件的文件夾有用戶(hù)級(jí)別的配置文件一般就有對(duì)應(yīng)的系統(tǒng)級(jí)別的配置文件,其文件名大致相同,但存儲(chǔ)位置在/etc目錄。有系統(tǒng)級(jí)別的配置文件不一定有對(duì)應(yīng)的用戶(hù)級(jí)別的配置文件,比如:Apache服務(wù)的配置文件只有系統(tǒng)級(jí)別(在/etc/httpd/里)。用戶(hù)級(jí)別的文件往往優(yōu)先級(jí)高于系統(tǒng)級(jí)別(優(yōu)先讀取

18、)。如果某位用戶(hù)發(fā)覺(jué)其登錄節(jié)點(diǎn)發(fā)生異常,那么建議優(yōu)先檢查自己的$HOME文件夾中的配置文件是否有問(wèn)題環(huán)境變量環(huán)境變量備注備注命令檢索路徑著名的 PATH 變量別名化繁為簡(jiǎn)的方法動(dòng)態(tài)鏈接庫(kù)導(dǎo)致程序無(wú)法運(yùn)行的關(guān)鍵之一其它其它一些常見(jiàn)的環(huán)境變量大多數(shù)系統(tǒng)的故障都和環(huán)境變量的錯(cuò)誤設(shè)置以及文件路徑的不正確有關(guān)。和配置文件一樣,環(huán)境變量同樣分為系統(tǒng)級(jí)別和用戶(hù)級(jí)別,并且用戶(hù)級(jí)別的環(huán)境變量的優(yōu)先級(jí)高于系統(tǒng)級(jí)別。通常情況下,常用的環(huán)境變量被寫(xiě)入配置文件中,在系統(tǒng)啟動(dòng)、登錄時(shí)自動(dòng)調(diào)用和設(shè)置。設(shè)置好的環(huán)境變量要通過(guò) export 命令(sh, bash)或 setenv 命令(csh, tcsh)使其生效。常見(jiàn)的環(huán)

19、境變量常見(jiàn)的環(huán)境變量有沒(méi)有想過(guò)為什么在執(zhí)行有些命令時(shí),需要輸入完整的路徑,而有些命令只需要有沒(méi)有想過(guò)為什么在執(zhí)行有些命令時(shí),需要輸入完整的路徑,而有些命令只需要輸入命令本身即可?輸入命令本身即可?當(dāng)輸入命令時(shí),系統(tǒng)將優(yōu)先搜索 PATH 變量所指向的文件夾。如果一個(gè)命令在兩個(gè)不同的 PATH 變量里都存在,系統(tǒng)將優(yōu)先使用排在前面(左邊)的 PATH 變量里的命令(命令的優(yōu)先級(jí))。案例案例 01:查詢(xún)PATH變量:設(shè)置PATH變量:關(guān)于命令的檢索路徑關(guān)于命令的檢索路徑不得不提一下的不得不提一下的“優(yōu)先級(jí)優(yōu)先級(jí)”在在Linux的使用過(guò)程中,隨著軟件的升級(jí),常常會(huì)遇到這樣的情況:同一款軟件的使用過(guò)程中

20、,隨著軟件的升級(jí),常常會(huì)遇到這樣的情況:同一款軟件有許多不同的版本,比如:有許多不同的版本,比如:Perl 5.8.8, Perl 5.16.2, Perl 5.18.1等等等。那么我們到底執(zhí)行的是那個(gè)版本呢?這就涉及到了命令的優(yōu)先級(jí)這個(gè)問(wèn)題。等。那么我們到底執(zhí)行的是那個(gè)版本呢?這就涉及到了命令的優(yōu)先級(jí)這個(gè)問(wèn)題。在前面我們提到了 PATH 變量中,排在左邊的優(yōu)先級(jí)高,也就是說(shuō)系統(tǒng)從左到右在 PATH 變量中檢索相應(yīng)的命令,如果找到了,則無(wú)需再到下一個(gè) PATH 中去找,如果找不到,則繼續(xù)再下一個(gè)變量中尋找,直到檢索完全部的 PATH 變量。通過(guò) which 命令,我們可以查詢(xún)我們用的命令在哪個(gè)

21、 PATH 中。案例案例 02:這是我的這是我的Perl的路徑,當(dāng)我執(zhí)的路徑,當(dāng)我執(zhí)行行 perl 命令時(shí),其實(shí)就是執(zhí)命令時(shí),其實(shí)就是執(zhí)行的這個(gè)行的這個(gè)Perl如果額外安裝了新版本的如果額外安裝了新版本的Perl,這個(gè)路徑可能會(huì)變化這個(gè)路徑可能會(huì)變化設(shè)置別名最大好處是可以將繁瑣的路徑或命令用簡(jiǎn)單易懂的名字或符號(hào)代替,有點(diǎn)類(lèi)似數(shù)學(xué)中的“換元法”。設(shè)置別名的方法有很多,其中最常見(jiàn)、最簡(jiǎn)單的是用 alias 命令。案例案例 03:bash Shell的語(yǔ)法是非常嚴(yán)格的語(yǔ)法是非常嚴(yán)格的,的,千萬(wàn)不要隨意添加或刪除空千萬(wàn)不要隨意添加或刪除空格格,也不要隨意換行也不要隨意換行bash語(yǔ)句可以不用分號(hào)結(jié)尾語(yǔ)

22、句可以不用分號(hào)結(jié)尾為什么要設(shè)置別名為什么要設(shè)置別名Vi/Vim的簡(jiǎn)單配置的簡(jiǎn)單配置Vi/Vim是我們最常用的文本編輯器之一,它雖然功能強(qiáng)大,但其默認(rèn)的設(shè)置使是我們最常用的文本編輯器之一,它雖然功能強(qiáng)大,但其默認(rèn)的設(shè)置使之看起來(lái)非常簡(jiǎn)陋,因此,我們需要對(duì)它進(jìn)行簡(jiǎn)單的個(gè)性化。之看起來(lái)非常簡(jiǎn)陋,因此,我們需要對(duì)它進(jìn)行簡(jiǎn)單的個(gè)性化。前面提到過(guò),Vi/Vim的用戶(hù)級(jí)別配置文件是/.vimrc我們只需要往里面加入配置命令就行了。以下是建議的配置:案例案例 06:忽略鍵盤(pán)模式兼容性忽略鍵盤(pán)模式兼容性顯示行號(hào)顯示行號(hào)在右下角顯示當(dāng)前行號(hào)和當(dāng)前光標(biāo)位置在右下角顯示當(dāng)前行號(hào)和當(dāng)前光標(biāo)位置設(shè)置設(shè)置TAB縮進(jìn)數(shù)和自動(dòng)

23、縮進(jìn)數(shù)縮進(jìn)數(shù)和自動(dòng)縮進(jìn)數(shù)將將TAB轉(zhuǎn)化為空格(慎重)轉(zhuǎn)化為空格(慎重)設(shè)置智能縮進(jìn)與自動(dòng)縮進(jìn)設(shè)置智能縮進(jìn)與自動(dòng)縮進(jìn)高亮匹配與符號(hào)匹高亮匹配與符號(hào)匹配配語(yǔ)法高亮和文件類(lèi)型探測(cè)語(yǔ)法高亮和文件類(lèi)型探測(cè)set nowrap取消自動(dòng)換行取消自動(dòng)換行插入語(yǔ):簡(jiǎn)單的插入語(yǔ):簡(jiǎn)單的Vi/Vim使用技巧使用技巧狀態(tài)狀態(tài)命令命令作用作用命令模式y(tǒng)y拷貝當(dāng)前行dd剪切刪除當(dāng)前行p(P)粘貼到當(dāng)前行的下一行(上一行)x(X)刪除當(dāng)前光標(biāo)處(前一個(gè))字符7yy/7dd/7p/7x重復(fù)數(shù)字后面的動(dòng)作7次gg(G)光標(biāo)移至首行(尾行)($)光標(biāo)移至行首(行尾)i(a)進(jìn)入插入模式(光標(biāo)向后移一個(gè)字符)o進(jìn)入插入模式,光標(biāo)向

24、下移一行:進(jìn)入行模式/xyz查找xyz所在的行行模式147跳到147行%s/a/b/g將全部a替換為b23,34s/a/c/g將23行到34行的a替換成cwq改寫(xiě)文件并退出q!強(qiáng)制退出,不改寫(xiě)當(dāng)前文件現(xiàn)代的程序幾乎不可能從頭到尾由一個(gè)人構(gòu)架、編寫(xiě)和維護(hù),因此,代碼的相互現(xiàn)代的程序幾乎不可能從頭到尾由一個(gè)人構(gòu)架、編寫(xiě)和維護(hù),因此,代碼的相互交流成為非常普遍的事情。交流成為非常普遍的事情。動(dòng)態(tài)鏈接庫(kù)的誕生就是為了讓大家共享一些優(yōu)質(zhì)的代碼,并以此為基礎(chǔ)開(kāi)發(fā)出自動(dòng)態(tài)鏈接庫(kù)的誕生就是為了讓大家共享一些優(yōu)質(zhì)的代碼,并以此為基礎(chǔ)開(kāi)發(fā)出自己的程序,但同時(shí)卻不會(huì)增加新程序的文件體積(相對(duì)于己的程序,但同時(shí)卻不會(huì)

25、增加新程序的文件體積(相對(duì)于“靜態(tài)鏈接庫(kù)靜態(tài)鏈接庫(kù)”)。你可以將其理解為你可以將其理解為“參考文獻(xiàn)參考文獻(xiàn)”。令人頭疼的動(dòng)態(tài)鏈接庫(kù)令人頭疼的動(dòng)態(tài)鏈接庫(kù)share librarycode Bcode Alibrary Xlibrary Xcode Bcode A動(dòng)態(tài)鏈接庫(kù)動(dòng)態(tài)鏈接庫(kù)靜態(tài)鏈接庫(kù)靜態(tài)鏈接庫(kù)對(duì)于生物信息領(lǐng)域,常用的一些程序并非標(biāo)準(zhǔn)的對(duì)于生物信息領(lǐng)域,常用的一些程序并非標(biāo)準(zhǔn)的C/C+編寫(xiě);同時(shí),程序的設(shè)計(jì)編寫(xiě);同時(shí),程序的設(shè)計(jì)者為了保證兼容性,也并不一定非要將其程序所需的者為了保證兼容性,也并不一定非要將其程序所需的“動(dòng)態(tài)鏈接庫(kù)動(dòng)態(tài)鏈接庫(kù)”放到默認(rèn)的放到默認(rèn)的目錄里。因此,就需要我們自定

26、義目錄里。因此,就需要我們自定義“動(dòng)態(tài)鏈接庫(kù)動(dòng)態(tài)鏈接庫(kù)”的路徑的路徑。常用的“動(dòng)態(tài)鏈接庫(kù)”添加方法是:設(shè)置變量 LD_LIBARAY_PATH如果處在標(biāo)準(zhǔn)的編譯程序過(guò)程中( make 編譯),可以在MakeFile文件或 gcc 編譯選項(xiàng)中修改 CFLAGS, CPPFLAGS, CXXFLAGS 或 LDFLAGS 參數(shù)值(其實(shí)就是修改相應(yīng)的路徑)來(lái)達(dá)到同樣的目的。自定義自定義“動(dòng)態(tài)鏈接庫(kù)動(dòng)態(tài)鏈接庫(kù)”路徑路徑案例案例 04:關(guān)于關(guān)于Perl庫(kù)庫(kù)Perl庫(kù)一般是用來(lái)存儲(chǔ)Perl模塊的在Linux中,默認(rèn)的Perl庫(kù)位置是/usr/lib/perl5/, /usr/lib64/perl5/通過(guò)p

27、erl的 INC 數(shù)組,我們可以了解有哪些Perl庫(kù)路徑,方法是:perl -e print INCn最簡(jiǎn)單的配置Perl庫(kù)路徑的方法是通過(guò) PERLLIB 或 PERL5LIB 變量進(jìn)行設(shè)置。案例案例 05:為了保證兼容性為了保證兼容性這里的這里的 $HOME 變量不一定能用變量不一定能用 “” 代代替替最容易被忽略的字符集設(shè)置最容易被忽略的字符集設(shè)置在眾多的環(huán)境變量設(shè)置中,字符集的設(shè)置往往容易被忽略。如果字符集設(shè)置不恰當(dāng),有可能導(dǎo)致我們沒(méi)法正常運(yùn)行腳本,包括:bash、perl、python、ruby等解析型語(yǔ)言腳本。查詢(xún)字符集的命令是 locale案例案例 07:案例案例 08:變量名和

28、變量名和locale結(jié)果是一結(jié)果是一一對(duì)應(yīng)的一對(duì)應(yīng)的如果確實(shí)不知道該怎樣設(shè)如果確實(shí)不知道該怎樣設(shè)置,除了置,除了LANG變量,其余變量,其余的全部設(shè)置為的全部設(shè)置為“C”軟件的安裝軟件的安裝操作系統(tǒng)本來(lái)就是拿來(lái)用的安裝軟件的一般方法安裝軟件的一般方法一般用戶(hù)在大型機(jī)中安裝軟件,最簡(jiǎn)單的方法是自行通過(guò)源代碼編譯。一般用戶(hù)在大型機(jī)中安裝軟件,最簡(jiǎn)單的方法是自行通過(guò)源代碼編譯。經(jīng)典的通過(guò)源碼安裝軟件的命令是:./configure & make & make install( & 用來(lái)串聯(lián)多個(gè)命令,讀作“與”)。其中 configure 是用來(lái)檢查和設(shè)置編譯環(huán)境,這是個(gè)約定俗

29、成的文件名。用用 make 命令進(jìn)行批量編譯(可能很耗時(shí))。然后通過(guò) make install 進(jìn)行安裝(可能需要權(quán)限)。最后通過(guò) make clean 清除臨時(shí)文件,以免在未來(lái)可能出現(xiàn)的重新編譯過(guò)程中報(bào)錯(cuò)。對(duì)于某些軟件,比如SAMTools,只需進(jìn)行 make 這一步就行了。編譯環(huán)境設(shè)置腳本 configure 可以附加很多參數(shù),源碼安裝軟件的靈活性就在此體現(xiàn),可以通過(guò) configure -help 查詢(xún)。其中,最常用的就是 -prefix 參數(shù),這個(gè)參數(shù)的作用是指定安裝的目標(biāo)路徑。軟件安裝過(guò)程中的參數(shù)優(yōu)化軟件安裝過(guò)程中的參數(shù)優(yōu)化前面提到了通過(guò)源碼安裝軟件具有很強(qiáng)的靈活性,所以很多人在利用

30、此方法編譯前面提到了通過(guò)源碼安裝軟件具有很強(qiáng)的靈活性,所以很多人在利用此方法編譯安裝軟件時(shí),會(huì)加入一些優(yōu)化參數(shù),以減少編譯后的冗余代碼,提高軟件的運(yùn)行安裝軟件時(shí),會(huì)加入一些優(yōu)化參數(shù),以減少編譯后的冗余代碼,提高軟件的運(yùn)行效率。但優(yōu)化未必就是好事,它可能導(dǎo)致程序的不穩(wěn)定。效率。但優(yōu)化未必就是好事,它可能導(dǎo)致程序的不穩(wěn)定。在前面提到過(guò)自定義“動(dòng)態(tài)鏈接庫(kù)”路徑的方法,其中,利用參數(shù) CFLAGS, CXXFLAGS, CPPFLAGS, LDFLAGS 的方法可以在 configure 這一步進(jìn)行設(shè)置。典型的優(yōu)化選項(xiàng)如:./configure CPPFLAGS=-O3 -I/usr/include

31、-L/usr/lib64 -without-zenmap注意!這里沒(méi)有空格,決不注意!這里沒(méi)有空格,決不能寫(xiě)成能寫(xiě)成 L /usr/lib64 ,否則會(huì)報(bào)錯(cuò)。否則會(huì)報(bào)錯(cuò)。-I /usr/include 類(lèi)似。類(lèi)似。這個(gè)選項(xiàng)是這個(gè)選項(xiàng)是Nmap這個(gè)軟件特有的這個(gè)軟件特有的,其作用其作用是取消是取消GUI在在 configure 腳本的參數(shù)中也會(huì)包含一腳本的參數(shù)中也會(huì)包含一些指定頭文件、庫(kù)文件路徑的選項(xiàng),具體因些指定頭文件、庫(kù)文件路徑的選項(xiàng),具體因程序而異(實(shí)際上是大同小異)。程序而異(實(shí)際上是大同小異)。利用利用MakeFile文件來(lái)優(yōu)化參數(shù)文件來(lái)優(yōu)化參數(shù)可以修改這些選項(xiàng)可以修改這些選項(xiàng)盡管可以

32、通過(guò)修改MakeFile來(lái)實(shí)現(xiàn)軟件編譯的優(yōu)化,不過(guò)我還是推薦大家盡量使用 configure 腳本來(lái)進(jìn)行編譯配置,理由是有些配置選項(xiàng)可能是相互關(guān)聯(lián),相互依賴(lài)的,而 configure 腳本可以解決這些問(wèn)題。安裝軟件最重要的不是照搬上面的步驟,而是仔細(xì)閱讀說(shuō)明文檔。常見(jiàn)的說(shuō)明文檔的文件名形如INSTALL, README等。安裝安裝CAFE3的煩惱的煩惱CAFE3是在是在BGI里公認(rèn)的難以通過(guò)常規(guī)方式安裝的軟件里公認(rèn)的難以通過(guò)常規(guī)方式安裝的軟件,原因是:原因是:1. 沒(méi)有標(biāo)準(zhǔn)的沒(méi)有標(biāo)準(zhǔn)的 configure 腳本腳本。2. 本來(lái)以為可以直接通過(guò)本來(lái)以為可以直接通過(guò) make 命令編譯,類(lèi)似命令編

33、譯,類(lèi)似SAMTools的安裝過(guò)程一樣。的安裝過(guò)程一樣。但卻總是報(bào)錯(cuò)。但卻總是報(bào)錯(cuò)。3. 嘗試過(guò)添加各種新版的動(dòng)態(tài)鏈接庫(kù)以及頭文件,但始終沒(méi)法解決問(wèn)題。嘗試過(guò)添加各種新版的動(dòng)態(tài)鏈接庫(kù)以及頭文件,但始終沒(méi)法解決問(wèn)題。其實(shí)根本原因不是缺乏庫(kù)和頭文件,而是C語(yǔ)言版本的兼容性問(wèn)題。我們常用的C語(yǔ)言版本是C98,而CAFE3恰好需要C99。因此,只需要在其Makefile的 OPTS 選項(xiàng)最后加上 -std=c99 便可以正常進(jìn)行 make 編譯了。REF: http:/ Perl Archive Network它是Perl自帶的模塊管理程序。啟動(dòng)命令是:cpan進(jìn)入CPAN界面后,輸入 help 顯示

34、幫助文檔;輸入 i /REGEXP/ 用于查找模塊;輸入 install MODEL_NAME 用于安裝模塊。在 install MODEL_NAME 的過(guò)程中,模塊名對(duì)大小寫(xiě)敏感。標(biāo)準(zhǔn)的標(biāo)準(zhǔn)的CPAN啟動(dòng)界面啟動(dòng)界面配置配置CPANCPAN的配置文件通常是 $HOME/.cpan/CPAN/MyConfig.pm第一次執(zhí)行 cpan 時(shí)會(huì)提示進(jìn)行配置。如果需要修改配置好的CPAN,需要在其控制臺(tái)輸入 o conf init 即可。如果CPAN配置錯(cuò)誤,最簡(jiǎn)單的修復(fù)辦法就是整體刪除 $HOME/.cpan/ 目錄。第一次執(zhí)行CPAN時(shí),選擇自動(dòng)配置,然后用 o conf init urllis

35、t 將鏡像地址修改為BGI的地址即可。定義模塊的安裝位置定義模塊的安裝位置BGI的的CPAN鏡像鏡像案例案例 10:其它可能用得到的技巧其它可能用得到的技巧技多不壓人關(guān)于程序補(bǔ)丁的思考關(guān)于程序補(bǔ)丁的思考在在BGI有很多很好的程序,在構(gòu)建某些具體流程上面卻顯得不盡人意,對(duì)此,流有很多很好的程序,在構(gòu)建某些具體流程上面卻顯得不盡人意,對(duì)此,流程的構(gòu)建者可能會(huì)對(duì)這些程序進(jìn)行一些修改。這本來(lái)是一下正常的事情,但這些程的構(gòu)建者可能會(huì)對(duì)這些程序進(jìn)行一些修改。這本來(lái)是一下正常的事情,但這些修改者們卻有個(gè)不好的習(xí)慣修改者們卻有個(gè)不好的習(xí)慣直接在原作者的代碼上直接修改而不加以標(biāo)注。直接在原作者的代碼上直接修改而

36、不加以標(biāo)注。這樣就給之后的一些新人留下了對(duì)代碼理解層面上的麻煩。這樣就給之后的一些新人留下了對(duì)代碼理解層面上的麻煩。因此,我建議大家不要直接修改原始代碼,而是利用 diff 命令生成程序補(bǔ)丁,之后用 patch 命令使用該補(bǔ)丁。生成補(bǔ)?。篸iff -Nur OLD_FILE NEW_FILE FILE_PATCH使用補(bǔ)丁:patch -p0 /dev/null &nohup SHELL_FILE & nohupCOMMAND /dev/null &screen的用法:screen; screen -S NAME; screen -ls; screen -R進(jìn)入screen控制臺(tái)后,輸入命令,用快捷鍵 ctrl + ad

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶(hù)所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶(hù)上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶(hù)上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶(hù)因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論