=============================================================================
Unix/Linux最主要的應用領域是基礎伺服器應用,
如DNS伺服器(域名系統 )、DHCP伺服器(動态主機配置協定)、Web伺服器(網站伺服器)、FTP伺服器(檔案傳輸協定)、防火牆等。
X Window系統不是Unix/Linux作業系統的必須的構成部分,而隻是一個可選的應用程式元件。
純字元界面又叫文本模式。
-rwxrwxrwx 所有的使用者都可讀可寫可執行
-rwx------ 檔案的所屬使用者可以讀寫執行,但其他使用者都不可讀寫執行
-rwxrwx--- 檔案的所屬使用者群組内使用者可以讀寫執行,但其他使用者不可讀寫執行
---------- 所有的使用者都不可讀寫執行
第一位表示的檔案意義:
“-”表示正常檔案;“d”表示目錄;“c”表示字元裝置檔案;“b”表示塊裝置檔案;“s”表示管道檔案;“l”表示連結檔案。
檔案存取權限:從左到右每3位為一組,依次代表檔案擁有者、同組使用者和其他使用者的存取權限。
通常檔案共有3個權限:“r”表示隻讀;“w”表示可寫;“x”表示可執行;“-”表示未設定。
linux檔案或者目錄名稱最長可以有265個字元,.代表目前目錄,..代表上一級目錄,
以.開頭的檔案為隐藏檔案,需要用-a參數才能顯示。
-a 顯示指定目錄下所有子目錄與檔案,包括隐藏檔案。
-l 以長格式顯示檔案的詳細資訊。
二者也可以結合使用 ,例如: ls -al
* 代表檔案名中所有字元
? 代表檔案名中任意一個字元
ls d* 查找以字母d開頭的所有的檔案
ls a*b 查找以字母a開頭,b結尾的所有檔案
ls a? 查找a開頭,檔案名隻有2個字母,第二個字元任意的檔案名
ls [abc]* 查找a或者b或者c開頭,後面任意的檔案名
ls [a-f]* 查找從a到f之間開頭的任意檔案名
ls [1-7]* 查找從1到7之間開頭的任意檔案名
注意:當“-”處于方括号之外,或“?”和“*”處于方括号内時不用使用轉義字元就已失去通配符的作用。如下:
ls [*] 查找以*開頭的檔案名
ls a-f 查找檔案名叫a-f的檔案
如果要使通配符作為普通字元使用,可以在其前面加上轉義字元\ 如下:
ls \*1 查找*1這個檔案名
重定向指令
> 輸出重定向:将某一指令的執行結果重定向到另外一個檔案中去
>> 附加輸出重定向
< 輸入重定向
ls > a.txt 把ls顯示的結果存放入檔案a.txt中
ls >> a.txt 追加重定向,如果a.txt已經有内容了,不會覆寫已有内容,而是在a.txt後面追加
more的功能是:顯示檔案内容,當檔案内容太多時,會出現快速滾屏,使得使用者無法看清檔案的内容,
此時可以使用more指令,每次隻顯示一頁,按下空格鍵可以顯示下一頁,按下q鍵退出顯示,按下h鍵可以擷取幫助。
例如:如果一個目錄裡面有特别多的檔案,現在要把所有的檔案名顯示出來的話,會出現滾屏,如何解決呢?
答:可以使用一個蠢的方法,把該目錄重定向某一個檔案裡面去,在使用more顯示該檔案的内容。
但是呢,比較麻煩和啰嗦,我們可以一次性完成,使用 | 管道符即可。
| 管道符:一個指令的輸出可以通過管道做為另一個指令的輸入
ls | more 把ls顯示的結果用分屏來顯示,即把ls的輸出作為more的輸入使用
cd abc 從目前目錄下進入abc子目錄
cd .. 傳回上一級目錄,即父目錄
cd . 傳回目前目錄(跟沒有操作是一樣的)但也是有意義的(随着後面的學習會發現)
cd 後面可跟絕對路徑,也可以跟相對路徑。如果省略目錄,則預設切換到目前使用者的主目錄。
檢視目前目錄指令
pwd 顯示目前路徑,使用pwd指令可以顯示目前的工作目錄,該指令很簡單,直接輸入pwd即可,後面不帶參數
mkdir abc 建立立一個檔案夾,名字叫abc
rmdir abc 删除檔案夾abc,rmdir隻能删除空目錄,如果目錄裡面有檔案,那麼删除失敗
rm a.txt 删除檔案a.txt
ln 源檔案 連結檔案
ln a.txt a 建立一個連結檔案,名字叫a,連結到a.txt,建立的是一個硬連結
ln -s 源檔案 連結檔案
ln -s a.txt b 建立一個連結檔案,名字叫b,連結到a.txt,建立的是一個軟連結
硬連結會占用磁盤空間,軟連結不會,如果目标檔案不存在了,那麼硬連結檔案還可以通路,但軟連結就不行了
cal 檢視目前月曆
date 顯示或設定時間
date '+%y,%m,%d,%H,%M,%S' 年,月,日,時,分,秒
cat 該指令可以用來檢視或者合并檔案内容
cat a.txt 檢視檔案a.txt的内容,但不會自動分屏
cat a1.txt a2.txt > a3.txt 将a1.txt a2.txt的内容合并為a3.txt
grep hello a.txt 在a.txt中查找字元串hello(指定檔案中搜尋指定字元内容)
grep printf stdio.h 在stdio.h中查找包含printf的行
grep -v printf stdio.h 在stdio.h中查找不包含printf的行
grep -n printf stdio.h 在stdio.h中查找所有包含printf的行及行号
grep -i printf stdio.h 在stdio.h中查找包含printf的行(忽略大小寫式的查找)
grep '^a ' stdio.h 在stdio.h檔案中查找以a開頭的行
grep ‘a$' stdio.h 在stdio.h檔案中查找以a結尾的行
grep '^a.b ' stdio.h 在stdio.h檔案中查找以a、任意一個字元和b開頭的行
wc -l a1.txt 計算檔案a.txt的行數
wc -w a1.txt 計算檔案a.txt的字數
wc -c a1.txt 計算檔案a.txt的字元數
find ./ -name 1.txt 從目前目錄開始查找所有的子目錄,名字為1.txt
find / -name 1.txt 從根目錄開始查找所有的子目錄,名字為1.txt
rm -i 1.txt 詢問是否删除掉檔案1.txt
rm -f 1.txt 強制删除掉檔案1.txt,忽略不存在的檔案,無需提示
rm -r 1.txt 遞歸地删除目錄下的内容
rm -rf * 強制删除目前目錄下所有的檔案和子目錄
cp [參數] 源檔案或目錄 目标檔案或目錄
cp ./2/a.txt ./1/a.txt 拷貝目前目錄下2目錄下的a.txt到目前目錄下的1目錄下
mv ./2/a.txt ./1/a.txt 将a.txt從目前目錄下2目錄下移動到目前目錄下1目錄下
mv 123.txt 1.txt 把123.txt改名為1.txt(檔案改名)
windows下的檔案一般都有擴充名,但linux下很多檔案沒有擴充名,即linux不依靠擴充名來區分檔案類型。
windows下所有的檔案類型都是通過檔案的擴充名實作的。
linux的擴充名隻是一個名而已,不代表檔案類型。
-----------------------------------------------------------------------------
file 1.exe 該指令得到檔案類型
clear linux的清屏
cls windows的清屏
ps -a 顯示終端上的所有程序,包括其他使用者的程序
ps -u 顯示程序的詳細狀态
ps -x 顯示沒有控制終端的程序
ps -w 顯示加寬,以便顯示更多的資訊
ps -r 隻顯示正在運作的程序
ps -aux 檢視所有的程序,包括前端背景 。注意:參數中的 - 可以有,也可以沒有哦
top指令 該指令用來動态顯示運作中的程序。top指令能夠在運作後,在指定的時間間隔更新顯示資訊。
可以在使用top指令時加上-d <interval>來指定顯示資訊更新的時間間隔。
keil 端口号 強行終止一個程式
思考題:如何把顯示的内容顯示成我所想要的。
多個指令結合起來用(小技巧)
ls -l | grep '^d' 隻把目錄顯示出來
ls -l | grep '^-' 隻把檔案顯示出來
whoami 該指令用于檢視目前系統目前賬号的使用者名
使用該指令的原因:
由于系統管理者通常需要使用多種身份登入系統,(因為linux是一個多使用者系統)
例如通常使用普通使用者登入系統,然後再以su指令切換到root身份對系統進行管理。
這時候就可以使用whoami來檢視目前使用者的身份
----------------------------------------
who指令
該指令用于檢視目前所有登入系統的使用者資訊
w指令
該指令也可以檢視登入目前系統的使用者資訊。
與who指令相比,w指令的功能更強大,它不但可以顯示目前有哪些使用者登入到系統,
還可以顯示這些使用者正在進行的操作,并給出更加詳細和科學的統計資料。
tar -cvf a.tar a 将目錄a打包為檔案a.tar,不壓縮(注意:其參數前面可以使用“-”,也可以不使用。)
tar -xvf a.tar 将a.tar還原
tar -t a.tar 列出a.tar中包含的檔案
gzip a.tar 将a.tar進行壓縮,得到a.tar.gz(此壓縮比很高的)
gzid -d a.tar.gz 解壓縮,得到a.tar
tar -xvf a.tar 将a.tar還原,得到裡面的檔案
先用tar打包,然後用gzip壓縮
先用gzip解壓,然後用tar提取檔案
指令行情況下如何同時執行多個程式?怎麼做呢?(即背景作業方法)
法一:若該程式想要一開始就放到背景去執行,則使用 指令& 例如:vi & 、top & (但注意top & 會被終止掉)
法二:若該程式已經在執行的話,先使用ctrl+z可以将程式調入背景,再用jobs 檢視背景運作的程式,
再通過 fg 編号 回到之前的程式
man 在通常使用man指令的時候,不用攜帶選項,即可直接查詢指令幫助手冊獲得查詢指令準确的用法。
reboot 用于重新啟動作業系統
init 6 用于重新啟動作業系統
shutdown –r now 立刻重新開機,但有提示
shutdown –h now 立刻關機,但有提示
init 0 立刻關機,但無提示
init 3 切換到指令行模式
init 5 切換到x windows模式
df指令 用于檢測檔案系統的某一磁盤空間占用和空餘情況
du指令 用于統計某一目錄或檔案所占磁盤空間的大小
mkfs指令 該指令相當于DOS/Windows系統中的格式化指令,用于建立指定的檔案系統
用rpm工具安裝應用軟體(參數組合使用)但不同的linux具有不同的安裝解除安裝軟體方法。
rpm -ivh 要安裝的安裝封包件名
在Unix/Linux系統中,不論是由本機或是遠端登入系統,每個系統都必須擁有一個賬号,
并且對于不同的系統資源擁有不同的使用權限。
标準賬号是作業系統安裝時,自動建立的使用者啟動相應的應用程式,超級使用者在向系統添加普通使用者的時候,
不能和系統中已有的标準使用者同名。
在大多數版本的Unix/Linux中,都不推薦直接使用root賬号登入系統。
當系統管理者需要從普通使用者切換到超級使用者時,可使用su或su -指令,然後輸入root賬号的密碼即可,而不用重新登入。
有一個問題:ubuntu下安裝的時候預設是不設定root密碼的,但切換到root使用者的時候又需要提供root密碼,如何解決呢?
答:執行指令設定root密碼:sudo passwd root回車 後在輸入密碼即可設定完畢root使用者的密碼。
若需要傳回原來的普通使用者賬号時,直接輸入exit指令即可。
(注意:Centos和RedHat在安裝的時候就已經讓你設定root密碼了)
如果要進入别的普通使用者賬号,可在su指令後直接加上其他賬号,然後輸入密碼。
如果su指令後沒有攜帶使用者名,系統預設從當使用者切換到超級使用者,并提示使用者輸入超級使用者密碼。
su和su –指令不同之處在于,su -切換到對應的使用者時會将目前的工作目錄自動轉換到切換後的使用者的主目錄。
添加使用者或者組時,隻有root使用者才有這個權限。
添加/删除一個組:
groupadd abc 添加一個組,名字叫abc
groupdel abc 删除一個組,
添加一個使用者賬号:
-d的意思是:指定使用者的主目錄,什麼是使用者主目錄呢?就是使用者第一次登陸的時候預設的目錄。
linux的主目錄一般都設定在根目錄的home目錄下,這不是系統的要求,隻是一個規則。(很重要)
要求:增加一個使用者,使用者名叫aabb,指定使用者的主目錄在/home/aabb,(注意:主目錄的目錄名和使用者名一般是相同的)
-m意思是:如果-d指定的主目錄不存在,那麼就自動建立這個主目錄。例子如下:
useradd -d /home/aabb aabb -m 添加一個使用者,使用者名叫aabb。
userdel aabb 将aabb使用者删除,注意:指定使用者的主目錄還在哦。
userdel -r aabb 删除aabb使用者,同時自動删除使用者的主目錄。
useradd -d /home/aabb aabb -m -g abc 添加一個使用者aabb,主目錄在/home/aabb目錄,該使用者在組abc中。
-g的意思是:指定組的名稱
注意:每添加一個使用者賬号後需要設定密碼。
在Unix/Linux中,超級使用者可以使用passwd指令為普通使用者設定或修改使用者密碼。
使用者也可以直接使用該指令來修改自己的密碼,而無需在指令後面使用使用者名。指令如下:
passwd aabb 設定使用者aabb的密碼
切換使用者的指令
su 使用者名
su - 使用者名
su的時候不加-,隻切換使用者,但不改變目前目錄。
su的時候加-,切換使用者,同時将目前目錄切換到目标使用者的主目錄下。
如果用root su到其他使用者,那麼不需要輸入其他使用者密碼即可進入。
但如果普通使用者之間su的話(即:切換)則必須輸入密碼。
登出exit。
如果要su到root下
su root 但也可以省略root,直接su。
su 隻切換使用者到root,不改變目前目錄。
su - 切換使用者到root,同時将目前目錄修改為root使用者的主目錄。
useradd -d /home/aabb aabb -m 添加一個使用者aabb,主目錄在/home/aabb目錄,該使用者在沒有指定組名。
如果建立使用者的時候沒有指定組名,那麼系統預設會建立一個和使用者名相同的組名,同時把這個使用者放到這個組裡面。
示例:登入 zhujy 使用者 -》 登入 aabbcc 使用者-》 登入 root 使用者
隻有一個使用者登出後才能删除這個使用者,一個已經登入的使用者是無法删除。
如何知道(或檢視)系統的使用者群組?
答:用root登入系統,然後進入根目錄下的etc目錄,檢視shadow檔案内容:cat shadow 和 cat passwd。
檢視使用者最後一次進入系統狀态指令 last
不管是哪位使用者從哪裡登入,管理者都可以通過last指令查出,以及是否有人非法登入。
注意:linux下指令“ll”是“ls -l"的别名。别名相當于windows裡的快捷方式。 是以"ll"和“ls -l”的功能是相同的。
是以"ll"和"ls"的差別其實是“ls”和"ls -l"的差別。”ls“是顯示目前目錄下檔案,”ls -l“是顯示目前目錄下檔案詳細資訊。
我的GitHub位址:
https://github.com/heizemingjun我的部落格園位址:
http://www.cnblogs.com/chenmingjun我的螞蟻筆記部落格位址:
http://blog.leanote.com/chenmingjunCopyright ©2018 黑澤明軍
【轉載文章務必保留出處和署名,謝謝!】