Linux技巧

grep

cat file | grep -rn "string"
grep -rn "string" file

-r遞歸所有子目錄
-n顯示行號
-o只輸出匹配的字符
-E擴(kuò)展正則表達(dá)式
-v 反向選擇

find

# 當(dāng)前文件夾查找
find . -name file
find . -name "*.so"
find . -name file | xargs  rm
find . -name file | xargs  rm
find . -name file | xargs  grep -rn "txt"
find .  -maxdepth 2 -name file | xargs  grep -rn "txt"
# 前天修改的文件
find .  -mtime 2 -name file 
# 近2天內(nèi)(含前天)修改的文件
find .  -mtime -2 -name file 
# 2天前修改的文件
find .  -mtime +2 -name file 
# 查找并統(tǒng)計(jì)數(shù)量
find .  -maxdepth 2 -name file | xargs  grep -rn "txt" | wc -l

copy / mv

-r復(fù)制文件夾
-u只有文件不同時(shí)才復(fù)制,更新方式

chmod

chmod +x file增加可執(zhí)行權(quán)限
chmod 777 file所有權(quán)限
chmod 777 -R dir所有子目錄權(quán)限

echo

下面的特性依賴于,echo添加-e選項(xiàng),意為解析字符串中的反斜杠

e:特殊顏色

echo -e "\e[4x;3xm string \e[0m"  
  • \e[0m為ANSI控制碼,表示結(jié)束輸出有顏色的字符
  • \e[4xm;3xm為ANSI控制碼,表示開始輸出有顏色的字符
  • 4x為表示背景顏的一組數(shù)字,x取值為0到7,分別代表的顏色如下:
    40表示背景為黑色
    41表示背景為紅色
    42表示背景為綠色
    43表示背景為黃色
    44表示背景為藍(lán)色
    45表示背景為紫色
    46表示背景為淺藍(lán)色
    47表示背景為灰白色
  • 3x為表示字體顏色的一組數(shù)字,x取值為0到7,分別代表的顏色如下:
    30表示黑色
    31表示紅色
    32表示綠色
    33表示黃色
    34表示藍(lán)色
    35表示紫色
    36表示淺藍(lán)色
    37表示灰色
  • 其它常用的ANSI控制碼
    \e[1m讓輸出的字符高亮顯式
    \e[3m輸出斜體字
    \e[4m給輸出的字符加上下劃線
    \e[5m讓輸出的字符閃爍顯式
    \e[7m設(shè)置反顯效果,即把背景色和字體顏色反過來顯示

\e也可以用\033代替
可以出現(xiàn)多次配置,如:echo -e "\e[41m\e[5m string \e[0m",紅色閃爍
清屏:echo -e "\e[2J"

n:換行

echo -e "line0\nline1"

ln

  • ln -s src symbolic_link

src symbolic_link需要時(shí)絕對地址,不能是相對地址
刪除符號鏈接只是刪除了鏈接,文件并不會變化

tar

使用bzip或gzip壓縮或解壓

-c新建打包文件
-t查看打包文件的內(nèi)容含有哪些文件名
-x解打包或解壓縮的功能,可以搭配-C(大寫)指定解壓的目錄,注意-c,-t,-x不能同時(shí)出現(xiàn)在同一條命令中

-j通過bzip2的支持進(jìn)行壓縮/解壓縮
-z通過gzip的支持進(jìn)行壓縮/解壓縮

-v在壓縮/解壓縮過程中,將正在處理的文件名顯示出來
-f filenamefilename為要處理的文件
-C dir指定壓縮/解壓縮的目錄dir
常見組合:

  • 壓縮:tar cvf filename.tar 要被處理的文件或目錄名稱
  • 解壓:tar xvf filename.tar [ -C dir]

gcc

-ooutput之意,用于指定生成一個(gè)可執(zhí)行文件的文件名
-c用于把源文件生成目標(biāo)文件(.o),并阻止編譯器創(chuàng)建一個(gè)完整的程序
-I增加編譯時(shí)搜索頭文件的路徑
-L增加編譯時(shí)搜索靜態(tài)連接庫的路徑
-S把源文件生成匯編代碼文件
-lm表示標(biāo)準(zhǔn)庫的目錄中名為libm.a的函數(shù)庫
-lpthread連接NPTL實(shí)現(xiàn)的線程庫
-std=用于指定把使用的C語言的版本

whereis

  • 按系統(tǒng)路徑查找文件
whereis file

ldd

  • 查找?guī)煲蕾?/li>
ldd exe/so

歷史命令

history顯示歷史命令
ctrl + r查找歷史命令

條件

  • 文件屬性
    -e filename如果 filename存在,則為真
    -d filename如果 filename為目錄,則為真
    -f filename如果 filename為常規(guī)文件,則為真
    -L filename如果 filename為符號鏈接,則為真
    -r filename如果 filename可讀,則為真
    -w filename如果 filename可寫,則為真
    -x filename如果 filename可執(zhí)行,則為真
    -s filename如果文件長度不為0,則為真
    -h filename如果文件是軟鏈接,則為真
    filename1 -nt filename2 如果 filename1比 filename2新,則為真。
    filename1 -ot filename2 如果 filename1比 filename2舊,則為真。

  • 整數(shù)變量表達(dá)式
    -eq等于
    -ne不等于
    -gt大于
    -ge大于等于
    -lt小于
    -le小于等于

  • 字符串變量表達(dá)式
    if [ $a = $b ]如果string1等于string2,則為真
    if [ $string1 != $string2 ]如果string1不等于string2,則為真
    if [ -n $string ]如果string 非空(非0),返回0(true)
    if [ -z $string ]如果string 為空,則為真
    if [ $sting ]如果string 非空,返回0 (和-n類似)

  • 邏輯非
    if [ ! -d $num ]如果不存在目錄$num

  • 邏輯與
    if [ 表達(dá)式1 –a 表達(dá)式2 ]

  • 邏輯或
    if [ 表達(dá)式1 –o 表達(dá)式2 ]

文件編輯器

vi

esc命令模式
i編輯模式
:wq保存并退出::
d2d刪除 2行
G跳到最后一行

gedit

  • 可視化編輯器

文件比較

  • meld
  • diff

多命令行

  • 多命令同時(shí)執(zhí)行
command1 & command2
  • 不管前面命令執(zhí)行成功沒有,后面的命令繼續(xù)執(zhí)行
command1; command2
  • 只有前面命令執(zhí)行成功,后面命令才繼續(xù)執(zhí)行
command1 && command2
  • 只有前面命令執(zhí)行失敗,后面命令才執(zhí)行
command1 || command2

批量重命名

for i in `ls`; do mv -f $i `echo $i | sed 's/a/b/'`; done

安裝軟件

apt-get install name

初次使用需要配置更新源,并apt-get install update

資源查看

# cpu占用
top
# 內(nèi)存占用
free
# 進(jìn)程查看
ps -aux | grep exe
# 磁盤占用
df -h
# 文件夾空間占用
du -h --max-depth=1

ssh免密操作

apt-get install sshpass
sshpass -p pwd ssh usr@ip
sshpass -p pwd ssh usr@ip cmd
sshpass -p pwd scp usr@ip:a b

文件共享方式

window與linux的文件共享

  • samba共享
apt-get install samba

echo -e "[share]\ncomment = share\npath = /\npublic = yes\nwritable = yes\nbrowseable = yes\navailable = yes\nguest ok = yes" >> /etc/samba/smb.conf
# restart
service smbd restart

linux與linux的文件共享

網(wǎng)絡(luò)磁盤掛載的方式:nfs

  • 源主機(jī)開放共享權(quán)限
apt-get install nfs-kernel-server 

sed -i '/auto_test/d' /etc/exports; echo "/ 192.168.1.*(rw,sync,no_root_squash) #auto_test" >> /etc/exports

# restart
/etc/init.d/nfs-kernel-server restart
  • 目標(biāo)主機(jī)掛載
mount -n -o nolock 192.168.1.111:/root/ /mnt/`
# 退出掛載
umount /mnt/

拷貝的方式:scp

scp usr@ip:a b
scp -r usr@ip:dir_a dir_b

計(jì)時(shí)

time

  • 單命令執(zhí)行實(shí)行
time sleep 1
```shell

### 仿MATLAB的Shell計(jì)時(shí)方法
* 創(chuàng)建文件TIC,內(nèi)容如下
```shell
#! /bin/bash

echo -e "#! /bin/bash\necho it takes:\`echo \$(date +%s%N) $(date +%s%N) | awk '{ print (\$1 - \$2) / 1000000}'\` ms" >TOC; chmod +x TOC

如有必要,需執(zhí)行chmod +x TIC

  • 使用方式
./TIC
sleep 1
./TIC

常見問題

Bad interpreter

  • 檢查文件開始的#! /bin/bash,注意!后的空格
  • 文件格式,用dos2unix filename轉(zhuǎn)換
  • 文件可能正在被讀寫
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容