- 相關(guān)推薦
linux shell編程的簡(jiǎn)介
從程序員的角度來(lái)看, Shell本身是一種用C語(yǔ)言編寫(xiě)的程序,從用戶(hù)的角度來(lái)看,Shell是用戶(hù)與Linux操作系統溝通的橋梁。用戶(hù)既可以輸入命令執行,又可以利用 Shell腳本編程,完成更加復雜的操作。在Linux GUI日益完善的今天,在系統管理等領(lǐng)域,Shell編程仍然起著(zhù)不可忽視的作用。深入地了解和熟練地掌握Shell編程,是每一個(gè)Linux用戶(hù)的必修功課之一。
Linux的Shell種類(lèi)眾多,常見(jiàn)的有:Bourne Shell(/usr/bin/sh或/bin/sh)、Bourne Again Shell(/bin/bash)、C Shell(/usr/bin/csh)、K Shell(/usr/bin/ksh)、Shell for Root(/sbin/sh),等等。不同的Shell語(yǔ)言的語(yǔ)法有所不同,所以不能交換使用。每種Shell都有其特色之處,基本上,掌握其中任何一種就足夠了。在本文中,我們關(guān)注的重點(diǎn)是Bash,也就是Bourne Again Shell,由于易用和免費,Bash在日常工作中被廣泛使用;同時(shí),Bash也是大多數Linux系統默認的Shell。在一般情況下,人們并不區分 Bourne Shell和Bourne Again Shell,所以,在下面的文字中,我們可以看到#!/bin/sh,它同樣也可以改為#!/bin/bash。
利用vi等文本編輯器編寫(xiě)Shell腳本的格式是固定的,如下:
#!/bin/sh
#comments
Your commands go here
首行中的符號#!告訴系統其后路徑所指定的程序即是解釋此腳本文件的Shell程序。如果首行沒(méi)有這句話(huà),在執行腳本文件的時(shí)候,將會(huì )出現錯誤。后續的部分就是主程序,Shell腳本像高級語(yǔ)言一樣,也有變量賦值,也有控制語(yǔ)句。除第一行外,以#開(kāi)頭的行就是注釋行,直到此行的結束。如果一行未完成,可以在行尾加上",這個(gè)符號表明下一行與此行會(huì )合并為同一行。
#號開(kāi)頭的語(yǔ)句是注視行。與C編程中的//一樣。
編輯完畢,將腳本存盤(pán)為filename.sh,文件名后綴sh表明這是一個(gè)Bash腳本文件。執行腳本的時(shí)候,要先將腳本文件的屬性改為可執行的:
chmod +x filename.sh
執行腳本的方法是:
./filename.sh
下面我們從經(jīng)典的“hello world”入手,看一看最簡(jiǎn)單的Shell腳本的模樣。
#!/bin/sh
#print hello world in the console window
a = "hello world"
echo $a
Linux認證常用命令及技巧
一. 通用命令:
1. date :print or set the system date and time
2. stty -a: 可以查看或者打印控制字符(Ctrl-C, Ctrl-D, Ctrl-Z等)
3. passwd: print or set the system date and time (用passwd -h查看)
4. logout, login: 登錄shell的登錄和注銷(xiāo)命令
5. pwd: print or set the system date and time
6. more, less, head tail: 顯示或部分顯示文件內容.
7. lp/lpstat/cancel, lpr/lpq/lprm: 打印文件.
8. 更改文件權限: chmod u+x...
9. 刪除非空目錄:rm -fr dir
10.拷貝目錄: cp -R dir
11. fg jobid :可以將一個(gè)后臺進(jìn)程放到前臺。
Ctrl-z 可以將前臺進(jìn)程掛起(suspend), 然后可以用bg jobid 讓其到后臺運行。
job & 可以直接讓job直接在后臺運行。
12. kill 的作用: send a signal to a process. eg: kill -9 發(fā)送的是SIG_KILL信號。。。 具體發(fā)送什么信號 可以通過(guò) man kill 查看。
13. ps 的用法, ps -e 或 ps -o pid,ppid,session,tpgid, comm (其中session顯示的sessionid, tpgid顯示前臺進(jìn)程組id, comm顯示命令名稱(chēng)。)
二 .ubuntu常用命令:
1. dpkg: package manager for Debian
* 安裝: dpkg -i package
* 卸載: dpkg -r package
* 卸載并刪除配置文件: dpkg -P |--purge package
* 如果安裝一個(gè)包時(shí)。說(shuō)依賴(lài)某些庫。 可以先 apt-get install somelib...
* 查看軟件包安裝內容 :dpkg -L package
* 查看文件由哪個(gè)軟件包提供: dpkg -S filename
* 另外 dpkg還有 dselect和aptitude 兩個(gè)frontend.
2. apt
* 安裝: apt-get install packs
* apt-get update : 更新源
* apt-get upgrade: 升級系統。
* apt-get dist-upgrade: 智能升級。安裝新軟件包,刪除廢棄的軟件包
* apt-get -f install : -f == --fix broken 修復依賴(lài)
* apt-get autoremove: 自動(dòng)刪除無(wú)用的軟件
* apt-get remove packages :刪除軟件
* apt-get remove package --purge 刪除包并清除配置文件
* 清除所以刪除包的殘余配置文件: dpkg -l |grep ^rc|awk '{print $2}' |tr ["/n"] [" "]|sudo xargs dpkg -P
* 安裝軟件時(shí)候包的臨時(shí)存放目錄 : /var/cache/apt/archives
* 清除該目錄: apt-get clean
* 清除該目錄的舊版本的軟件緩存: apt-get autoclean
* 查詢(xún)軟件some的依賴(lài)包: apt-cache depends some
* 查詢(xún)軟件some被哪些包依賴(lài): apt-get rdepends some
* 搜索軟件: apt-cache search name|regexp
* 查看軟件包的作用:apt-cache show package
* 查看一個(gè)軟件的編譯依賴(lài)庫: apt-cache showsrc packagename|grep Build-Depends
* 下載軟件的源代碼 : apt-get source packagename (注: sources.list 中應該有 deb-src 源)
* 安裝軟件包源碼的同時(shí), 安裝其編譯環(huán)境 :apt-get build-dep packagename (有deb-src源)
* 如何將本地光盤(pán)加入安裝源列表: apt-cdrom add
3. 系統命令:
* 查看內核版本: uname -a
* 查看ubuntu 版本: cat /etc/issue
* 查看網(wǎng)卡狀態(tài) : ethtool eth0
* 查看內存,cpu的信息: cat /proc/meminfo ; cat /proc/cpuinfo
(/proc下面的有很多系統信息)
* 打印文件系統空間使用情況: df -h
* 查看硬盤(pán)分區情況: fdisk -l
* 產(chǎn)看文件大小: du -h filename;
* 查看目錄大。 du -hs dirname ; du -h dirname是查看目錄下所有文件的大小
* 查看內存的使用: free -m|-g|-k
* 查看進(jìn)程: ps -e 或ps -aux -->顯示用戶(hù)
* 殺掉進(jìn)程: kill pid
* 強制殺掉: killall -9 processname
4. 網(wǎng)絡(luò )相關(guān):
* 配置 ADSL: sudo pppoeconf
* ADSL手工撥號: sudo pon dsl-provider
* 激活 ADSL : sudo /etc/ppp/pppoe_on_boot
* 斷開(kāi) ADSL: sudo poff
* 根據IP查網(wǎng)卡地址: arping IP地址
* 產(chǎn)看本地網(wǎng)絡(luò )信息(包括ip等): ifconfig | ifconfig eth0
* 查看路由信息: netstat -r
* 關(guān)閉網(wǎng)卡: sudo ifconfig eth0 down
* 啟用網(wǎng)卡: sudo ifconfig eth0 up
* 添加一個(gè)服務(wù): sudo update-rc.d 服務(wù)名 defaults 99
* 刪除一個(gè)服務(wù): sudo update-rc.d 服務(wù)名 remove
* 臨時(shí)重啟一個(gè)服務(wù): /etc/init.d/服務(wù)名 restart
* 臨時(shí)關(guān)閉一個(gè)服務(wù): /etc/init.d/服務(wù)名 stop
* 臨時(shí)啟動(dòng)一個(gè)服務(wù): /etc/init.d/服務(wù)名 start
* 控制臺下顯示中文: sudo apt-get install zhcon
* 查找某個(gè)文件: whereis filename 或 find 目錄 -name 文件名
*通過(guò)ssh傳輸文件
scp -rp /path/filename username@remoteIP:/path #將本地文件拷貝到服務(wù)器上
scp -rp username@remoteIP:/path/filename /path #將遠程文件從服務(wù)器下載到本地
5. 壓縮:
*解壓縮 a.tar.gz: tar zxvf a.tar.gz
*解壓縮 a.tar.bz2: tar jxvf a.tar.bz2
*壓縮aaa bbb目錄為xxx.tar.gz: tar zcvf xxx.tar.gz aaa bbb
*壓縮aaa bbb目錄為xxx.tar.bz2: tar jcvf xxx.tar.bz2 aaa bbb
6. Nautilus:
特殊 URI 地址
* computer:/// - 全部掛載的設備和網(wǎng)絡(luò )
* network:/// - 瀏覽可用的網(wǎng)絡(luò )
* burn:/// - 一個(gè)刻錄 CDs/DVDs 的數據虛擬目錄
* smb:/// - 可用的 windows/samba 網(wǎng)絡(luò )資源
* x-nautilus-desktop:/// - 桌面項目和圖標
* file:/// - 本地文件
* trash:/// - 本地回收站目錄
* ftp:// - FTP 文件夾
* ssh:// - SSH 文件夾
* fonts:/// - 字體文件夾,可將字體文件拖到此處以完成安裝
* themes:/// - 系統主題文件夾
* 顯示隱藏文件: Ctrl+h
* 顯示地址欄: Ctrl+l
* 查看已安裝字體: 在nautilus的地址欄里輸入”fonts:///“,就可以查看本機所有的fonts
7.補充部分:
* 查看本地所有的tpc,udp監聽(tīng)端口: netstat -tupln (t=tcp, u=udp, p=program, l=listen, n=numric)
* 通過(guò)man搜說(shuō)相關(guān)命令: man -k keyword . eg: man -k user
* 或者用 apropos
* 統計文件所占用的實(shí)際磁盤(pán)空間: du (du - estimate file space usage)
* 統計文件中的字符,字節數: wc -c/-l/-w (wc - print the number of newlines, words, and bytes in files)
* 查看文件的內容: od -x/-c/.... (od - dump files in octal and other formats)
我認為od最有用的就是文件的字節流了: od -t x1 filename
查看文件的 Ascii 碼形式: od -t c filename (其中統計信息最左邊的是: 字節數)
* 查找命令所在文件的位置: which od 輸出: /usr/bin/od
查看該文件由哪個(gè)包提供: dpkg -S /usr/bin/od 輸出: coreutils: /usr/bin/od
再查看coreutils包的全部?jì)热菥椭懒薼inux的核心命令: dpkg -L coreutils
然后 info coreutils 哈哈,認真學(xué)吧, 滿(mǎn)世界都是命令!
* 可以用man 命令產(chǎn)看某個(gè)命令的所有section 的解釋: man -a tty
然后用q,和next 轉換到下一個(gè)section的解釋
* bash 的好用的快捷鍵:
ctrl+a:光標移到行首。
ctrl+b:光標左移一個(gè)字母
ctrl+c:殺死當前進(jìn)程。
ctrl+d:退出當前 Shell。
ctrl+e:光標移到行尾。
ctrl+h:刪除光標前一個(gè)字符,同 backspace 鍵相同。
ctrl+k:清除光標后至行尾的內容。
ctrl+l:清屏,相當于clear。
ctrl+r:搜索之前打過(guò)的命令。會(huì )有一個(gè)提示,根據你輸入的關(guān)鍵字進(jìn)行搜索bash的history
ctrl+u: 清除光標前至行首間的所有內容。
ctrl+w: 移除光標前的一個(gè)單詞
ctrl+t: 交換光標位置前的兩個(gè)字符
ctrl+y: 粘貼或者恢復上次的刪除
ctrl+d: 刪除光標所在字母;注意和backspace以及ctrl+h的區別,這2個(gè)是刪除光標前的字符
ctrl+f: 光標右移
ctrl+z : 把當前進(jìn)程轉到后臺運行,使用’ fg ‘命令恢復。比如top -d1 然后ctrl+z ,到后臺,然后fg,重新恢復
* 快速粘貼:先在一個(gè)地方選中文字,在欲粘貼的地方按鼠標 中鍵 即可。
* 等效中鍵:a 、按下滑輪等效于中鍵。b、同時(shí)按下鼠標 左右鍵,等效于中鍵。
* 快速重啟X服務(wù): 同時(shí)按下: Alt + Ctrl + Backspace 三個(gè)鍵。
* 打開(kāi)"運行"窗口: 同時(shí)按下 Alt + F2 鍵。
* 戴屏: a、全屏:直接按下 PrtScr 鍵。
b、當前窗口:同時(shí)按下 Alt + PrtScr 鍵。
c、延時(shí)戴屏:在 終端 或 "運行"窗口中輸入命令: gnome-screenshot --delay 3 ,將延時(shí) 3 秒后戴屏。
* 直接將 文件管理器 中的文件拖到 GNOME終端 中就可以在終端中得到完整的路徑名。 8.ulimit
ulimit:顯示(或設置)用戶(hù)可以使用的資源的限制(limit),這限制分為軟限制(當前限制)和硬限制(上限),其中硬限制是軟限制的上限值,應用程序在運行過(guò)程中使用的系統資源不超過(guò)相應的軟限制,任何的超越都導致進(jìn)程的終止。
ulimited 不限制用戶(hù)可以使用的資源,但本設置對可打開(kāi)的最大文件數(max open files)
和可同時(shí)運行的最大進(jìn)程數(max user processes)無(wú)效
-a 列出所有當前資源極限
-c 設置core文件的最大值.單位:blocks
-d 設置一個(gè)進(jìn)程的數據段的最大值.單位:kbytes
-f Shell 創(chuàng )建文件的文件大小的最大值,單位:blocks
-h 指定設置某個(gè)給定資源的硬極限。如果用戶(hù)擁有 root 用戶(hù)權限,可以增大硬極限。任何用戶(hù)均可減少硬極限
-l 可以鎖住的物理內存的最大值
-m 可以使用的常駐內存的最大值,單位:kbytes
-n 每個(gè)進(jìn)程可以同時(shí)打開(kāi)的最大文件數
-p 設置管道的最大值,單位為block,1block=512bytes
-s 指定堆棧的最大值:?jiǎn)挝唬簁bytes
-S 指定為給定的資源設置軟極限。軟極限可增大到硬極限的值。如果 -H 和 -S 標志均未指定,極限適用于以上二者
-t 指定每個(gè)進(jìn)程所使用的秒數,單位:seconds
-u 可以運行的最大并發(fā)進(jìn)程數
-v Shell可使用的最大的虛擬內存,單位:kbytes
eg: ulimit -c 1000(可以先通過(guò)ulimit -c 查看原來(lái)的值)
【linux shell編程的簡(jiǎn)介】相關(guān)文章:
Linux shell常用命令匯總10-26
Linux系統shell工具打印輸出08-16
Linux Shell文本處理工具10-08
Linux文件系統簡(jiǎn)介06-01
Linux流行的廠(chǎng)商版本簡(jiǎn)介10-12
linux下etc/fstab文件的簡(jiǎn)介10-23
2024年Linux認證考試要點(diǎn):shell程序控制結構語(yǔ)句09-20
php調用shell的方法技巧07-15
Linux認證概念10-29