1 / 25

Unix Programming Environment

Unix Programming Environment. 痛苦地在 Unix 寫程式. 不會在 Unix 寫程式. 痛苦的在 Unix 寫程式. 快樂的在 Unix 寫程式. Unix Programming Environment. 會簡單介紹 命令列和基本指令 編輯器 Compiler Debugger Project 管理 雜項工具. 不會談 Unix 系統安裝 套件管理、安裝 你們已經 會 C/C++ 用過其他 Compiler, Debugger. 什麼是 Shell?. User Interface? or...

joben
Télécharger la présentation

Unix Programming Environment

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Unix Programming Environment 痛苦地在 Unix 寫程式 不會在 Unix 寫程式 痛苦的在Unix寫程式 快樂的在Unix 寫程式

  2. Unix Programming Environment • 會簡單介紹 • 命令列和基本指令 • 編輯器 • Compiler • Debugger • Project 管理 • 雜項工具 • 不會談 • Unix 系統安裝 • 套件管理、安裝 • 你們已經 • 會 C/C++ • 用過其他 Compiler, Debugger

  3. 什麼是 Shell? User Interface? or... Command Processor?

  4. What is Shell 使用者輸入 Command Shell 搞懂它 OS執行它

  5. Command Prompt 命令提示字元 Command Arguments • joseph@green:~$ echo Hello World • Hello World • joseph@green:~$ echo 的 Output

  6. 幾個常見的 shell • sh Bourne Shell • bash Bourne Again Shell 在大部份的 linux distro 中作為預設的 shell • csh C Shell • tcsh TENEX C Shell多數 BSD 愛好者使用的 shell • zsh 新-花俏 為什麼有這麼多的 Shell ?

  7. joseph@green:~$ echo Hello World • 執行檔檔名? • or... • Shell 內建的(Builtin) 指令? 什麼是 Command? 我們可以在這裡打什麼

  8. Unix 的基本指令 工作目錄的切換與內容查看 • lslist列出目錄內的檔案 • cdchange directory變更所在目錄 • pwdprint working directory

  9. joseph@green:~$ ls • bin fvwm-crystal gnu_files jserv-magic-code.c public_html school test xref • joseph@green:~$ ls -l • total 44 • drwxr-xr-x 2 joseph joseph 4096 2009-04-07 02:25 bin • drwxr-xr-x 12 joseph joseph 4096 2008-12-30 13:11 fvwm-crystal • drwxr-xr-x 20 joseph joseph 4096 2009-04-11 01:24 gnu_files • -rw-r--r-- 1 joseph joseph 369 2009-04-11 01:29 jserv-magic-code.c • … • joseph@green:~$ ls -a • . .emacs.before_ecb_2.32__2 .moc • .. .emacs.before_ecb_2.32__3 .mozilla • .adobe .emacs.before_ecb_2.32__4 .mysql_history • .aptitude .emacs.before_ecb_2.32__5 .nx • ...

  10. 絕對路徑 單一根目錄 • /bin /etc • /home /home/joseph • /usr /usr/share • /usr/share/doc 一切都從 /開始

  11. 路徑這麼長,打起來好麻煩喔~ 相對路徑 和 工作目錄 如果我現在在 /home/joseph ./ 代表 /home/joseph ../ 代表 /home myfile1 代表 /home/joseph/myfile1 mydir1/ 代表 /home/joseph/mydir1 mydir1/myfile2 代表 /home/mydir1/myfile2 ../joy 代表 /home/joy ../../ 代表 / 那 ../joy/../../usr/share/../doc 代表?

  12. joseph@green:~$ joseph@green:~$ cd ../ joseph@green:/home$ pwd /home joseph@green:/home$ cd /usr/share/doc joseph@green:/usr/share/doc$ pwd /usr/share/doc joseph@green:/usr/share/doc$ cd – joseph@green:/home$ joseph@green:/home$ cd – joseph@green:/usr/share/doc$ cd ../../share/../share/doc 使用 cd 切換工作目錄 用 pwd 看目前在哪個工作目錄 ~ 代表家目錄如果我是 joseph,通常 ~ 就是 /home/joseph

  13. Unix 的基本指令 • cpcopy複製 cp [來源檔] [目的檔] cp [來源檔...] [目的目錄] cp -r [來源目錄] [目的目錄] • mvmove移動 mv [來源...] [目標] • rmremove刪除 rm [檔案...]rm -r [目錄...] • mkdirmake a directory新增一個目錄

  14. Unix 的基本指令 • cat印出檔案內容 • more, less, most看檔案內容(可翻頁) • echo印出 arguments • grep搜尋檔案內容 • gzipgzip 壓縮 • tar包裝多個檔案成一個檔案

  15. 到底有哪些基本指令 • joe-hp-mini:~$ ls /bin • bash bzless dmesg gzip ls nc rmdir tempfile zfgrep • bunzip2 bzmore dnsdomainname hostname lsmod nc.traditional rnano touch zforce • busybox cat echo ip mkdir netcat run-parts true zgrep • bzcat chgrp ed kill mknod netstat sed umount zless • bzcmp chmod egrep less mktemp pidof setupcon uname zmore • bzdiff chown false lessecho more ping sh uncompress znew • bzegrep cp fgconsole lessfile mount ping6 sleep vdir • bzexe cpio fgrep lesskey mountpoint ps stty which • bzfgrep date fuser lesspipe mt pwd su zcat • bzgrep dd grep ln mt-gnu rbash sync zcmp • bzip2 df gunzip loadkeys mv readlink tailf zdiff • bzip2recover dir gzexe login nano rm tar zegrep cd 呢?

  16. 說明查詢系統 遇到問題就 Google 不見得是聰明行為 • Command 本身提供的說明 • ls –-help • netstat –h • tar --usage • manpages • man cp • man 3 printf • man –k copyman –f printf • info documents • info libc • Shell Builtin Commands • help cd • help • man bash

  17. Bash 上必學的操作 • Tab!!!!!!!!!!! • 補全參數、命令(若不能直接補全,可能需要按多下 TAB,會顯示所有候選選擇) • C-w M-backspace • 向左刪一個 word • M-d • 向右刪一個 word • C-u, C-k (kill) • 砍到行首、行尾 (輸入密碼輸入錯時特別好用) • C-a, C-e, HOME, END • 跳到行尾,行首 • M-b (backword), M-f (forward), M-左, M-右 • 一次一個跳一個 word • C-yM-y • 貼上、切換貼上的東西 • M-. • 貼上上個命令的最後一個參數(連續按可切換更早的命令) • C-/ • 復原 • C-r • 往上搜尋以前打過的指令 • C-L • 清除螢幕 C- 代表 Ctrl 接著後面的按鍵 M- 代表 Alt (或 ESC)接著後面的按鍵 若使用 ESC,按一下 ESC 然後放開,再按後面的鍵

  18. 文字編輯器 • vi • 已是 de facto 的編輯器 • vim、elvis • 加強版 vi • http://info.sayya.org/~edt1023/vim/vim.html • emacs • 史上最強編輯器。Emacs 是一種信仰。根本是一套 OS什麼事都能做,只差不能泡咖啡。 • 進 emacs 後,按 C-u C-h t TAB • nano • 啥功能都沒有,簡單到不用學 永遠痛苦的使用 Unix

  19. vi(m) • Normal mode • 不能輸入文字,按下的按鈕都代表某個命令(如移動游標,刪除文字)在任何 mode 按 ESC或 Ctrl-c • Insert mode • 文字輸入模式在 normal mode 輸入 a, A, i, I, o, O 後進入此 mode • Cmdline mode • 用來做複雜或非編輯類的命令,如 :w存檔,:q離開,:q!強制離開。在 normal mode 按下:後就會進入此 mode。 • Visual mode • 反白文字時的模式在 normal mode 輸入 v, V 後進入此 mode

  20. 編譯器 gcc • joseph@green:~$ mkdir prog1 • joseph@green:~$ cd prog1 • joseph@green:~/prog1$ vi hello.c • joseph@green:~/prog1$ gcc hello.c • joseph@green:~/prog1$ ls • a.out hello.c • joseph@green:~/prog1$ ./a.out • Hello World • joseph@green:~/prog1$ mv a.out hello Unix 指令都很安靜,沒訊息通常代表成功了。

  21. joseph@green:~/prog1$ gcc hello.c –o hello • joseph@green:~/prog1$ ls • hello hello.c • joseph@green:~/prog1$ ./hello • Hello World 為何 Hello 是綠色??

  22. Unix 的權限控制 • joseph@green:~/prog1$ ls –l • total 12 • -rwxr-xr-x 1 joseph joseph 6579 2009-05-05 17:30 hello • -rw-r--r-- 1 joseph joseph 75 2009-05-05 17:30 hello.c r: read w:write x:execute 用 chmod指令改變檔案權限

  23. gcc hello.c –o hello • joseph@green:~/prog1$ vi compile.sh • joseph@green:~/prog1$ sh compile • joseph@green:~/prog1$ vi compile.sh • joseph@green:~/prog1$ chmod a+x compile.sh • joseph@green:~/prog1$ ./compile.sh #!/bin/sh gcchello.c –o hello

  24. 上一頁的方法都很麻煩 用 make 最簡單

  25. 編譯器 gcc • joseph@green:~/prog1$ vi hello.c • joseph@green:~/prog1$ vi Makefile • joseph@green:~/prog1$ make • cc hello.c -o hello • joseph@green:~/prog1$ ls • hello hello.c • joseph@green:~/prog1$ ./hello • Hello World hello: hello.c

More Related