Git & Linux 指令
repo: 管理git repository
格式:
repo COMMAND OPTIONS
repo help COMMAND
repo init -u URL
在目前目錄安裝下載整個Android repository,會下建立一個”.repo”的目錄。
-u : 參數用來指定一個URL,從這個URL中獲取repository的manifest文件。
-m:用來選擇獲取 repository 中的某一個特定的 manifest 文件。如果不具體指定,那麼表示為預設的 manifest 文件 (default.xml)
-b:用來指定某個manifest 分支
repo sync [PROJECT_LIST]: 更新
不指定project: update all
repo upload [PROJECT_LIST]: 上傳修改的代碼
1. code有修改, 執行repo sync, 會提示你上傳修改的code ??
2. 修改的代碼分支會上傳到 Gerrit,Gerrit 收到上傳的代碼,會轉換為一個改動,可以讓人來review 修改的代碼。
repo forall [PROJECT_LIST] -c COMMAND
針對指定的project執行所帶入的git command,例如:repo forall -c git reset — hard HEAD 就會將所有project中的改動全部都清掉。
group/owner/other
ls -al or ll
第一字元:
當為[ d ]則是目錄,例如上表檔名為『.config』的那一行;
當為[ — ]則是檔案,例如上表檔名為『initial-setup-ks.cfg』那一行;
若是[ l ]則表示為連結檔(link file);
若是[ b ]則表示為裝置檔裡面的可供儲存的周邊設備(可隨機存取裝置);
若是[ c ]則表示為裝置檔裡面的序列埠設備,例如鍵盤、滑鼠(一次性讀取裝置)。
若是[ .]則表示為隱藏檔
source or . 立即生效
source 或小數點 (.) 通常用於重新執行剛修改的初始化文件,使之立即生效,而不必註銷並重新登錄。
- 顯示特定行數
显示前1000行
cat [filename] | head -n 1000
显示最后1000行
cat [filename] | tail -n 1000
从1000行以后开始显示
cat [filename] | tail -n +1000
ln [option] target LINK_NAME
建立一個 test_hardlink.txt 硬連結檔,指向 test.txt 這個檔案
//hard link
ln test.txt test_hardlink.txt
建立一個 test_softlink.txt 軟連結檔,指向 test.txt 這個檔案
soft link
ln -s test.txt test_softlink.txt
查看node
ls -i test.txt test_softlink.txt
- tig
GUI視窗看log, diff - git log
- terminal 背景執行 — nohup
執行的命令之前加上nohup,然後在後面加上一個背景執行的 &
ex: nohup imp xxx/xxx@ip:port/sid file=xxx.dmp ignore=y constraints=n indexes=n rows=Y &
察看nohup檔
>ls -l nohup.out
察看nohup執行結果
>tail –f nohup.txt
cp 複製檔案
- 複製檔案
# 將 source.txt 複製到 dest.txt
cp source.txt dest.txt
指定路徑
# 將 source.txt 複製到 /path/dest.txt
cp source.txt /path/dest.txt# 不指定檔名會複製檔名, 將 source.txt 複製到 /path/source.txt
cp source.txt /path/
多個檔案一起複製到目的目錄:
# 將 source1.txt、source2.txt、source3.txt 複製到 /path/to 目錄中
cp source1.txt source2.txt source3.txt /path/to/
- 複製目錄
# 將 myfolder 目錄複製到 /path/to/ 路徑下
cp -r myfolder /path/to/
複製檔案前都先刪除目的檔案
# 先刪除目的檔案,再進行複製
cp --remove-destination source.txt dest.txt
複製檔案時,可以連同檔案屬性一起複製
# 保留檔案屬性
cp -p source.txt dest.txt
- 連結檔
連結檔解析
建立一個連結檔 link.txt
指向 source.txt
# 建立連結檔
ln -s source.txt link.txt
複製連結檔案時,能夠解析連結檔所指向的實際檔案,複製那一個實際的目標檔案,可以加上 -L
或 --dereference
參數
# 複製檔案(解析連結)
cp -L link.txt dest.txt
由於 link.txt
是指向 source.txt
的連結檔,所以這裡的 dest.txt
實際上就是從 source.txt
所複製出來了。
不要進行連結的解析,僅將連結檔直接複製,則可改用 -P
或 --no-dereference
參數
# 複製檔案(保留連結)
cp -P link.txt link2.txt
- 以軟連結、硬連結複製檔案
加上 -s
或 --symbolic-link
參數,可以用軟連結(symbolic link)的方式建立檔案,也就是等同於使用 ln -s
指令來建立連結
# 以軟連結複製檔案
cp -s source.txt link.txt
硬連結複製檔案,可以加上 -l
或 --link
參數
# 以硬連結複製檔案
cp -l source.txt dest.txt
打包/壓縮/解壓縮
- tar套件
打包
tar cvf FileName.tar DirName
解壓縮
tar xvf FileName.tar
- gzip套件
壓縮
gzip FileName
解壓縮
// 解壓縮指令1
gunzip FileName.gz// 解壓縮指令2
gzip -d FileName.gz
sed
- sed 是「stream editor 」的縮寫,顧名思義是進行串流 (stream) 的編輯。無 是在編寫 shell 的或處理 STDIN 的時候,當有需要進行字串取代、複製、刪除的功能
- sed 進行處理時並不會改變目前的檔案,而是將處理過程存放在稱為「模式空間 」(pattern space) 的緩衝區中,結束目前的指令後輸出,接著再處理下一個指令直到檔案結束。
語法:
sed OPTIONS... [SCRIPT] [INPUTFILE...]
- a :新增, a 的后面可以接字串,而这些字串会在新的一行出现(目前的下一行)~
- c :取代, c 的后面可以接字串,这些字串可以取代 n1,n2 之间的行!
- d :删除,因为是删除啊,所以 d 后面通常不接任何东东;
- i :插入, i 的后面可以接字串,而这些字串会在新的一行出现(目前的上一行);
- p :打印,亦即将某个选择的数据印出。通常 p 会与参数 sed -n 一起运行~
- s :取代,可以直接进行取代的工作哩!通常这个 s 的动作可以搭配正规表示法!例如 1,20s/old/new/g 就是啦!
数据的查找与替换
sed 's/要被取代的字串/新的字串/g'
find
find [path] -name [filename]
ex:
find /build/gaston/UMC-9628M_M424 -name wnc_mk_bootinfo.*
type參數
d
:目錄。p
:具名的 pipe(FIFO)。f
:一般的檔案。l
:連結檔,如果與-L
或-follow
參數同時使用時,就只會搜尋到有問題的連結檔,如果想要與-L
同時使用,請改用-xtype
。s
:socket 檔案。
ex: 只找目錄
find /build/gaston/UMC-9628M_M424 -type d -name wnc_mk_bootinfo.*
列出標籤
所有標籤: git tag
特定pattern標籤: git tag -l “v1.8.5*”
# 在 /etc/os-release 檔案中搜尋 Ubuntu 關鍵字
grep Ubuntu /etc/os-release# 在 /etc/*.conf 中搜尋 network 關鍵字
grep network /etc/*.conf
不分大小寫
grep -i Ubuntu /etc/os-release
標示行號
grep -n Ubuntu /etc/os-release
特定的檔案中尋找關鍵字
grep -r --include="*.conf" ubuntu /etc/
顏色標示
--color=never
、--color=always
、--color=auto
grep --color=always -n network *.conf// w 字完全符合
grep -rw “73833”
In shell script, 一個文件已經存在, 重寫這個文件:
echo “” > file.txt
echo的内容追加到文件的后面:
echo “” >> file.txt