1. 前言
大學畢業快一年了,經常看別人的博客,看著別人學習都很有條理,學什么都記錄下來,所以自己也打算開始寫屬于自己的學習記錄。而且很多時候有些技巧用到的時候上網查一下,下次又忘了,所以希望能夠做好整理工作。
2. grep命令
剛剛參加工作的時候,對grep了解很少,但是工作中需要用的地方很多,所以就先來總結一下。
grep的功能有非常多,但是看代碼卻用不到那么多的高級功能,所以只列出對工作有幫助的幾個參數,其他的以后如果需要,再繼續添加
grep “字符串” *??????????? 如果要搜索的目錄下沒有目錄的話,完全不用加參數
grep -r “字符串” *??????? 如果有目錄,-r可以遞歸搜索,好像-R也可以,而且man手冊還區分了,可能在符號鏈接上有什么區別,但是沒有試驗過
grep -i “字符串” *??????? 忽略字符串中的大小寫
grep -n "字符串" *?????? 列出字符串所在文件的行號,結合vim 文件 +行號 打開文件很有用
在grep實際使用中,可能還會結合轉義字符\,比如帶“->“的,就需要搜索時加轉義”\->“不然搜不到的。反正有時候搜索帶通用匹配符而又搜不到結果時,
就加個轉義試試,說不定有驚喜歐
其他的參數以及結合正則表達式的方法,只是了解過,平時工作中并不常用,就不列舉了。
以后需要再繼續增加。
3. rpm命令
在平時工作中,rpm命令用的非常多,總結下他的基本用法
rpm -ivh + 包名?? 安裝包,雖然-i 參數就可以了,但是還是習慣ivh,看起來舒服點吧
rpm -Uvh +包名? 升級包,很多時候包已經存在了,這時需要用升級選項
--nodeps 、 --force? 這兩個參數平時都會用到,而且結合上面要用好,其實并不容易,剛開始工作一直不敢用這兩個參數,而且就現在還經常忽略他們的使用。而且有時候是必須用的,比如用低版本的包替換高版本等等
rpm -qi +包名 可以查看rpm包的信息,工作時候有時候要修改上層的應用,但是卻不知道這個上層應用屬于那個src.rpm包,此時這個命令真是超級有用啊q
rpm -qf +文件 安裝rpm包會在系統中產生很多文件,用這個命令可以找到這個文件屬于那個rpm包。Linux上層應用很多時候有很多rpm包,你打開源碼完全不知道這 個函數調用是怎么實現的。這個時候到/usr/include下grep下,找到對應的.h,之后結合rpm -qf 和rpm -qi參數,非常有效。
rpm -qa 可以查看linux系統中共安裝了哪些rpm包,當然如果是某些不是rpm包維護的系統可能查不到,比如ubuntu。
rpm -qpl 可以不用安裝或解壓縮就可以看到一個rpm包中有哪些文件,很有用
--ignorearch 這個參數雖然不常用,但是需要的時候不知道真是要命啊。忽略平臺參數安裝,建議慎用。我也只是在mips64el架構的內核包拿來在mips架構上有時候用的。
rpm命令工作中差不多基本就用到這些,其他的以后需要再來補。
4. qemu命令
昨天研究了快一天的qemu虛擬機,大體上得到了下面比較靠譜的命令
1:啟動一個安裝鏡像
qemu-img -create -f qcow2 fedora.img 10G
qemu-system-x86_64 -m 2048 -enable-kvm fedora.img -cdrom /path/yours.iso
上面的方法可以啟安裝光盤鏡像
2:至于啟一個文件系統
qemu-system-x86_64 -m 1024 -kernel /boot/vmlinuz-3.10.52-200.nk.6.zy.1.x86_64 -initrd /boot/initramfs-3.10.52-200.nk.6.zy.1.x86_64.img
這個有點反應,但是后面再加參數都沒法啟動顯示界面
3:還有就是fedora的arm版的一個qemu,是師傅交代我要做的,當時不知從哪里弄了一個qemu中壓縮出來的aarch64編譯機,解壓打開就是一個跟文件系統。結果用qemu-system-arm啟動一直報錯。
至于把華為提供給我們公司的內核和initrd更換掉,更是一點輸出都沒有。感覺好無奈。
最后還是他詢問了相關人員,才知道
To use Fedora 23 on QEMU you will need to use a build of UEFI that is not hosted by Fedora for licensing reasons. For convenience a?dnf|yum?repository had been created
相關詳細鏈接:http://fedoraproject.org/wiki/Architectures/AArch64/F23/Installation
由于這個事情暫時繞開了,目前是沒時間搞了,以后有機會會驗證下,畢竟讓我糾結了一天。
希望以后誰再需要可以有點幫助
5. rpmbuild命令
rpmbuild命令是一個通過src.rpm反過來編譯rpm包的命令。
先用rpm -ivh 命令安裝src.rpm包,然后在家目錄下就會有一個rpmbuild的目錄
目錄下面會有兩個文件夾,SOURCES和SPEC
其中SPEC文件夾下面是spec文件,通過rpmbuild命令編譯這個文件就可以得到想要的一些東西
rpmbuild -bp *.spec???????? 編譯后發現在rpmbuild/BUILD目錄下生成了源碼,其實很多時候有人會直接用rpm2cpio命令
解壓縮得到里面的源碼tar包或者到SOURCES下面得到源碼tar包。這種做法會有隱患的,因為可能有些patch是通過rpmbuild
編譯的過程中打進去的,可能會產生不利的影響
rpmbuild -ba *.spec???? 編譯得到rpm和src.rpm包,如果成功,會在rpmbuild/RPM和rpmbuild/SRPM下面生成rpm包和src.rpm包
rpmbuild -bb *.spec???? 只編譯RPM包,不編譯SRPM包
rpmbuild -bs *.spec????? 只編譯出SRPM包,有時候changelog忘改了或者修改了一些和代碼無關的地方,可以只生成SRPM包,節省時間。
其中有兩個參數。
--nodeps 忽略依賴,有時候我們只想得到源碼,可以考慮在缺依賴的時候使用這個參數
--target 這個參數真是要命啊,用交叉編譯其他平臺的包時,這個參數沒加的情況下解報錯真是淚流滿面啊。我之前弄了一周實在搞不
定了,然后我師傅告訴了我這個參數,當時真是要瘋了啊。。。
其他的參數暫時想不起來了,不太常用吧,以后有需要再補充
6. find命令
對于find命令,很尷尬的是我基本用的只有一條,那就是
find . | grep "文件名"
額,雖然粗暴,但是真是基本解決了找文件的需求。如果以后碰到高級點的,再補充
7.vim
對于vim,里面的技巧真是太多了,我只是學會了其中一些,應付工作暫時是夠了
esc鍵???? 沒事的時候多按幾下,讓文件處于一般模式,這個模式可以用hjkl來進行上下左右移動
i和a鍵?? 一個是在當前光標前插入一個是在當前光標后插入,按了以后就可以從一般模式進入插入模式,進行文本編輯了
x???? 刪除一個字符---》一般模式下啊
r???? 替換一個字符---》一般模式下啊
dd? 刪除一行,其實說是剪切更恰當,因為按p又可以粘貼出來了
yy? 復制一行
p?? 粘貼“剪貼板“里的內容
u 是撤銷命令
home 和end 快速到一行的行頭和行尾 其實shift+“$“也可以快速到行尾,好像好像有個組合鍵快速到行頭,但是忘了
shift+"*"或shift+"#"? 在當前單詞上按上面兩個組合,可以向下或向上搜索單詞。然后按n或N上下找
/???????? 在一般模式下按"/"然后輸入要搜索的單詞或字符串,也可以定位,然后按n或N上下找。這個方法的優勢在于可以搜索帶空格的字符串,很實用
v??????? 按v進入可視模式,上下移動可以選中整行,一般用來大面積的刪除(d)或復制(y)。
ctrl+v? 塊選中,可以結合上面的刪除,復制等命令。另外有時候我們寫代碼的時候需要連續注釋多行,塊選中每行代碼的最前面部分,然后按大寫的"I",之后就進入了插入模式。輸入注釋符號"http://"或“#”,然后按加下esc鍵就可以注釋多行啦,很實用。如果要刪除這些注釋,塊選中后點擊“d“就可以了。
還有就是vim的跳轉問題,用ctags命令生成tags文件,然后修改配置項~/.vimrc。如果以前沒有也沒關系,直接新建一個就好了。然后在最下面寫上
set tags=/路徑/tags
一定要注意這個只在當前用戶下有效,可能切換到root或者其他用戶,就會失效。他生效的原理很重要,因為有時候可能你在其他用戶下編輯,其他用戶也配置了ctags。然后跳轉的地方可能就不是你想要的地方,這會造成很大的困擾。以前我在root用戶和user下都配置了內核源碼,關鍵是路徑不一樣,然后改來改去發現一團遭,所以一定要去了解配置文件才是跳轉的關鍵。
vim用法很多,一時也想不出其他常用的方法了,暫時先寫到這里。
8 yum
yum庫有些系統可能用不到,對于創建本地倉庫那一塊我以后用到再寫,暫時記不清楚了
由于公司的系統有自己的Yum源,所以裝系統以后就需要自己配置一下。
在/etc/yum.repo/yous.repo中寫入yum庫,配置好了后就可以用Yum來裝軟件包了,非常方便
yum install +包名 可以自動檢索依賴,作為有時候需要手動去網上解依賴的人來說,yum真是很方便。特別是編包的時候發現yum里都有,真是幸福啊
這里貼一個rpm下載網址,http://rpm.pbone.net/
基本少的rpm包我會現在這里找,輸入欄右邊有一個高級選項,可以選擇包的來源哪個系統。
輸入欄下面有分類,有時候可能編譯應用或安裝驅動的時候,發現少的是動態庫,或者就是你就是想看看我這個頭文件哪個rpm包里有,就可以勾選第一個選項。如果只是找rpm包,就選第三個。另外兩個沒試過。
9 ssh scp
ssh 遠處登陸一個主機,比如ssh test@10.3.3.66。然后輸入密碼就可以登陸別人的電腦了。有時候報一個錯,好像和安全有關,需要刪掉一個配置文件,具體忘了。
scp 拷貝遠處主機的東西到本地或拷貝本地的東西到遠處主機。非常使用,而且速度快。
scp yous.txt test@10.3.3.66:/home/test?
scp test@10.3.3.66:/home/test/test .
加上-R參數可以拷貝目錄
上面具體意思不知道可以去百度,我寫也沒法太詳細。
10 手動改內核
有時候內核作了修改后,就會手動換一些內核。一般情況下,操作系統的引導文件在sda1分區的/boot下面。把要換的內核放到這個目錄下,然后修改grub.cfg或boot.cfg。反正復制一下那些大括號里面的東西,然后改下名字。如果想啟動時進入字符界面,就在后面加個3,但是要
刪掉一些參數,比如rhgb,其實內核參數基本可以刪掉,不確定就多刪掉點。
如果系統壞了或者其他什么原因,沒法進系統了,但是又不甘心。可以試試在手動啟動內核。我目前熟悉的有pmon和grub引導。順便譴責下pmon,經常
出一些我無法理解的事情,比如同樣是我做的系統盤,我的u盤無法識別,我師傅的卻可以。以及有些機器沒法顯示引導界面啊,真是不喜歡。
手動引導命令分為grub和pmon
grub 舉一個啟動本地磁盤的例子
linux (hd0,msdos1)/boot/vmlinux
boot
hd0和msdos1表示第一塊硬盤和第幾分區
ls可以查看分區
pmon 舉一個usb的例子。pmon下devls命令可以查看當前的設備,然后@后面的設備就是這么來的,0是第一個。再有(好像)是按照abcd排的。比如0a什么的,可能不對,畢竟塊2個月沒弄了。
load /dev/fs/ext2@usb0/boot/vmlinux-uni
initrd /dev/fs/exit2@usb0/boot/initrd.gz
g console=tty
評論
查看更多