五、linux命令篇
linux的命令是linux里面相當重要的部分,如果命令不能很好的掌握,那linux用起來真的比較麻煩阿,但是命令好像很不少阿,在命令行上按2次Tab鍵,你就可以看到有多少命令了,我看了下我這里是2312,這么多命令嗎?那要記住這么多命令不是要把人給累死阿,那首先,這么多命令不是一定都經常用到,平時用的就那么一些,其次,我們還有重要的幫助命令可以幫助我們實現遇到要實現命令的時候有忘記怎么用時的問題了,2個幫助命令就是? man??? 和????? info???
關機命令?? shutdown?? 記得我第一用linux的時候,不會關機,我就按住power鍵關機,可笑吧,其實我是知道不能這么關的,但是我不知道應該怎么關阿,那現在知道了,要用shutdown來關了。等等,關機前是不是要做點什么阿,就這么直接關機?那我們知道linux是個真正的分時多用戶多任務系統,如果我們關機了影響到別人的操作怎么辦?那關機前是不是還要看看系統在做些什么,是不是有人還在用著這個系統?那怎么查詢呢?如果要看當前有誰在線,我們可以用? who命令,如果要看網絡的聯機狀態,可以用netstat -a命令,要查看后臺執行的程序,可以執行 ps -aux命令。使用這些命令就可以了解主機當前的使用狀態,就可以判斷是否可以關機了。另外就是,通知在線用戶關機的時間,可以讓在線用戶一定時間結束其工作。對了,關機的時候,系統會自動調用一個命令? sync,這個是什么命令呢,是數據同步寫入磁盤命令,主要作用是將內存中尚未更新進硬盤的數據及時的寫入。雖然系統會自動調用,但是我們最好還是多執行一次這個命令比較放心。linux最常用命令?shutdown屬于系統管理員命令,我在這里就寫一些例子就可以了。
/sbin/shutdown -h +10 ' I will shutdown after 10 mins'???
命令告訴大家會在10分鐘后關機。
shutdown -h now??? 立刻關機
shutdown -h 20:30???? 在20:30的時候關機
shutdown -h? +10????? 在十分鐘后關機
shutdown -r now?????? 立刻重新啟動
shutdown -r +30?????? 在30分鐘以后重啟
shutdown -k now 'This system will reboot'
僅發出警告而系統不重啟
在學習命令的時候,有個重要的概念,那就是路徑。路徑分為絕對路徑和相對路徑
絕對路徑:路徑的寫法"一定是由根目錄/寫起"例如,/usr/local/doc
相對路徑:路徑最前面沒有根目錄/字樣。例如,當前目錄是usr? 要進入其下的local,那就cd local即可。指的是相對于當前目錄的路徑。unix和linux的區別?
關于路徑,高手們說,如果是在編寫程序shell scripts,務必使用絕對路徑。這樣可以避免很多問題的產生。
目錄的相關操作及命令
1,特殊目錄,特殊目錄包括,? .?? 一個點,表示此層目錄?? ..?? 表示上一層目錄
-? 表示前一個目錄?? ~? 表示當前用戶身份所在的目錄。
2,cd? (切換目錄)?? change? directory
例子:cd?????????? 只有cd? 表示回到自己的家目錄
cd? /var/bin??? 進入目錄var下面的bin目錄
cd? ..????? 返回上層目錄
cd? ../test????? 操作前目錄是home/test1? 操作后進入目錄home/test
3,pwd(顯示當前所在的目錄)??? print working directory
例子:pwd?????? 后面無參數,表示顯示的是當前所在的目錄
pwd? -P?? 顯示被連接過的目錄背后真是正確的目錄
4,mkdir? (建立新目錄)?? make? directory
參數: -m 設置權限。直接設置或者說強行設置權限。
-p? 建立目錄遞歸
mkdir test?? 建立一個名為test的目錄
mkdir? -p? test1/test2/test3? 依次在當前目錄下面分別建立幾個目錄
mkdir?? -m 711 test2?? 建立有711權限的目錄test2
5,rmdir? (刪除空目錄)remove? directory
rmdir?? test3???? 刪除空目錄test3??? 非空則不能刪除
rmdir? -p? test1/test2/test3?? 依次刪除空目錄test1? test2和test3
如果要刪除非空目錄,可以用? rm? -rf? test? 即可
6,$PATH 路徑變量
echo $PATH??? 顯示當前設置的路徑變量
PATH="$PATH":/root???? 添加/root進路徑變量
另外個執行命令的方法是利用絕對路徑,這個需要你對命令的路徑很熟悉的情況下才行。UNIX/LINUX,但是有一點需要說明的是絕對路徑發出的命令比用路徑變量發出的命令正確的多,因為利用PATH只是搜索命令路徑然后執行的,這其中就存在路徑中多個相同命令的執行問題。
7,ls??? (查看目錄)? list
ls? /usr???? 查看usr下面的目錄和文件
ls -d? /usr?? 僅查看usr下面的目錄
ls -a /usr? 列出全部目錄和文件包括隱藏屬性
ls -l /usr?? 單行列出文件或目錄,并且詳細顯示屬性和權限
8,cp? (復制)copy
cp命令的用途很多,除了單純的復制之外,還可以建立連接文件(就是快捷方式),比較兩個文件的新舊而予以更新,以及復制整個目錄等等。
格式? cp? 參數?? 源文件?? 目標文件
cp ~/.bashrc? bashrc??? 將家目錄下面的.bashrc 拷貝生成bashrc
cp /var/log/wtmp? .???? 將/var/log/wtmp復制到當前目錄下,后面的點不能忘記
cp -a /var/log/wtmp wtmp2? 把文件的所有屬性一起復制,用的參數-a
cp -u ~/.bashrc /tmp/bashrc? 若~/.bashrc比 /tmp/bashrc新,則復制。通常用于備份。這個是-u的作用。
cp ~/.bashrc ~/.bash /tmp? 將家目錄的.bashrc和 .bash都復制到? /tmp下
cp這個命令的用法有很多,這里就簡單的寫到這里。如何自學linux,
9,rm (刪除文件或目錄)? romove
rm -f bashrc??? 強制刪除bashrc這個文件
rm -i bashrc???? 詢問是否要刪除,需要按y確認
rm -r test1/test2/test3??? 遞歸連續刪除多個目錄,依次刪除test1 test2 test3目錄
這里有個很有用的命令就是rm -rf 強制刪除非空目錄,這個命令用的時候,自己一定要清楚,要格外小心,因為他將強行刪除目錄總的所有內容包括這個目錄本身。
10,mv (移動文件與目錄,或者重命名)
mv test test2? 命令將test改名為test2
mv a b test?? 命令將文件或目錄a和b移動到test里面去
同樣mv有-f? 強制移動和-i?? 提示移動。另外他還有個-u的參數,是用來對比數據的新舊而決定是否需要移動。
11,basename? 獲取路徑的文件名,常用在shell腳本里,這里就簡單的舉個例子
basename? /etc/sysconfig/network?? 命令執行后的結果是network?? 獲取了這個路徑中的文件名network?? 還有個命令是獲取路徑的目錄名稱。對應的命令是dirname?? 例如dirname? /etc/sysconfig/network?? 命令執行后的結果是/etc/sysconfig?? 同樣這個命令也常用于shell腳本里
12,來一個查看文件內容命令的大集合
cat? 由第一行開始顯示文件內容,這個命令很有用處。
tac? 從最后一樣開始顯示,
nl??? 顯示的時候,輸出行號,
more? 一頁一頁地顯示文件內容
less?? 可以翻頁的一頁一頁地顯示內容????? 這個命令最好在此類中常用,因為方便
head? 只看前幾行,默認前10行, head -n 20? file? 顯示file的前20行
tail???? 只看最后幾行
od????? 以二進制方式讀取文件內容
13,touch?? 修改文件時間與創建新文件?
一個文件在linux下會有三個時間屬性??
mtime 修改時間(modification time):當該文件的 內容數據更改時,就會更新這個時間,內容數據指的是文件的內容,而不是文件的屬性。shell入門、
ctime? 狀態時間? (status time):當文件的狀態也就是權限或屬性更改時,就會更新這個時間。
atime? 訪問時間? (access time) 當 讀取文件內容? 時,就會更新這個讀取時間。
touch aa???? 創建空文件aa
ls -l?? --time=ctime /etc/man.conf?? 顯示這個文件的狀態時間
touch -d "3 days ago" aa????? 修改mtime和atime為3天前
touch? -t? 0907021530 aa? 修改aa的mtime和atime為2009/07/02的15:30
14,chgrp? 更改所屬用戶組?? change group
chgrp? test? aa.log?? 文件aa.log的用戶組更改為 test
15,chown?? 更改文件擁有者? change? owner 還可以直接修改用戶組的名稱。如果要將目錄下的所有子目錄或者文件同時更改文件擁有者的話,直接加上-R的參數就可以了。
chown bin install.log? 將install.log的文件擁有者改為bin
chown? root:root? install.log? 將install.log的文件擁有者改為root并且所屬組也改為root
16,chmod? 更改文件屬性。
chmod 777 .bashrc?? 將.bashrc的屬性改變為屬性全開
chmod u=rwx,go=rx .bashrc? 將.bashrc文件的屬性改為文件擁有者有rwx,組和其他用戶的權限為rx
chmod a+w .bashrc??? 將 .bashrc的文件擁有者,組,其他用戶的權限都加上w權限
chmod o-w .bashrc?? 將 .bashrc的其他用戶對他的權限取消掉w權限