Linux基礎知識


操作系統發展史

Unix

  • 1970年,美國貝爾實驗室的Ken Thompson,以BCPL語言為基礎,設計出很簡單且很接近硬件的B語言(取BCPL的首字母),並且他用B語言寫了第一個UNIX操作系統。
  • 因為B語言的跨平台性較差,為了能夠在其他電腦上也能夠運行這個Unix操作系統Dennis Ritchie和Ken Thompson從B語言的基礎上准備研究一個更好的語言
  • 1972年,美國貝爾實驗室的Dennis Ritchie在B語言的基礎上最終設計出了一種新的語言,他取了BCPL的第二個字母作為這種語言的名字,這就是C語言。
  • 1973年初,C語言的主體完成。Thompson和Ritchie迫不及待地開始用它完全重寫了現在大名鼎鼎的Unix操作系統。

Minix

  • 意為小型UNIX(mini-UNIX)

Linux

  • 創始人Torvalds

發展史

  • Unix(只針對大型主機或服務器)
    • BSD
      • FreeBSD
    • Sun Solaris
    • IBM AIX
    • AT&T System V
      • Minix
        • Linux(適用於x86的個人計算機)
          • Ubuntu
          • Redhat
          • SUSE
          • Fedora

Linux不同版本以及應用領域

1. Linux內核及發行版介紹

Linux內核版本

  • 內核(kernel)是系統的心臟,是運行程序和管理像磁盤和打印機等硬件設備的核心程序,它提供了一個在裸設備與應用程序間的抽象層。

  • Linux內核版本

    • 穩定版:具有工業級強度,可以廣泛的應用和部署。新的穩定版相對於較舊的只是修正一些bug或加入一些新的驅動。
    • 開發板:由於要試驗各種解決方案,所以變化很快。

Linux發行版本

  • Linux發行版(也被叫做GNU/Linux發行版)通常包含了包括桌面環境、辦公套件、媒體播放器、數據庫等應用軟件。
    1. Linux Mint
    2. Debian
    3. Ubuntu
    4. openSUSE
    5. Redhat
    6. Fedora
    7. Manjaro
    8. Mageia
    9. CentOS
    10. Arch
    11. Elementary

2. 應用領域

個人桌面領域的應用

  • 典型代表:Ubuntu、Fedora、openSUSE

服務器領域

  • 典型代表
    • RedHat公司的AS系列
    • 完全開源的debian系列
    • suse EnterPrise 11系列等

嵌入式領域(如智能家居)

  • 主要應用:機頂盒、數字電視、網絡電視、程控交換機、手機、PDA等都是其應用領域,得到了摩托羅拉、三星、NEC、Google等公司的大力推廣

文件和目錄

類Unix系統的目錄結構

  • Ubuntu沒有盤符這個概念,只有一個根目錄 “/”,所有文件都在它下面

  • /

    • /bin
    • /sbin
    • /usr
      • bin
      • local
        • include
      • lib
    • /lib

    Linux目錄

    • /:根目錄,一般根目錄下只存放目錄,在Linux下有且只有一個根目錄。所有的東西都是從這里開始。當你在終端里輸入“/home”,你其實是在告訴電腦,先從/(根目錄)開始,再進入到home目錄。
    • /bin:/usr/bin:可執行二進制文件的目錄,如常用的命令ls、tar、mv、cat等。
    • /boot:放置Linux系統啟動時用到的一些文件,如Linux的內核文件:/boot/vmlinuz,系統引導管理器:/boot/grub
    • /dev:存放Linux系統下的設備文件,訪問該目錄下的某個文件,相當於訪問某個設備,常用的是掛載光驅mount /dev/cdrom/mnt
    • /etc:系統配置文件存放的目錄,不建議在此目錄下存放可執行文件,重要的配置文件有/etc/inittab、/etc/fstab、/etc/init.d、/etx/X11、/etc/sysconfig、/etc/xinetd.d
    • /home:系統默認的用戶家目錄,新增用戶賬號時,用戶的家目錄都存放在此目錄下,表示當前用戶的家目錄,edu表示用戶edu的家目錄。
    • /lib:/usr/lib:/usr/local/lib:系統使用的函數庫的目錄,程序在執行過程中,需要調用一些額外的參數時需要函數庫的協助。
    • /lost+fount:系統異常產生錯誤時,會將一些遺失的片段放置於此目錄下。
    • /mnt:/media:光盤默認掛載點,通常光盤掛載於/mnt/cdrom下,也不一定,可以選擇任意位置進行掛載。
    • /opt:給主機額外安裝軟件所擺放的目錄。
    • /proc:此目錄的數據都在內存中,如系統核心、外部設備、網絡狀態,由於數據都存放在內存中,所以不占用磁盤空間,比較重要的目錄有/proc/cpuinfo、/proc/interrupts、/proc/dma、/proc/ioports、/proc/net/* 等。
    • /root:系統管理員root家目錄。
    • /sbin:/usr/sbin:/usr/local/sbin:防止系統管理員使用的可執行命令,如fdisk、shutdown、mount等。與/bin不同的是,這幾個目錄是給系統管理員root使用的命令,一般用戶只能“查看”而不能設置和使用。
    • /tmp:一般用戶或正在執行的程序臨時存放文件的目錄,任何人都可以訪問,重要數據不可防止在此目錄下。
    • /srv:服務啟動之后需要訪問的數據目錄,如www服務需要訪問的網頁數據存放在/srv/www內。
    • /usr:應用程序存放目錄,/usr/bin存放應用程序,/usr/share存放共享數據,/usr/lib存放不能直接運行的,卻是許多程序運行所必需的一些函數庫文件。/usr/local:存放軟件升級包。/usr/share/doc:系統說明文件存放目錄。/usr/share/man:程序說明文件存放目錄。
    • /var:放置系統執行過程中經常變化的文件,如隨時更改的日志文件/var/log,/var/log/message:所有登錄文件存放目錄,/var/spool/mail:郵件存放目錄,/var/run:程序或服務啟動后,其PID存放在該目錄下 。

用戶目錄

相對路徑和絕對路徑

絕對路徑

  • 從 / 目錄開始描述的路徑為絕對路徑,如:

    •   cd /home
        ls /usr
      

相對路徑

  • 從當前位置開始描述的路徑為相對路徑,如:

    •   cd ../../
        ls abc/def
      

. 和 ..

  • 每個目錄都有. 和 ..
  • . 表示當前目錄
  • .. 表示上一級目錄,即父目錄
  • 根目錄下的. 和 ..都表示當前目錄

訪問權限

  • 讀權限(r)
  • 寫權限(w)
  • 可執行權限(x)

Linux命令

1. 命令使用方法

  • Linux命令的格式:

    •   command [-options] [parameter1] ...
      
    • command:命令名,相應功能的英文單詞或單詞的縮寫

    • [options]:選項,可用來對命令進行控制,也可以省略

    • [parameter1]:傳給命令的參數,可以是零個、一個或多個

2. 查看幫助文檔

  • --help
    • 一般是Linux命令自帶的幫助信息
  • man(manual)
    • man是Linux提供的一個手冊,包含了絕大部分的命令、函數使用說明。
    • man中各個section意義如下:
      1. Standard commands(標准命令)
      2. System calls(系統調用,如open、write)
      3. Library functions(庫函數,如printf、fopen)
      4. Special devices(設備文件的說明,/dev下各種設備)
      5. File formats(文件格式,如passwd)
      6. Games and toys(游戲和娛樂)
      7. Miscellaneous(雜項、慣例與協定等,例如Linux檔案系統、網絡協定、ASCII碼、environ全局變量)
      8. Administrative Commands(管理員命令,如ifconfig)

3. 自動補全

  • 在敲出命令的前幾個字母的同時,按下tab鍵,系統會自動幫我們補全命令

4. 歷史命令

  • 當系統執行過一些命令后,可按上下鍵翻看以前的命令,history將執行過的命令列舉出來

文件、磁盤管理

文件管理

1. 查看文件信息:ls

  • ls是英文單詞list的簡寫,其功能為列出目錄的內容,是用戶最常用的命令之一,它類似於DOS下的dir命令。
  • Linux文件或者目錄名稱最長可以有265個字符,. 代表當前目錄,.. 代表上一級目錄,以 . 開頭的文件為隱藏文件,需要用 -a 參數才能顯示。
  • ls常用參數:
    • -a:顯示指定目錄下所有子目錄與文件,包括隱藏文件
    • -l:以列表方式顯示文件的詳細信息
    • -h:配合-l以人性化的方式顯示文件大小

2. 輸出重定向命令:>

3. 分屏顯示:more

4. 管道:|

  • 一個命令的輸出可以通過管道作為另一個命令的輸入。

5. 清屏:clear

6. 切換工作目錄:cd

  • cd ~ :切換到當前用戶的家目錄(/home/用戶目錄)
  • cd - :切換到上次所在的目錄

7. 顯示當前路徑:pwd

8. 創建目錄:mkdir

9. 刪除目錄:rmdir

10.刪除文件:rm

  • rm -i:以進行交互式方式執行
  • rm -f:強制刪除,忽略不存在的文件,無需提示
  • rm -r:遞歸的刪除目錄下的內容,刪除文件夾時必須加此參數

11. 建立鏈接文件:ln

  • Linux鏈接文件類似於Windows下的快捷方式

  • 鏈接文件分為軟鏈接和硬鏈接:

    • 軟鏈接:軟鏈接不占用磁盤空間,源文件刪除則軟鏈接失效。
    • 硬鏈接:硬鏈接只能鏈接普通文件,不能鏈接目錄。
  • 使用格式:

    •   ln 源文件 鏈接文件
        ln -s 源文件 鏈接文件
      
    • -s 為創建軟鏈接,不加 -s 則創建硬鏈接

12. 查看或者合並文件內容:cat

13. 文本搜索:grep

  • Linux系統中grep命令是一種強大的文本搜索工具,grep允許對文本文件進行模式查找。如果找到匹配模式,grep打印包含模式的所有行。

  • 一般格式為:

    •   grep [-選項] '搜索內容串'文件名
      
  • 常用選項說明:

    • -v:顯示不包含匹配文本的所有行(相當於求反)
    • -n:顯示匹配行及行號
    • -i:忽略大小寫
  • grep搜索內容串可以是正則表達式

14. 查找文件:find

  • find命令功能非常強大,通常用來在特定的目錄下搜索符合條件的文件,也可以用來搜索特定用戶屬性的文件。

15. 拷貝文件:cp

16. 移動文件/重命名: mv

  • 移動文件:mv 文件名 移動目錄
  • 使用方法:mv 原文件名 新文件名

17. 歸檔管理:tar

  • 計算機中的數據經常需要備份,tar是Unix/Linux中最常用的備份工具,此命令可以把一系列文件歸檔到一個大文件中,也可以把檔案文件解開以恢復數據。
  • tar 使用格式:tar [參數] 打包文件名 文件
  • tar 命令很特殊,其參數前面可以使用 ”-“,也可以不使用
  • 常用參數:
    • -c:生成檔案文件,創建打包文件
    • -v:列出歸檔解檔的詳細過程,顯示進度
    • -f:指定檔案文件名稱,f后面一定是.tar文件,所以必須放選項最后
    • -t:列出檔案中包含的文件
    • -x:解開檔案文件
    • 注意:除了f需要放在參數的最后,其他參數的順序任意

18. 文件壓縮解壓:gzip

  • tar與gzip命令結合使用實現文件打包、壓縮。tar只負責打包文件,但不壓縮,用gzip壓縮tar打包后的文件,其擴展名一般用xxxx.tar.gz

  • gzip使用格式:

    •   gzip [選項] 被壓縮文件
      
  • 常用選項:

    • -d:解壓
    • -r:壓縮所有子目錄
  • 也可使用 tar -zcvf ... 與 tar -zxvf ... 進行打包壓縮與解壓解包

19. 文件壓縮解壓:bzip2

  • tar與bzip2命令結合使用實現文件打包、壓縮(用法和gzip一樣)。
  • tar只負責打包文件,但不壓縮,用bzip2壓縮tar打包后的文件,其擴展名為xxxx.tar.gz2
  • 在tar命令中增加一個選項(-j)可以調用bzip2實現一個壓縮的功能,實行先打包后壓縮的過程
  • 壓縮用法:tar jcvf 壓縮包包名 文件 ...
  • 解壓用法:tar jxvf 壓縮包包名

20. 文件壓縮解壓:zip、unzip

  • 通過zip壓縮文件的目標文件不需要指定擴展名,默認擴展名為zip
  • 壓縮文件:zip [-r] 目標文件 源文件
  • 解壓文件:unzip -d 解壓后目錄文件 壓縮文件

21. 查看命令位置:which

系統管理

1. 查看當前日歷:cal

2. 顯示或設置時間:date

3. 查看進程信息:ps

  • 進程是一個具有一定獨立功能的程序,它是操作系統動態執行的基本單元。
  • ps命令可以查看進程的詳細狀況
  • 常用選項(選項可以不加”-“)
    • -a:顯示終端上的所有進程,包括其他用戶的進程
    • -u:顯示進程的詳細狀態
    • -x:顯示沒有控制終端的進程
    • -w:顯示加寬,以便顯示更多信息
    • -r:只顯示正在運行的進程

4. 動態顯示進程:top

  • top命令用來動態顯示運行中的進程。top命令能夠在運行后,在指定的時間間隔更新顯示信息。可以使用top命令時加上-d來指定顯示信息更新的時間間隔。

5. 終止進程:kill

  • 結束進程:kill PID,有些進程不能直接殺死,使用kill -9 PID進行強制結束。

6. 關機重啟:reboot、shutdown、init

7. 檢測磁盤空間:df

  • df命令用於檢測文件系統的磁盤空間占用和空余情況,可以顯示所有文件系統對節點和磁盤塊的使用情況。
  • 參數選項:
    • -a:顯示所有文件系統的磁盤使用情況
    • -m:以1024字節為單位顯示
    • -t:顯示各指定文件系統的磁盤空間使用情況
    • -T:顯示文件系統

8. 檢測目錄所占磁盤空間:du

  • du命令用於統計目錄或我呢見所占磁盤空間的大小,使用命令的執行結果與df類似,du更側重於磁盤的使用狀況。
  • 使用格式:du [選項] 目錄或文件名
    • -a:遞歸顯示指定目錄中各文件和子目錄中文件占用的數據塊
    • -s:顯示指定文件或目錄占用的數據塊
    • -b:以字節為單位顯示磁盤占用情況
    • -l:計算所有文件大小,對硬鏈接文件計算多次

9. 查看或配置網卡信息:ifconfig

10. 測試遠程主機連通性:ping

用戶、權限管理

1. 查看當前用戶:whoami

2. 查看登錄用戶:who

3. 遠程登陸:ssh

  • ssh 用戶名@ip地址

4. 添加用戶賬號:useradd

  • 在Unix/Linux中添加用戶賬號可以使用adduser或useradd命令,因為adduser命令是指向useradd命令的一個鏈接,因此,這兩個命令使用格式完全一樣。
  • 使用格式:useradd [參數] 新建用戶賬號
    • -d:指定用戶登錄系統時的主目錄,如果不使用該參數,系統自動在/home目錄下建立與用戶名同名目錄為主目錄
    • -m:自動建立目錄
    • -g:指定組名稱

5. 設置用戶密碼:passwd

6. 刪除用戶:userdel

  • 同時刪除用戶目錄:userdel -r 用戶名

7. 切換用戶:su

8. 查看有哪些用戶組

  • 方法一:cat /etc/group
  • 方法二:groupmod + 三次Tab鍵

9. 添加、刪除組賬號:groupadd、groupdel

  • groupadd 新建的組賬號
  • groupdel 刪除的組賬號
  • cat /etc/group 查看用戶組

10. 修改用戶所在組:usermod

  • usermod -g 用戶組 用戶名
    • -g為修改用戶默認組,-a -G為追加

11. 查看用戶在哪些組:groups

12. 為創建的普通用戶添加sudo權限

  • 新創建的用戶,默認不能sudo,需要進行下面的操作:

  •   sudo usermod -a -G adm 用戶名
      sudo usermod -a -G sudo 用戶名
    

13. usermod -g 與 -G 的區別

  • -g:用來指定這個用戶默認的用戶組
  • -G:一般配合 -a 來完成向用戶添加其他組

14. 修改文件權限:chmod

  • chmod:修改文件權限有兩種格式:字母法與數字法
  • 字母法:chmod u/g/o/a +/-/= rwx 文件
    • u:user 表示該文件的所有者
    • g:group 表示與該文件的所有者屬於同一組(group)者,即用戶組
    • o:other 表示其他以外的人
    • a:all 表示這三者皆是
    • +:增加權限
    • -:撤銷權限
    • =:設定權限
    • r:可讀
    • w:可寫
    • x:可執行
  • 數字法:“rwx” 這些權限也可以用數字來代替
    • r:讀取權限,數字代號為 4
    • w:寫入權限:數字代號為 2
    • x:執行權限,數字代號為 1
    • -:不具任何權限,數字代號為 0

15. 修改文件所有者:chown

  • 使用方法:chown 用戶名 文件或目錄名

16. 修改文件所屬組:chgrp

  • 使用方法:chgrp 用戶組名 文件或目錄名

17. 遠程拷貝:scp

  • 遠程上傳:scp 上傳文件名 用戶名@ip地址:上傳的服務器路徑
  • 遠程下載:scp 用戶名@IP地址:文件路徑 下載的本地路徑
  • 上傳/下載目錄時,需要在scp后增加 -r 參數


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM