檔案處理指令
指令文法:指令 [-參數選項] [檔案或路徑]
注解:1個别指令使用不遵循此格式
2檔有多個項目時,可以寫在一起
3簡化選項與完整選項
4[]代表可選
5參數選項表示同一個指令的不同功能
目錄處理指令:ls 選項[-ald] [檔案或目錄]
顯示目錄檔案 ls –lh /etc l詳細 a所有 d屬性 h以k,m等顯示,R遞歸顯示
[root@localhost ~]# ls -ld /tmp/japan/duobo
drwxr-xr-x 2 root root 4096 3月 8 15:46 /tmp/japan/duobo
-rw-r--r--
檔案類型 -檔案d目錄,l軟連接配接檔案
rw- r-- r--
u g o
u所有者 g所屬組 o其他人
r讀 w寫 x執行
建立目錄指令:mkdir -p遞歸建立 [目錄名]
執行個體:mkdir -p /tmp/japan/duobo
mkdir /tmp/japan/longze /tmp/japan/cangjing
Windows下的路徑樣式為c:\data ,而linux底下路徑樣式為/data,windows是\,而linux底下是/ .WINDOWS底下有d盤 c盤等盤符概念,而linux底下沒有隻有檔案路徑
切換目錄指令:cd [目錄路徑]
記住一個概念;相對路徑,絕對路徑
絕對路徑: Windows而言 :從頭(盤符)開始的路徑 linux而言:從/開始的路徑
執行個體:H:\linux運維架構學習筆記\linux基礎與系統管理總結
[root@localhost /]# cat /etc/sysconfig/network-scripts/ifcfg-eth0
相對路徑:不從/開始的路徑,不頭開始的路徑
執行個體:[root@localhost sysconfig]# cd network-scripts
執行個體:cd /tmp/japan/boduo 到指定目錄
[root@localhost ~]# cd /tmp/japan/duobo
[root@localhost duobo]#
cd ..上一級目錄
cd 目前主目錄下
[root@localhost japan]# cd
[root@localhost ~]#
顯示目前目錄:pwd 列印工作目錄
執行個體: pwd
[root@localhost ~]# pwd
/root
删除空目錄:rmdir [目錄]
執行個體:rmdir /tmp/janpan/boduo
[root@localhost duobo]# rmdir /tmp/japan/duobo
[root@localhost duobo]# ls
[root@localhost duobo]# cd ..
[root@localhost japan]# ls
[root@localhost ~]# cd /tmp
[root@localhost tmp]# ls
can japan test1 test2 test3
建立空檔案:touch [檔案名] 如果檔案不存在,就建立新檔案,如果存在,就改變檔案的通路時間atime等時間戳資訊
執行個體:touch japan.txt
建立有規則的多個檔案
touch beidaqinniao{1..10}
[root@localhost tmp]# touch japan.txt
can japan japan.txt test1 test2 test3
[root@localhost tmp]# touch beidaqinniao{1..10}
beidaqinniao1 beidaqinniao3 beidaqinniao6 beidaqinniao9 japan.txt test3
beidaqinniao10 beidaqinniao4 beidaqinniao7 can test1
beidaqinniao2 beidaqinniao5 beidaqinniao8 japan
Echo輸出指令
文法echo [選項] [輸出内容]
選項 -e: 支援反斜線控制的字元轉換
執行個體:
[root@localhost ~]# echo -e "ab\bc"
Ac
[root@localhost ~]# echo -e "a\tb\tc\nd\te\tf"
a b c
d e f
[root@localhost ~]# echo -e "\e[1;33m luliechu is good boy \e[0m"
輸出顔色的指令
\e[1;代表開啟顔色輸出
\e[0m代表關鍵顔色輸出
echo -e "\e[1;33m a\t \e[1;31m b\n \e[1;32mc\t \e[1;34m d \e[0m "
标準輸入輸出
标準輸入 0 鍵盤
标準輸出 1 顯示器
标準錯誤輸出 2 顯示器
輸出重定向 >覆寫 >>追加
标準輸出重定向 指令>檔案 指令>>檔案
标準錯誤輸出重定向 錯誤指令 2>檔案 錯誤指令2>>檔案
正确輸出和錯誤輸出同時儲存 指令 >> 檔案 2>&1 以追加的方式,把正确的輸出和錯誤的輸出都儲存到同一檔案當中
指令&>>檔案 以追加的方式,把正确的輸出和錯誤的輸出都儲存到同一檔案當中
指令>>檔案1 2>>檔案2 把正确的輸出到檔案1中,錯誤的輸出到檔案2中
輸入重定向:指令<檔案
沒有輸出重定向有用,知道就行了,示範案例 wc指令
Wc 選項 檔案名
選項 -c 統計位元組數
-w 統計單詞數
-l 統計行數
連結多個指令順序執行符号
; 指令1;指令2 多個指令順序執行,指令之間沒有任何邏輯聯系 ,隻是簡化操作,實際用于檔案對拷指令 dd
Dd if=輸入檔案 of=輸出檔案 bs=位元組數 count=個數
選項 if=輸入檔案 指定源檔案或源裝置
of=輸出檔案 指定目标檔案或目标裝置
bs=位元組數 把這些位元組看做一個資料塊
count=個數 指定輸入/輸出多少個資料塊
執行個體:建立一個100m的檔案大概需要多少時間
&& 指令1&&指令2 邏輯與 指令1正确才會執行指令2
|| 指令1||指令2 邏輯或 指令1不正确才會執行指令2,指令1正确,就不會執行指令2
腳本長用&& ||結合用法,來判斷條件成立與否
管道符| 将指令1的正确輸出作為指令2的操作對象
指令1 |指令2
執行個體:監聽正常連接配接
Grep [選項] “搜尋内容” 檔案名
選項:
-i 忽略大小寫
-n 輸出行号
-v 方向查找
--color=auto 搜尋出的關鍵字用顔色顯示
複制目錄或檔案:cp -rp [源檔案或目錄] [目标目錄]
-r遞歸複制整個目錄樹
-p保持源檔案屬性不變
-f強制覆寫目标同名檔案或目錄
-i需要覆寫時提醒
執行個體cp -r /tmp/japan/cangjing /root 将目錄/tmp/japan/cangjing複制到目錄/root下
cp -rp /tmp/japan/duobo /tmp/japan/longze /root 将目錄/tmp/japan目錄下的duobo和longze複制到目錄/root下,保持目錄屬性
檔案移動,剪切,改名:mv [源檔案或目錄][目标目錄]
執行個體:mv test.txt /home 将檔案test.txt移動到/home 下
删除檔案:rm -fr [檔案或目錄]
-r遞歸删除整個目錄樹
-f強制删除檔案或檔案
-i删除時提醒
執行個體:rm /tmp /yum.log 删除檔案/tmp/yum.log
rm -rf /tmp/japan/longze 删除目錄/tmp/japan/longze
一次性顯示檔案内容:cat -n [檔案名]
-n顯示行号
執行個體:cat /etc/issue
cat -n /etc/services
反向顯示檔案内容:tac [檔案名]
執行個體:tac /etc/issue
分頁顯示檔案内容:more [檔案名]
空格或f 翻頁
enter 換行
q或Q 退出
執行個體:more /etc/passwd
分頁顯示檔案内容:less [檔案名] 必須按q退出
執行個體:less /etc/passwd
顯示檔案前面幾行 head -n [檔案名] 不加行數預設是10行
-n 指定行數
執行個體:head -20 /etc/passwd
[root@localhost public]# head -n 2 test.txt
test
liyao
顯示檔案後面幾行 tail -n [檔案名] 不加行數預設是10行
-n 指定行數
-f 動态顯示檔案末尾内容
執行個體:tail -2 /etc/passwd
已知/tmp目錄下已經存在text.txt檔案,如果執行指令才能把/mnt/test.txt拷貝到/tmp下覆寫掉/tmp/test.txt
答案:\cp /mnt/test.txt /tmp //覆寫檔案不提示
生成軟連結:ln -s [源檔案] [目标檔案]
-s建立軟連結
執行個體:ln –s /etc/sysconfig/network-scripts /a 建立軟連結
ln /etc/issue /tmp/issue.hard 建立硬連結
軟連結類似:windows快捷方式
軟連結檔案權限都為777
檔案大小隻是符号連結
箭頭指向原檔案 /tmp/issue.soft ->/etc/issue
硬連結特征:
拷貝cp -p +同步更新
echo "this is a test">>/etc/motd
可通過I節點識别
不能跨分區
不能針對目錄使用
改變檔案或目錄權限chmod [{ugoa}{=+-}{rwx}] [檔案或目錄]
[mode=421] [檔案或目錄]
-R 遞歸修改
權限的數字表示r=4 w=2 x=1 如rwxrw-r-- 等于764
執行個體:chmod g+w testfile 賦予檔案testfile所屬組寫權限
chmod -R 777 testdir修改目錄testfile及其目錄下檔案為所有使用者具有全部權限
檔案目錄權限總結
代表字元權限對檔案的含義對目錄的含義
r 讀可以檢視檔案内容可以列出目錄中的内容
w 寫可以修改檔案内容可以在目錄中建立,删除檔案
x 執行可以執行檔案可以進入目錄
改變檔案或目錄的所有者:chown [使用者][檔案或目錄]
執行個體:chown shenchao fengjie 改變檔案fengjie的所有者為shenchao
改變檔案或目錄的所屬組:chgrp [使用者組][檔案或目錄]
執行個體:chgrp lam fengjie 改變檔案fengjie的所屬組為lam
顯示,設定檔案的預設權限:umask [-S]
-s以rwx形式顯示建立檔案預設權限
執行個體:umask -S
檔案搜尋:find [搜尋範圍] [比對條件] 五星級别指令
-name按名稱找
-size按大小找使用+ -設定超過還是小于指定大小,機關k,M,G
-user 屬于目标使用者查找
- type檔案類型查找 f普通檔案 d目錄檔案 b裝置檔案 c字元裝置檔案
執行個體:find /etc -name passwd 在目錄/etc中查找檔案passwd
find /etc -size +2M 在目錄/etc中查找大于2M的檔案
find /home -user test 搜尋/home目錄下由test建立的檔案及目錄清單
find /etc -cmin -5 在/etc下查找5分鐘内被修改過的屬性的檔案和目錄
-amin 設定時間 access
-cmin 檔案屬性 change
-mmin 檔案内容 modify
find /etc -size +80M -a size -100M 在/etc下查找大于80M小于100M的檔案
-a兩個條件同時滿足
-0兩個條件滿足任意一個即可
find /etc -name inittab -exec ls -l {}\ 在/etc下查找inittab檔案并顯示其詳細資訊
-exec/-ok 指令 {}\;對搜尋結果執行操作
面試題:删除一個目錄下的所有檔案,但保留一個指定檔案
解答:
假設這個目錄是/xx/,裡面有file1,file2,file3..file10 十個檔案
[root@oldboy xx]# touch file{1..10}
[root@oldboy xx]# ls
file1 file10 file2 file3 file4 file5 file6 file7 file8 file9
方法一:find
[root@oldboy xx]# find /xx -type f ! -name "file10"|xargs rm -f
file10
[root@oldboy xx]# find /xx -type f ! -name "file10" -exec rm -f {} \;
這兩種一個通過xargs傳參,一個通過find的-exec執行指令參數來完成,都算作find吧
find /tmp -type f -name "*.txt" -exec rm {} \;
路徑 類型 名字 把find的結果傳參 動作
Find /log -type f -name “*.log” -mtime +15 |xargs rm -f //查找log目錄,删15天以前修改過得檔案
Find /log -type f -name “*.luliechu” -mtime +30 |xargs rm -fr //查找log目錄,删30天以前修改過得的并且以luliechu名稱結果的目錄
[root@localhost /]# mv `find /tmp -type f -name "*.txt"` /tmp/public
[root@localhost /]# cd /tmp/public
[root@localhost public]# ls
1.txt 4.txt luliechu1.txt luliechu4.txt luliechu7.txt
2.txt 5.txt luliechu2.txt luliechu5.txt luliechu8.txt
3.txt luliechu10.txt luliechu3.txt luliechu6.txt luliechu9.txt
在檔案資料庫中查找檔案:locate 檔案名
執行個體:locate inittab
搜尋指令所在目錄及别名資訊:which 指令
執行個體:which ls
搜尋指令所在目錄及幫助文檔路徑:whereis 指令名稱
執行個體:whereis ls
在檔案中搜尋字元串比對的行并輸出:grep -iv [指定字串] [檔案] 五星指令三劍客之一
-i不區分大小寫
-v排除指定字串
執行個體:grep mysql /root/install.log
grep root /etc/passwd
假設一個文本中包含luliechu,現在要求列印此文本中去除luliechu
模拟建立文本
[root@localhost public]# cat >>test.txt<<eof //建立多行文本
> test
> liyao
> luliechu
> eof
[root@localhost public]# cat test.txt
luliechu
答案:
[root@localhost public]# grep -v luliechu test.txt grep篩選過濾 -v排除
Liyao
[root@localhost public]# grep luliechu test.txt 不加-v就是包含查找這東西
Luliechu
Alias檢視和設定别名
[root@localhost public]# alias
alias cp='cp -i'
alias l.='ls -d .* --color=auto'
alias ll='ls -l --color=auto'
alias ls='ls --color=auto'
永久生效别名
[root@localhost tmp]# vi /root/.bashrc
1 # .bashrc
2
3 # User specific aliases and functions
4
5 alias rm='rm -i'
6 alias cp='cp -i'
7 alias mv='mv -i'
8 alias vi='vim'
9 # Source global definitions
10 if [ -f /etc/bashrc ]; then
11 . /etc/bashrc
12 fi
删除别名 unalias 别名
uniq去重指令 -c 計算有多少次重複的
建立測試資料:
[root@localhost ~]# echo 123 >test
[root@localhost ~]# echo 123 >>test
[root@localhost ~]# cat test
123
[root@localhost ~]# uniq test
[root@localhost ~]# uniq -c test
4 123
sort對文本行進行排序
121
122
124
125
126
[root@localhost ~]# sort test
-n數字排序 -r倒序
[root@localhost ~]# sort -rn test
-t分隔符 -k指定第幾個字段
-k3,3從第三個字段開始排序,到第三個字段結束
-k4.1,4.3 從第四個字段第1個字元開始排序,到第四個字段第3個字元結束
[root@localhost ~]# sort -t " " -k 2 test
121 a
123 b
122 c
123 d
124 e
125 f
126 g
[root@localhost ~]# sort -n -t "." -k3,3 -k4,4.2 test
192.168.0.1
192.168.0.2
192.168.0.15
192.168.1.2
192.168.1.3
192.168.1.11
192.168.1.12
192.168.2.1
192.168.2.10
192.168.2.11
192.168.3.1
192.168.3.2
192.168.3.3
192.168.10.1
192.168.10.2
面試題:處理以下内容,并将域名取出并根據域名進行計數排序處理
對應:分析網絡連接配接裡,正在連接配接的所有ip位址,計數
分析http服務,日志ip的通路次數,計數
建立測試資料
[root@localhost tmp]# cat >>test <<eof
> http://www.baidu.com/index.html
> http://www.kuparts.com/index.html
> http://post.etian.org/index.html
> http://www.jingdong.com/index.html
> http://kuparts.com/index.html
[root@localhost tmp]# cat test
http://www.baidu.com/index.html
http://www.kuparts.com/index.html
http://post.etian.org/index.html
http://www.jingdong.com/index.html
http://kuparts.com/index.html
[root@localhost tmp]# cat test |awk -F "/" '{print $3}'|uniq -c |sort -rn -k1
2 www.baidu.com
1 www.kuparts.com
1 www.jingdong.com
1 www.baidu.com
1 post.etian.org
1 kuparts.com
隻檢視ett.txt檔案(100行)内第20到30行的内容
Seq列印序列号指令
[root@localhost public]# seq 5
1
2
3
4
5
[root@localhost public]# seq 1 3 10
7
10
答案:seq 100 >ett.txt //模拟建立檔案
第一種方法:head -30 ett.txt|tail -11
第二種方法:sed -n '20,30'p ett.txt
第三種方法:awk ‘NR>19&&NR<31’ ett.txt
Sed 流編輯器,用來将資料進行選取,替換,删除,新增的指令
root@localhost ~]# sed [選項] ‘[動作]’ 檔案名 五星指令
-n: 一般sed指令會把所有資料都輸出到螢幕 , 如果加入此選擇,則隻會把經過sed指令處 理的行輸出到螢幕。
-e: 允許對輸入資料應用多條sed指令編輯
-i: 用sed的修改結果直接修改讀取資料的檔案, 而不是由螢幕輸出
動作:
a \: 追加,在目前行後添加一行或多行。添加多行時,除最後 一行 外,每行末尾需要用“\”代表資料未完結。
c \: 行替換,用c後面的字元串替換原資料行,替換多行時,除最 後一行外,每行末尾需用“\”代表資料未完結。
i \: 插入,在當期行前插入一行或多行。插入多行時,除最後 一行 外,每行末尾需要用“\”代表資料未完結。
d: 删除,删除指定的行。
p: 列印,輸出指定的行。
s: 字串替換,用一個字元串替換另外一個字元串。格式為“行範 圍s/舊字串/新字串/g”(和vim中的替換格式類似)。
sed -i 's#□#△ #g' //sed替換
#是定意符,‘’□能用正規表達式 △不能用
sed -i 's#wenxue#huangxiaoche#g' test2
Find /public -type f -name “*.sh”|xagrs sed -i 's#wenxue#huangxiaoche#g' test2
行資料操作
[root@localhost ~]# sed '2p' student.txt
#檢視檔案的第二行
[root@localhost ~]# sed -n '2p' student.txt
[root@localhost ~]# sed '2,4d' student.txt #删除第二行到第四行的資料,但不修改檔案本身
[root@localhost ~]# sed '2a hello' student.txt #在第二行後追加hello [root@localhost ~]# sed '2i hello \ world' student.txt #在第二行前插入兩行資料
# sed '2c No such person‘ student.txt
#資料替換
字元串替換
# sed ‘s/舊字串/新字串/g’ 檔案名
# sed '3s/74/99/g' student.txt
#在第三行中,把74換成99
#sed -i '3s/74/99/g' student.txt
#sed操作的資料直接寫入檔案
# sed -e 's/Li//g ; s/lin//g' student.txt
#同時把“Li”和“lin”替換為空
幫助指令:man [指令或配置檔案]
執行個體:man ls 檢視指令ls的幫助資訊
man services 檢視配置檔案services的幫助資訊
獲得sheel内置指令的幫助資訊:help 指令
執行個體:help umask 檢視umask指令的幫助資訊
添加新使用者:useradd 使用者名
執行個體:useradd luliechu
設定使用者密碼:passwd 使用者名
執行個體:passwd luliechu
檢視登入使用者資訊:who
檢視登入使用者詳細資訊:w
壓縮指令: gzip [檔案]
Gzip壓縮擴充名為.gz的檔案
執行個體: gzip test.txt
解壓縮.gz的壓縮檔案:gunzip [壓縮檔案]
執行個體:gunzip boduo.gz
歸檔打包指令:tar 選項[-czf] [壓縮後檔案名] [目錄]
-c建立一個新封包件
-x解開.tar格式的封包件
-f使用檔案歸檔
-z調用gzip壓縮或解壓
-j調用bzip2壓縮或解壓
執行個體:常用組合:tar xzf tar xjf
Tar czvf 建立一個壓縮包格式的封包件,顯示執行的詳細資訊
Tar czf etc.tar.gz /etc 将目錄/etc打包并壓縮為.tar.gz檔案
Tar xzvf 解開一個壓縮格式的封包件,顯示執行詳細資訊
Tar xzf etc.tar.gz –C /home
Tar tzvf 臨時解開一個壓縮格式的封包件,檢視内部的清單
壓縮檔案或目錄:zip 選項[-r][壓縮後檔案名][檔案或目錄]
-r 壓縮目錄
執行個體:Zip test.zip test.txt Zip生成zip格式的壓縮檔案
zip -r japan.zip japan 壓縮目錄
解壓縮zip格式的壓縮檔案:unzip [壓縮檔案]
Unzip test.zip –d /home
Bzip 壓縮擴充名為.bz2 bzip test.txt
Gzip –d 解壓擴充名為.gz的檔案 gzip –d text.txt.gz
Bzip2 -d解壓擴充名為.bz2的檔案 bzip2 –d text.txt.gzfa
給使用者發資訊:write <使用者名>以ctrl+d儲存結束
執行個體:write luliechu
發送廣播資訊:wall [message]
執行個體:wall hello,word!
測試網絡連通性:ping 選項 ip位址
-c指定發送次數
執行個體: ping 192.168.1.1
檢視網卡資訊和ip位址:ifconfig 網卡名稱 ip位址
執行個體:ifconfig eth0 192.168.1.2 設定ip位址為192.168.1.2
檢視發送電子郵件:mail [使用者名]
執行個體:mail root
列出目前與過去登入系統的使用者資訊:last
檢查某特定使用者上次登入時間:lastlog
執行個體:lastlog -u 502
顯示資料包到主機間的路勁:traceroute
執行個體:traceroute www.baidu.com
檢視網絡相關資訊:netstat [選項]
-t :tcp協定
-u :udp協定
-l :監聽
-r :路由
-n :顯示ip位址和端口号
執行個體:netstat -tlun檢視本機監聽的端口
netstat -an 檢視本機所有的網絡連接配接
netstat -rn 檢視路由表
配置網絡:setup
挂載指令:mount [-t檔案系統] 設定檔案名挂載點
執行個體:mount -t iso9660 /dev/cdrom /mnt/cdrom
關機指令:shutdown [選項] 時間
-c 取消前一個關機指令
-h 關機
-r 重新開機
執行個體:shutdown -h now
其他關機指令:halt ,init 0,poweroff
其他重新開機指令:reboot,innit6
Linux七種運作級别
0:關機
1:單使用者模式相當于windos中安全模式
2:字元界面的多使用者模式(不支援網絡)
3:字元界面的多使用者完整模式
4:未配置設定使用
5:圖形界面多使用者模式
6:重新開機
檢視linux系統目前運作級别 runlevel
要修改預設的運作級别可改檔案 /etc/inittab的id:5:initdefault這一行的數字
登出指令:logout
指令于檔案補全 tab
本文轉自 探花無情 51CTO部落格,原文連結:http://blog.51cto.com/983865387/1917731