Linux開發學習筆記(一)
安裝虛擬機器並聯網
1、安裝虛擬機器vmware:
安裝完vmware並開啟——》點選建立新的虛擬機器——》自定義——》下一步——》選擇稍後安裝作業系統——》選擇Linux Ubuntu 64位——》給虛擬機器取名字、選擇安裝路徑——》配置處理器數量1和核心數量2——》虛擬機器記憶體選擇1G——》使用橋接網路——》一直選預設——》完成。
2、在虛擬機器下安裝Ubuntu:
下載好Ubuntu映象檔案——》在虛擬機器設定裡面選擇映象檔案的路徑——》選擇english——》install Ubuntu——》設定賬號密碼——》安裝並重啟。
3、虛擬機器聯網
點選選單欄的虛擬機器——》設定——》網路介面卡選擇NAT。
如果出現連不上網的情況:
開啟Windows的服務視窗
將這三項設定成自動並啟動。
4、Ubuntu14.04如何設定固定IP和DNS
參考:https://blog.csdn.net/biqioso/article/details/81104617
更新軟體
sudo apt-get update 更新源
sudo apt-get upgrade 更新軟體
sudo apt-get clean 清理快取
安裝使用vim
1、安裝vim
sudo apt-get install vim
2、新增 vim 配置檔案
配置自己的vim,輸入:
vi ~/.vimrc
將以下內容新增到.vimrc中,就可以實現基本的vim配置:
(還可安裝各種外掛將vim配置成一個強大的IDE工具)
"顯示行號
set nu
"啟動時隱去援助提示
set shortmess=atI
"語法高亮
syntax on
"使用vim的鍵盤模式
"set nocompatible
"不需要備份
set nobackup
"沒有儲存或檔案只讀時彈出確認
set confirm
"滑鼠可用
set mouse=a
"tab縮排
set tabstop=4
set shiftwidth=4
set expandtab
set smarttab
"檔案自動檢測外部更改
set autoread
"c檔案自動縮排
set cindent
"自動對齊
set autoindent
"智慧縮排
set smartindent
"高亮查詢匹配
set hlsearch
"背景色
set background=dark
"顯示匹配
set showmatch
"顯示標尺,就是在右下角顯示游標位置
set ruler
"去除vi的一致性
set nocompatible
"允許摺疊
set foldenable
"""""""""""""""""設定摺疊"""""""""""""""""""""
"
"根據語法摺疊
set fdm=syntax
"手動摺疊
"set fdm=manual
"設定鍵盤對映,通過空格設定摺疊
nnoremap <space> @=((foldclosed(line('.')<0)?'zc':'zo'))<CR>
""""""""""""""""""""""""""""""""""""""""""""""
"不要閃爍
set novisualbell
"啟動顯示狀態行
set laststatus=2
"淺色顯示當前行
autocmd InsertLeave * se nocul
"用淺色高亮當前行
autocmd InsertEnter * se cul
"顯示輸入的命令
set showcmd
"被分割視窗之間顯示空白
set fillchars=vert:/
set fillchars=stl:/
set fillchars=stlnc:/
3、基礎使用
(最全的vim快捷鍵 https://blog.csdn.net/biqioso/article/details/81140600)
使用vi來開啟/建立一個檔案,vi 檔名
vi的兩種模式
1、命令模式:當vi開啟時預設為命令模式,要轉入輸入模式,需要按a或者i鍵。在命令模式下,此時鍵盤上輸入的所有東西都被vi當作命令來對待。(所以不要亂輸)
2、輸入模式:輸入模式用來向檔案輸入內容。可以從命令模式中按a或者i進入輸入模式。輸入完成後如果要儲存,要先退回到命令模式(因為儲存也是一種命令)。在輸入模式下按ESC鍵或 Ctrl+[
回到命令模式。
注:輸入模式下,螢幕左下角會提示 -- INSERT --。否則就是命令模式。
在命令模式下如何儲存
:wq 儲存並且退出
:w 只儲存不退出
:q 不儲存只退出
:q! 不儲存強制退出
:wq! 儲存並強制退出(!可理解成強制)
查詢
在命令模式下,輸入(/xxx),就可以查詢到xxx
快速切換行
在命令模式下,輸入(:num),就可以快速切換到num行
複製
複製一行則:yy
複製三行則:3yy,即從當前游標+下兩行。
複製當前游標所在的位置到行尾:y$
複製當前游標所在的位置到行首:y^
剪下
剪下一行:dd
前切三行:3dd,即從當前行+下兩行被剪下了。
剪切當前行游標所在的位置到行尾:d$
剪切當前行游標所在的位置到行首:d^
貼上
用v選中文字之後可以按y進行復制,如果按d就表示剪下,之後按p進行貼上。
gp:和p的功能基本一樣,但是貼上完,它會把游標移動至貼上內容之後;gP同理。
撤銷與恢復
'u' : 撤銷上一個編輯操作
'ctrl + r' : 恢復,即回退前一個命令
'U' : 行撤銷,撤銷所有在前一個編輯行上的操作
. :重複最後一條修改正文的命令
外部檔案與vim之間的粘帖和複製
ubuntu預設vim是不支援從外部檔案與vim之間的粘帖複製,vim有自己的剪下版,分別是”0-”9,”-,”8,”+,”:,”/,”%,”i,這些都是vim的暫存器,可以用命令:reg檢視。ubuntu需要安裝vim-gnome。
輸入命令sudo apt-get install vim-gnome進行安裝。
“+y表示從vim複製到系統剪下版
“+p表示從外部檔案(系統剪下版)粘帖到vim
“+d表示剪下
螢幕翻頁
Ctrl+u: 向上翻半屏
Ctrl+f: 向上翻一屏
Ctrl+d: 向下翻半屏
Ctrl+b: 向下翻一屏
移動游標指令
移動游標普遍使用的是方向鍵,考慮相容問題,vi定義太多的方向指令,下面只是一小小部分(常用的幾個):
space: 游標右移一個字元
Backspace: 游標左移一個字元
Enter: 游標下移一行
nG: 游標移至第n行首
n+: 游標下移n行
n-: 游標上移n行
H: 將游標移到螢幕上的起始行(或最上行);
M: 將游標移到螢幕中間;
L : 將游標移到螢幕最後一行。
插入刪除指令
常用插入、刪除指令如下:
i:在當前游標前插入,游標後文本向後移
a:從當前游標後插入,游標後文本後移
I:在游標所在行首插入(第一個非空白字元前)
A:從游標所在行末插入
o: 在游標所在行下面新增一行(並進入輸入模式)
O: 在游標所在行上方新增一行(並進入輸入模式)
x: 刪除游標所在字元,等同於[Delete]功能鍵
X: 刪除游標前字元,相當與[Backspace]
dd: 刪除游標所在的行,並去除空隙
cc:刪除當前行並進入編輯模式
r: 修改游標所在字元
R: 替換當前字元及其後的字元,直到按 [ESC]
s: 從當前游標位置處開始,以輸入的文字替代指定數目的字元
S: 刪除指定數目的行,並以所輸入文字代替之
do: 刪至行首
d$: 刪至行尾
安裝samba
sudo apt-get install samba
vi /etc/samba/smb.conf
在文件的最後加上:
新增samba使用者並設定密碼:
Windows訪問Ubuntu的/home/share
檢視UbuntuIP地址:
快捷鍵Win+R 開啟執行對話方塊,輸入Ubuntu的IP地址:
輸入賬號密碼之後就可以使用samba實現共享服務,還可以對映網路驅動器,方便開啟。
注意:如果每次開啟虛擬機器,IP地址變來變去的話,可以將其設定為靜態IP。
(參考: https://blog.csdn.net/biqioso/article/details/81104617)
Git配合OSC的使用
在碼雲上建立專案,然後複製HTTPS
右鍵
將剛才複製的HTTPS貼上到URL那個地方,點選ok之後
之後桌面就會有個資料夾
新增檔案到倉庫中(把檔案拉到資料夾中),然後選擇要新增的檔案點右鍵點選Add
然後點選commit——》輸入描述資訊——》點選commit——》push——》輸入賬號密碼(可以設定不用每次都輸入密碼)——》這時碼雲上面就有剛上傳的檔案了。
注意:假如現在有幾個人同時在維護這個專案,然後我準備將本地的檔案改動之後上傳到伺服器,上傳之前需要先pull,將最新的專案更新到本地,再編輯再commit再push,這樣才不會報錯,如果沒有pull的話,就會跟伺服器產生衝突。
點選showlog可以比較版本差異:
Shift+滑鼠左鍵,可以選中兩個版本,再滑鼠右鍵,選中Compare revisions,就可以比較兩個版本,點選那個檔案可以具體看到差異。
Ubuntu上安裝使用Git
安裝完成後對git進行配置:
第一行是賬號,第二行是郵箱地址。
因為本地Git倉庫和遠端倉庫(如GitHub)之間的傳輸是通過SSH加密的,所以需要SSH Key。
接下來是生成公鑰(SSH Key):輸入指令之後按回車即可,無需設定密碼。
如果一切順利的話,可以在使用者主目錄裡找到.ssh目錄,裡面有id_rsa和id_rsa.pub兩個檔案,這兩個就是SSH Key的祕鑰對,id_rsa是私鑰,不能洩露出去,id_rsa.pub是公鑰,可以放心地告訴任何人。
建立完公鑰之後,需要上傳。
之後會開啟一個文件
將裡面的內容全部複製。
開啟碼雲——》設定
將剛才複製的貼上到紅色框內。
為什麼 碼雲或者GitHub 需要SSH Key呢?因為它們需要識別出你推送的提交確實是你推送的,而不是別人冒充的,而Git支援SSH協議,所以,碼雲或者GitHub只要知道了你的公鑰,就可以確認只有你自己才能推送。(可新增多個公鑰)
然後測試連線是否通暢
到這裡,git就安裝配置成功了。
Linux下使用Git
1、使用git
先了解一件事:Git支援多種協議,包括ssh、https,但通過ssh支援的原生git協議速度最快。
- 關聯本地庫和遠端庫
先建立一個資料夾(以wenjian為例)然後使用git init指令初始化一個空的git倉庫。
接著新增一個遠端倉庫,輸入git remote add origin <專案地址>
專案地址的格式:https://git.oschina.net/使用者名稱/專案名.git(其實就是複製專案的網址,然後在後面加上 .git),還可以用ssh協議的那種。
(Git 裡面的 origin 代表遠端庫 https://mp.csdn.net/postedit/81140711)
這樣,就把本地倉庫和遠端庫關聯起來了。
關聯後,使用命令git push -u origin master第一次推送master分支的所有內容;
此後就可以使用命令git push origin master推送最新修改;
上面命令中使用-u引數,Git不但會把本地的master分支內容推送的遠端新的master分支,還會把本地的master分支和遠端的master分支關聯起來,在以後的推送或者拉取時就可以簡化命令。
- 遠端庫克隆
要克隆一個倉庫,首先得先有遠端庫的地址,然後輸入:git clone <專案地址>
專案地址的格式:https://git.oschina.net/使用者名稱/專案名.git(其實就是複製專案的網址,然後在後面加上 .git),還可以用ssh協議的那種。
克隆某一個特定的遠端分支:git clone –b <分支名> <專案地址>
- 進行一次提交
平時注意提交之前要先pull一下(避免衝突)。輸入git pull origin master
然後把要提交的檔案(以1234為例)弄到這個資料夾裡,或者直接在這個資料夾中編輯新的檔案。
然後輸入git add .(注意有個點)新增檔案,輸入git commit –m “註釋”提交到倉庫。
git add -A 提交所有變化
git add -u 提交被修改(modified)和被刪除(deleted)檔案,不包括新檔案(new)
git add . 提交新檔案(new)和被修改(modified)檔案,不包括被刪除(deleted)檔案
輸入git push origin master就可以完成推送了。
接著去碼雲上面就可以看到剛push上去的檔案了。
參考網站:
http://www.cnblogs.com/wangmingshun/category/819852.html
2、Git常用命令
git status 顯示當前倉庫的最新狀態。提交之後,工作區就是“乾淨的”,即沒有新的修改;三部分:(已經在stage區, 等待新增到HEAD中的檔案) (有修改, 但是沒有被新增到stage區的檔案) (沒有tracked過的檔案, 即從沒有add過的檔案)可通過.gitignore的配置去忽略某些不想顯示出來的沒有tracked過的檔案
在每次執行 git commit之前先使用git status檢查檔案狀態是一個很好的習慣, 這樣能防止你不小心提交了您不想提交的東西。
git status -s 或 git status –short 狀態簡覽。新新增的未跟蹤檔案前面有 ?? 標記,新新增到暫你可能注意到了 M 有兩個可以出現的位置,出現在右邊的 M 表示該檔案被修改了但是還沒放入暫存區,出現在靠左邊的 M 表示該檔案被修改了並放入了暫存區。
git diff 檢視工作區中的修改。
git diff <commit id1> <commit id2> 比較兩次 commit 之間的差異。
git diff <branch1> <branch2> 在兩個 branch 之間比較。
git diff 檔案 檢視指定檔案具體修改了哪些內容。
git log 檢視當前分支的提交歷史
git branch xxx 建立本地分支xxx(只建立,不進行分支切換)
git branch 檢視本地分支
git checkout xxx 切換分支到xxx
git branch –d xxx 刪除本地分支xxx
git branch -d -r xxx 刪除遠端分支
git branch –a 檢視所有本地分支和遠端分支(前面帶*的表示當前工作目錄所在分支)
git remote –v 檢視遠端的倉庫(origin)
git branch –r 檢視遠端分支
git merge dev 合併指定分支dev到當前分支。
git branch -m | -M oldbranch newbranch 重新命名分支,如果newbranch名字分支已經存在,則需要使用-M強制重新命名,否則,使用-m進行重新命名。
git pull <遠端主機名origin> <遠端分支名master>:<本地分支名>
git remote show origin 檢視remote地址,遠端分支,本地分支與之相對應關係
git push origin master –f 強制推送程式碼(協同開發時,很可能會覆蓋別人的程式碼)
git stash 將當前改動暫存起來:
git stash pop 恢復最後一次暫存的改動
git stash list 檢視有多少暫存
打標籤:
git checkout master 切換到需要打標籤的分支上
git tag v1.0 打一個新標籤
git tag 檢視所有標籤
預設標籤是打在最新提交的commit上的。
git log --pretty=oneline --abbrev-commit 找到歷史提交的commit id
git tag v0.9 f52c633 就可以對commit id是f52c633的這次提交打標籤
git show v0.9 檢視標籤資訊
git tag -a v0.1 -m "version 0.1 released" 1094adb 建立帶有說明的標籤,用-a指定標籤名,-m指定說明文字
git tag -d v0.1 刪除標籤,因為建立的標籤都只儲存在本地,不會自動推送到遠端。所以,打錯的標籤可以在本地安全刪除。
git push origin v0.1 推送某個標籤到遠端
git push origin –tags 一次性推送全部尚未推送到遠端的本地標籤
如果標籤已經推送到遠端,要刪除遠端標籤就麻煩一點,先從本地刪除:
git tag -d v0.9
然後,從遠端刪除。刪除命令是
git push origin :refs/tags/v0.9
注意:標籤總是和某個commit掛鉤。如果這個commit既出現在master分支,又出現在dev分支,那麼在這兩個分支上都可以看到這個標籤。
git reset –hard 撤銷當前的修改(注意:這條命令會完全重置你的修改,如果你想保留某些檔案,請使用checkout +檔案路徑 命令來逐一撤銷修改)
git reset --hard origin/master (回退到和遠端版本一樣origin代表你遠端倉庫的名字,master代表分支名)
git commit –amend 修改最近一次提交的提交資訊
git filter-branch --tree-filter 'rm -f passwords.txt' HEAD 從每一個提交移除一個檔案(passwords.txt),為了讓 filter-branch 在所有分支上執行,可以給命令傳遞 --all 選項。
git cherry-pick <commit id> 從眾多提交中保留只需要的提交
git config –global core.editor “vim” 這樣就可以把vim編輯器作為git commit時的編輯器,就可以在裡面新增大段的註釋。
git config –global credential.helper store 可以記住使用者和密碼,不用每次pull、push都輸入密碼
各種問題都可以檢視這個網站:http://git.mydoc.io/?t=154701
3、git log規範
禁止中文,必須全英文log,log的作用,為了追溯以前的程式碼
格式如下
[修改的主要大目錄] 同步人姓名
1. 修改內容,簡介明瞭,讓大家看的懂
例子:
[package:input] sync code from zhangbh ===>package為修改的大目錄,不是工程總目錄,input為所修改的最小目錄
1.Add buzzer function.
2.Change the multi touch report to single point report.
使用vscode、notepad++、截圖工具
額…沒什麼好說的,下載之後動手操作一波就可以了。
使用beyond compare
使用Source Insight
新建工程
輸入工程名,選擇儲存路徑(一般建立一個資料夾用來存放source insight有關檔案,這裡以si_project為例)
然後會彈出這個視窗
選擇要加入的資料夾,點選Add Tree將所有檔案遞迴加到工程中,然後點選Close就搞定了。
常用操作:
1、Project->Synchronizing Files 同步
2、對一個變數或函式 右鍵lookup references…可以進行查詢,然後可以通過紅色標記開啟對應程式碼檔案,再點一次就返回查詢結果頁面。也有可以對查詢結果進行上下跳轉的按鈕。
3、對函式右鍵jump to caller,會跳轉到呼叫的地方。
4、Ctrl + 滑鼠單擊 進入定義.
5、Alt + F12可以切換,讓字元寬度變得一致,或者是大小不同地顯示。
6、Ctrl + G (或者F5) 跳轉到某一行。
7、Ctrl + O 搜尋檔案,找到回車開啟,找不到ESC退出
8、Alt + G (或者F7) 開啟Symbol Window.
9、Alt +, 後退;Alt+.前進.
10、Ctrl + F 查詢關鍵字。
11、Ctrl + Shift + F 全工程查詢關鍵字
Xshell通過SSH登入虛擬機器的Ubuntu系統
先了解一下SSH:SSH(全稱 Secure Shell)是一種加密的網路協議。使用該協議的資料將被加密,如果在傳輸中間資料洩漏,也可以確保沒有人能讀取出有用資訊。要使用 SSH,目標機器應該安裝 SSH 服務端應用程式,因為 SSH 是基於客戶-服務模式的。 當你想安全的遠端連線到主機,可中間的網路(比如因特網)並不安全,通常這種情況下就會使用 SSH。
首先開啟Xshell——》新建會話
然後去Ubuntu輸入指令 ifconfig 檢視Ubuntu系統的IP地址
確定之後輸入Ubuntu的使用者賬號密碼就可以連上了
這樣就是連上之後的情形。
密碼也可以設定長期有效,不用每次連線都輸入密碼。
如果上面的步驟還沒有連上的話,很可能是Ubuntu主機沒有開啟SSH服務。
(ssh程式分為有客戶端程式openssh-client和服務端程式openssh-server。如果需要ssh登陸到別的電腦,需要安裝openssh-client,該程式Ubuntu是預設安裝的。而如果需要從遠端連線到本機,則需要安裝openssh-server,該程式需要自己安裝。在Ubuntu下安裝openssh-server非常簡單。)
所以首先輸入sudo apt-get install openssh-server安裝一下openssh-server。
輸入ps -e | grep ssh檢視ssh服務有沒有執行,有執行的話可以看到
有sshd程序說明openssh-server已經啟動。
沒有啟動的話可以輸入 /etc/init.d/ssh start啟動。
再輸入 netstat –ntlp可以看到下面紅框
這說明sshd已經能夠正常工作了(預設埠是22)。再開啟xshell連線就搞定了。
Linux命令
1、常用命令
(1)ls(list,列表)
作用:使用列表把當前資料夾下所有檔案顯示出來
ls -a 顯示所有檔案,包括隱藏檔案
ls -l 以詳細資訊顯示
ls -a -l 顯示所有檔案的詳細資訊
ls -l-a
ls -la
ls -al 以上都可以用,強調一種思維
(2)man
作用:查詢man手冊,獲得幫助資訊
man 1 ls 1表示查詢的是linux命令
man 2 xxx 2表示查詢的是linux API
man 3 xxx 3表示查詢的是C庫函式
注意:在man手冊中查詢時,退出按Q鍵(Q就是quit的縮寫)
(3)cd(change directory,更改目錄)
作用:用來切換目錄
涉及到相對路徑和絕對路徑
cd .. ..代表上一層目錄
cd . .代表當前目錄
../../../../代表上上上上層目錄
注意:每個新的空的資料夾裡面都有兩個隱藏的檔案,分別是(.)、(..),這兩個檔案裡面分別是兩個路徑。也就是說cd.的時候,看似在進入當前目錄,其實就是進入了那個叫做.的檔案。同理,cd..的時候,看似進入了上一層目錄,其實就是進入了那個叫做..的檔案。
在看檔案詳情的時候,前面d表示資料夾,前面-表示普通檔案,前面l表示符號連線檔案。
(4)pwd(print work directory,列印工作目錄)
作用:打印出當前的絕對路徑
(5)mkdir(make directory,建立資料夾)
作用:建立空資料夾
mkdir -p 級聯建立資料夾
如: mkdir -p 111/222
(6)touch
作用:建立空檔案
格式:touch pathname
(7)mv (move,移動)
作用:在目錄間移動檔案(只改path不改name),重新命名檔案(不改path改name)
也可以同時改
格式:mv 原始檔pathname 目標檔案pathname
(8)cp(copy,複製)
作用:複製檔案或資料夾(複製時路徑可以改,名字也可以改,也可以都改)
格式: cp 原始檔pathname 目標檔案pathname
cp -r 用來複制資料夾
cp -f 強制複製
cp -rf 強制複製資料夾
實際操作時,一般都是cp-f複製檔案(因為有時執行之後並沒有真正複製過去,所以需要強制。不過需要注意是否會覆蓋到同名檔案,所以平時要有備份的習慣。)
(9) rm(remove,去除,刪除)
作用:用來刪除檔案或資料夾
rm 檔案pathname
rm -f 檔案pathname
re -r 資料夾pathname
re -rf 資料夾pathname
(rm和rm -f的區別是返回值不同,不管檔案存不存在,用rm -f執行都會成功,因為是強制的。而用rm就可能會報錯。)
(10)rmdir(remove directory,刪除資料夾)(沒什麼卵用)
作用:刪除空資料夾(相當於rm -r)
rmdir和rm -r的區別:rmdir只能刪除空資料夾,而rm -r可以刪除空資料夾和非空資料夾。
(11)cat
作用:直接在命令列下顯示檔案內容,也可以用來向檔案輸入
(用vi也可以看檔案內容,視實際情況選擇用哪種方式)
(12)ln(link,連線檔案)
基礎:windows中快捷檔案,實際上快捷方式和它指向的檔案是獨立的兩個檔案,兩個都佔硬碟空間,只不過使用者訪問快捷方式時,其效果等同於訪問指向的檔案。
linux中有兩種連線檔案:
一種叫軟連線(符號連線),效果等同於windows中快捷檔案
一種叫硬連線
注意:不能在VMware共享資料夾裡面建立連線。
1、建立軟連結檔案:ln -s 原始檔名 符號連線檔名
舉例:ln -s a.c b.c b.c就是a.c的一個符號連線檔案
軟連線創建出來的檔案是連線檔案(l)
2、硬連線:ln 原始檔名 連線檔名
硬連線實際上和原始檔在硬碟中是同一個東西,效果類似於硬碟上的一個檔案,在檔案系統上,在我們看來有好多個檔案一樣,每次刪除一個檔案時,只要他還有其他的硬連線存在,這個檔案就不會被真正刪除。只有等所有的連線檔案都被刪除掉了,這個檔案才會被真正從硬碟上刪除。
注意:硬連線後,修改原始檔或任意一個連線檔案的內容,所有檔案都跟著改變。
硬連線創建出來的檔案是普通檔案(-)
(13)apt-get(ubantu才有)
作用:在ubantu中用來線上安裝、解除安裝軟體的程式
sudo apt-get install vim
sudo apt-get remove vim
注意:安裝和解除安裝都是線上的,也就是說ubantu必須能上網才能使用apt-get
apt-get安裝軟體的原理和必要性:
在linux中安裝軟體是是一件困難的事,經常發生不相容。所以ubantu將適合某個發行版的所有軟體做了一個列表,然後使用者通過apt-get install的方式安裝軟體,就會實時連線到ubantu伺服器,伺服器就會根據你的uabntu版本,給你下載適合的軟體來安裝。這樣確保了軟體的相容性。
(14)find
功能:在linux檔案系統中,用來查詢一個檔案放在哪裡了。一般是用在 知道要找的檔案的檔名,但是忘了放在哪個目錄下。
引數-name : 按照檔名查詢檔案。
舉例:1. 在/dir目錄及其子目錄下面查詢名字為filename的檔案
find /dir -name filename
2. 在當前目錄及其子目錄(用“.”表示)中查詢任何副檔名為“c”的檔案
find . -name "*.c"
3. 在當前目錄及其子目錄(用“.”表示)中,只想檢視檔案,把符合條件的資料夾名去除。
find . –type f –name filename
除了-name,還有其他的選項,這裡不詳講。
(15)grep
功能:在一個具體存在的檔案中查詢。
舉例: grep main test.c
用來搜尋 test.c裡是否包含字串 main
grep -nr u8
用來查詢含有 u8 的目錄或檔案集合
-n表示查詢結果中顯示行號,-r表示要遞迴查詢,搜尋子目錄。
如果想在特定的檔案中查詢:
比如在USER資料夾中查詢所有含有u8的地方
grep -nr u8 USER
其他選項:
grep -r pattern files :搜尋子目錄
grep -n pattern files : 顯示匹配行及行號
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 的行。
(16)檔案打包壓縮與解壓縮
tar -czvf dir.tar.gz dir/ 將dir目錄打包成dir.tar.gz (演算法gz)
tar -cjvf dir.tar.bz2 dir/ 將dir目錄打包成dir.tar.bz2(演算法bz2)
tar -zxvf dir.tar.gz 解壓縮dir.tar.gz
tar -jxvf dir.tar.bz2 解壓縮dir.tar.bz2
(17)du