初學Linux基本命令的總結__Linux

來源:互聯網
上載者:User

ls 顯示目前的目錄內容
  1)ls / (顯示根目錄下所有的目錄和檔案)
  2)ls -l / (以列表的形式顯示根目錄下所有的目錄和檔案)
  3)命令2等同於ll /


絕對路徑和相對路徑
  1)絕對路徑,以/開頭的都是絕對路徑,比如/home/pzm
  2)相對路徑,以./ 或者../開頭的,./是指目前的目錄,../是指上一層目錄


mkdir建立目錄
  1)mkdir -m 777 /home/pzm/ (在home目錄下建立pzm目錄,該目錄的許可權為777)
  2)mkdir -p /home/pzm/1/ (如果/home/pzm/目錄不存在,執行此命令建立目錄,建立的結果是會同時建立pzm和1這兩個目錄)
  3)mkdir /home/pzm/ 就是在/home目錄下建立pzm目錄


rmdir刪除目錄
  1)rmdir /home/pzm/ (刪除/home目錄下的pzm目錄,要求pzm目錄下不能再用其他的目錄或者檔案,也就是說必須為空白)
  2)rmdir -p /home/pzm/1/ (刪除/home/pzm/目錄下的名字為的1目錄,如果pzm目錄下除了1這個目錄,沒有其他目錄或者檔案,那麼加上-p參數執行之後會把pzm/1這兩個目錄都刪除)


touch命令
1)touch aaa,建立一個檔案,名為aaa,如果aaa檔案存在,則更新檔案的時間
2)stat aaa 可以查看檔案的相關資訊


cp複製檔案或者目錄
  1)cp /home/test.txt /home/pzm/ (就是將/home/test.txt這個檔案拷貝到/home/pzm/這個目錄)
  2)cp -R /home/pzm/ /home/1/ (就是將/home/pzm/這個目錄以及這個目錄下的所有目錄和檔案統統拷貝到/home/1/這個目錄下)
  3)cp -i /home/pzm/ /home/1/ (如果命令2已經執行過了,也就是說/home/1/目錄下有和/home/pzm/目錄下相同的目錄或者檔案,那麼再加-i參數執行拷貝操作時會提示使用者是否進行覆蓋操作,輸入y斷行符號則執行覆蓋操作,輸入n斷行符號則不執行覆蓋操作)
  4)cp -f /home/pzm/ /home/1/ (不提示使用者直接進行覆蓋)


mv移動或更名現有的檔案或目錄 
  1)mv /home/test.txt /home/pzm/ (將/home/目錄下的test.txt檔案剪下到/home/pzm/目錄下)
  2)mv -i /home/test.txt /home/pzm/ (如果在/home/pzm目錄下已經有了test.txt這個檔案,那麼執行此操作將會提醒使用者是否覆蓋)
  3)mv -f /home/test.txt /home/pzm/ (不提醒使用者直接進行覆蓋)


rm刪除檔案或者目錄,在使用rm這個命令的時候,一定要指定目錄或者檔案,避免誤刪除
  1)rm /home/test.txt (刪除/home/目錄下的test.txt這個檔案)
  2)rm -i /home/test.txt (刪除檔案之前提示使用者)
  3)rm -r /home/pzm/ (刪除/home/pzm/目錄下的所有檔案和目錄)
  4)rm -f /home/test.txt (不提示使用者直接強行刪除檔案或者目錄)
  5)rm -rf /home/pzm/ (強行刪除/home/pzm/這個目錄以及這個目錄下的所有目錄和檔案,不提示使用者)
  6)rm -rf * (建議不要使用這個命令)
  7)在使用rm、mv命令的時候,一定要注意,在需要刪除或剪下目錄的時候,不在進到刪除或剪下的目錄中再去執行操作


more、less命令
  1)more 檔案名稱,或 less 檔案名稱
  2)more只能翻頁顯示,而less可以使用上下鍵逐行翻看檔案內容
  3)使用more或者less查看檔案內容的時候,按q退出


head查看一個檔案的前幾行內容,預設是查看前十行
  1)head test.txt (查看此檔案的前十行內容)
  2)head -n 5 test.txt (查看此檔案的前五行內容,通過-n參數設定具體查看的行數)


tail查看一個檔案的最後幾行內容,預設是十行
  1)tail test.txt (查看此檔案的最後十行內容)
  2)tail -n 5 test.txt (查看此檔案的最後五行內容,通過-n參數設定具體查看的行數)
  3)tail -f test.txt (一般是用來查看記錄檔,如果檔案內容有更新,則會同步顯示出來)


alias查看命令的別名,unalias撤銷別名,別名在~/.bashrc檔案中修改


hostname
1)hostname查看主機名稱
2)hostname pzm,修改主機名稱為pzm,永久修改需要改/etc/sysconfig/network這個設定檔


id
1)id,顯示使用者資訊
2)id -u 顯示使用者ID號
3)id -g 顯示組ID號


date
1)date顯示詳細的日期資訊
2)date +%d%m%y 顯示日期、月份、年份


13、find尋找命令
  1)find / -name test.txt (在根目錄/下開始以名字的方式尋找test.txt這個檔案,格式就是find + 路徑 + 選項 + 檔案名稱)
  2)find / -type d -name 1 (在根目錄/下尋找名字為1的目錄)
  3)slocate、locate也可以尋找檔案,但是是從slocate.db資料庫中來尋找,需要使用updatedb命令之後再使用


14、adduser 添加使用者
  1)adduser pzm (添加名字為pzm的使用者)
  2)passwd pzm(修改pzm賬戶的密碼,否則不能登入)
  3)su - pzm (徹底切換到pzm使用者,-是徹底切換)
  4)/etc/login.defs (建立使用者的預設屬性在這個檔案中設定)
  5)usermod -G root.bin pzm (把pzm使用者添加到root、bin組中)


添加完使用者可以查看/etc/passwd檔案,看使用者是否添加成功


15、userdel刪除使用者
  1)userdel pzm (刪除名字為pzm的使用者)
  2)userdel -r pzm (刪除pzm使用者,且刪除pzm使用者的主目錄及相關資訊)


passwd修改賬戶密碼
  1)passwd (修改目前使用者的密碼)
  2)passwd pzm (root賬戶具有修改任何賬戶密碼的功能,如果當前以root賬戶運行,執行此命令可以修改pzm賬戶的密碼)


su切換使用者
  1)su pzm(切換到pzm賬戶運行)
  2)exit(退出su切換到的賬戶)


使用非root賬戶登入Linux的方式和使用root賬戶的方式一樣,只是在登入系統的時候選擇其他使用者即可




16、ps靜態方式查看進程
  1)ps -ef (顯示所有的進程)


17、top 動態方式查看進程
  1)top (動態方式查看當前所有的進程,包括cpu和記憶體的資訊)


18、chmod 變更檔的許可權
  1)chmod 777 test.txt (修改test.txt的檔案許可權為777,格式是chmod + 具體需要設定的許可權 + 檔案或者目錄名字)
  2) chmod +x test (給test這個檔案添加可執行許可權)
  3)u表示檔案的擁有者,g表示檔案的擁有組,o表示檔案的其他使用者,比如說或要給檔案的其他使用者添加可寫的許可權,可以使用命令:chmod o+w test,如果要給檔案的目前使用者組去掉可執行檔許可權,可以使用命令:chmod g-x test


19、tar壓縮解壓命令
  1)tar -cvf test.tar ./ (將目前的目錄的所有檔案和目錄打包成test.tar,格式為 tar + (選項,例如 -cvf) + 打包的檔案名稱 + 要打包的目錄或者檔案)
  2)tar -xvf test.tar (將test.tar包解壓到目前的目錄,格式為 tar + (選項,例如 -xvf) + 打包的檔案名稱)
  3)tar -xvf test.tar -C ./1/ (將test.tar包解壓到指定目錄,格式為 tar + (選項,例如 -xvf) + 打包的檔案名稱 + (-C)+ 指定的目錄)
  4)tar -zxvf apach-tomcat-6.0.16.tar.gz (解壓縮gz包需要使用-z選項)
  5)tar -zcvf test.tar.gz ./(把目前的目錄的所有內容打包並壓縮為為test.tar.gz包)
  6)tar -jcvf test.tar.bz2 ./(把目前的目錄的所有內容打包並壓縮為為test.tar.bz2包)
  7) tar -jxvf test.tar.bz2 (解壓縮bz2包需要使用-j選項)
  8)tar -tvf test.tar (查看包內容)


20、輸出重新導向
  1)> 例子:ls > ls.txt (把ls查出來的結果全部寫入到ls.txt這個檔案裡面,如果這個檔案不存在,會自動建立,效果就是,每次都會把指定的檔案內容清空,再重新寫入新的內容)
  2)>> 例子:ll >> ll.txt (把ll查出來的結果全部寫入到ll.txt這個檔案中,同>的區別是,它不是覆蓋寫,而是追加寫,在指定檔案的內容結尾追加寫)


21、輸入重新導向
  1)cat < ll.txt (將ll.txt這個檔案的內容作為cat的輸入)
  2)輸入重新導向一般後面都是跟檔案


22、管道:| 將管道前面命令的輸出作為管道後面命令的輸入
  1)ps -ef | grep bash (將ps -ef 這個命令的結果作為grep命令的輸入)


23、vi編輯器
  1)vi config.txt (使用vi編輯器查看修改config.txt檔案,如果此檔案不存在則會建立一個該名字命名的檔案)
  2)進入vi編輯器之後,按a或者i進入編輯模式,編輯完成後按esc鍵推出編輯模式
  3)如果未修改過config.txt檔案,則直接輸入:q可以退出vi編輯器
  4)如果修改過config.txt檔案,則輸入:wq儲存修改並退出,也可以輸入:q!不儲存修改並退出
  5)在命令模式下,連按兩下g回到檔案的第一行,按大寫的G(shift+g)回到檔案的結尾
  6)在命令模式下,輸入/+指定的字元,比如/q,就是在當前檔案中尋找q這個字元,按小寫n是往下尋找下一個匹配的字元或者字串,按大寫的N是往上尋找下一個匹配的字元或者字串,輸入?q,則是從下往上尋找包含q關鍵字的內容
  7)在命令模式下,輸入:set nu對當前文本中的行設定行號
  8)在命令模式下,輸入dd可以刪除游標所在的行
  9)直接輸入vi命令,後面不跟檔案名稱,在儲存退出的時候:wq後面加檔案名稱,即可儲存為指定檔案名稱的檔案
  10)設定高亮,命令模式下輸入:set hlsearch
  11)取消高亮,命令模式下輸入:set nohlsearch
  12)vi無法輸入中文的情況下,在vi命令列模式輸入:set encoding=gb2312
  13)命令模式下,按u撤銷上一次修改,按ctrl+r繼續上一次撤銷的修改
  14)命令模式下,x刪除一個字元
  15)yy複製一行,p粘貼
  16):w aaa 將當前檔案內容存到aaa這個檔案中
  17):e! 去掉所有修改,恢複檔案到最開始的狀態
  18):% s/abc/123/g,將文本中所有的abc字串換成123


24、wc文本統計命令
  1)cat test.txt | wc -l (將cat test.txt的內容通過管道作為wc命令的輸入,-l是統計行數)
  2)cat test.txt | wc -c (統計字元數)
  3)cat test.txt | wc -w (統計單詞數)
  4)wc test.txt (分別統計test.txt這個檔案的行數、單詞數、字元數,並在輸出的結果最後顯示當前的檔案名稱)
  5)wc -l test.txt (可以在wc後面跟對應的選項-l -w -c顯示檔案中的行數、單詞數、字元數)


25、grep搜尋命令
  1)cat test.txt | grep test (將cat test.txt的結果通過管道作為grep命令的輸入並且搜尋test字串,如果搜尋到則顯示到螢幕,區分大小寫)
  2)cat test.txt | grep -c test(通過-c選項統計包含test字串的行數,也就是說一共有多少行包含test字串)
  3)cat test.txt | grep -v test (通過-v選項將所有不包含test字串的行顯示到螢幕)
  4)cat test.txt | grep -i Test (通過-i選項搜尋時不區別大小寫)
  5)grep test test.txt (不通過管道進行尋找,在test.txt檔案中尋找所有包含test字串的行並顯示)
  6)grep -l test test.txt (通過-l選項,如果在test.txt檔案中尋找到test字串則只顯示當前的檔案名稱,否則什麼也不顯示)
  7)grep test *在目前的目錄下所有的檔案中尋找包含test關鍵字的行,並且把內容列印出來
  8)grep -R test /etc/ 在etc目錄下尋找所有包含test關鍵詞的檔案
  9)grep -A2 -B3 test test.txt在test.txt中尋找包含test關鍵字並將這一行的前3行和後兩行列印出來


26、awk文本處理工具
  1)awk '/test/' test.txt尋找test.txt檔案中包含test關鍵字的行病列印,區分大小寫
  2)awk '{print $1}' test.txt預設以空格作為分隔字元去匹配test.txt中的每一行,並對每一行中的內容以空格作為間隔,$1取第一個空格前的字串,$2取第二個空格前的字串,依次類推,最後將每一行匹配出來的內容列印出來
  3)awk -F ":" '{print $1}' test.txt以:作為分隔字元
  4)awk '$1==test {print $2}' test.txt 以空格作為間隔,如果第一段為test的時候,把第二段列印出來


ifconfig
1)ifconfig,查看網卡資訊
2)ifconfig eth0 192.168.1.1 修改eth0網卡的IP地址
3)永久修改IP地址需要改這個設定檔/etc/sysconfig/network-scripts/ifcfg-eth0
4)netconfig+service network restart也可以永久修改網路資訊


mount
1)mount 顯示所有掛載的點
2)mount /dev/sda1 /mnt 把/dev/sda1分區掛載到/mnt目錄上
3)umount /mnt 卸載/mnt掛載點


cut
1)cut -d: -f7 /etc/passwd 以:作為分隔字元,取第七段並顯示


sort
1)sort -t: +2 -n /etc/passwd 以:作為分隔字元,對第三部分按照數字進行排序輸出
2)du | sort -n 把du輸出結果的第一列按照數字進行排序輸出
3)sort -r 反向排序


top
1)top 查看系統資源和進程資訊
2)在top命令中按k鍵,再輸入進程的PID,選擇輸入9或者15號訊號,可以結束進程
3)在top命令中按?,可以查看協助
4)在top命令中按M,按照記憶體排序


env查看所有的環境變數資訊
set查看所有的變數資訊


sed流編輯器
1)sed -e 's/root/pzm/g' /etc/passwd 將/etc/passwd中的檔案內容中的root字串替換為pzm並列印到螢幕上,但是檔案內容並未修改
2)sed -n -e '/pzm/p' /etc/passwd 將/etc/passwd中包含pzm字串的行列印出來
3)sed -e '/^#/d' /etc/squid/squid.conf 將這個檔案中以#開頭的內容刪除不列印出來
4)info sed 查看sed的協助


27、``反向引號的作用
  1)grep `id -un` /etc/passwd 這行命令的作用是,先執行反向引號中的命令id -un,將id -un執行的結果作為grep的輸入,那麼這行命令等同於如下兩行命令:
   id -un  (假設這行命令的輸出結果是root)
   grep root /etc/passwd


28、free -m
查看記憶體資訊


29、gcc -o 可執行程式檔案名稱(可任意取,不要和目錄重名即可) *.c(要編譯的c代碼)
gcc是用來編譯C程式的,c程式當然是以.c作為尾碼的
-o 產生可執行檔,不加此參數只對代碼做編譯,不會產生可執行檔


30、執行shell指令碼:
1、編寫指令碼,在指令碼之前需要加上#!/bin/bash,表面當前的shell版本
2、給該指令碼賦予可執行許可權
3、sh *.sh 或者 ./*.sh執行該指令碼


31、修改終端提示符:
export PS1="[\t \w \u \h]"
\t 顯示時間 
\w 顯示當前的目錄
\u 顯示當前的使用者名稱
\h 顯示當前的主機名稱


32、整數運算子expr
   1)expr 1 + 1 (計算結果為2,注意+號左右兩邊必須要有空格)
   2)expr $count + 1 (使count變數的值+1)
   3)expr $count \* 10 (乘號需要加反斜線轉義)
   4)expr $count / 10 (將count變數的值除以10)
   5)count=`expr $count + 1` (將count變數的值+1之後再賦值給count變數,運算運算式需要使用反向引號括起來)
   6)=號左右兩邊不能有空格,運算子左右兩邊要加空格
   7)給變數賦值不需要加$


33、test測試運算子
  1)test -e test.txt (判斷目前的目錄下是否存在test.txt這個檔案,該語句的執行結果儲存在$?變數中,如果$?結果值為0則表示這個檔案存在,如果$?結果值為非0則表示這個檔案不存在)
  2)test -d log (判斷目前的目錄下是否存在log這個目錄)
  3)(定義兩個字串,判斷著兩個字串是否相等)
    str1=abc
    str2=cdf
    test $str1 = $str2
    test $str1 != $str2
  4)整數判斷,判斷相等使用-eq 判斷不等使用-ne 判斷大於使用-gt 判斷大於等於使用-ge 判斷小於使用-lt 判斷小於等於-le
    num1=10
    num2=20
    test $num1 -eq $num2


34、if程式


#!/bin/bash
#$#是指在執行此指令碼時傳入的參數的個數
#先判斷執行指令碼時傳入的參數是否不等於2
#如果條件成立則列印錯誤提示使用者,否則進入elif判斷語句
if test $# -ne 2
    then echo Error: two args required
#判斷使用者在執行指令碼輸入的第二個參數是否不是檔案,-f是判斷是否為檔案的選項,!是取反的意思
elif [ ! -f $2 ]
    then echo "Sorry: $2 is not a file! "
#使用者輸入的兩個參數分別儲存在$1 $2中,在本例執行grep語句就是為了在$2對應的檔案中尋找$1對應的字串,並把輸入結果重新導向到/dev/null裝置中,目的是為了不在螢幕列印結果,而整個語句的執行結果作為elif的判斷條件,如果執行成功返回0,列印Find,否則返回非0,列印None
elif grep -s $1 $2 > /dev/null
    then  echo Find
    else  echo None
fi
if後面需要加空格,[]前後都需要加空格
else中不需要加then
一定要寫fi作為結束


35、case程式
 #!/bin/bash
 #調用date命令,後面加上+%H是為了輸出當前的小時為多少,通過反向引號把得到的結果儲存在hour變數中
 hour=`date +%H`
 #將hour和後面的條件做判斷,如果相等則執行後面的語句
 case $hour in
   #通過Regex判斷當前的hour是否為01~11,如果是則列印早上好
   0[1-9]|1[01])echo "Good morning!";;
   #通過Regex判斷當前的hour是否為12~17,如果是則列印下午好
   1[2-7]) echo "Good afternoon!";;
   #*)為default分支,也就是說,如果以上條件都不滿足的話則進到default分支,列印晚上好
        *) echo "Good evening!";;
 esac
每一個分支可以有多條語句,但是需要單獨一行,且每個分支必須以;;作為結束


36、for迴圈程式
  1)var作為迴圈變數,從1 2 3中分別取值,在do done中填寫具體的迴圈代碼,對於這個程式來說,var會分別賦值為1 2 3,迴圈會執行三次,分別列印var三次迴圈的值
  for var in 1 2 3
  do
     echo $var
  done


  2)注意,這種方式需要兩個小括弧括起來,同上面第一種方式類似,此迴圈迴圈5次,i分別取值為0 1 2 3 4
  for((i=0;i<5;i++))
  do
     echo $i
  done


  3)$*是指我們在運行指令碼的時候傳入的參數列表,然後執行for迴圈,var變數分別從$*參數列表中取值
  for var in $*
  do 
     echo $var
  done


37、while迴圈程式
#!/bin/bash
#定義個變數,名為num,賦值為0
num=0
#while迴圈的判斷條件是num的值小於10,否則則退出while迴圈
while [ $num -lt 10 ]
do
    #列印num當前的值,-n是指在執行echo的時候不換行
    echo -n "$num "
    #通過反向引號包含一句整數運算運算式,目的是使num值加1
    num=`expr $num + 1`
done
#列印資訊
echo
echo "Loop exit."


38、read命令
   1)執行指令碼後,輸入一行字串按斷行符號確認,輸入的字串會儲存在變數str中,最後列印出來的結果和使用者輸入的結果一致
   #!/bin/bash
  
   read str


   echo $str


   2)執行指令碼後,從標準輸出中讀取三個字串分別賦值給str1 str2 str3,輸入以空格為間隔,斷行符號為結束,最後列印著三個變數
   #!/bin/bash
  
   read str1 str2 str3


   echo $str1
   echo $str2
   echo $str3


39、製作菜單程式樣本
#!/bin/bash
#清屏
clear
#通過true在設定while迴圈的條件一直為真,除非在迴圈體中根據不同的條件選擇退出,可以通過break(退出迴圈,繼續執行迴圈後面的語句),或者exit(退出當前指令碼,不再執行指令碼後面的語句)
while true
do
echo  "1,  Display date"
echo  "2,  Display the number of online users "
echo  "3,  Exit"
#-e參數是為了保證在後面輸出的字串中可以使用轉義\,\c是指當前輸出內容之後不換行
echo -e "Please enter a choice(1, 2 or 3):\c"
#read命令是指從標準輸入截取內容賦值給變數no
read  no
case  ${no}    in
     #調用date列印日期,格式安裝年月日的格式輸出
     1)    date   "+%Y/%m/%d";;
     #通過who命令查看當前線上的使用者,通過wc -l來查詢who輸出的結果又幾行,也就是說當前線上有幾個使用者
     2)    who |wc -l;;
     #退出指令碼
     3)    exit;;
esac


#程式執行到這裡之後,根據sleep後面的數字休眠對應的秒數
sleep 3
clear
done


40、批量建立使用者
#!/bin/bash
echo -e "Input first part of username:\c"
read name
echo -e "Input start number:\c"
read startno
count=$startno
echo -e "Input end number:\c"
read endno


#如果startno變數的值小於等於endno變數的值,那麼就執行迴圈體中的語句
while [ $startno -le $endno ]
  do 
     #在做字串拼接的時候一定要使用${}這種方式來引用變數
     #我們強調以後所有的變數盡量都採用這種方式,避免出錯
     usernames="${name}${startno}"
     echo "    add user " $usernames
     #可以直接調用useradd命令,一般不需要在前面加具體的絕對路徑
     #useradd命令的-p參數是指給建立的這個使用者添加密碼
     /usr/sbin/useradd -p zyMnbK31XVV7Y "$usernames"
     startno=` expr $startno + 1 `
  done


count=` expr $endno - $count + 1 `
echo "$count Done! "


41、rpm軟體安裝命令
   1)rpm -ivh abc.rpm (安裝rpm軟體包,-ivh為安裝使用的選項,兩種方式,一種是使用絕對路徑,那麼你在任何地方都可以安裝這個rpm包,一種是使用相對路徑,進到rpm包所在的目錄,直接使用rpm檔案名稱就OK)
   2)rpm -e abc (卸載rpm軟體包,-e是卸載使用的選項)


42、對於for、while、if的判斷條件都可以採用類似於C語言的寫法
while((i==0))


if((i==0))


for((i=0;i<10;i+=))

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.