Shell Enviroment

From ITRS
Jump to: navigation, search

基本符號

  • >

用來導向輸出,例如: ./gen > gen.out

  1. 將執行程式輸出的內容 覆蓋寫入 gen.out
  • >>

導向輸出,但是會附加在輸出檔案的後面 ./gen >> gen.out

  1. 將將執行程式輸出的內容 寫入 gen.out 的後面
  • <

導向輸入,例如用來輸入測試資料。 ./gen < data.in

  1. 將 data.in 輸入 gen 程式

混合運用例題: ./gen <data.in > gen.out

  • |

將其輸出結果管線(pipe)接起來 gen <data.in | wc

  1. 將gen輸出的內容 傳給 wc這個程式
  • <<EOF (here document)

導入EOF作為結尾符號 EOF可以換成其他字串

  • ./gen < data.in << EOF
  1. 把data.in 加上 EOF導入 程式gen
  • *

用來代替 不知道的’字串’

  • ls *.c
  1. 列出所有 檔尾是 .c的檔案
  • ls a*c.c
  1. 列出所有 長的像是 axxxxc.c的檔案
  •  ?

用來代替 不知道的’字元’ ls all?c.c

  1. 列出所有 長的像是 allxc.c的檔案
  • [ccc]

用來代替 不知道的’字組’ ls a[a-z]loc[1-3][a,b,c].c

  1. 列出所有 長的像是 a{x|x屬於a到z}loc{x| x屬於1到3 }{x| x屬於 a,b,c}.c
  •  ;

等第一個動作結束後,做第二個動作 sleep 300; echo the tea is ready

  1. 等待 300秒後 顯示 茶準備好了
  • &

不等第一個動作結束,就列出其背景程序 ID $( ... ), ` ... `--->NEST X 表示變數 echo $(gen < $(data.in)) echo `a`

  • ( ... )

在Sub-shell中執行括弧中動作,類似優先權 如上數的括號

  • $1, $2, …

就是傳入的參數,像是C裡面的*argv[1],*argv[2]…

  • $var

變數

  • ${var}

帶括弧的變數,方便區隔

  • \

跳脫符號,

  • echo (a;b)
  1. 做完a後做b ,顯示回傳值
  • echo a\;b
  1. 顯示 a;b
  • ' ... '

文字括弧

  • echo ‘$a;b’
  1. 顯示 $a;b
  • " ... *

文字括弧,但是會展開裡面的變數

  • echo “$a;b”
  1. 顯示 a的內容;b
  • #

註解符號,其後面不執行

  • echo aaa#bbb
  1. 顯示aaa
  • var=value

指定變數值 a=b

  • echo a
  1. 顯示b
  • a = b (有空格)
  1. 執行a,然後錯誤
  • p1 && p2

p1若執行成功 才執行p2

  • p1 || p2

p1若執行失敗 才執行p2

  • for i in apple, bird, colinux; do echo 'i am eating'+$i; do 'oh, '+$i+'dispeard!'; done

印出apple, bird, colinux三個變數

  • ~

home,個人主目錄 ex: cd ~

  • /

根目錄 ex: cd /

  • .

這裡,目前資料夾

  • ./

目前資料夾

  • ../

上一個資料夾

  • .../

沒這個東西

基本指令

  • ls

list file 顯示資料夾中檔案 ex: ls ex: ls -a 列出所有檔案 ex: ls -l 列出明細 ex: ls -al 列出所有檔案明細

  • cat

concatenate file 連接檔案。有時也用來印出檔案。 ex: cat fileA fileB fileC ex: cat fileA

  • echo

印出東西 ex: echo 'hello world' ex: echo $varA

  • grep

抓符合的字串出來。 ex: ls | grep *.cpp ex: cat | grep error

  • more

讀長字串時幫忙分頁 ex: cat fileA | more

  • cp

copy file 複製檔案 ex: cp fileFrom fileTo ex: cp -r dirA des ex: cp *.c /home/itrs

  • rm

remove file 移除檔案 ex: rm fileA ex: rm fileA fileB ex: rm -r dirA ex: rm -rf dirA 強制刪除

  • mv

move file 搬動檔案 mv fileDirA des

  • cd

change dir 移到別的資料夾 ex: cd ~

  • touch

碰一下,產生檔案 ex: touch makefile

  • man

mannual 使用說明 ex: man printf

  • info

information 還是使用說明, 有些GNU出的的說明書會放在這。 ex: info someGNUsw

  • mkdir

make dir 製造資料夾 ex: mkdir my_tutorial

  • tar

壓縮/解壓縮 ex: tar -czvf file.tar.gz * 將這個資料夾的檔案壓縮成file.tar.gz ex: tar -xvf file.tar.gz 將file.tar.gz原地解壓縮 ex: tar -xvf file.tar.gz -o dir 將file.tar.gz解壓縮到dir

  • 7za

7zip 壓縮/解壓縮

  • time

量時間 ex: time ./hello

  • date

顯示現在日期 ex: date

  • pwd

顯示現在資料夾 ex: pwd

  • ctrl-z

把目前程式放到背景 ex: 在vim按ctrl-z

  • fg

把剛剛放到背景的程式還原 ex: fg

  • yes

say y or say something ex: yes ex: yes ooooooooop

  • locate

找檔案 ex: locate main.c ex: locate *.avi

系統管理指令

  • mount

掛載檔案系統 ex: mount /dev/myUSBDisk /media/mySpace

  • unmount

(安全地)卸除檔案系統 ex: unmount /media/mySpace

  • logout

登出 ex: logout

  • su

switch user ex: su 切換到root ex: su MyUser

  • chmod

切換模式。 ex: chmod 777 aExcutableFile ex: chmod --help

  • chown

切換擁有者/群組 ex: chown me yourMoney ex: chown me:itrs Airconditioner

  • kill

砍process

  • ps aux | grep firefox

找出firefox的執行資料,然後你可以砍了他。

常見目錄

  • /etc

放設定檔

  • /etc/sysconfig/network-script

放網路設定檔

  • /etc/init.d

放開機會執行的檔案

  • /bin

放執行檔

  • /sbin

放有危險的執行檔

  • /home

放個人目錄

  • /usr

放使用者相關的東西,例如你灌的軟體

  • /usr/local/

放使用者本地產物。界線模糊

  • /usr/bin

放你灌的執行檔

  • /usr/share/doc

放文件

  • /usr/local/share/doc

還是放文件

  • /tmp

放暫存檔案,可能隨時被砍

  • /www

有時後會放網頁目錄

  • /dev

放裝置

  • /root

老大的家

  • /media

USB碟掛這裡

  • /mnt

掛其他東西。

  • /boot

放開機相關

  • ~

你家

  • ~/.xxx

你家的隱藏檔

  • ~/.gvfs

你家的遠端檔案系統

  • ~/.vim

你家vim的extension

  • ~/.ssh

你家ssh的key

網路技能

  • ssh

用ssh連線到遠端電腦 ex: ssh student@192.168.0.1

  • scp

遠端複製檔案 ex: scp ap.itrs:/var/* .

  • ssh-add

加入金鑰。一次認證,到結束前通行。

  • telnet

上BBS ex: telnet ptt.cc

See Also

Comments

blog comments powered by Disqus