歸根溯源通俗易懂之Linux基礎

歸根溯源通俗易懂之Linux基礎

1 人贊了文章

一直覺得在編程中 ,一些語言(比如,Java、Python)、命令行操作(比如Linux下的操作)等屬於工具,重要的是演算法、數據結構、數學之類的。但是,在當前中國,大部分公司更多注重的是「應用」,所以,今天來構造搭建自己的一些理解操作。

老傳統,要理解記憶操作命令,就必須了解這些命令是什麼意思編程語言一定是符合其某種語言習慣的。如果單純讓老外機械記憶一串字元,估計老外會頭疼不已。

Linux所有操作命令都是與具有某種代表意義的英文簡寫,要先理解意思,才能更好記憶應用。


桌面控制台與字元控制台

Linux系統由桌面控制台和字元控制台組成的,默認的字元控制台有6個,它們之間相互獨立,體現了Linux的 多用戶,多任務 特性。

在X-Windows視窗中 按CTRL + ALT + F1~F6即可跳轉到字元控制台,在控制台輸入startx即可跳轉到桌面控制台。

命令行基礎

  • 1.命令行的環境:

當使用命令行進行操作時,首先要知道命令行的環境所代表的含義

  • 提示符「#」,代表當前用戶是許可權用戶
  • 提示符「$」,代表當前用戶為普通用戶
  • 2.命令行格式:

命令名 [-選項] 參數

  1. 命令名選項、參數之間,至少要有一個空格多個空格沒有關係
  2. 選項,不是必需的
  3. 多個選項時,可以寫在一起
  4. 因為Linux基本是由C語言編寫的,所以無論命令名或選項,Linux都是嚴格區分大小寫
  • 3.選項含義:

選項,相對於命令,其個數不是太多,所以先從選項開始

Unix & Linux 0命令行特別之處在於,一些選項的設計是遵循傳統的, 只需認識一個就能在其它命令使用相似的功能。

選項通常都是相關功能的英文縮寫,並非毫無意義的英文字。

-h human,也就是 human-readable,以方便讀的人類方便讀的格式輸出。

-v (小寫),v erbose(冗長的), 顯示詳細信息,代表者有: ssh -v, python -v

-V (大寫),Version(版本),代表者有: gedit -V, firefox -V, openvt -V

--version (小寫 v) 也是意指 Version,代表者有: python --version,

--help, 同上, 九成的命令都有。

-a ,all(全部),"."開頭 命名的文件是默認重要且隱藏文件,代表者有: ls -a, tree -a

-r, r everse(倒序)代表者有: sort -r

-r, r ecursive(遞歸,普遍用於遍歷目錄的子目錄,代表者有: grep -r, rm -r

-R, 也可能意指 R ecursive , 代表者有: ls -R, chmod -R,

  1. rm 和 cp 的 -r 和 -R 同樣是 recursive
  2. 有些平台只有 -r, 有些平台只有 -R, 有些平台兩者都有。

-i,interact(互動),以交互的形式進行

-f,force(強制),強制性操作

-p,preserve(保留),代表:cp -p file1 file2


Linux常見目錄及說明

  • /root:Linux超級許可權用戶root的家目錄。該目錄為系統管理員目錄,也稱作超級許可權用戶主目錄
  • /bin ,bin 是 Binaries(二進位文件的意思)的簡寫, 是存儲二進位可執行命令的文件。存放所有用戶都可以使用的linux基本操作命令比如 ls 就是在/bin/ls 目錄下的。
  • /sbin:,這個目錄是用來存放系統管理員的系統管理程序
  1. 大多是涉及系統管理的命令的存放,是超級許可權用戶root的可執行命令存放地
  2. 普通用戶無許可權執行這個目錄 下的命令
  3. 這個目錄和/usr/sbin; /usr/X11R6/sbin或/usr/local/sbin目錄是相似的,凡是目錄sbin中包含的都是root許可權才能執行的。
  • /boot,這裡存放的是Linux的內核及引導系統程序所需要的文件,包括一些連接文件以及鏡像文件。在一般情況下,GRUB或LILO系統引導管理器也位於這個目錄。
  • /dev ,dev是Devices(設備的意思),是特殊設備文件。這個目錄對所有的用戶都十分重要。
  1. 這個目錄中包含了所有linux系統中使用的外部設備
  2. 但是這裡放的並不是外部設備的驅動程序。這一點和常用的windows,dos操作系統不一樣。
  3. 它實際上是一個訪問這些外部設備的埠。可以非常方便地去訪問這些外部設備,和 訪問一個文件,一個目錄沒有任何區別。
  • /etc,(ETCetera,存放所有的系統管理所需要的配置文件和子目錄
  1. 要用到的網路配置文件,文件系統,x系統配置文件,設備配置信息,設置用戶信息等都在這個目錄下
  2. /etc/fstab(FileSystem TABle)文件/etc/fstab包含了靜態文件系統信息,定義了存儲設備和分區整合到整個系統的方式。mount 命令會讀取這個文件,確定設備和分區的掛載選項。
  • /home,用戶的主目錄。如果新建一個用戶名是"xx"的用戶,那麼在/home目錄下就有一個對應的/home/xx路徑,用來存放用戶的主目錄。
  • /lib ,lib是 Libraries(圖書館的意思),顧名思義,是庫文件。系統的函數庫非常的多,/lib放置的則是在開機時會用到的函數庫, 以及存放在/bin或/sbin目錄下的指令會用到的函數庫而已。
  1. 這個目錄里存放著系統最基本的動態連接共享庫,其作用類似於Windows里的DLL文件
  2. 幾乎所有的應用程序都需要用到這些共享庫。因此,千萬不要輕易對這個目錄進行什麼操作,一旦發生問題,系統就不能工作了。
  • /var ,var是 Variable(變數的意思) ,某些大文件的溢出區,比方說各種服務的日誌文件。
  1. 看名字就知道,這個目錄的內容是經常變動的。
  2. /var/log 這是用來存放系統日誌的目錄;
  3. /var/ www目錄是定義Apache伺服器站點存放目錄;
  4. /var/lib 用來存放一些庫文件,比如MySQL的,以及MySQL資料庫的的存放地。

  • /usr,universal software resource(通用軟體資源,linux系統中佔用硬碟空間最大的目錄,用戶的很多應用程序和文件都放在這個目錄下,類似於windows下的program files目錄。在這個目錄下,可以找到那些不適合放在/bin或/etc目錄下的額外的工具

A.當系統啟動以後,我們需要其他一些用於具體工作的程序時,我們就會載入一個「/usr"目錄,目錄下存放重要的運行程序。

B.當軟體安裝好以後,需要我們用命令行去調用,則需要一個/usr/bin(軟體的基本命令),調用命令需要用到頭文件庫函數

/usr/include(頭文件存放處)

/usr/lib(庫函數存放處)

/usr/src(軟體的源碼存放處

因此/bin和/usr/bin的區別,就是 /bin裡面的程序更加核心

這時候,很多人會有疑問, 那我們需要記住哪些命令在/bin?

放心,由於所有的bin目錄都會登記到系統變數PATH裡面。 因此無論你在任何當前目錄中,只要輸入命令文件的名稱,系統都會幫你找到這個命令並運行。

  1. /usr/bin,系統用戶使用的應用程序。
  2. /usr/sbin,sbin是Super BINaries或者 Superuser BINaries(是超級二進位文件) 系統管理命令,這裡存放的是系統管理員使用的管理程序超級用戶使用的比較高級的管理程序和系統守護程序。
  3. /usr/src:內核源代碼默認的放置目錄。
  4. /usr/local:這裡主要存放那些手動安裝的軟體,舉個例子來說,www服務啟動讀取的網頁數據就可以放在/srv/www中。它和/usr目錄具有相類似的目錄結構。讓軟體包管理器來管理/usr目錄,而把自定義的腳本(scripts)放到/usr/local目錄下面。
  5. /usr/share :系統共用的東西存放地,比如 /usr/share/fonts 是字體目錄,/usr/share/doc和/usr/share/man幫助文件。

  • /media:移動存儲設備默認掛載點;(如光碟)
  • /mnt, Mount(懸掛的意思),是系統提供的讓用戶臨時掛載其他的文件系統的目錄文件,臨時掛載用的設備掛載點(如磁碟分區,網路共享)
  • /tmp, TeMPorary(臨時的意思),臨時文件目錄,用來存放不同程序執行時產生的臨時文件
  1. 有時用戶運行程序的時候,會產生臨時文件,/tmp就用來存放臨時文件的。
  2. /var/tmp目錄和這個目錄相似。
  • /opt , opt是Option(可供選擇的意思),是系統提供軟體放置的目錄文件。如果你想自行安裝額外的軟體(非原本的 distribution 提供的),那麼也能夠將你的軟體安裝到這裡來。
  • /proc ,proc是 Processes(進程的意思), 虛擬的目錄,是系統內存的映射。可以在這個目錄下獲取系統信息,這些信息是在內存中由系統自己產生的
  • /srv ,SeRVices (服務的意思), 是一些網路服務啟動後,這些服務所需要取用的數據目錄。常見的服務例如 WWW,FTP 等。舉個例子來說,www服務啟動讀取的網頁數據就可以放在/srv/www中
  • /sys ,SYStem(系統的意思),虛擬文件系統,主要記錄與內核相關的信息,包括目前已載入的內核模塊與內核檢測到的硬體設備信息,同樣不佔硬碟容量。
  • /tty ,teletypewriter(電傳打字機的意思),在類Unix里,鍵盤顯示器,都是虛擬的teletypewriter
  • /usr,(Unix System/Software/Shared Resources )「Unix 操作系統軟體資源」 所放置的目錄,不是用戶數據。 FHS 建議所有的軟體開發者應該將他們的數據合理的放置到這個目錄下的子目錄,而不是自行新建該軟體自己獨立的目錄。


Linux命令說明解釋

  1. 格式:--- | --- , ---
  2. 說明:命令 | 全稱,說明
  • apt | Advanced Packaging Tool (高級包管理工具),是Debian Linux發行版中的APT軟體包管理工具。一般配合apt-get或者apt-update
  • awk | Aho Weiberger and Kernighan | Alfred Aho,Peter Weinberger, 和 Brian Kernighan 的Family Name的首字元。一種編程語言,用於在linux/unix下對文本和數據進行處理。
  • bash | Bourne Again SHell,這是關於Bourne shell(sh)的一個雙關語(Bourne again / born again) 一種shell
  • bg | BackGround (後台運行),用於將作業放到後台運行,使前台可以執行其他任務。該命令的運行效果與在指令後面添加符號&的效果是相同的,都是將其放到系統後台執行。
  • cal | Calendar日曆), 用於顯示當前日曆,或者指定日期的日曆。
  • cat | concatenate(連接),連接文件並列印到標準輸出設備上,cat經常用來顯示文件的內容,類似於下的type命令。
  • chgrp | Change Group(改變組),用來改變文件或目錄所屬的用戶組。
  • chmod | Change mode(改變模式),用來變更文件或目錄的許可權。
  • chown | CHange OWNer (改變所有者), 改變某個文件或目錄的所有者和所屬的組,該命令可以向某個用戶授權,使該用戶變成指定文件的所有者或者改變文件所屬的組。

  • cd | Change Directory(切換目錄),切換工作目錄
  • cp | Copy(複製),將一個或多個源文件或者目錄複製到指定的目的文件或目錄
  • dd | Data Description(數據描述),用於複製文件並對原文件的內容進行轉換和格式化處理。
  • df | Disk Free(磁碟可用空間),用於顯示磁碟分區上的可使用的磁碟空間。默認顯示單位為KB。
  • du | Disk Usage(磁碟用空間),查看使用空間的,但是與df命令不同的是Linux du命令是對文件和目錄磁碟使用的空間的查看,還是和df命令有一些區別的。
  • diff | Difference(差別不同),在最簡單的情況下,比較給定的兩個文件的不同。

dpkg | Debian PacKaGe , Debian Linux系統用來安裝、創建和管理軟體包的實用工具。

ed | EDitor | 單行純文本編輯器,它有命令模式(command mode)和輸入模式(input mode)兩種工作模式。

emacs | Editor MACroS | 是由GNU組織的創始人Richard Stallman開發的一個功能強大的全屏文本編輯器,它支持多種編程語言,具有很多優良的特性。(備註:vim大法好!!!)

  • env | Environment(環境)用於顯示系統中已存在的環境變數,以及在定義的環境中執行指令。
  • exec | Execute(執行) 用於調用並執行指令的命令。
  • fsck | File System Consistency check(文件系統一致性審查),用於檢查並且試圖修復文件系統中的錯誤。

gawk | Gnu Aho Weiberger and Kernighan |

  • grep |Gnu Regular Expression Print /(global search regular expression(RE) and print out the line(全局搜索正則表達式並把行列印出來),是一種強大的文本搜索工具,它能使用正則表達式搜索文本,並把匹配的行列印出來。

    grub | GRand Unified Bootloader | 多重引導程序grub的命令行shell工具。
  • ifconfig | Interface configuration(介面配置),被用於配置和顯示Linux內核中網路介面的網路參數。
  • init | Initialization(初始化),Linux下的進程初始化工具
  • insmod | Install Module(安裝模塊), 用於將給定的模塊載入到內核中。
  • ln | LiNk ,用來為文件創件連接,連接類型分為硬連接符號連接兩種,默認的連接類型是硬連接。如果要創建符號連接必須使用"-s"選項。
  • ls | List(列表顯示),顯示目標列表
  • lsmod | List Module(列表顯示模塊)用於顯示已經載入到內核中的模塊的狀態信息。

  • man | MANual(操作手冊),Linux下的幫助指令,通過man指令可以查看Linux中的指令幫助、配置文件幫助和編程幫助等信息。一般戲稱有問題找男人……-……
  • mkdir | MaKe Directory(創建目錄), 創建目錄
  • mkfs | MaKe FileSystem(創建文件系統)用於在設備上(通常為硬碟)創建Linux文件系統。
  • mv | Move(移除),對文件或目錄重新命名,或者將文件從一個目錄移到另一個目錄中。

    nano | Nanos ANOther editor | 是一個字元終端的文本編輯器,有點像DOS下的editor程序。

parted | PARTition EDitor | 是由GNU組織開發的一款功能強大的磁碟分區和分區大小調整工具,與fdisk不同,它支持調整分區的大小。

  • passwd | Password(密碼),用於設置用戶的認證信息,包括用戶密碼、密碼過期時間等。
  • ping | Packet Internet Groper(網際網路包探索器),用來測試主機之間網路的連通性。執行ping指令會使用ICMP傳輸協議,發出要求回應的信息,若遠端主機的網路功能沒有問題,就會回應該信息,因而得知該主機運作正常。
  • popd | Pop from directory(從目錄棧中刪除) 刪除目錄棧中的記錄;
  • pushd | Push to Directory(壓入到目錄戰)是將目錄加入命令堆疊中。
  • ps | Processes Status (進程狀態) 報告當前系統的進程狀態。可以搭配kill指令隨時中斷、刪除不必要的程序。
  • pwd | Print Working Directory(列印當前工作目錄) 以絕對路徑的方式顯示用戶當前工作目錄

rcconf | Run Command CONFiguration | Debian Linux下的運行等級服務配置工具,用以設置在特的運行等級下系統服務的啟動配置。

  • rm | Remove(可以多次移除)可以刪除一個目錄中的一個或多個文件或目錄,也可以將某個目錄及其下屬的所有文件及其子目錄均刪除掉。對於鏈接文件,只是刪除整個鏈接文件,而原有文件保持不變。
  • rmdir | Remove Directory(移除目錄),用來刪除空目錄。
  • rmmod | Remove Module(移除模塊),用於從當前運行的內核中移除指定的內核模塊。
  • rpm | RPM/Redhat Package Manager | RPM軟體包的管理工具。
  • sed | Stream EDitor(流編輯器),它是文本處理中非常中的工具,能夠完美的配合正則表達式使用,功能不同凡響。
  • ssh | Secure Shell , openssh套件中的客戶端連接工具,可以給予ssh加密協議實現安全的遠程登錄伺服器。
  • su | Substitute User | "替代用戶",切換當前用戶身份到其他用戶身份,變更時須輸入所要變更的用戶帳號與密碼。
  • sudo | SuperUser DO(超級用戶操作)用來以其他身份來執行命令,預設的身份為root。
  • sync | SYNChronize(同步) 用於強制被改變的內容立刻寫入磁碟,更新超塊信息。
  • vim | vi Improved | 是UNIX操作系統和類UNIX操作系統中最通用的全屏幕純文本編輯器。Linux中的vi編輯器叫vim,它是vi的增強版(vi Improved),與vi編輯器完全兼容,而且實現了很多增強功能。(備註:神一樣的編輯器!!!)

    yum | Yellow dog Updater, Modified | 在Fedora和RedHat以及SUSE中基於rpm的軟體包管理器

推薦鏈接:

https://billie66.github.io/TLCL/book/?

billie66.github.io


推薦閱讀:

TeXmacs:一個真正「所見即所得」的排版系統
香儂說 | 香儂科技獨家對話AAAI、ACM、ACL三會會士UT Austin大學計算機系教授Raymond J. Mooney
用Python書寫520,用代碼丈量你的TA
第一章:計算機和網際網路 |《計算機網路:自頂向下方法》
SSH前言學習筆記(1)

TAG:計算機科學 | 科技 | Linux |