Git & Linux 指令

xiru2ly3rd88
8 min readJul 17, 2022

Git入門:

repo & Git

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

執行的命令之前加上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

  1. sed 是「stream editor 」的縮寫,顧名思義是進行串流 (stream) 的編輯。無 是在編寫 shell 的或處理 STDIN 的時候,當有需要進行字串取代、複製、刪除的功能
  2. 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

--

--

xiru2ly3rd88
0 Followers

學習筆記不保證100%正確, 只是用來快速複習; 聯絡信箱: xiru2ly3rd88@gmail.com