Linux基礎
1 Linux命令
如果使用GUI,Linux和Windows沒有什么區別。Linux學習應用的一個特點是通過命令行進行使用。
登錄Linux后,我們就可以在#或$符后面去輸入命令,有的時候命令后面還會跟着選項
(options)或參數
(arguments)。即Linux中命令格式為:
command [options] [arguments] //中括號代表是可選的,即有些命令不需要選項也不需要參數
選項
是調整命令執行行為的開關,選項
不同決定了命令的顯示結果不同。
參數
是指命令的作用對象。
如ls命令,ls
或ls .
顯示是當前目錄的內容,這里“.”就是參數,表示當前目錄,是缺省的可以省略。我們可以用ls -a .
顯示當前目錄中的所有內容,包括隱藏文件和目錄。其中“-a” 就是選項,改變了顯示的內容,如下圖所示:
以上簡要說明了選項及參數的區別,但具體Linux中哪條命令有哪些選項及參數,需要我們靠經驗積累或者查看Linux的幫助了。
2 man命令
不論學習編程還是Linux命令,掌握幫助文檔的使用都是很重要的,是舉一反三的重要途徑。 man
是manul的縮寫,我們可以通過man man來查看man
的幫助,如下圖:
幫助文檔包含:
1 Executable programs or shell commands(用戶命令幫助) 2 System calls (系統調用幫助) 3 Library calls (庫函數調用幫助) 4 Special files (usually found in /dev) 5 File formats and conventions eg /etc/passwd(配置文件幫助) 6 Games 7 Miscellaneous (including macro packages and conventions), e.g. man(7), groff(7) 8 System administration commands (usually only for root) 9 Kernel routines [Non standard]
解釋一下:
1是普通的Linux命令
2是系統調用,操作系統的提供的服務接口
3是庫函數, C語言中的函數
5是指文件的格式,比如passwd, 就會說明這個文件中各個字段的含義
6是給游戲留的,由各個游戲自己定義
7是附件還有一些變量,比如向environ這種全局變量在這里就有說明
8是系統管理用的命令,這些命令只能由root使用,如ifconfig
其中1,2,3是我們學習的重點,區別大家練習一下就知道了,比如printf是C語言的庫函數,也是一個Linux命令,大家嘗試一下man printf
,man 1 printf
,man 3 printf
,體會一下區別。
知道printf 命令也好,printf函數也好,查找幫助文檔都很容易。man
有一個-k
選項用起來非常好,這個選項讓你學習命令,編程時有了一個搜索引擎,可以舉一反三。 我們通過一個例子來說明,比如數據結構中學過排序(sort),我不知道C語言中有沒有完成這個功能的函數,可以通過“man -k sort”來搜索,因為是找C庫函數,我們關注帶3的,qsort好像是個好選項,如下圖:
結合后面學習的grep 命令和管道,可以多關鍵字查找:
man -k key1 | grep key2 | grep key3 | ...
如下圖,可以更好的找到qsort:
3 cheat 命令
man 雖然很重要,但有些命令看了幫助還不會用,初學者需要例子,cheat就是這個身邊的小抄。 cheat 命令不是Linux自帶的,大家參考這篇文章(英文版)安裝,實驗樓課程實驗系統中已經安裝了。
cheat是作弊,小抄的意思。
cheat命令是在GNU通用公共許可證下,為Linux命令行用戶發行的交互式備忘單應用程序。它提供顯示Linux命令使用案例,包括該命令所有的選項和簡短但尚可理解的功能。
使用cheat命令作弊是可以的。:)
4 其他核心命令
和查找相關的核心命令還有find
,locate
,grep
,whereis
,which
,其中:
- find查找一個文件在系統中的什么位置,locate是神速版本的find(Windows下有個Everything工具和locate類似).
- grep 可以對文件全文檢索,支持正則表達式,正則表達式也是一個重要的元知識。
- whereis,which告訴你使用的命令工具裝在什么地方。
上面的命令包括man -k有一個共同特點就是基於“搜索”,學好了可以舉一反三,大家重點學習,掌握了他們,其他命令就可以自學了。你用 “man find”, “cheat find”試試。
Linux下C語言編程基礎
1.練習vimtutuor至少一遍;