Link Search Menu Expand Document

linux快速入門

Table of contents

  1. linux快速入門
    1. 工作站的優點與必要性
    2. 認識環境
      1. 硬體
      2. 遠端登入(ssh)軟體
      3. 檔案交換軟體(目錄)
      4. 作業環境指令
    3. 權限管理
    4. 檔案管理
      1. 命令列指令
      2. 軟體介面
    5. 指令串接
      1. pipeline(|) and substitude($)
      2. 其他指令
      3. 批次檔(bash)

工作站的優點與必要性

  1. 降低平台作業的相容性問題:多人、多機、多工、平行作業。
  2. 資料參考與比較。考核容易。
  3. 方便應用fortran/python/java/C等進行平行計算、大量數據資料處理、繪圖Linux, bash, python …
  4. 為進入資訊領域的重要門檻,有利未來職涯發展。

認識環境

硬體

  • 伺服器機器的位置是在公司內部
    1. 主機(console: master、DEVP)、
    2. 局部網路計算節點(node: node01~node03)、
    3. NAS(nas1、nas2)、
    4. 寬頻控制器、UPS等設備
  • 外部測試機(IMacKuang@sinotec24.com)

遠端登入(ssh)軟體

  • PC 軟體界面
  • 軟體提供之好用工具
    • 雙擊選取字串
    • 反白即選取複製
    • tab鍵補滿檔名或
    • 指令PageUP(或↑)補滿上個指令
    • 顏色區別工作環境

entry1.png

entry2.png

entry3.png

entry4.png

檔案交換軟體(目錄)

  • samba網路磁碟機
    1. 登入(\200.200.12.191\LX1)權限(與master上相同、nas1目前只開放進入讀取)
    2. 使用filezilla(sftp)
  • sshfs

作業環境指令

  • OS版本 uname -a
  • 磁碟機檔案系統 df -h
  • 目前有誰在線上 who, finger
  • 最近有誰登入 last
  • 目前有哪些程式在執行
    • top (table of process),  
    • ps (process),
      • psg(=ps -ef|grep $1, ps and grep)
  • 最近1000個打過的指令
    • history
    • his(=history |grep -i "$1" |grep -i "$2" |grep -i "$3
  • 離開或關閉ssh連線 exit
  • 背景執行程式
  • 執行程式時,最後面加上 &
  • 即使登出程式也不會中斷nohup CMD & (no hang up)
  • 在批次檔迴圈內執行背景工作 sub (=$1 $2 $3 $4 $5 $6 $7 $8 $9 ${10} …${20} &)

權限管理

  • 工作站因為需要服務的人很多,需要完善的使用者權限管理制度。
    • unix的權限管理相對簡單、完整,管理對象只涉及目錄與檔案。
    • 身分(地位)只有3種,檔案屬性也只管3種
  • 3層權限管理圈
    • user:擁有者、用chown (change ownner)指令修改
    • group:群組、用chgrp (change group)指令修改
    • other:他人
  • 3種檔案屬性
    • r:read(讀)
    • w:write(寫)
    • x:excution(執行)
    • 修改屬性(change mode) chmod -R og+w *
  • 更改別人擁有之唯讀檔案,須由原擁有者、或管理者才能做。

entry5.png

檔案管理

  • 早期電腦的速度還不是很快,不太容許使用者提供錯誤、模糊的指令,所以界面也較死板,使用打字卡、終端機命令列等方式進行檔案管理。
  • 隨後電腦可以接受滑鼠的訊息、將命令藏在滑鼠的動作中,現在的視窗IDE還會提供隨打隨選之命令提示、記住使用者的習慣,讓使用者不必記住所有的指令細節。
  • 雖然電腦軟體提供了非常強大的功能,但總不如使用者自行開發小工具來得實用,因此命令列指令終究不會消失。如果再加上pipeline串接指令,那就完全沒有限制了。

命令列指令

  1. ls (list)
    • ll (=ls -alh --color|more, list in lengthy and more_mode),
    • lst (=ls $1 --show-control-chars -hF --color=tty -lrt|tail, list and sorted by time-the tail part),
    • lsh (=ls $1 --show-control-chars -hF --color=tty -lrt|head , list and sorted by time-the head part),  
    • lsd(=ls $1 --show-control-chars -hF --color=tty -l|grep "^d", list dir. names),
    • lsS(=ls $1 --show-control-chars -hF --color=tty -lrS|tail , list and sorted by filesize),
    • lsr(=ls --show-control-chars -hF --color=tty -lrtd $(findc $1), list $1 recursively),
  2. 檔案行數與目錄總容量
    • wc (word count)
    • du (disk usage)
  3. 尋找檔案
    • which (環境路徑中哪一個執行檔)
    • find (在某個目錄下找符合名稱的檔案)
    • findc=find . -name "$1"(find current directory)
    • locate (資料庫中尋找,太新的檔案還來不及更新可能找不到)
  4. cp (copy), mv (move), rm (remove)
    • 前2者必須(只能)有2個檔案名稱,後者可以有很多檔名。
    • -f (force) -r (recursive) -v (verify)
    • 沒有垃圾桶可以復原,請小心使用此3指令。
  5. 顯示文字檔案
    • 全文顯示cat FILE
    • 分頁顯示 more FILE
    • 頭3行 head -n3 FILE
    • 尾5行 tail -n5 FILE
    • 顯示有字串 STR的那一行:grep STR FILE
    • 顯示文字檔的第1列  awk '{print $1}' (awkk=awk ‘{print $’$1’}’)
  6. 目錄檔名之特殊及萬用卡
    • 現在所在的目錄 .
    • 現在所在的上層目錄 ..
    • 個人本家目錄 ~
    • 不論長度之萬用卡 *
    • 單一字元的萬用卡 ?
    • 輪轉使用單一字元A~C [ABC]

軟體介面

  • mobaXterm
    • 點選Session後連到遠端工作站,隨即在左側出現遠端的目錄與檔案瀏覽器,如果沒有,可以選擇sftp頁面或按下綠色微笑小圓點重新整理。
    • 雙擊黃色檔案夾可以進入目錄、雙擊檔案可以開啟檔案。如果要使用Moba內設的編輯軟體(有行號),可以點選檔案後按右鍵選單(第二個Open with default editor)

entry6.png

指令串接

pipeline(|) and substitude($)

  1. pipeline(|)
    • 將pipeline(|) 左邊指令的結果傳到右邊,進一步處理。
    • 必須分段也可以執行、
    • 並不是每一個指令都可以做為pipeline(|)
    • (|)右邊指令,有一定範圍,常用包括more, tail, head, grep, wc, awk, cut, sort
  2. substitude($)
    • $接環境變數名稱,是呼叫出環境變數的引數
    • 後面如果接數字,是輸入批次檔的引數
    • 如果後面接(cmd),是代表執行cmd的結果
    • 如果指令不能使用pipeline(|) 可以考慮使用substitude($)
  3. 範例
    • 前述findc、awkk、lst等等
    • gf
    • 從所在目錄位置尋找含有特定字串($1)的某一類(字尾為$2)檔案:grep 50m $(findc "*.js")
    • grep --color=auto -ni $1 $(findc "*.$2")

其他指令

批次檔(bash)

  • linux上可以執行的指令文字檔,稱之為批次檔(scripts) 為直譯式的程式,語法跟OS環境是哪一個shell(C shell, Bourn Again shell, Tshell Bean shell)有關。以下bash為例必須能通過分段測試
  • 判別
    • if […]; then; else; fi;
      • 注意空格數字和文字不能混用
    • 條件式(case VAR in ; var1) done;;… esac;
  • 迴圈
    • for VAR in RANGE ;do …;done
    • VAR會按照RANGE的內容依序疊代
    • RANGE可以明列各項次、數字範圍{01..99}、英文字母範圍{Z..a}=Z , [ , ] , ^ , _ , ` , a 或混合
    • while COND;done (要搭配if指令)
    • COND可以是 true (永不停止執行)、或者是
    • 判別式[…]
    • 中斷迴圈用break(搭配if指令)
    • 跳開不執行迴圈剩下指令用continue(搭配if指令)
  • 批次檔暫時停止執行: sleep
  • 變數序列
    • 定義VAR=(var0,var1 var2 … varn)
    • 呼叫var=${VAR[$i]}
    • 其中的$i=0,1,…n)
  • 範例:在node01~03同時執行高雄市CEMS固定源逐月的calpuff模式模擬 kuang@master /home/cpuff/2018

entry7.png

entry8.png