學習筆記(8)

筆記

1.在/etc/profile.d/env.sh中寫入的配置信息不需要#!/bin/bash
2.cmd=’hostname’ #cmd 執行cmd所指向的命令 hostname
3.[[ ?]] 支持擴展正則表達式,[[ == *i* ]] 匹配包含i的字符串 man bash 查找[[,要使用轉義字符 ?pattern matching
4.cmd1 || cmd2 && cmd3 邏輯判斷說明
? cmd2 is always true
? cmd1 true ?cmd2 不執行,cmd3 執行
? cmd1 false cmd2 執行,cmd3 不執行
? cmd1 && cmd2 || cmd3
? cmd2 is always true
? cmd1 is true cmd2 執行,cmd3 不執行
? cmd1 is false cmd2不執行,cmd3 執行
5.read x y z << ‘i j k’ 使用文件賦值需要使用空格分隔
? read x y z < f1
6.補充正則表達式 yes or No
? [[ $ANS =~ ^[Yy]+([Ee][Ss])?$ ]] && echo “yes”
? [[ $ANS =~ ^[Nn]+[Oo]?$ ]] && echo “No”
7.source . 運行腳本在當前的shell中運行,用于導入腳本中的變量導入當前shell
8.腳本中不支持別名的使用,一般不在腳本中使用別名
9.全局配置和局部配置中的通用文件:~/.bashrc, etc/bashrc, /etc/profile.d/*.sh
? ?全局用戶配置文件(執行順序):/etc/profile, /etc/profile.d/*.sh, ~/.bash_profile, ~/.bashrc, /etc/bashrc
? ?局部用戶配置文件(執行順序): ~/.bashrc, /etc/bashrc, /etc/profile.d/*.sh
10.~/bash_logout 配置文件可以用來退出刪除文件等等,如添加rm -rf /tmp/*
11.$-符號在/etc/profile 中有用到
? ?h: hashall ,hash所有外部命令的 set +h 將h選項關閉
? ?i: 包含i說明當前shell是一個交互式的shell
? ?m: 監控模式,可以控制進程的啟動、停止,前臺執行和后臺執行
? ?B: 大括號擴展
? ?H: 展開歷史命令,可使用!!,!n 等
12.新添加的PATH變量的盡量放到前面,防止新添加變量與PATH中自帶的命令有沖突
13.只有bash中使用.或source來讀取變量,如vimrc 是自動調用,不需要。
14./var/lib/mlocate/mlocate.db 可以通過該數據庫文件的時間來判斷數據庫的更新時間,如果需要更新可以使用 updatedb
15.locate -r “^/etc/.*\.conf$” ?可以指定路徑,匹配的是全路徑的結尾包含.conf所有的文件
16.find /data –maxdepth 3 –mindepth 3 -name f1 指定只在第三級目錄中的f1文件
? ?find /data -name “*f1*” ?通配符而不是正則表達式,注意要加雙引號
? ?find 搜索節點編號可以查找相同 硬鏈接
? ?find /home -user wang -ls 長格式
? ?find /home -user wang -name “*.sh” -ls ?并且關系(等價于-a選項,默認是并且關系)
17.systemctl restart sshd 重啟sshd
18.pdf 實驗
19.空文件占用inode 可以考慮查找后刪除, # find / -type f -empty ?查找空文件
20.mspaint 畫圖(windows中)
21.find中的括號要使用轉義 防止當成子shell執行如:find /tmp \(-not -user root -a -not -name “f*”\) -ls
22.find -prune 去除某個目錄搜索
? ?# find /etc -path ‘/etc/sane.d’ -a -prune -o name “*.conf”
23.find -perm -666 ? 110 110 ?為位有沒有權限, 至少有rw權限,777包含在內
? ?find -perm /002 或者關系 ?檢查權限 0 不檢查 ?1檢查 ?/并集 ?-交集
? ?+ 和/ 的含義相同 ?一個6版本 一個7版本
24. -delete 不提示 慎用 -ls
25.find -name “f*” -ok rm {} \; 有提示 -exec 不提示
26.find ?.. mv {} {}.bak \; 改名
? ?…cp {} {}.orig \;
27.find / -size +10M -exec mv {} /data{}
28.xagrs -0 切割成換行 參數在一行需要分行 -n2 兩個一組傳遞給touch
29.echo f{1..10000}|xargs -n1 touch ?每行一個參數,一個一個傳遞給touch
30.-n 控制一次傳多少參數 xargs -n2 將以空格分隔的一行內容以2個一組獨立分行,用于無法接受太多參數的情況
31.compress file 直接壓縮
32.compress -c f > file.z
33.zcat m.z > mm
34.壓縮工具要查看后綴名,對于壓縮后的文件如果刪除或者修改后綴名將無法解壓縮
35.壓縮文件不需要指定后綴名,系統會自動添加響應的后綴名
36.tar -zcpvf data.tar.gz /data
37.xvf 不看后綴統統可以解壓縮,xz bz2 gz
38.tar -T -X 使用的是文件列表
39.cat 可以合并使用split -b 1M -d ?mybackup.tar.gz mybackup-parts分割的文件
? ? cat mybackup-parts > mybackup.tar.gz
40.cpio 壓縮文件和解壓縮文件、查看文件需要使用重定向符號(cpio命令是通過重定向的方式將文件進行打包備份)
? ?如: cpio -tv < /boot/initramfs-3.10.0-514.el7.x86_64.img ?查看該cpio壓縮文件里的文件內容
? ? ? ?cpio -idv < /boot/initramfs-3.10.0-514.el7.x86_64.img
? ? ? ?find ./kernel | cpio -ov kernel.cpio ?使用find查找目錄中的所有文件并壓縮
41.sed -n ?關閉模式空間的默認打印
42.pattern 正則表達式 除 [[]] ?==
43.sed ?-n ‘/root/p’ /etc/passwd
? ?sed ?-n ‘$p’
44.sed 支持正則表達式 擴張正則表達式
45.sed -n -e ‘2p’ -e ‘6p’ f1
46.sed ‘2d’ f1 sed ‘2!d’ 除了第二行全刪,模式匹配的后面為取反號
47.模式空間單行處理,默認打印輸出
48.sed -n ‘/root/=’ /etc/passwd =加行號
$= 就是文件的最后一行
49.sed ‘2,5a=====’ f1 追加
50.sed -i.bak ‘**’ … 修改前加備份 ?好用
51.單雙引號有沖突是 區分開就可以
52.sed ‘2,5a\ ? ====’ 斜線便是開始 后面是附加的內容 注意有空格
53.sed ‘2,5c\ ====’ 代替
54.sed ‘2w f2’ f1 符合條件的行保存至f2 r是讀入
55.sed 沒有地址默認全文檔
56.sed 支持正則表達式 也支持后向引用
57.sed -r ‘s/(.*)/\1magedu/’ /etc/passwd
58.sed -r ‘s/(.*)/magedu\1/’ /etc/passwd
59.sed -r ‘s@/(bin/bash)$@/s\1@’ /etc/passwd
60.sed -r ‘s/(quiet)”$/\1 xyz’ /etc/default/grub
61.sed -r ‘/GRUB_CMDLINE_LINUX/s/”$/ xyz”/’ /etc/default/grub
62.ip地址替換 ifconfig ens33 2!d;s@… 直接處理第2行 ?全行替換某一個,去除行中內容
63.sed ?-r ‘s/(.*\/)([^/]+\/?$)/\2/’ echo “/etc/sysconfig/network”
64.&引用前面的字符串
65.去除ifconfig ens33的ip地址
? ?ifconfig ens33 |sed -n ‘2p’ | sed -r ‘s/.*inet (.*)( netmask.*)/\1/’
? ?ifconfig ens33 |sed -n ‘2p’ | sed -r ‘s/.*inet //’ | sed -r ‘s/ netmask.*//’
? ?ifconfig ens33 |sed -r ‘2!d;s/.*inet (.*) net.*/\1/’ ? 2!d 除了第2行的其余的行全部刪除
66.取出某一行的文本內容可以使用
? ?sed -n ‘2p’ /etc/passwd 只打印第2行的內容
? ?sed ‘2!d’ /etc/passwd ?除了第2行的內容全部刪除
67.取出路徑中的dirname : echo “/etc/sysconfig/network/” | sed -r ‘s@(.*/)((.+/?)+)$@\1@’
? ?取出路徑中的basename: echo “/etc/sysconfig/network/” | sed -r ‘s@(.*/)((.+/?)+)$@\1@’
68.只打印文本的最后一行 #sed -n ‘$p’ /etc/passwd
? ?打印包含root的行 # sed -n ‘/root/p’ /etc/passwd
? ?打印以root開頭的行 # sed ?-n ‘/^root/p’ /etc/passwd
? ?打印以root開頭的行至sync開頭行之間的所有行: sed -n ‘/^root/,/^sync/p’ /etc/passwd
? ?打印奇數行: # echo {1..10} | xargs -n1 | sed -n ‘1~2p’ 打印奇數行 (xargs的 -n1 表示一行輸出的以空格分隔的行轉換成回車,并且每行一個)
? ?打印偶數行: # echo {1..10} | xargs -n1 | sed -n ‘2~2p’ 打印偶數行
? ?輸出符合條件的行至某文件: sed -n ‘/^root/,/^sync/w /tmp/part.txt’ /etc/passwd
? ?打印出文件的空行的行號: sed -n ‘/^$/=’ /etc/rc.d/init.d/functions
69.sed 在使用追加、插入、修改的時候如果要加入空格記得使用\ 轉義
? ?sed ‘1,2a\ ?‘ /etc/passwd ?追加是在所在行的行下追加
? ?sed ‘1,2c\HHHHHHHHH’ /etc/passwd 將第一行和第二行 以HHHHHHHH 來替換
? ?sed ‘1,2iaaaaaaaaa’ ?/etc/passwd ?將aaaaaaaaa 插入至所在行的行前
70.sed -i.bak ?‘/^$/d’ test ?刪除test文件中的空白行,并使用-i.bak做原始文件的備份并修改原文件
71.nl /etc/passwd |sed ‘2,5d’ ?將/etc/passwd 添加行號后,再刪除2到5行
72.sed -n ‘/^root/s/^root/&er/p’ /etc/passwd 搜索文件中的root開頭的行,并將第一個root轉換為rooter
? ?sed -n ‘/^root/s/root/&er/gp’ /etc/passwd ?修改該行中所有的root為rooter ?注意打印的時候要用gp
73.sed -e ‘s/root/HHHH/g’ -e ‘s/sbin/GGGGG/g’ /etc/passwd
? ?sed ?-n -e ?‘s/root/HHHH/gp’ -e ?‘s/sbin/GGGGG/gp’ /etc/passwd 注意使用gp 和是用 -e
74.locate的數據庫文件位置: /var/lib/mlocate/mlocate.db
75.find 命令默認是遞歸查找的,所以不需要添加*
76.交互式登錄:
? ?1.直接通過終端輸入賬戶密碼登錄
? ?2.使用su – username 切換的用戶
? ?執行順序: /etc/profile, /etc/profile.d/*.sh, ~/.bash_profile, ~/.bashrc, /etc/bashrc
? ?非交互式登錄:
? ?1.圖形化窗口打開的終端
? ?2.執行腳本
? ?3.su usernma的部分切換
? ?執行順序: ~/.bashrc /etc/bashrc, /etc/profile.d/*.sh
77. [root@node1 boot]# file initramfs-3.10.0-514.el7.x86_64.img
initramfs-3.10.0-514.el7.x86_64.img: ASCII cpio archive (SVR4 with no CRC)
查看cpio壓縮后里面文件內容: # cpio -tv < /boot/initramfs-3.10.0-514.el7.x86_64.img
78.find中的時間-n 表示的是n天以內, +n 表示的n天以前
79.正則表達式使用^號來錨定行首,使用[^] 來排除[]之內的任意字符,在通配符中只有排除任意字符的使用,正則表達式大部分情況下是用來查找文本內容的,
? ?可以通過^錨定行首內容并通過正則表達式對所找到的行進行字符的查找,常用到正則表達式的命令有 grep sed [[ =~ ]] vim中 find,其余的ls 使用的是通配符,在[[ == ]]中也可以使用通配符,在[[ =~ ]] 中使用的是擴展的正則表達式,sed可以指定-r選項來使用擴展的正則表達式,find 需要使用-regex 來使用正則表達式,如果為給出,則使用的是文件的通配符
80.查找以.conf結尾的文件 #locate “\.conf$” 注意要轉義,因為.在正則表達式中為單個任意字符,需要轉義成普通字符,也可以寫成 # locate -r ‘[.]conf$’,在[]中的.不需要轉義

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

(0)
滌生滌生
上一篇 2018-04-15
下一篇 2018-04-15

相關推薦

  • 目錄操作

    索引節點:  

    Linux筆記 2018-04-01
  • 文件管理類命令和bash特性之(命令狀態返回值和命令行展開)

    文件管理類命令 ls 用途:list 列出指定目錄下的內容; 語法:ls [OPTION]… [FILE]… 選項:-a : 顯示所有文件,包括隱藏文件;-A :顯示除 . 和 .. 之外的所有文件;-l :長格式列表,顯示文件的詳細屬性信息;-h :可以對文件大小進行單位換算是非精確值;-d:查看目錄自身而非其內部文件列表(如果文件符合也會顯示出來);-r…

    2018-05-19
  • 新加磁盤的實現方法

    生產中硬盤會不斷的出現故障此時我們就需要更換新的硬盤,那么拿到一個新的硬盤之后我們該如何來使用呢?一個新的硬盤首先我們要把舊硬盤上的東西進行備份然后用新的硬盤替代。新硬盤使用之前我們必須要先對新硬盤進行 分區—>創建文件系統—>掛載—>設置開機自啟 這幾個步驟,那么接下來我們一個一個來說明每個步驟的實現過…

    Linux筆記 2018-04-30
  • Linux的tail 與head 命令

    head命令是用來查看具體文件的前面幾行的內容,具體格式如下: head <filename>: 你可以通過head命令查看具體文件最初的幾行內容,該命令默認是前10行內容,如果你想查看前面更多內容,你可以通過一個數字選項來設置,例如 head -20 install.log 通過上面命令你可以查看install.log這個文件前面20行的內容 …

    2018-04-16
  • shell編程二

    if while case until break continue select for

    2018-05-08
欧美性久久久久