當前位置:首頁 > 嵌入式培訓(xùn) > 嵌入式學(xué)習(xí) > 講師博文 > Shell命令
一、認識Shell
在Linux系統(tǒng)中,Shell充當著用戶與Linux內(nèi)核的橋梁,俗稱殼保護著Linux內(nèi)核,同時也負責完成用戶與內(nèi)核之間的交互。
當用戶需要與內(nèi)核交互時,將命令傳遞至Shell,再由Shell將命令解析成內(nèi)核所能理解的指令,然后操作系統(tǒng)做出響應(yīng)對硬件進行控制,最后再將結(jié)果通過Shell返回給用戶。
經(jīng)過多年的發(fā)展,由不同的機構(gòu)、針對不同的目的,開發(fā)出許多不同類型的Shell程序。目前流行的Shell主要有幾種 :
Bourne Shell
Bourne Again Shell
C Shell
K Shell
Shell for Root
Bourne Again Shell簡稱Bash,由于易用和免費,Bash 在日常工作中被廣泛使用。同時Bash 也是大多數(shù)Linux 系統(tǒng)默認的 Shell。
二、Shell命令
(1)文件目錄類
1.pwd
功能:顯示當前絕對路徑
2.ls
功能:顯示文件和目錄的信息
ls 以默認方式顯示當前目錄下的內(nèi)容
ls -a 顯示所有文件包括隱藏文件
ls -l 顯示詳細信息
3.cd
功能:切換目錄
cd dir 切換到dir目錄
cd / 切換到根目錄
cd .. 切換到到上一級目錄
cd ~ 切換到用戶目錄,比如是root用戶,則切換到/root下
4.mkdir
功能:創(chuàng)建目錄
mkdir aa 創(chuàng)建目錄aa
mkdir a/b/c -p 創(chuàng)建多級目錄
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
功能:顯示文件的內(nèi)容
cat 1.cpp
9.head、tail
功能:head顯示文件前10行(默認)
功能:tail顯示文件后10行(默認)
10.touch
功能:創(chuàng)建文件或修改文件時間戳
11.du
功能:顯示指定的目錄或文件所占用的磁盤空間
du -sh /home 以K,M,G為單位顯示home的總大小
12.ln
功能:建立軟連接和硬連接
ln -s dir linkdir 給dir創(chuàng)建軟連接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)系統(tǒng)管理類
1.shutdown 、reboot
功能:關(guān)閉或重啟計算機
shutdown -h now
shutdown -r +10 10分鐘后重啟
shutdown -c 取消重啟或關(guān)機
reboot 重啟
2.su
功能:切換用戶
su farsight 切換到farsight用戶
su - 切換到root用戶,同時使用該用戶環(huán)境
3.adduser
功能:添加用戶
adduser farsight
4.passwd
功能:設(shè)置或更改用戶密碼
passwd user 修改user的密碼
5.chown
功能:更改文件或目錄的所有者
chown farsight /dir 將dir設(shè)為farsight用戶所有
6.chmod
功能:修改文件權(quán)限
chmod 777 1.sh
chmod +x 1.sh
7.sudo
功能:用來以其他身份來執(zhí)行命令,預(yù)設(shè)的身份為root
8.man
功能:幫助命令
man 1 ls 查看ls命令手冊
man 2 socket 查看socket函數(shù)手冊
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 顯示當前系統(tǒng)詳細進程
ps -aux 顯示所有包含其他使用者的行程
2.pstree
功能:將所有行程以樹狀圖顯示
3.top
功能:實時顯示process的動態(tài)
4.kill
功能:給進程發(fā)信號
kill -signum pid 給pid發(fā)信號
kill pid 結(jié)束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 顯示系統(tǒng)中所有已經(jīng)安裝的 deb 包
dpkg -L cmatrix 顯示軟件cmatrix所提供的文件列表
dpkg --contents package.deb 顯示尚未安裝的一個包所提供的文件列表
dpkg -S /bin/ping 確認ping命令由哪個deb包提供
(6)文本處理類
1.wc
功能:統(tǒng)計文本文件
wc -l 1.txt 統(tǒng)計1.txt的行數(shù)
wc -w 1.txt 統(tǒng)計1.txt的字數(shù)
wc -c 1.txt 統(tǒng)計1.txt的字節(jié)數(shù)
2.grep
功能:過濾來自一個文件或標準輸入匹配模式內(nèi)容
ps -ef | grep "nginx" 顯示關(guān)于nginx的進程信息
grep "jack" *.txt 在所有的txt文件中查詢關(guān)鍵字jack
grep -r "id" * 遞歸搜索所有文件中的關(guān)鍵字id
grep -n root /etc/passwd 將/etc/passwd,有出現(xiàn) root 的行取出來顯示行號
dmesg | grep -n --color=auto 'eth'
dmesg 列出核心信息找出內(nèi)含 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結(jié)束的行
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 是一個處理文本的編程語言工具,能用簡短的程序處理標準輸入或文件、數(shù)據(jù)排序、計算以及生成報表等等
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)網(wǎng)絡(luò)類
1.ping
功能:用來確認網(wǎng)絡(luò)連接是暢通的,測網(wǎng)速
ping www.baidu.com
2.ifconfig、ifup、ifdown
功能:查看用戶網(wǎng)絡(luò)配置
ifconfig eth0 顯示一個以太網(wǎng)卡的配置
ifconfig eth0 192.168.1.1 netmask 255.255.255.0 設(shè)置地址
ifup eth0 啟用eth0
ifdown eth0 禁用eth0
3.ssh
功能:遠程登錄到其他主機
ssh -l root 192.168.1.1 //使用root登錄192.168.1.1
4.scp
功能:用于Linux之間復(fù)制文件和目錄
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協(xié)議的遠程登錄
telnet 192.168.1.1 登錄指定ip
telnet 192.168.1.1 6666 登錄指定ip和端口
telnet www.baidu.com 登錄指定網(wǎng)站
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 給子網(wǎng)192.168.1.0添加路由和網(wǎng)關(guān)
route add default gw 192.168.3.1 添加默認網(wǎng)關(guān)地址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 將子網(wǎng) 192.168.1.0 的下一躍點地址設(shè)置為 192.168.3.123
7.netstat
功能:顯示各種網(wǎng)絡(luò)相關(guān)信息
netstat 顯示本機網(wǎng)絡(luò)連接情況。
netstat –a 顯示所有的有效連接信息
netstat -l 列出處于監(jiān)聽的socket
netstat –ac每隔1秒刷新1次顯示,直到用戶中斷顯示。
netstat -i 顯示網(wǎng)絡(luò)接口列表
netstat –r 顯示路由表。
netstat -an | grep ':22' 找出運行在指定端口的進程
netstat -apn | grep ssh 找出程序的運行端口
netstat –st 顯示TCP端口信息。
netstat –su 顯示UDP端口信息。
netstat –s 顯示各個協(xié)議的統(tǒng)計信息。
8.iptables
功能:防火墻設(shè)置
iptables -L -n 查看本機iptables
iptables -F 清除預(yù)設(shè)表filter中的所有規(guī)則鏈的規(guī)則
iptables -X 清除預(yù)設(shè)表filter中使用者自定鏈中的規(guī)則
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上網(wǎng)
iptables -A FORWARD -f -m limit --limit 200/s --limit-burst 200 -j ACCEPT
處理ip碎片數(shù)量