天天看點

實驗一二三指令

///實驗1 Linux操作基礎和文本編輯

useradd 使用者名

passwd 使用者名

groupadd 使用者組名

man 指令

help指令

vi 檔案名

i指令插入文本

删除一個字元,用x指令

删除一行,用dd指令

删除剩下的行,用d指令

複原文字指令用u

指令ndd:能夠剪切從目前行開始的n行文本

指令p:能将剪切的内容粘貼到文檔内任何地方

向前查找:使用指令/+要查找的文本,向後查找:使用指令?+要查找的文本

:.=并按Enter鍵确定光标所在目前行行号

:行号并按Enter鍵,光标移動到輸入的行号。:$:光标移動到最後一行

ESC

:wq把編輯緩沖區的内容寫到你編輯的檔案中,退出編輯器,回到系統提示符下

:ZZ僅當作過修改時才将緩沖區内容寫到檔案上

:x與 :ZZ 相同

:q!強行退出vi

///實驗2Linux檔案系統

1.ls指令顯示目前工作目錄的内容

指令格式:ls [選項]目錄名 (顯示目錄中所有子目錄及檔案名)

選項:-l:以清單方式顯示。

2.指令mkdir建立目錄;指令rmdir删除目錄;

文法:

mkdir [選項]目錄名

rmdir [選項]目錄名(注意目錄下必須為空)

選項-p:可以建立和删除一系列具有父子關系的目錄

3.pwd指令确定你目前的工作目錄

指令cd  ..    移到上一目錄

指令cd  目前目錄下的檔案名   移到目前目錄下的指定檔案内

date > file1     将目前日期和時間存放到建立檔案file1中

指令 > 輸出檔案(檔案輸出重定向)

#ls >file1 (将ls顯示的結果輸出到檔案file1中,如果file1存在,則覆寫)

4.cat指令檢視file1檔案的内容

man date >> file1    将date指令的用法附加到檔案file1的後面

指令 >> 輸出檔案(給檔案追加資料)

#ls –l  >>file1 (将ls -l顯示的結果追加到檔案file1末尾)

ls -l file1指令列出檔案file1的較詳細的資訊

5.cp file1 fa  生成檔案file1的副本fa

cp[選項] 檔案1 檔案2(複制檔案1,并将副本命名為檔案2。如果檔案2是個目錄,就将檔案1的副本放在目錄中。)

選項:

-i : 如果目标檔案存在,在覆寫前提示

-r : 複制目錄

注意:複制前必須具有檔案1的讀權限和檔案2的寫權限

6.rm fa指令将檔案fa删除

rm [選項] 檔案清單

-i : 删除前提示

-f : 強制删除,不考慮權限

-r : 删除目錄中所有内容包括所有非空子目錄

7.mv file1 file_a

檔案的移動和重命名,mv指令

格式:mv [選項] 檔案1 檔案2

#mv  temp  temp.moved(将temp重新命名為temp.moved)

#mv  dir1/*  dir2 (将目錄dir1中所有檔案和目錄(不包括隐藏檔案)移到目錄dir2中)

8.檢視檔案指令cat

格式:cat [選項]檔案名

選項 –n:為顯示行添加行号

指令more:如果要檢視的檔案超過一頁,可以分屏顯示。

空格鍵:顯示下一屏

Enter鍵:顯示下一行

指令head:顯示檔案的頭10行内容

指令tail:顯示檔案的末尾10行内容

cat file*指令列出目前工作目錄中以file開頭的所有檔案

cat file?指令

9.find 目錄清單 -name 檔案名 -print

其中,目錄清單是指定開始查找的目錄,檔案名是你要查找的檔案或目錄。-name和-print是find指令的選項。

#find /usr/include –name socket.h –print

(在/usr/include及子目錄中查找檔案socket.h,并列印該檔案的絕對路徑)

10.whereis [選項]指令名

找到顯示該指令的絕對路徑名及手冊頁的絕對路徑名(執行指令時,該指令有效但shell找不到它時用)

11.grep指令在檔案中找到使用者的有關資訊

grep指令常用于文本檔案中查找給定的詞或短語。包含給定模式字元串的行在标準輸出(即顯示器)上顯示出來。

格式:grep [選項] 字元串 檔案名

#grep xiaomei /etc/passwd(在/etc/passwd目錄中尋找字元串xiaomei,找到則顯示包含該字元串的行資訊)

#grep –n xiaomei /etc/passwd (檔案中包含xiaomei字元串的行都顯示了行号)

12.指令echo $HOME : 确認目前使用者的主目錄

13.修改檔案權限

<1>符号模式格式如下:

chmod  key 檔案 [檔案清單]

其中,key由以下成分組成:

[who] [+|-|=] [mode]

——who這一部分可以由下面的一個和多個字元組成:u,g,o或a,它們分别表示檔案主,組使用者,其他使用者或所有三種使用者。預設值是a。

——第二部分必須是以下三個字元中的一個:+,-,或者=,分别表示增加,删除或者設定。

——mode成分可以由以下字元任意組合:r,w或x,分别表示讀,寫或者執行/查詢的權限

以上三個部分必須依次輸入,而且它們之間沒有空格。在一個指令行中可以指定多個key,彼此間用逗号隔開,中間沒有空格。

如:設檔案f原來的權限是rw-rw-r--,現在想讓所有使用者都具有執行權限,則可使用以下指令:

chmod a+x f

該指令執行後,檔案f的權限變成rwxrwxr-x

<2>絕對模式格式如下:

chmod 八進制模式 檔案 [檔案清單]

例子:權限 rw- rw- r-- 用二進制表示應為:110 110 100,

八進制表示則為:664

#chmod 664 file1(将檔案1賦予rw- rw- r--權限)

14.改變檔案或目錄所屬的組 chgrp指令

格式:chgrp [選項] 組名 檔案名

15.改變檔案的屬主 chown指令

格式:chown [選項] 使用者名 檔案名

例:#chown xiaomei test(将檔案test的所屬使用者由root改為xiaomei)

///實驗3 Linux的程序控制

1.who指令檢視目前線上使用者資訊

2.w指令檢視目前登入的使用者及正在執行的指令

3.ps指令用法:

格式:ps 選項

常用選項說明:

-e: 顯示所有程序

-a:顯示終端上所有程序,包括前一會話中運作的背景程序

-l: 以長清單的方式輸出,顯示如下内容:

F:與程序相關的标志,訓示程序是否為一個使用者程序或核心程序。

S:程序狀态。R(就緒态),S(睡眠狀态),D(不間斷睡眠狀态,如執行I/O時),T(終止狀态),Z(僵化程序)。

UID:使用者号

PID:程序号

PPID:父程序号

PRI:優先權

SZ:大小

TTY:終端,該字段顯示附加程序的終端名

TIME:程序運作時間

CMD:指令名

WCHAN:等待通道:對于正在運作或準備運作的程序,值為空;對于等待程序,該字段列出程序等待的核心事件名。

NI:程序的nice值,計算程序優先号的參數

4.kill指令終止程序

Kill  [-信号編号] 程序pid号

信号編号:1(終止)2(中斷)9(必殺)

5.建立一終端視窗,運作vi編輯器 ctrl+Z終止該前台程序

背景運作vi編輯器。切換到前台(使用fg指令)。

産生背景指令格式:指令 &

背景運作vi編輯器後撤銷該背景vi指令。使用ps檢視是否已經終止。(注意kill指令不帶信号編号使用後的程序狀态。)

前台運作vi編輯器。切換到背景。(先終止該前台指令,再使用bg指令切換到背景。

///實驗4  Linux程式開發基礎

1.vi first.c  建立C語言檔案

2.cat first.c  檢視完整檔案

3.more first.c    每次檢視一頁檔案

4.指令格式:gcc 【選項】 檔案清單

該指令用于調用C編譯系統。當指令執行後,它依次進行預處理,編譯,彙編,連結,最後産生可執行代碼。預設情況下,可執行代碼放在a.out檔案中。

例:

#gcc  first.c  //對檔案first.c進行編譯,并産生預設的可執行檔案a.out。

#gcc  –o  success first.c  //gcc指令帶上選項–o表示對檔案first.c進行編譯,并将可執行代碼存放在一個自己指定的檔案中(此處為success)。

5.<1>使用gdb調試C程式之前,用gcc對程式進行編譯的時候帶上-g選項。

例: #gcc –g first.c –o success

<2>運作gdb:

gdb 檔案名(編譯後的可執行檔案)

例:%gdb success

<3>退出gdb:使用指令quit退出gdb傳回shell

<4>Gdb幫助指令:

help:獲得gdb指令的相關資訊。help指令顯示了所有gdb指令的類名。

help 指令名:顯示該指令的簡要說明。

如:(gdb)help run:顯示指令run的簡要說明

<5>執行程式:使用run指令

<6>設定斷點:

(gdb)break 17(行數)

(gdb)run :程式将在17行處停住。

<7>程式的單步調試:

(gdb)step:逐行執行程式

(gdb)continue:繼續将後面程式執行完畢。

<8>顯示執行中程式的變量或表達式的值:

 (gdb)print 變量名

///實驗5  程序管理

#include<stdio.h>

#include<signal.h>

#include<unistd.h>

Void waiting(),stop();

Int wait_mark;

Main()

{

  int p1,p2;

  while((p1= fork()) = = -1);

  if (p1>0)

  {

while((p2= fork()) = = -1);

if (p2>0)

 {

   Wait_mark=1;

   Signal(SIGINT, stop); //如果鍵盤不認del鍵,思考此處如何解決?能否跳

   Waiting();         // 過,使用别的方法?比如任意輸入字元getchar():w繼續

   Kill(p1,16);

   Kill(p2,17);

   Wait(0);

   Printf(“/n parent process is killed!/n”);

   Exit(0);

 }

Else

  Wait_mark=1;

   Signal(17, stop);

   Waiting();

   Printf(“/n child process2 is killed by parent!/n”);

}

Wait_mark=1;

   Signal(16, stop);

   Printf(“/n child process1 is killed by parent!/n”);

Void waiting()

  While(wait_mark!=0);

Void stop()

 Wait_mark=0;

繼續閱讀