初涉sed命令

零散知識點散記和sed基礎接觸

第一次筆記(零散知識點)

可將腳本放入$PATH包括的目錄下,可直接執行

hash查看所有使用過的bash變量

hash -d 刪除某一條命令

在vim中,語法錯誤出現,則程序不會繼續執行,而命令錯誤,則不影響后面的執行

bash -n :檢查語法錯誤

bash -x :跟蹤調試執行結果

pstree -p :查看所有進程和進程編號

echo $$ : 查看當前所在進程的進程編號

全局變量export name 則把局部變量name變為全局變量(環境變量)

export :顯示目前的環境變量;等價于declare -x

set :顯示所有變量及很多相關函數

echo $SHLVL :顯示當前bash的嵌套深度為幾

readonly name=…. : 設置只讀變量,不能修改,同declare -r ,并且結束進程則失效

(ls) : 類似這種加括號,意為讓里面的命令僅生效這一次,不影響以后

vim 中,$1表示第一個變量,$*|$@表示所有參數,$0表示命令本身(basename隱藏路徑)

$*表示所有目標字符為一個整體,$@則把目標字符串分開識別

$0也顯示軟鏈接本身

set — :清空所有位置參數

shift : 參數向前移動一位

echo $? : 查看上一條命令是否成功執行,成功為0,失敗為1-255

vim中結尾exit x ,則修改echo $?的顯示數字為x

ping -c1 172.20.0.123 : 只拼一次

算數運算:

let var=算數表達式

COLOR=$[RANDOM%7+31] : 對某個隨機數取模(余數),+31實現顏色命令隨機

read -p “”?變量: 取消回車換行,實現在引號內容的后面輸入,等價于echo -e “???\c”

read -s -p “”?變量 :-s 表示隱藏輸出的字符

$? 0 成功

—–

0 false

1 true

& 并且 and

| 或者 or

0&0=0

0&1=0

1&0=0

1&1=1

0|0=0

0|1=1

1|0=1

1|1=1

短路與 &&

短路或 ||

0&&0=0

0&&1=0

1&&0=0

1&&1=1

cmd1 && cmd2

如果cmd1為假,cmd2不需要執行,反之cmd1為真,需要cmd2執行

cmd1 || cmd2

如果cmd1為真,cmd2不需要執行,反之cmd1為假,需要cmd2執行

XOR異或^

可理解為同性相斥,異性相吸

變量在中括號里面寫時,最好加””

在vim中用到

false ||{ echo cmd1 ;exit; } :這里,花括號不開啟子shell,( )則開啟子shell

批量對多個變量賦值:read x y z <<< “1 2 3”

第二次筆記

read x y z <<< “i j k”?: 批量賦值

source : 運行腳本不開啟shell子進程,不同于“.”和“echo $”,source是影響當前shell的環境,慎用!

腳本里面默認是不支持別名的

修改PATH路徑要去/etc/profile.d/env.sh 中,添加內容path =路徑+”$PATH”

updatedb :直接更新預查找索引,以便locate 可以查找到最新的信息

find /etc/ -maxdepth 3 -mindepth 2 -name passwd :在最多三級最少二級子目錄中查找passwd

-ls :以列表格式顯示find的結果,包含目標文件的一些屬性信息

find /home -type d -maxdepth 1 : 只查看最多一層目錄的文件夾

userdel haha: 刪除用戶haha

tar -cpvf :四個子母依次是打包、保留原屬性、顯示過程、打包成后面的文件

tar -xvf : 解壓

-T : 打包制定目錄

-X : 排除該目錄再打包

split -b 1M -d 文件名 前綴 :把該大文件切割成以該前綴開頭的1M大小的若干小文件

sed 支持正則表達式

sed 2,3 : 處理范圍在第二行到第三行

sed 2,+3 : 處理范圍在第二行到2+3=5第五行

sed /par1/,/part2/

sed 1~2

sed 2~2

sed -n “2p”?f1 : 只對第二行打印一遍(默認全部打印一遍)p就是對指定的行打印

sed -n “2,5p”?f1

sed -n “/^b/,/^f/p”?f1

sed -e -e : 多點編輯

sed -r 使用擴展正則表達式時用

sed ‘2,5a====’?f1 : 在第二行到第五行后面都追加====,不過并不是真的改,只是顯示上改了

sed -i.bak : i表示真的修改文件,并備份原文件并以.bak為后綴

sed ‘2,5w f2’?f1 : 符合條件的行備份到f2

sed ‘s///g’?搜索替換,g表示全局搜索

本文來自投稿,不代表Linux運維部落立場,如若轉載,請注明出處:http://www.www58058.com/96119

(0)
晨嘉晨嘉
上一篇 2018-04-15 16:26
下一篇 2018-04-15 17:23

相關推薦

  • 簡述at和crontab命令

    制定 每周三凌晨三、五點10分執行某個腳本,輸出當前時間,時間格式為 2017-12-28 10:00:00

    Linux筆記 2018-06-07
  • vim

    翻屏半Ctrl+ b uf d 屏幕 首 中 尾HML 段首尾 分割 整空行#{} 句首 分割 ._ 或者 整空行#() 選行1G(gg)#GG 光標# kh lj 行內0_^$ 單詞#bWe w 配置/etc/vimrc????? /* 全局 */~/.vimrc???????? /* 個人 */ 行號???????????????????????????…

    Linux筆記 2018-07-01
  • 馬哥的第一節課

    雄關漫到
    跋山涉水

    Linux筆記 2018-07-22
  • LVM ,RAID詳解及實例分析

    lvm 邏輯卷:由 dm 模塊實現PV :物理卷 物理設備:可以是分區,raidVG :由多個pv組合的一個卷組相當于擴展分區,不能直接使用,它會將多個pv組合的邏輯設備上劃分為多個大小為PE的塊,PE大小比block chunk 大的多,由于受內核限制的原因,一個邏輯卷(Logic Volume)最多只能包含65536個PE(Physical Extent…

    Linux筆記 2018-04-23
  • 進程和計劃任務

    進程概念: 進程與程序的區別:進程是一個動態的概念,具有生命期,而程序是靜態的表現為一個文件,一個程序可對應多個進程 內核的功用:進程管理、文件系統、網絡功能、內存管理、驅動程序、安全功能等 Process: 運行中的程序的一個副本,是被載入內存的一個指令集合 進程ID(Process ID,PID)號碼被用來標記各個進程 UID、GID、和SELinux語…

    2018-05-10
欧美性久久久久