Linux基礎課第三章常用基本的一些命令
文件處理命令
命令語法:命令 [-參數選項] [文件或路徑]
註解: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 ..上一級目錄
[root@localhost ~]# cd /tmp/japan/duobo
[root@localhost duobo]#
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 japan]# cd
[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]# ls
can japan test1 test2 test3
[root@localhost tmp]# touch japan.txt
[root@localhost tmp]# ls
can japan japan.txt test1 test2 test3
創建有規則的多個文件
[root@localhost tmp]# touch beidaqinniao{1..10}
[root@localhost tmp]# ls
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]# ls
file1 file10 file2 file3 file4 file5 file6 file7 file8 file9
[root@oldboy xx]# find /xx -type f ! -name "file10"|xargs rm -f
[root@oldboy xx]# ls
file10
[root@oldboy xx]# find /xx -type f ! -name "file10" -exec rm -f {} \;
[root@oldboy xx]# ls
file10
這兩種一個通過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
test
liyao
luliechu
答案:
[root@localhost public]# grep -v luliechu test.txt grep篩選過濾 -v排除
test
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 ~]# echo 123 >>test
[root@localhost ~]# echo 123 >>test
[root@localhost ~]# cat test
123
123
123
123
[root@localhost ~]# uniq test
123
[root@localhost ~]# uniq -c test
4 123
sort對文本行進行排序
[root@localhost ~]# cat test
121
122
123
123
124
125
126
[root@localhost ~]# sort test
121
122
123
123
124
125
126
-n數字排序 -r倒序
[root@localhost ~]# sort -rn test
126
125
124
123
123
122
121
-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.baidu.com/index.html
> http://www.baidu.com/index.html
> http://www.jingdong.com/index.html
> http://kuparts.com/index.html
> eof
[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.baidu.com/index.html
http://www.baidu.com/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
1
4
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