顯示具有 基本指令 標籤的文章。 顯示所有文章
顯示具有 基本指令 標籤的文章。 顯示所有文章

2011年12月13日 星期二

檢視檔案內容相關指令 nl、cat、grep...

這裡存放一些用來可以檢視檔案內容的命令

echo
$echo hello                   --在螢幕上顯示 hello

echo 這個指令是將之後的字串顯示在螢幕上,所以並沒有辦法直接看見檔案的內容,不過在編輯檔案時,在檔案裡加上 echo hello 的話,執行檔案時畫面上就會直接顯示出 hello 這個字

nl
$nl abc                       --顯示內容並加上行號

$nl -b a -n rz abc       --以6位數顯示行號如 : 000001、000002

參數:
-b :指定行號指定的方式,主要有兩種:

           -b a :表示不論是否為空行,也同樣列出行號
           -b t  :如果有空行,空的那一行不要列出行號

-n :列出行號表示的方法,主要有三種:

          -n ln :行號在螢幕的最左方顯示
          -n rn :行號在自己欄位的最右方顯示,且不加 0
          -n rz :行號在自己欄位的最右方顯示,且加 0

cat
$cat abc                         --顯示 abc 這個檔案的內容

$cat -n abc                     --顯示出來的內容會加上行號

head
$head -n 10 /var/log/syslog             --只顯示檔案的頭 10 行

$head -n -100 /var/log/syslog          --檔案的後 100 行都不顯示

netstat -an | head -n 10                   --進階用法,顯示 port | 並只顯示前10行

tail
$tail /var/log/messages                   --從檔案的末端開始顯示內容 ( 預設顯示 10 行 )

$tail -n 30 /var/log/messages          --從檔案的末端開始顯示 30 行的內容

grep
$grep 'test' abc                   --將 abc 這個文件裡有 test 這個字的整行顯示出來

$grep 'test' aa bb cc           --從 aa、bb、cc 這三個檔案裡將有 test 這個字的整行顯示出來

基本參數
-i :忽略大小寫的不同,所以大小寫視為相同
-n :順便輸出行號
-v :反向選擇,亦即顯示出沒有 '搜尋字串' 內容的那一行
--color=auto : 將找到的關鍵字部分加上顏色的顯示
進階用法
-A :後面可加數字,為 after 的意思,除了列出該行外,後續的 n 行也列出來
-B :後面可加數字,為 befer 的意思,除了列出該行外,前面的 n 行也列出來
--color=auto 可將正確的那個擷取資料列出顏色
 
$ifconfig -a | grep -A1 eth0       --抓取 eth0 那行並將後面一行也顯示出來 

cut
$cat abc | cut -d -f ':' 2,3          --顯示 abc 的內容並以 : 號為分界只抓取第二段及第三段


-d :後面接分隔字元。與 -f 一起使用
-f :依據 -d 的分隔字元將一段訊息分割成為數段,用 -f 取出第幾段的意思
-c :以字元 (characters) 的單位取出固定字元區間

變數處裡
${  }          --專門用在處理變數上

$user = a01 : a02 : a03
$echo ${user#*:}             --從左至右尋找第一個 : 字號並刪除 : 字前面的字元 ( * 為萬用字元 )
a02 : a03                        --顯示結果

$user = a01 : a02 : a03

$echo ${user##*:}           --從左至右尋找最後一個 : 字號並刪除 : 字前面的字元
a03                                 --顯示結果

$user = a01 : a02 : a03
$echo ${user%:*}            --從右至左尋找第一個 : 字號並刪除 : 字後面的字元 ( * 為萬用字元 )
a01 : a02                         --顯示結果

$user = a01 : a02 : a03
$echo ${user%%:*}         --從右至左尋找最後一個 : 字號並刪除 : 字後面的字元
a01                                  --顯示結果

範例 : 
$name = $(cat /etc/passwd | grep student)      --顯示帳號檔案並只抓取有 student 的行列放進
                                                                             name 這個變數中
$() : 是變數中用來處理命令的方式

$n1 = ${name%%:*}     --從 name 變數中從右至左尋找最後一個 : 字號並刪除 : 字後面的字

$echo $n1                    --顯示 n1 裡的內容
student                         --顯示結果,這行只剩下 student ,其他的都被刪除了

2011年12月11日 星期日

檔案的複製、刪除、移動及更名 cp、rm、mv

複製檔案
$cp abc /home/student

cp :為 copy ,複製檔案,後接要複製的檔名,再後面接要複製過去的目錄區

複製目錄
$cp -r /tmp/test1 /home/student

cp -r : 加上 -r 後面接要複製的目錄,再後面接要複製過去的目錄區

**注意** : 這裡的目錄輸入的都是絕對路徑


刪除檔案
$rm abc

rm : remove

刪除目錄
$rm -r /tmp/test1

這會將整個目錄,包含裡面的所有檔案刪除


移動檔案
$mv /tmp/abc /home/student

前面是要移動的檔案,後面是要移動過去的目錄區

檔案更名
$mv /tmp/abc /tmp/xyz

將 /tmp 下的 abc 移動到 /tmp 下(同目錄)的xyz

建立檔案 touch

建立新檔案
$touch abc

建立目錄 mkdir

建立新目錄
$mkdir abc

建立多重目錄
$mkdir -p test1/test2/test3

-p : 加上後會自動建立 test1 ,並在其中建立 test2 ,test2 之下再建立 test3 的多重目錄結構

刪除空白目錄
$rmdir abc

只能刪除空白的目錄,很少使用到的指令

執行程式 .sh

執行在家目錄下程式
$./hello.sh

./ : 單獨一個點表示為家目錄的縮寫,加上 / 表示為 : /home/student/ 之下的 hello.sh 這個檔案

如果程式在目前使用者所在的目錄下,則
$hello.sh

否則就要加上絕對路徑
$/home/student/hello.sh

執行檔 .sh

修改檔案權限為可執行檔
$chmod +x hello.sh 

chmod : 修改檔案權限

+x : 增加可執行的權限 (變成執行檔)

編輯文件 nano

編輯文件
$nano hello

ctrl + o : 存檔
ctrl + x : 離開
ctrl + k : 剪下整行
ctrl + u : 貼上整行

使用 Ubuntu 時建議使用 nano ,而不要使用 vi 來編輯文件

關機指令 shutdown

關機指令:
$sudo shutdown -h now

sudo : 由於 Ubuntu 不建議使用 root 帳號,所以在平時使用一般使用者時,執行需要 root 權限
           的指令時要加上 sudo 提升權限

shutdown : 關機指令

-h : 表示要立即關機

now : 這裡可以設定秒數來規定等待多久關機,如:30表示30秒後關機,輸入now則表示為0秒



$sudo shutdown -k 'this system will reboot'

-k : 送出關機的警告訊息,但是不會真的關機,後面單引號內接要發送的訊息