Firefox mysql wordpress 开源 Android Windows linux Python apache centos nginx 编程 Ubuntu 云计算 程序员 google php java 微软 shell

《Linux C編程從入門到精通》一1.4 Linux的常用命令

1.4 Linux的常用命令

Linux C編程從入門到精通
Shell中,用戶需要通過使用適當的命令來完成相應的操作,本小節將介紹Linux中的部分常用命令。

1.4.1 文件操作命令

文件操作是Linux系統裏最基本也是最常用的操作,本節列舉了Linux中經常執行的一些普通文件操作命令。

1.顯示文件列表

顯示指定工作目錄中所包含內容的命令是ls。要說明的是,ls命令列出的是文件的名字,而不是文件的內容。該命令的使用方式如下。

ls [選項]  [文件目錄列表]
ls命令中的常用選項如表1.2所示。


aa05714264ef58055da3da6a88aa2558f6853571

 


29618f68857881aeda58daf858b94c17e2b7bd9c

由于Linux支持多种文件类型,每一类用一个字符来表示,具体说明如表1.3所示。
表1.3 Linux中的文件类型说明符


adae4a17911e5bcd2717dead27fd6c531287a198

文件類型後的字符表示文件的權限,權限由3個字符串組成,這3個字符串分別表示該文件所有者的權限、組中其他人的權限和系統中其他人的權限。每個字符串又由3個字符組成,依次表示對文件的讀(用字符r表示)、寫(用字符w表示)和執行(用字符x表示)權限。當用戶沒有相應的權限時,該權限的對應位置用短線“-”來表示。 例如:

drwxr-x---
表示的含義是:d表示該文件是目錄;目錄擁有者的權限是rwx(表示有讀、寫和執行權限);組中其他人對該目錄的權限是r-x(表示有讀和執行權限,沒有寫權限),系統中其他人對該目錄的權限是---(表示讀、寫和執行權限都沒有)。

【例1.3】是一個使用“ls”命令來顯示當前根目錄下文件列表的應用實例。

【例1.3】ls查看文件列表應用實例。

alloeat@Ubuntu:/$ ls
bin    dev   host            lib         mnt   root  selinux  tmp  vmlinuz
boot   etc   initrd.img      lost+found  opt   run   srv      usr  vmlinuz.old
cdrom  home  initrd.img.old  media       proc  sbin  sys      var
【例1.4】是一個使用“ls”命令查看非當前目錄下文件列表的應用實例。

【例1.4】ls查看非當前目錄下文件列表。

alloeat@Ubuntu:/$ ls /usr
bin  games  include  lib  lib32  local  sbin  share  src
【例1.5】是一個用長格式查看根目錄下usr子目錄下的內容的應用實例。

【例1.5】ls長格式查看應用實例。

alloeat@Ubuntu:/$ ls -l /usr
总用量 176
drwxr-xr-x   2 root root 65536  8月  2 18:13 bin
drwxr-xr-x   2 root root  4096  8月  2 10:17 games
drwxr-xr-x  39 root root 16384  6月 18 21:10 include
drwxr-xr-x 238 root root 49152  8月  2 10:18 lib
drwxr-xr-x   5 root root  4096  6月 14 18:38 lib32
drwxr-xr-x  11 root root  4096  6月 18 14:05 local
drwxr-xr-x   2 root root 12288  8月  2 10:15 sbin
drwxr-xr-x 370 root root 12288  6月 25 21:07 share
drwxr-xr-x  16 root root  4096  7月 25 17:57 src

用長格式查看目錄內容時,每行表示一個文件或目錄的信息。每行信息依次為文件類型與權限、連接數、文件屬主、文件屬組、文件大小、建立或最近修改的時間、名字。

查找文件
在Linux系統中,可以使用find命令來查找文件,標準使用格式如下。
find [目錄列表]  [匹配標準]
find命令有兩個參數,即目錄列表和匹配標準,其說明如下。

目錄列表:希望查詢文件或文件集的目錄列表,目錄間用空格分隔。

匹配標準:希望查詢的文件的匹配標準或說明,詳細的說明如表1.4所示。

 


7679590f98a698d2a65571ca0b66d53091708e13

【例1.6】是在目录“home/alloeat/chapter4Exam/”中查找exam5lseek.c文件,命令及响应如下所示。

【例1.6】find查找特定文件的应用实例。

alloeat@Ubuntu:/$ find home/alloeat/chapter4Exam/exam5lseek.c
home/alloeat/chapter4Exam/exam5lseek.c

当要查找某个文件而不知道该文件的全名时,只要知道这个文件包含的若干字母,就可以用查找命令以及通配符进行查找。

【例1.7】是一个在/dev目录下,查找包含“usb”字符串的文件的应用实例。

【例1.7】find查找包含特定字符串文件应用实例。

alloeat@Ubuntu:/$ find /dev -name usb* -print
/dev/usb
/dev/input/by-id/usb-RAPOO_RAPOO_2.4G_Wireless_Device-mouse
/dev/input/by-id/usb-RAPOO_RAPOO_2.4G_Wireless_Device-if01-mouse
/dev/input/by-id/usb-RAPOO_RAPOO_2.4G_Wireless_Device-if01-event-mouse
/dev/input/by-id/usb-RAPOO_RAPOO_2.4G_Wireless_Device-event-mouse
/dev/input/by-id/usb-RAPOO_RAPOO_2.4G_Wireless_Device-event-kbd
/dev/usbmon4
/dev/usbmon3
/dev/usbmon2
/dev/bus/usb
/dev/usbmon1
/dev/usbmon0

3.显示文本文件内容
显示文本文件内容的命令是cat命令,用来将文件的内容显示到终端上。该命令的使用方式如下。

cat  [选项]  文件列表

cat命令中的选项详细说明如表1.5所示。

 


a9a4cbd2ddb875a8dd74a702be6947980fe1e5ca

【例1.8】是使用cat命令来显示C语言文件exam5lseek.c的应用实例,在每一行之前加上了行编号。

【例1.8】cat命令显示文件内容应用实例。

alloeat@Ubuntu:~/chapter4Exam$ cat -n exam5lseek.c
     1   #include <stdio.h>
     2
     3   int main(int argc,char *argv[])
     4   {
     5     int temp,seektemp,i,j;
     6     file *fp;            //文件指针
     7     char wbuf[17] = "this is a test!\r\n";
     8     if(argc!= 2)
     9     {
    10           printf("run error!\n");
    11           return 1;                              //如果参数不正确则退出
    12     }
    13     fp = fopen(*(argv+1),w);     //打开文件
    14  //  temp = fputs(wbuf,fp);      //写入数据
    15  //   seektemp = lseek(fileID,0,SEEK_CUR);       //获得当前的偏移量
    16     for(i=0;i<10;i++)
    17     {
    18       j = sizeof(wbuf) * (i+1);             //计算下一次的偏移量
    19       fseek(fp,j,SEEK_SET);
    20       temp = fputs(wbuf,fputs);   //写入数据
    21     }
    22     fclose(fp);
    23     return 0;
    24   }
    25

cat命令还可以用于将两个文件连接到一起,并将结果放到另外一个文件中去。【例1.9】给出了一个将一个C语言文件和一个文本文件连接起来将其内容存放到一个新的文本文件中去的实例。

【例1.9】用cat连接文件应用实例。

alloeat@Ubuntu:~/chapter4Exam$ cat exam5lseek.c copytest.txt > cattest.txt
alloeat@Ubuntu:~/chapter4Exam$ cat copytest.txt
dup call successed!
s is a test!
this is a test!
this is a test!
this is a test!
this is a test!
this is a test!
this is a test!
this is a test!
this is a test!
this is a test!
alloeat@Ubuntu:~/chapter4Exam$ cat cattest.txt
 #include <stdio.h>
 int main(int argc,char *argv[])
 {
   int temp,seektemp,i,j;
   FILE *fp;            //文件指针
   char wbuf[17] = "this is a test!\r\n";
   if(argc!= 2)
   {
         printf("run error!\n");
         return 1;                                      //如果参数不正确则退出
   }
   fp = fopen(*(argv+1),w);     //打开文件
//  temp = fputs(wbuf,fp);      //写入数据
//   seektemp = lseek(fileID,0,SEEK_CUR);       //获得当前的偏移量
   for(i=0;i<10;i++)
   {
     j = sizeof(wbuf) * (i+1);             //计算下一次的偏移量
     fseek(fp,j,SEEK_SET);
     temp = fputs(wbuf,fputs);   //写入数据
   }
   fclose(fp);
   return 0;
 }
dup call successed!
s is a test!
this is a test!
this is a test!
this is a test!
this is a test!
this is a test!
this is a test!
this is a test!
this is a test!
this is a test!
  1. 查找文件内容
    查找文件内容的命令是grep命令。该命令的使用方式如下。

grep [选项] [查找模式] [文件名1,文件名2,……]
grep命令选项的说明如表1.6所示。

 


c745ccfa0cf2f0b760ccf330fbd28f6c7e7b9aad

【例1.10】是在【例1.6】所給出的C語言文件中查找printf字符串的實例。

【例1.10】grep查找字符串應用實例。

alloeat@Ubuntu:~/chapter4Exam$ grep printf -n exam5lseek.c
10:      printf("run error!\n");
5.排序
sort命令的功能是對文件中的各行進行排序。sort命令有許多非常實用的選項,這些選項最初是用來對數據庫格式的文件內容進行各種排序操作的。實際上,sort命令可以被看作是一個非常強大的數據管理工具,用來管理內容類似數據庫記錄的文件。sort命令將逐行對文件中的內容進行排序,如果兩行的首字符相同,該命令將繼續比較這兩行的下一字符,如果還相同,將繼續進行比較。該命令的使用方式如下。

sort  [選項]  文件
sort命令對指定文件中所有的行進行排序,並將結果顯示在標準輸出上。如不指定輸入文件或使用“- ”,則表示排序內容來自標準輸入。

sort排序是根據從輸入行抽取的一個或多個關鍵字進行比較來完成的。排序關鍵字定義了用來排序的最小的字符序列。默認情況下以整行為關鍵字,按ASCII字符順序進行排序。

sort命令中的選項說明如表1.7所示。


e0c4d96ece88f85cb022a11d8ebe397129abac4b

【例1.11】是一个使用sort命令对文件中各行进行排序后输出的应用实例。

【例1.11】使用sort命令文件排序输出应用实例。

alloeat@Ubuntu:~/chapter4Exam$ cat -n Examsort.txt
     1  23214
     2  daf
     3  ewr
     4  42
     5  123425
     6  2435326
     7  tihwir
     8  3242
     9  0234
    10  -=123
    11  13445
alloeat@Ubuntu:~/chapter4Exam$ sort Examsort.txt |cat -n
     1  0234
     2  -=123
     3  123425
     4  13445
     5  23214
     6  2435326
     7  3242
     8  42
     9  daf
    10  ewr
    11  tihwir

6.比較有序文件
如果想對兩個有序的文件進行比較,可以使用comm命令。該命令的使用方式如下。

comm [-123 ] file1 file2
comm命令是對兩個已經排好序的文件進行比較。其中file1和file2是已排序的文件。comm讀取這兩個文件,然後生成3列輸出:僅在file1中出現的行;僅在file2中出現的行;在兩個文件中都存在的行。如果文件名用“-””,則表示從標準輸入讀取。選項 1、2 或 3 不顯示相應的列。例如:

comm -12:只顯示在兩個文件中都存在的行。
comm -23:只顯示在第一個文件中出現而未在第二個文件中出現的行。
comm -123:則什麽也不顯示。
7.文件內容比較
diff命令的功能為逐行比較兩個文本文件,列出其不同之處。它對給出的文件進行系統的檢查,並顯示出兩個文件中所有不同的行,不要求事先對文件進行排序。該命令的使用方式如下。

diff  [選項] file1 file2
diff命令告訴用戶,為了使兩個文件file1和file2一致,需要修改它們的哪些行。如果用 “- ”表示 file1或 file2,則表示標準輸入。如果file1或file2是目錄,那麽diff將使用該目錄中的同名文件進行比較。通常,輸出由下述形式的行組成。

n1 a n3,n4
n1,n2 d n3
n1,n2 c n3,n4
字母(a、d和c)之前的行號(n1,n2)是針對file1 的,其後面的行號(n3,n4)是針對 file2 的。字母 a、d 和 c 分別表示附加、刪除和修改操作。

在上述形式的每一行的後面跟隨受到影響的若幹行,以 “<” 開頭的行屬於第一個文件,以 “>” 開頭的行屬於第二個文件。

diff 能區別塊、字符設備文件以及管道文件(FIFO),diff不會把它們與普通文件進行比較。

如果 file1 和 file2 都是目錄,則 diff 會產生很多信息。如果一個目錄中只有一個文件,則產生一條信息,指出該目錄路徑名和其中的文件名。

diff命令的選項說明如表1.8所示。

 


52d35cdc2a10f2232523ce71878030f961451bc2

註意:diff命令常常用於對比文件經過修改前後的異同。

8.文件復制命令
Linux中的cp命令用於復制文件或目錄,該命令是最重要的文件操作命令,該命令的使用方式如下。

cp [選項] 源文件或目錄 目標文件或目錄
cp命令把指定的單個源文件復制到目標文件,或把多個源文件復制到目標目錄中。

cp命令的選項說明如表1.9所示。


4f7d080f578a0075304a0c4e6c388a63604f6234

註意:如果指定的目標文件名是一個已存在的文件名時,用 cp 命令復制文件後,這個文件就會被新復制的源文件覆蓋。因此,為防止用戶在不經意的情況下用cp命令破壞另一個文件,在使用 cp 命令復制文件時,最好使用-i選項。

9.移動和重命名文件
在Linux系統中,移動文件可使用mv命令。mv命令還可修改文件名,即把源文件以一個新文件名移動到另一個新的目錄中去。該命令的使用方式如下。

mv [選項] 源文件名 目標文件名
 mv [選項] 源目錄名 目標目錄名2
 mv [選項] 文件列表 目錄
mv命令的選項說明如表1.10所示。

bfd2c25da439816cdf636ca0446cd3d7c7c735cd

10.文件內容統計
wc命令的功能為統計指定文件中的字節數、字數和行數, 並將統計結果顯示輸出。該命令使用方式如下。

wc  [選項] 文件列表
wc命令統計給定文件中的字節數、字數和行數。如果沒有給出文件名,則從標準輸入讀取。wc同時也給出所有指定文件的總統計數。字是由空格字符分開的最大字符串。

wc命令的選項說明如表1.11所示。

 


ae6f323ced16965f017f1b88838b70f8a1a7007c

【例1.12】是一個使用wc命令來統計C語言文件信息的應用實例。

【例1.12】使用wc命令統計文件信息應用實例。

alloeat@Ubuntu:~/chapter4Exam$ wc exam5lseek.c
 25  60 638 exam5lseek.c
1.4.2 目錄操作命令

Linux系統以文件目錄的方式來組織和管理系統中的所有文件。所謂文件目錄就是將所有文件的說明信息采用樹型結構組織起來,即常說的目錄。

Linux的目錄結構等相關知識將在第4章中進行詳細介紹,本小節將介紹對目錄進行操作的命令。

1.創建目錄
在Linux系統中建立新目錄的命令是mkdir。該命令的使用方式如下。

mkdir  [選項] 目錄
mkdir命令的選項說明如表1.12所示。

 


04ae5d21288c4b78e05f99174d543eb45f6f4ad9

【例1.13】是一个使用mkdir命令在当前目录中建立一个dir3目录,并且将其权限设置为只有文件拥有者才能读写和执行的应用实例。

【例1.13】使用mkdir命令创建目录应用实例。

alloeat@Ubuntu:~/Exammkdir$ ls
dir1  dir2
alloeat@Ubuntu:~/Exammkdir$ mkdir -p -m 700 dir3
alloeat@Ubuntu:~/Exammkdir$ ls -l
总用量 12
drwxrwxr-x 2 alloeat alloeat 4096  8月  4 10:42 dir1
drwxrwxr-x 2 alloeat alloeat 4096  8月  4 10:42 dir2
drwx------ 2 alloeat alloeat 4096  8月  4 10:43 dir3

2.删除目录
与创建目录对应的是删除目录,rmdir 命令用来删除目录。一般情况下要删除的目录必须为空目录,如果所给的目录不为空,系统会报告错误。该命令的使用方式如下。

rmdir [选项] 目录列表

rmdir命令的选项说明如表1.13所示。

表1.13 rmdir 命令选项说明

 


b53c5627757a8e69258cb6b38a777f69a9b87965

3.显示当前工作目录
显示当前工作目录的命令是pwd命令,该命令的使用方式如下。

pwd

【例1.14】是一个使用pwd命令来显示当前工作目录的应用实例。

【例1.14】使用pwd命令顯示當前工作目錄應用實例。

alloeat@Ubuntu:~/Exammkdir$ pwd
/home/alloeat/Exammkdir
4.改變當前工作目錄
在Linux系統中使用cd命令改變當前工作目錄。該命令的使用方式如下。

cd   [directory]
該命令將當前目錄改變至directory所指定的目錄。若沒有指定directory,則回到用戶的主目錄。為了改變到指定目錄,用戶必須擁有對指定目錄的執行和讀權限。該命令可以使用通配符。

【例1.15】是一個使用cd命令在多個目錄路徑下切換的應用實例。

【例1.15】使用cd命令切換目錄路徑應用實例。

alloeat@Ubuntu:~/Exammkdir$ ls
dir1  dir2  dir3
alloeat@Ubuntu:~/Exammkdir$ cd dir1
alloeat@Ubuntu:~/Exammkdir/dir1$ cd ../dir2
alloeat@Ubuntu:~/Exammkdir/dir2$ cd ..
alloeat@Ubuntu:~/Exammkdir$ cd /
alloeat@Ubuntu:/$ ls
bin    dev   host            lib         mnt   root  selinux  test  var
boot   etc   initrd.img      lost+found  opt   run   srv      tmp   vmlinuz
cdrom  home  initrd.img.old  media       proc  sbin  sys      usr   vmlinuz.old

5.鏈接文件的命令
鏈接文件的命令是ln命令,該命令在文件之間創建鏈接。這種操作實際上是給系統中已有的某個文件指定另外一個可用於訪問它的名稱。對於這個新的文件名,可以為之指定不同的訪問權限,以控制對信息的共享和安全性的問題。如果鏈接指向目錄,用戶就可以利用該鏈接直接進入被鏈接的目錄,而不用輸入一長串的路徑名。而且,即使刪除這個鏈接,也不會破壞原來的目錄。該命令的使用方式如下。

ln [選項] 源文件或目錄 [鏈接名]
ln命令的選項說明如表1.14所示。

 


83eccaf659347f4d0539723d8d3a7c9452301b1a

鏈接有兩種,一種被稱為硬鏈接(Hard Link),另一種被稱為符號鏈接(Symbolic Link)。硬鏈接的意思是一個文件可以有多個名稱。而符號鏈接的方式則是產生一個特殊的文件,該文件的內容是指向另一個文件的位置。建立硬鏈接時,鏈接文件和被鏈接文件必須位於同一個文件系統中,並且不能建立指向目錄的硬鏈接。而對符號鏈接,則不存在這個問題。默認情況下,ln產生硬鏈接。

註意:Linux的鏈接類似於Windows中的快捷方式。

6.改變文件或目錄權限
在Linux系統中,用戶設定文件權限,控制其他用戶不能訪問、修改文件。但在系統應用中,有時需要讓其他用戶使用某個原來其不能訪問的文件或目錄,這時就需要重新設置文件的權限,使用的命令是chmod命令。並不是誰都可改變文件和目錄的訪問權限,只有文件和目錄的所有者才有權限修改其權限,另外超級用戶可對所有文件或目錄進行權限設置。該命令的使用方式如下。

chmod [who] [+ | - | =] [mode] 文件名
chmod命令中的操作對象who可是表1.15中的任何一個選項或者它們的組合。

 


c0bb33da9657dc19bdec5537d8bfffde344e2085

chmod函数的操作符号说明如表1.16所示。

 


338686a259cb55d09faa4228281910d8dbfd9ceb

mode 所表示的权限可以是表1.17中字母的任意组合。

 


4a89848153273c10e43f63099947a26b4bb0faca

在一個命令行中可給出多個權限方式,其間用逗號隔開。例如:

chmod g+r,o+r example
這個命令將使同組和其他用戶對文件example 有讀權限。

文件和目錄的權限還可用八進制數字模式來表示。首先了解用數字表示的屬性的含義:0表示沒有權限,1表示可執行權限, 2表示可寫權限,4表示可讀權限,然後將其相加。所以數字屬性的格式應為3個從0到7的八進制數,其順序是(u)(g)(o)。例如,如果想讓某個文件的屬主有讀,寫兩種權限,需要把4(可讀)+2(可寫)=6(讀/寫)。

數字設定法的一般形式如下。

chmod  [mod]  文件名
【例1.16】是一個使用chmod命令來修改文件chmodtest.txt的權限的實例。

【例1.16】使用chmod命令修改文件權限應用實例。

設定文件chmodtest.txt的屬性為:文件屬主(u)增加執行權限,與文件屬主同組用戶(g)和其他用戶(o)增加讀權限。

alloeat@Ubuntu:~/Exammkdir$ ls chmodtest.txt -l
-rw-rw-r-- 1 alloeat alloeat 16  8月  4 10:59 chmodtest.txt
alloeat@Ubuntu:~/Exammkdir$ chmod u+x chmodtest.txt
alloeat@Ubuntu:~/Exammkdir$ ls chmodtest.txt -l
-rwxrw-r-- 1 alloeat alloeat 16  8月  4 10:59 chmodtest.txt
alloeat@Ubuntu:~/Exammkdir$ chmod go+w chmodtest.txt
alloeat@Ubuntu:~/Exammkdir$ ls chmodtest.txt -l
-rwxrw-rw- 1 alloeat alloeat 16  8月  4 10:59 chmodtest.txt

7.改變文件或目錄的屬主和屬組
chown命令用來更改某個文件或目錄的屬主和屬組。這個命令也很常用。例如,root用戶把自己的一個文件拷貝給用戶alloeat,為了讓用戶alloeat能夠存取這個文件,root用戶應該把這個文件的屬主設為alloeat。否則,用戶alloeat無法存取這個文件。該命令的使用方式如下。

chown [選項] 用戶或組 文件
chown將指定文件的擁有者改為指定的用戶或組。用戶可以是用戶名或用戶ID。組可以是組名或組ID。文件是以空格分開的要改變權限的文件列表,支持通配符。chown命令的選項說明如表1.18所示。

 


aae6f8d9091768f9774641b63ea487a6e8d0be51

1.4.3 其他常用命令

在Linux的實際使用中,通常還會涉及一些其他的命令,本小節對這些命令進行簡要的介紹。

1.幫助命令
對於絕大部分Linux終端用戶和C語言程序員而言,經常需要查詢一些命令或者函數具體使用方法,此時可以使用Linux自帶的man幫助命令。

只要在命令man後,輸入想要獲取幫助的命令的名稱(例如ls),man就會列出一份完整的說明,其內容包括命令語法、各選項的意義以及相關命令等。該命令使用方式如下。

man  [選項] 命令名稱
man命令的常用選項說明如表1.19所示。

 


0708ca6f80d904be4585c5a2527f2aca5502628a

【例1.17】是使用man命令显示“ls”命令和“exit”函数使用方法的部分内容。

【例1.17】man帮助命令应用实例。

LS(1)                                    User Commands                                    LS(1)
NAME
       ls - list directory contents
SYNOPSIS
       ls [OPTION]... [FILE]...
DESCRIPTION
       List  information  about  the  FILEs  (the  current directory by default).  Sort entries
       alphabetically if none of -cftuvSUX nor --sort is specified.
       Mandatory arguments to long options are mandatory for short options too.
       -a, --all
              do not ignore entries starting with .
       -A, --almost-all
              do not list implied . and ..
       --author
              with -l, print the author of each file
       -b, --escape
              print C-style escapes for nongraphic characters
       --block-size=SIZE
              scale sizes by SIZE before printing them.  E.g., '--block-size=M' prints sizes in
              units of 1,048,576 bytes.  See SIZE format below.
       -B, --ignore-backups
 Manual page ls(1) line 1 (press h for help or q to quit)```
以下为exit函数的帮助手册。

EXIT(3) Linux Programmer's Manual EXIT(3)
NAME

   exit - cause normal process termination

SYNOPSIS

   #include <stdlib.h>
   void exit(int status);

DESCRIPTION

   The  exit() function causes normal process termination and the value of status & 0377 is
   returned to the parent (see wait(2)).
   All functions registered with atexit(3) and on_exit(3) are called, in the reverse  order
   of  their  registration.  (It is possible for one of these functions to use atexit(3) or
   on_exit(3) to register an additional function to be executed during exit processing; the
   new  registration  is  added  to  the  front  of the list of functions that remain to be
   called.)  If one of these functions does not return (e.g., it calls _exit(2),  or  kills
   itself  with a signal), then none of the remaining functions is called, and further exit
   processing (in particular, flushing of stdio(3) streams) is abandoned.   If  a  function
   has  been  registered multiple times using atexit(3) or on_exit(3), then it is called as
   many times as it was registered.
   All open stdio(3) streams are flushed and  closed.   Files  created  by  tmpfile(3)  are
   removed.
   The  C  standard  specifies  two  constants,  EXIT_SUCCESS and EXIT_FAILURE, that may be
   passed to exit() to indicate successful or unsuccessful termination, respectively.

RETURN VALUE
Manual page exit(3) line 1 (press h for help or q to quit)

註意:在man的幫助頁面上,可以使用“q”快捷鍵退出幫助頁,可以使用向上翻頁、向下翻頁等快捷鍵進行翻頁。man命令對於C語言程序員而言相當重要,讀者應該重視並且經常使用這個命令。

2.Shell幫助命令
help命令用於查看所有Shell命令。用戶可以通過該命令尋找Shell命令的用法,只需在所查找的命令後輸入help命令,就可以看到所查命令的內容了。例如,輸入cd –help便可查看cd命令的使用方法。

info命令用來獲取相關命令的詳細使用方法,例如,info ls可以獲取如何使用ls的詳細信息。

【例1.18】是在Ubuntu 12.04發行版自帶Shell中使用help命令的實例。

【例1.18】help命令應用實例。
GNU bash, 版本 4.2.24(1)-release (i686-pc-linux-gnu)
這些 Shell 命令是內部定義的。請輸入'help' 以獲取一個列表.
輸入'help 名稱' 以得到有關函數'名稱'的更多信息.
使用'info bash' 來獲得關於 Shell 的更多一般性信息
使用'man -k' 或'info' 來獲取不在列表中的命令的更多信息.
名稱旁邊的星號 (*) 意味著該命令被禁用.
job_spec [&] history [-c] [-d 偏移量] [n] 或 history ->
(( 表達式 )) if 命令; then 命令; [ elif 命令; then ▒>
. 文件名 [參數] jobs [-lnprs] [任務聲明 ...] 或 jobs -x >
: kill [-s 信號聲明 | -n 信號編號 | -▒>
[ 參數... ] let 參數 [參數 ...]
[[ 表達式 ]] local [option] 名稱[=值] ...
alias [-p] [名稱[=值] ... ] logout [n]
bg [任務聲明 ...] mapfile [-n 計數] [-O 起始序號] [-s 計>
bind [-lpvsPVS] [-m 鍵映射] [-f 文件名] > popd [-n] [+N | -N]
break [n] printf [-v var] 格式 [參數]
builtin [Shell 內嵌 [參數 ...]] pushd [-n] [+N | -N | 目錄]
caller [表達式] pwd [-LP]
case 詞 in [模式 [| 模式]...) 命令 ;;].> read [-ers] [-a 數組] [-d 分隔符] [-i ▒>
cd [-L|[-P [-e]]] [dir] readarray [-n 計數] [-O 起始序號] [-s ▒>
command [-pVv] 命令 [參數 ...] readonly [-aAf] [name[=value] ...] or readonl>
compgen [-abcdefgjksuv] [-o 選項] [-A 動▒> return [n]
complete [-abcdefgjksuv] [-pr] [-DE] [-o 選▒> select NAME [in 詞語 ... ;] do 命令; done>
compopt [-o|+o 選項] [-DE] [名稱 ...] set [-abefhkmnptuvxBCHP] [-o option-name] [-->
continue [n] shift [n]
coproc [名稱] 命令 [重定向] shopt [-pqsu] [-o] [選項名 ...]
declare [-aAfFgilrtux] [-p] [name[=value] ...]> source 文件名 [參數]
dirs [-clpv] [+N] [-N] suspend [-f]
disown [-h] [-ar] [任務聲明 ...] test [表達式]
echo [-neE] [參數 ...] time [-p] 管道
enable [-a] [-dnps] [-f 文件名] [名稱 ...> times
eval [參數 ...] trap [-lp] [[參數] 信號聲明 ...]
exec [-cl] [-a 名稱] [命令 [參數 ...]] [> 真
exit [n] type [-afptP] 名稱 [名稱 ...]
export [-fn] [名稱[=值] ...] 或 export -p typeset [-aAfFgilrtux] [-p] name[=value] ...
偽 ulimit [-SHacdefilmnpqrstuvx] [限制]
fc [-e 編輯器名] [-lnr] [起始] [終結] > umask [-p] [-S] [模式]
fg [任務聲明] unalias [-a] 名稱 [名稱 ...]
for 名稱 [in 詞語 ... ] ; do 命令; done unset [-f] [-v] [名稱 ...]
for (( 表達式1; 表達式2; 表達式3 )); > until 命令; do 命令; done
function 名稱 { 命令 ; } 或 name () { 命> variables - 一些 Shell 變量的名稱和▒>
getopts 選項字符串 名稱 [參數] wait [編號]
hash [-lr] [-p 路徑名] [-dt] [名稱 ...] while 命令; do 命令; done
help [-dms] [模式 ...] { 命令 ; }

3.文件查找命令
和find命令不同,whereis命令用來定位可執行文件、源代碼文件、幫助文件在文件系統中的位置。例如,最常用的ls命令在/bin目錄中。如果希望知道某個命令在哪一個目錄中,可以用whereis命令來查詢。該命令的使用方式如下。
whereis [選項] 命令名

whereis命令的常用選項說明如表1.20所示。

<div style="text-align: center">
 <img src="https://yqfile.alicdn.com/5b916fc0d61754b12703c2d9407ef96907be3fde.png" >
</div>


【例1.19】是一個使用whereis命令來查找“ls”命令位置的應用實例。

【例1.19】whereis查找命令應用實例。
alloeat@Ubuntu:~/Exammkdir$ whereis ls
ls: /bin/ls /usr/share/man/man1/ls.1.gz

4.切換當前用戶命令
Linux是一種多用戶操作系統,如果所有用戶共享一個賬號,會造成許多麻煩。因此在Linux中每個用戶都有自己的賬號,各個用戶的賬號可以根據需要分配不同的權限。Linux提供了與之相關的用戶操作命令。

su命令用來切換用戶身份,該命令的使用方式如下。
su [選項] user

除root外,其他用戶切換身份時,需輸入密碼。su命令的常用選項說明如表1.21所示。

<div style="text-align: center">
 <img src="https://yqfile.alicdn.com/a3d8a3da7081f34048f13265ec7e99c2ea80fd21.png" >
</div>

sudo命令用來以系統管理員的身份執行指令,該命令的使用方式如下。
sudo [選項] 命令

以系統管理者的身份執行指令,也就是說,經由sudo所執行的指令就好像是 root 親自執行。sudo命令的常用選項說明如表1.22所示。

<div style="text-align: center">
 <img src="https://yqfile.alicdn.com/77ae0089128fe2da8370d33f78329756b4e59fa9.png" >
</div>

【例1.20】是一個使用sudo命令來切換當前用戶的實例。

【例1.20】使用sudo命令切換當前用戶的應用實例。
alloeat@Ubuntu:~/Exammkdir$ sudo -s
[sudo] password for alloeat:
root@Ubuntu:~/Exammkdir#

5.關機和重啟命令
由於Linux是多用戶、多任務的操作系統,因此在切斷計算機電源之前,必須先關閉Linux系統。決不能不執行關機進程就切斷計算機電源,這樣做會導致保存在內存緩沖區的磁盤數據來不及寫回磁盤,從而破壞文件系統。本節介紹一下與關機和重啟計算機有關的命令。

shutdown 命令可以安全地關閉或重啟Linux系統,它在系統關閉之前給系統上的所有登錄用戶提示一條警告信息。該命令還允許用戶指定一個時間參數,可以是一個精確的時間,也可以是從現在開始的一個時間段。精確時間的格式是hh:mm,表示小時和分鐘;時間段由“+”和分鐘數表示。系統執行該命令後,會自動進行數據 同步工作。該命令使用方式如下。
shutdown
[選項] [時間] [警告信息]

shutdown命令的常用選項說明如表1.23所示。

<div style="text-align: center">
 <img src="https://yqfile.alicdn.com/1397681aac76a87c75e1bad47361e6b95677c185.png" >
</div>


註意:關機命令需要root權限。

halt 是最簡單的關機命令,其實際上是調用shutdown -h 命令。執行halt時,殺死應用進程,文件系統寫操作完成後就會停止內核。該命令的使用方式如下。
halt [選項]

halt命令的常用選項說明如表1.24所示。

<div style="text-align: center">
 <img src="https://yqfile.alicdn.com/688cc01b9b22ece1b57e61d4348d23225a555ee4.png" >
</div>

註意:halt命令同樣需要超級用戶權限。

reboot命令用來重新啟動計算機。該命令的使用方式如下。
reboot [選項]

reboot命令的常用選項說明如表1.25所示。

<div style="text-align: center">
 <img src="https://yqfile.alicdn.com/899ac5be0c6c758748ec48894119b28849bb0a5b.png" >
</div>

延伸阅读

    评论