演算法工程師常用Linux命令總結

2021-10-25 06:30:29 字數 3926 閱讀 1336

《演算法工程師常用linux命令總結》

做 cv 兩年了,整理一些在做訓練或其他任務的時候常用的 shell 操作,什麼事都用 python 來做有時候還是挺麻煩的,比如有一次在做乙個目標檢測任務的時候,報錯了原因是voc格式中的影象的height和width和實際不符,而我們又恰好知道實際的height和width,那麼直接一行shell,for迴圈 + sed就解決了,類似這樣的事情不勝列舉,所以牢記這寫linux常用操作還是很有用的。

key words:

beijing, 2019

code:

agile pioneer  

2. 檢視檔案屬性

4. 參考

作為演算法工程師,很多時候需要對資料進行處理,比如批量改名,把所有的資料名放在乙個文字檔案中,以及對data檔名和target檔名進行配對,或替換檔案中所有的prelu為relu的操作,包括各種查詢命令,awk的常用命令,sed的簡單命令。還有時候為了方便訓練或測試需要些簡單的shell指令碼,

當然也會面對一些環境問題,比如檢視某個動態庫的依賴,檔案的屬性是x86還是arm等等。

這些經常會忘,所以持續整理乙個常用的linux命令筆記。

cat ***.txt |

while

read line;

doecho

$line

;done

;# 逐行替換操作

cat ***.txt|

while

read line;

dosed -i 's/ori/des/g'

$line

;done

find -type f |

while

read line;

dosed -i 's/ori/des/g'

$line

;done

# 得到用於caffe訓練的trainval.txt用到,%.jpg是省略後面的.jpg

for name in

`ls jpegimages`;do

echo$;

done

> trainval.txt

# 字元擷取用法

name=

"www.jd.com"

# 省略前面的www.

$ or $

# 省略前面的www.和後面的.com

$%.com}

# 省略.及後的字元(.jpg或.jpg或.png ...)

$# 拼接兩個同樣行數的檔案,比如分割使用的trainval.txt

paste -d" " image.txt target.txt > trainval.txt

$  從變數頭部開始匹配模式,將符合的最短資料刪除

$ 從變數頭部開始匹配模式,將符合的最長資料刪除

$ 從變數尾部開始匹配模式,將符合的最短資料刪除

$ 從變數尾部開始匹配模式,將符合的最長資料刪除

$ 將第乙個符合舊模式的資料替換為新模式

$ 將全部符合舊模式的資料替換為新模式

# 查詢當前目前及其子目錄,檔名中帶有target的 「某檔案」

find ./ -type f -name "*target*"

# 查詢當前目前及其子目錄,目錄名中帶有target的 「某資料夾」

find ./ -type d -name "*target*"

# 查詢所有的.hpp檔案,列印出來

find ./ -type f -name "*.hpp"

|while

read line;

doecho

$line

;done

# 列印當前目錄及其子目錄下所有包含read_csv的檔案 -n 行號,及目標上下兩行(a2 b2)

grep -n -r -a2 -b2 --color=always "read_csv" ./

# 組合 find & grep 使用查詢功能

find ./ -type f -name "*.c[h]pp"

|xargs

grep -n -a2 -b2 "target" --color=always |

less -r

# 替換某檔案中的prelu為relu

sed -i 's/prelu/relu/g' ***file

# 對檔案逐行read並替換列印出來,不會儲存

cat label_fast.py|

while

read line;

dosed

's/self/include/g'

;done

# 替換find到的所有檔案中ori內容為aim,直接對檔案內容進行替換和儲存,謹慎操作!

find ./ -type f |

while

read line;

dosed -i 's/ori/aim/g'

$line

;done

# awk的用法,得到用:分開的第乙個域

awk'' aim_file

# 例子

time

="12:34:56"

# the first index of variable a is 1

echo

$time

|awk

''

-l 表示對行分

-b 表示對位元組分

-d 表示用數字區分不同的檔案塊

後面的名字是分塊後的檔名的字首

# 對文字行進行分塊 例:對 test.txt 每 500 行分成乙個子檔案

split -l 500 -d test.txt test_sub.txt

# 對檔案通過儲存大小進行分塊 例:對 big.zip 每 1024m 分成乙個子檔案

split -b 1024m -d big.zip ***.zip

# 檢視動態庫的依賴

ldd ***.so

# mac下檢視動態庫依賴

otool -l ***.dylib

# mac 下修改庫依賴到的第三方庫的路徑:

install_name_tool -change oldpath newpath ***.dylib

# 檢視檔案型別

file main.o

# 用於反編譯,可以顯示檔案頭資訊

objdump -p main.o

# 從靜態庫和動態庫中獲取到函式名稱

nm ***.a

readelf命令,一般用於檢視elf格式的檔案資訊,常見的檔案如在linux上的可執行檔案,

動態庫(*.so)或者靜態庫(*.a) 等包含elf格式的檔案。

選項 -s,symbols 顯示符號表段中的項(如果有資料的話)readelf -s hello.so

選項 -e,headers 顯示全部頭資訊,等價於: -h -l -s

# 檢視檔案是64位或32位, 第5個數如果是02就是64,01就是32位

readelf -h ***.a

測試網域名稱系統(dns)是否正常

dig www.baidu.com
有時候移動大量檔案的時候會出現這個問題,所以我們需要遍歷挨個執行刪除,這就需要使用 find 命令了,組合 for 迴圈即可

for name in

`find ./ -name '._*'`;

dorm

$name

;done

字元擷取

shellcheck用法

linux變數內容的刪除和替換

測試工程師常用Linux命令

安裝軟體 編輯 yum y install 檢視當前目錄 ls 檢視所有 ls a 建立乙個資料夾 mkdir foldername 同時建立幾個資料夾 mkdir f1 f2 f3 刪除資料夾 檔案 rm rf f1 刪除符合條件的 rm rf 建立檔案 touch jn.txt 編輯檔案 vim...

測試工程師常用Linux命令(3)

linux許可權操作 功能項命令例項 作用重要性 使用者組groupadd testing 新增一 個新的使用者組testing 中cat etc group 檢視組是否被新增成功 中groupmod n test testing 將testing重新命名成test 中groupdel test 刪...

演算法工程師

演算法工程師方向也各有不同吧,說下訊號處理主要是調研也就是看 演算法 和驗證,也就是寫 最後還有除錯了。發布於 2016 06 20 所謂演算法工程師,大致的工作範圍是演算法研究 工程實現兩部分,不同的人在不同的環境下各有側重。第一部分,在目前國內網際網路公司的環境裡,說演算法研究,其實更多的工作是...