一、認識Shell
在Linux系統中,Shell充當著用戶與Linux內核的橋梁,俗稱殼保護著Linux內核,同時也負責完成用戶與內核之間的交互。
當用戶需要與內核交互時,將命令傳遞至Shell,再由Shell將命令解析成內核所能理解的指令,然后操作系統做出響應對硬件進行控制,最后再將結果通過Shell返回給用戶。
經過多年的發展,由不同的機構、針對不同的目的,開發出許多不同類型的Shell程序。目前流行的Shell主要有幾種 :
Bourne Shell
Bourne Again Shell
C Shell
K Shell
Shell for Root
Bourne Again Shell簡稱Bash,由于易用和免費,Bash 在日常工作中被廣泛使用。同時Bash 也是大多數Linux 系統默認的 Shell。
二、Shell命令
(1)文件目錄類
1.pwd
功能:顯示當前絕對路徑
2.ls
功能:顯示文件和目錄的信息
ls 以默認方式顯示當前目錄下的內容
ls -a 顯示所有文件包括隱藏文件
ls -l 顯示詳細信息
3.cd
功能:切換目錄
cd dir 切換到dir目錄
cd / 切換到根目錄
cd .. 切換到到上一級目錄
cd ~ 切換到用戶目錄,比如是root用戶,則切換到/root下
4.mkdir
功能:創建目錄
mkdir aa 創建目錄aa
mkdir a/b/c -p 創建多級目錄
5.rm
功能:刪除文件或目錄
rm 1.txt 刪除1.txt文件
rm aa -r 刪除文件夾aa
6.cp
功能:拷貝文件或目錄
cp 1.txt ./dest/ 拷貝1.txt到dest目錄下
cp 1.txt 3.txt 拷貝1.txt到同級目錄的3.txt
cp aa ./dest/ -r 拷貝文件夾aa到dest目錄下
7.mv
功能:移動命令
mv 1.txt ./dest/ 拷貝1.txt到dest目錄下
mv 1.txt 3.txt 將1.txt改名為3.txt
mv aa ./dest/ -r 移動文件夾aa到dest目錄下
8.cat
功能:顯示文件的內容
cat 1.cpp
9.head、tail
功能:head顯示文件前10行(默認)
功能:tail顯示文件后10行(默認)
10.touch
功能:創建文件或修改文件時間戳
11.du
功能:顯示指定的目錄或文件所占用的磁盤空間
du -sh /home 以K,M,G為單位顯示home的總大小
12.ln
功能:建立軟連接和硬連接
ln -s dir linkdir 給dir創建軟連接linkdir
13.find
功能:查找
find /home -type f -name “1.c” 在home目錄查找1.c文件
find ./ -type f -name “*.txt” 在當前目錄查找所有txt文件
14.file
功能:顯示文件類型
file 1.txt
file a.out
15.which
功能:在PATH路徑查找文件
which ls 查找ls的路徑
(2)系統管理類
1.shutdown 、reboot
功能:關閉或重啟計算機
shutdown -h now
shutdown -r +10 10分鐘后重啟
shutdown -c 取消重啟或關機
reboot 重啟
2.su
功能:切換用戶
su farsight 切換到farsight用戶
su - 切換到root用戶,同時使用該用戶環境
3.adduser
功能:添加用戶
adduser farsight
4.passwd
功能:設置或更改用戶密碼
passwd user 修改user的密碼
5.chown
功能:更改文件或目錄的所有者
chown farsight /dir 將dir設為farsight用戶所有
6.chmod
功能:修改文件權限
chmod 777 1.sh
chmod +x 1.sh
7.sudo
功能:用來以其他身份來執行命令,預設的身份為root
8.man
功能:幫助命令
man 1 ls 查看ls命令手冊
man 2 socket 查看socket函數手冊
9.clear
功能:清屏
10.echo
功能:字符串輸出
echo “hello” 輸出字符串hello
echo $PATH 輸出PATH變量
(3)歸檔壓縮類
1.gzip gunzip
功能:解壓文件
gzip 1.txt 壓縮1.txt
gunzip -f file.gz 解壓文件
2.tar
功能:解壓文件
tar -vxf file.tar 解壓縮包
tar -xzvf file.tar.gz 解壓tar.gz
tar -cvf file.tar dir 將dir打包壓縮
(4)進程管理類
1.ps
功能:顯示進程信息
ps -ef 顯示當前系統詳細進程
ps -aux 顯示所有包含其他使用者的行程
2.pstree
功能:將所有行程以樹狀圖顯示
3.top
功能:實時顯示process的動態
4.kill
功能:給進程發信號
kill -signum pid 給pid發信號
kill pid 結束pid進程
(5)軟件管理類
1.apt
功能:對軟件進行管理
apt-get install nginx 安裝nginx
apt-get update 更新源
apt-get upgrade 升級軟件
apt-get remove cmatrix 刪除軟件
apt-get check 確認依賴的軟件倉庫正確
apt-get clean 清理緩存
2.dpkg
功能:對軟件進行管理
dpkg -i package.deb 安裝deb 包
dpkg -r package_name 刪除軟件
dpkg -l 顯示系統中所有已經安裝的 deb 包
dpkg -L cmatrix 顯示軟件cmatrix所提供的文件列表
dpkg --contents package.deb 顯示尚未安裝的一個包所提供的文件列表
dpkg -S /bin/ping 確認ping命令由哪個deb包提供
(6)文本處理類
1.wc
功能:統計文本文件
wc -l 1.txt 統計1.txt的行數
wc -w 1.txt 統計1.txt的字數
wc -c 1.txt 統計1.txt的字節數
2.grep
功能:過濾來自一個文件或標準輸入匹配模式內容
ps -ef | grep "nginx" 顯示關于nginx的進程信息
grep "jack" *.txt 在所有的txt文件中查詢關鍵字jack
grep -r "id" * 遞歸搜索所有文件中的關鍵字id
grep -n root /etc/passwd 將/etc/passwd,有出現 root 的行取出來顯示行號
dmesg | grep -n --color=auto 'eth'
dmesg 列出核心信息找出內含 eth 那行,并著色
grep -f a.txt b.txt 輸出 b 文件中在 a 文件相同的行
echo "A a b c" |xargs -n1 |grep -i a 匹配開頭不分大小寫的單詞
grep -E -v "^$|^#" file.txt 去除文件空行或開頭#號的行
grep -r '192.168.1.1' /etc --include *.conf 匹配指定ip的conf文件
3.sed
功能:流編輯器,過濾和替換文本
sed -n '3,9p' file.log 輸出第三行到第九行
sed -n '/aaa/,/bbb/p' file.log 輸出從aaa開始到bbb結束的行
sed -i 's/string1/string2/g' file.txt 將文件中的 "string1" 替換成 "string2"
sed '/^$/d' file.txt 從文件中刪除所有空白行
sed '/ *#/d; /^$/d' test.c 從文件中刪除所有注釋和空白行
sed -e '1d' file.txt 從文件中排除第一行
sed -e 's/ *$//' file.txt 刪除每一行最后的空白字符
sed -e 's/00*/0/g' file.txt 用單個零替換多個零
4.awk
功能:awk 是一個處理文本的編程語言工具,能用簡短的程序處理標準輸入或文件、數據排序、計算以及生成報表等等
tail -n3 /etc/services |awk '{print $2}' 輸出第二字段
awk -F ':' '{print $1}' /etc/passwd 指定冒號為分隔符打印第一字段
tail /etc/services |awk '/tcp/{print $0}' 匹配包含 tcp 的行
tail /etc/services |awk '/^[a-z0-9]{8} /{print $0}' 匹配第一個字段是 8 個字符的行
tail /etc/services |awk 'BEGIN{print"Service\t\tPort\t\t\tDescription\n==="}{print
$0}' 打印頁眉
tail /etc/services |awk '/blp5/ && /tcp/{print $0}' 記錄blp5和tcp的行
echo "www.baidu.com/user/test.html" |awk 'BEGIN{RS="/"}{print $0}' 以/進行分割
tail -n2 /etc/services |awk 'BEGIN{RS="/";ORS="#"}{print $0}' 替換字符
(7)網絡類
1.ping
功能:用來確認網絡連接是暢通的,測網速
ping www.baidu.com
2.ifconfig、ifup、ifdown
功能:查看用戶網絡配置
ifconfig eth0 顯示一個以太網卡的配置
ifconfig eth0 192.168.1.1 netmask 255.255.255.0 設置地址
ifup eth0 啟用eth0
ifdown eth0 禁用eth0
3.ssh
功能:遠程登錄到其他主機
ssh -l root 192.168.1.1 //使用root登錄192.168.1.1
4.scp
功能:用于Linux之間復制文件和目錄
scp file root@192.168.1.1:/root 拷貝file文件到ip為192.168.1.1的主機/root目錄下
scp root@192.168.1.1:/root/1.c ./ 拷貝ip為192.168.1.1主機root目錄下的1.c文件到本地主機當前目錄
5.telnet
功能:TELNET協議的遠程登錄
telnet 192.168.1.1 登錄指定ip
telnet 192.168.1.1 6666 登錄指定ip和端口
telnet www.baidu.com 登錄指定網站
6.route
功能:查看路由信息
route 顯示路由信息。
route add –host 192.168.1.66 dev eth0 添加路由
route add –net 192.168.1.0 netmask 255.255.255.0 gw 192.168.1.1 給子網192.168.1.0添加路由和網關
route add default gw 192.168.3.1 添加默認網關地址192.168.3.1
route del –host 192.168.1.66 dev eth0 刪除路由
route change 192.168.1.0 mask 255.255.255.0 192.168.3.123 將子網 192.168.1.0 的下一躍點地址設置為 192.168.3.123
7.netstat
功能:顯示各種網絡相關信息
netstat 顯示本機網絡連接情況。
netstat –a 顯示所有的有效連接信息
netstat -l 列出處于監聽的socket
netstat –ac每隔1秒刷新1次顯示,直到用戶中斷顯示。
netstat -i 顯示網絡接口列表
netstat –r 顯示路由表。
netstat -an | grep ':22' 找出運行在指定端口的進程
netstat -apn | grep ssh 找出程序的運行端口
netstat –st 顯示TCP端口信息。
netstat –su 顯示UDP端口信息。
netstat –s 顯示各個協議的統計信息。
8.iptables
功能:防火墻設置
iptables -L -n 查看本機iptables
iptables -F 清除預設表filter中的所有規則鏈的規則
iptables -X 清除預設表filter中使用者自定鏈中的規則
service iptables restart 重啟防火墻
iptables -A INPUT -p tcp --dport 80 -j ACCEPT 開啟80端口
iptables -A INPUT -s 192.168.3.126 -p tcp --dport 22 -j ACCEPT 限制指定ip登錄ssh
iptables -t filter -A INPUT -s 192.168.1.66 -i eth0 -j DROP 禁止指定ip從eth0訪問本機
iptables -I FORWARD -s 192.168.1.66 -j DROP 禁止指定ip上網
iptables -A FORWARD -f -m limit --limit 200/s --limit-burst 200 -j ACCEPT
處理ip碎片數量