1. 程式人生 > >學習筆記(9)

學習筆記(9)

學習筆記

find ./ -maxdepth 1 -name ‘test‘ -ls 註意--maxdepth的位置,放在命令的尾部會有警告
find /etc -regex "/etc/.passwd" find中使用正則表達式匹配時,匹配的是整個路徑而非文件名稱,而使用文件統配符的時候是匹配的文件名
find / -iname "[^[:lower:]][^[:lower:]][^[:lower:]][^[:lower:]][^[:lower:]][^[:lower:]][^[:lower:]].txt"
find / -iname "[a-z][a-z][a-z][a-z][a-z][a-z][a-z].txt" 使用[a-z] 會匹配大寫字母的文件名
因為a-z匹配的是a A b B ....z,如果匹配的是大小寫字母的則使用[a-Z]
find 中的大小的常用單位: k, M, G, c(bytes)
grep:文本搜索工具,根據用戶指定的“模式”對目標文本逐行進行匹配檢查;打印匹配到的行(註意是打印出的是匹配到的行)
只有在tr的時候才使用[:alpha:] 類型的表達,其余的都是[[:alpha:]] ,因為 tr ‘a-z‘ ‘A-Z‘ 表示的就是單一一個字符,所以使用[a-z],註意 tr只能使用重定向或管道來接受處理的文件內容,不能直接接文件來處理如 tr ‘a-z‘ ‘A-Z‘ file 這樣是錯誤的
grep -w 匹配的單詞是數字、字母、下劃線混合的,而非空格分隔的
vim 刪除時使用g作為全文檔,如刪除所有空格 :g/^$/d,選擇替換的時候使用 % 作為全文檔
vim 中使用的是標準的正則表達式
sed -n ‘n;p‘ 打印偶數行
seq 10 | sed ‘1!G;h;$!d‘ 倒序輸出(tac)
sed 示例 文字說明
程序包的noarch表示與系統平臺無關,適用於x86_64,同樣適用於i686
ls
.rpm | sed -r ‘s@..([^.]+).rpm$@\1@‘|sort |uniq -c
ls
.rpm |rev |cut -d. -f2|rev|sort|uniq -c
ls .rpm |grep -Eo ‘.[^.]+.rpm$‘|cut -d. -f2|sort|uniq -c
seq 1 10 | sed ‘N;s/\n//‘
seq 1 10 | xargs -n 2
sed 進階
P:打印模式空間開端至\n內容,並追加到默認輸出之前
h: 把模式空間中的內容覆蓋至保持空間中
H:把模式空間中的內容追加至保持空間中
g: 從保持空間取出數據覆蓋至模式空間
G:從保持空間取出內容追加至模式空間
x: 把模式空間中的內容與保持空間中的內容進行互換
n: 讀取匹配到的行的下一行覆蓋至模式空間
N:讀取匹配到的行的下一行追加至模式空間
d: 刪除模式空間中的行
D:如果模式空間包含換行符,則刪除直到第一個換行符的模式空間中的文本,並不會讀取新的輸入行,而使用合成的模式空間重新啟動循環。如果模式空間不包含換行符,則會像發出d命令那樣啟動正常的新循環
sed -n ‘n;p‘ FILE #打印偶數行
sed ‘1!G;h;$!d‘ file #倒序輸出
sed ‘N;D‘ FILE #打印最後一行
sed ‘$!N;$!D‘ FILE #但因最後兩行
sed ‘$!d‘ FILE #打印最後一行
sed ‘G‘ FILE #在每一行的下面追加一個空行
sed ‘g‘ FILE #將每一行的內容用空行替換
sed ‘/^$/d;G‘ FILE #將多個空行合並成一個空行
sed ‘n;d‘ FILE #只保留奇數行
sed -n ‘1!G;h;$p‘ FILE #倒序輸出
軟連接相對路徑
tar xvf 不需要指定zj,可以通過後綴名自動解壓縮
做詞尾錨定的時候,多個單詞的詞尾錨定不需要使用括號錨定單詞,如\< \>
修復圖文
ldconfig -p 查看系統中已經加載的庫
rpm -qp --scripts httpd...
/var/lib/rpm/
安裝rpm包之後的記錄 是否安裝是否未安裝(重要) 刪除後無法安裝,無法查詢包是否安裝
自己制作rpm包
rpm -e vsftpd(軟件名) 卸載程序包
rpm -i --test 測試安裝
rpm --replacepkgs 重新安裝
rpm --import RPM-...Centos-6 導入公鑰
rpm -ivh --force 包名 對已經安裝的軟件包再次強制重新安裝
對程序包做升級後修改過的相同的配置文件不會覆蓋,新的配置文件會命名為FILENAME.rpmnew
rpm -q 包名(不是文件名)要求包名準確
rpm -qa | grep vsftp 可以模糊查詢
rpm -qa vsftp 支持模糊匹配
rpm -qf /etc/passwd 查詢文件來自於哪個程序包,即便文件刪除也會查詢到,/var/lib/rpm文件中已經保存了rpm元數據的數據庫,所以即便文件刪除也會查詢到
rpm -ql 包名 查詢已安裝程序包的的文件信息
rpm -qpl .rpm 查詢未安裝的程序包的信息
rpm -q --whatprovides tree 查詢已安裝的程序由那個程序包提供
-whatrequires 查詢被依賴
rpm2cpio
.rpm | cpio -idv 文件(指定需要解壓縮的文件,註意解壓縮之後文件屬性是否滿足要求)
rpm -qi 已安裝程序包 可以查看到包信息以及官網信息
rpm -qR 查詢包依賴
all-matches 卸載所有版本,在相同程序存在多個版本時可以一切卸載所有版本
rpm -V 程序名 查詢程序的屬性是否發生變化
S file Size differs
M Mode differs (includes permissions and file type)
5 digest (formerly MD5 sum) differs
D Device major/minor number mismatch
L readLink(2) path mismatch
U User ownership differs
G Group ownership differs
T mTime differs
P capabilities differ
rpm -K 校驗需要使用的安裝包是否改變
echo >> tree-1.6.0-10.el7.x86_64.rpm
rpm -K tree-1.6.0-10.el7.x86_64.rpm 查詢安裝包是否發生改變
/etc/rpm-gpg/RPM... 公鑰(光盤的在根目錄下)
rpm -qa "gpg-pubkey*"" 導入後公鑰後生成的
rpm -ql rpm rpm -qf rpm
rpm2cpio ...|cpio -idv file(包內文件)
救援模式
mount /dev/sro /mnt/cdrom df
rpm -ivh *** --root=/mnt/sysimage 救援模式使用
由於是光盤啟動的系統,所以需要將根路徑指定成/mnt/sysimage,因為真正的系統是被掛載在/mnt/sysimage上的
危險的操作有: 1. 修改所有文件權限 chomd -R 000 / ,2. 刪除/var/lib/rpm 因為刪除rpm數據庫,系統將無法獲知rpm軟件是否被安裝或被刪除會導致rpm無法正常使用,
rm -rf /
刪除更目錄下面的所有文件
yum 緩存的是元數據,不刪除,下載的rpm包安裝完後刪除,多個yumServer相同軟件安裝最新,先訪問緩存後下載rpm包
vim /etc/yum.conf
[main]
cachedir=/var/cache/yum/$basearch/$releasever #metadata緩存路徑
keepcache=0 #是否緩存rpm包,1為保存
debuglevel=2
logfile=/var/log/yum.log # 日誌路徑
exactarch=1
obsoletes=1
gpgcheck=1
plugins=1
installonly_limit=5
bugtracker_url=http://bugs.centos.org/set_project.php?project_id=23&ref=http://bugs.centos.org/bug_report_page.php?category=yum
distroverpkg=centos-release
光盤中的repodata 目錄存放的是元數據信息
[base] #名字不要有空格
name= centos cdrom
baseurl=file:///mnt/cdrom #repodata的父目錄就是倉庫路徑(即repodata所在的目錄),mnt前面的/是根
gpgcheck=0 未import公鑰,所以不校驗

[epel]
name=epel
baseurl=htp://172.20.0.1/epel/7/x86_64/
        file:///mnt/cdrom  #容錯
gpgcheck=1 校驗完整性
gpgkey=file:///mnt/cdrom/RPM-GPG-... 指定key文件
enabled=0 禁用yum源

yum install httpd 中的d 是只下載的不安裝
yum repolist 查看有本地多少倉庫,及倉庫中的rpm包
yum repolist all 顯示所有包括禁用的倉庫
yum repolist disabled 顯示禁用的倉庫
yum clean all 清空緩存 (/var/cache/yum)
yum list 查看所有的倉庫中的rpm包 帶@符號的均是安裝完成的
@anaconda 安裝系統時使用anacoda中安裝
@base 使用base源安裝的
@epel epel安裝
sl -a 使用yum 安裝 epel中
yum remove sl 卸載程序包
baseurl 可以寫多個,可以容錯,也可以將多個baseurl放到文件中mirrorlist,並使用mirrorlist=file://root/mirrolist
cost值越小優先級越高
yum install autofs 神奇文件夾
yum start autofs
yum enable autofs
yum-config-manager --add-repo=http://...
glob 通配符,pattern 正則
yum底層使用的依然是rpm,所以rpm如果使用不了,yum也不能使用。
卸載程序不卸載依賴包(默認)
yum history list num
yum history info num
yum history undo num
yum install *.rpm 可以解決依賴關系,而不需要創建yum源
yum grouplist 顯示包組
yum -y -q 靜默模式 要分開寫不能合並,可以在腳本中使用做安裝判斷
createrepo /data 自定義yum倉庫,/data指定包含有rpm包的倉庫
搭建yum倉庫服務器
支持http https ftp協議格式 yum倉庫
httpd.service rpm -ql 中存在httpd.service 服務名就是httpd
添加光驅並掃描識別:
echo ‘- - -‘ >> /sys/class/scsi_host/host2/scan
echo ‘- - -‘ >> /sys/class/scsi_host/host0/scan
搭建yum http: centos6 centos7
yum倉庫中可用的變量
$releasever (release version 發布版本)
$arch 平臺,i386,i486,i586,x86_64等
$basearch 基礎平臺

學習筆記(9)