Linux入門詳解(第一周)

Linux入門

1. 描述計算機的組成及其功能

計算機硬件的五大組成部分為:運算器、控制器、存儲器、輸入設備和輸出設備;

  • CPU:CPU是執行存儲在主存中指令的引擎;內部又分為算數邏輯單元和控制單元,其中算數邏輯單元主要負責程序的運算與邏輯判斷,控制單元則主要是協調各周邊組件與各單元間的工作;此外CPU內還包含寄存器(如PC)和高速緩存等;

  • 存儲器:這里指主存,由DRAM芯片組成,在處理器執行程序時,用來存放程序和程序處理的數據;

  • I/O設備:輸入/輸出設備是系統與外部的世界聯系通道;每個I/O設備都通過一個控制器或適配器與I/O總線相連;

一個典型系統的硬件組成如下圖所示: 
blob.png

2. 按系羅列Linux的發行版,并描述不同發行版之間的聯系與區別

Linux發行版(Linux distribution)有數百種之多,在此簡單介紹幾款主流版本及其衍生版:

  • Debian系列:Debian是社區類Linux的典范,是迄今為止最遵循GNU規范的Linux系統;其衍生版包括Ubuntu(基于Ubuntu的Mint)、Knoppix、kali等;使用.deb格式的包,包管理器為dpkg/apt-get;

  • Slackware系列:S.u.S.E是基于Slaxkware Linux的發行版,其下包括桌面版的OpenSuSE和企業版的SLES(SUSE Linux Enterprise Server);包管理器為rpm/zypper;

  • Redhat系列:包括RHEL(RedHat Enterprise Linux)、FedoraCore(由Redhat桌面版發展而來)、CentOS(Community ENTerprise OS)、Oracle Linux、Mandriva等;使用.rpm格式的包,包管理器為rpm/yum(Fedora已更新為dnf);

  • ArchLinux:基于KISS原則的Linux發行版;使用pacman包管理器;

  • Gentoo:Gentoo是一個基于源代碼的發行版;

  • LFS:LFS(Linux From Scratch)不是Linxu發行版,而是一種使用源碼編譯Linux的安裝方式;

  • FreeBSD:FreeBSD不是一個Linux系統;

3. 描述Linux的哲學思想,并按照自己的理解對其進行解釋性描述

  1. 一切皆文件 
    把幾乎所有資源都抽象為文件的形式,包括硬件設備,甚至包括通信接口等;在啟動設備之后,在其上關聯一個用戶接口程序,即可實現與用戶交互;

  2. 由眾多功能單一的程序組成,一個程序只做好一件事,組合小程序完成復雜任務

  3. 盡量避免與用戶交互 
    其目標是易于以編程方式實現自動化任務;

  4. 使用文本文件保存配置信息

4. 說明Linux系統上命令的使用格式;詳細介紹ifconfig、echo、tty、startx、export、pwd、history、shutdown、poweroff、reboot、hwclock、date命令的使用,并配合相應的示例來闡述

Linux命令的語法通用格式

COMMAND OPTIONS ARGUMENTS

COMMAND
命令本身是一個可執行的二進制文件(有可能會調用共享庫文件),發起一個命令其實就是向內核請求將某個二進制程序運行為一個進程; 
命令分為兩類:

  • 內置命令(builtin):shell程序自帶的命令;shell程序是一個特殊的程序,負責解析用戶提供的命令;

  • 外部命令:獨立的可執行程序文件,文件名即命令名;多數程序文件都存放在/bin、/usr/bin、/usr/local/bin(普通命令)和/sbin、/usr/sbin、/usr/local/sbin(管理命令)中;

OPTIONS: 
命令選項用于指定命令的運行特性,其有兩種表現形式:

  • 短選項:-C,例如-l,-d 
    有些命令的選項沒有“-”;如果同一個命令同時使用多個短選項,多數可合并,如-l -d = -ld;

  • 長選項:–word,例如–help,–human-readable 
    長選項不能合并; 
    注意:有些選項可以帶參數,成為選項參數;

ARGUMENTS: 
命令參數即為命令的作用對象,有些命令可以同時帶多個參數,如ls -ld /var /etc;

基本命令詳解

ifconfig

配置網絡接口(現逐漸被ip命令替代)

[root@localhost ~]# ifconfig
eth0      Link encap:Ethernet  HWaddr 00:0C:29:FF:52:7B
          inet addr:192.168.1.223  Bcast:192.168.1.255  Mask:255.255.255.0          
          inet6 addr: fe80::20c:29ff:feff:527b/64 Scope:Link          
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1          
          RX packets:535 errors:0 dropped:0 overruns:0 frame:0          
          TX packets:393 errors:0 dropped:0 overruns:0 carrier:0          
          collisions:0 txqueuelen:1000          
          RX bytes:49690 (48.5 KiB)  TX bytes:73725 (71.9 KiB)
lo        Link encap:Local Loopback
          inet addr:127.0.0.1  Mask:255.0.0.0          
          inet6 addr: ::1/128 Scope:Host          
          UP LOOPBACK RUNNING  MTU:65536  Metric:1          
          RX packets:0 errors:0 dropped:0 overruns:0 frame:0          
          TX packets:0 errors:0 dropped:0 overruns:0 carrier:0          
          collisions:0 txqueuelen:0          
          RX bytes:0 (0.0 b)  TX bytes:0 (0.0 b)

echo

回顯

echo [SHORT-OPTION]... [STRING]...   SHORT-O
    PTION:       
        -n:不換行;       
        -e:讓轉義符生效(\n:換行符,\t:制表符);   
    STRING:       
        可以使用引號,單引號和雙引號均可,           
        單引號:強引用,變量引用不會被替換,           
        雙引號:弱引用,變量引用會被替換;
        
[root@localhost ~]# echo $SHELL
/bin/bash
[root@localhost ~]# echo "$SHELL"
/bin/bash
[root@localhost ~]# echo '$SHELL'
$SHELL

tty

查看終端設備

[root@localhost ~]# tty/dev/pts/0

注意:Linux的終端設備(terminal)有以下幾種:

  • 物理終端:也叫控制臺(console),對應的設備文件為/dev/console;

  • 虛擬終端:對應的設備文件為/dev/tty[1,6];

  • 圖形終端:對于CentOS 7,其在哪個虛擬終端啟動即位于哪個虛擬終端,對應的設備文件為/dev/tty#;

  • 串行終端:對應的設備文件為/dev/ttyS#;

  • 偽終端:對應的設備文件為/dev/pts/#;

startx

進入圖形界面

[root@localhost ~]# startx &

export

bash內置命令,設置或顯示環境變量

export [-fn] [name[=value] ...] 
or export -p

[root@localhost ~]# export
declare -x HISTCONTROL="ignoredups"
declare -x HISTSIZE="1000"
declare -x HOME="/root"
declare -x HOSTNAME="localhost.localdomain"
declare -x LANG="en_US.UTF-8"
declare -x LESSOPEN="||/usr/bin/lesspipe.sh %s"
declare -x LOGNAME="root"
declare -x LS_COLORS="(此處省略)"
declare -x MAIL="/var/spool/mail/root"
declare -x OLDPWD
declare -x PATH="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin"
declare -x PWD="/root"
declare -x SELINUX_LEVEL_REQUESTED=""
declare -x SELINUX_ROLE_REQUESTED=""
declare -x SELINUX_USE_CURRENT_RANGE=""
declare -x SHELL="/bin/bash"
declare -x SHLVL="1"
declare -x SSH_CLIENT="192.168.1.213 4795 22"
declare -x SSH_CONNECTION="192.168.1.213 4795 192.168.1.91 22"
declare -x SSH_TTY="/dev/pts/0"
declare -x TERM="xterm"
declare -x USER="root"
declare -x XDG_RUNTIME_DIR="/run/user/0"
declare -x XDG_SESSION_ID="1"

pwd

顯示工作目錄

[root@localhost ~]# pwd/root

history

顯示或操作歷史命令

history [-c] [-d offset] [n] 
or history -anrw [filename] 
or history -ps arg [arg...]    
    -c:清空命令歷史;    
    -d offset:刪除指定歷史命令;    
    -r:從文件讀取命令歷史到歷史列表中;    
    -w:把歷史列表中的文件追加到歷史文件中;
    history #:顯示最近的#條命令;

shutdown

關機或重啟

shutdown [OPTIONS...] [TIME] [WALL...]   
    OPTIONS:       
        -h:halt;       
        -r:reboot;       
        -c:cancel;   
    TIME:       
        now       
        hh:mm       
        +m  
    WALL:       
        廣播信息提醒       
        注意:wall命令是在終端上廣播信息;

poweroff

關機

reboot

重啟

hwclock

同clock,查詢或設置硬件時鐘

hwclock [function] [option...]   
    -s:以硬件為準,把系統時鐘調整為與硬件時鐘相同;   
    -w:以系統為準,把硬件時鐘調整為與系統時鐘相同;

date

顯示或設置系統時鐘

date [OPTION]... [+FORMAT]
顯示日期時間   
    FORMAT:       
        %F:顯示日期;       
        %T:顯示時間;       
        %s:從1970-01-01 00:00:00(Unix元年)到命令執行那一刻經過的秒數;
date [MMDDhhmm[[CC]YY][.ss]]
設置日期時間(月、日、時、分、年、秒)

[root@localhost ~]# date +%Y-%m-%d-%H-%M-%S
2016-08-28-06-54-45

5. 如何在Linux系統上獲取命令的幫助信息,請詳細列出,并描述man文檔的章節是如何劃分的

獲取命令使用幫助的方法:

內置命令:

help COMMAND

外部命令:

1)命令自帶的簡要使用幫助

COMMAND –help

2)manual手冊

位置:/usr/share/man(壓縮格式的文件man1、man2…)

man手冊組成內容

  • NAME:命令/函數的功能概述;

  • SYNOPSIS:命令/函數用法的簡單描述;

  • DESCRIPTION:命令/函數的詳細描述;

  • OPTIONS:命令選項的詳細說明;

  • EXAMPLES:命令/函數的使用示例;

  • FILES:該命令/函數用到的相關系統文件;

  • ENVIRONMENT:和該命令/函數相關的環境變量;

  • BUGS:已知的錯誤和警告;

  • HISTORY:發展歷史;

  • SEE ALSO:其他參考;

注意:對于SYNOPSIS部分:

  • [ ]:表示可選內容

  • < >:表示必須提供的內容

  • a|b|c:表示多選一

  • …:表示同類內容可出現多個

man手冊有章節之分

  • 1:用戶命令;

  • 2:系統調用;

  • 3:C庫調用;

  • 4:設備文件及特殊文件;

  • 5:文件格式(配置文件格式);

  • 6:游戲幫助;

  • 7:雜項;

  • 8:系統管理工具(root用戶);

  • 9:內核調用;

注意:并非每個COMMAND在所有章節下都有手冊,可用whatis COMMAND查看(whatis通過數據庫查詢的,可在先執行makewhatis命令手動更新數據庫);

man命令的選項: 
-M /PATH/TO/SOMEDIR:到指定目錄下查找命令手冊

man手冊的操作方法: 
翻屏:

  • Space:向文件尾部翻一屏;

  • b:向文件首部翻一屏;

  • Ctrl+d:向文件尾部翻半屏;

  • Ctrl+u:向文件首部翻半屏;

  • Enter:向文件尾部翻一行;

  • k:向文件首部翻一行;

  • G:跳轉至文件最后一行;

  • #G:跳轉至指定行;

  • 1G:跳轉至文件首部;

文本搜索:

  • /keyword:不區分大小寫,從文件首部向尾部依次查找;

  • ?keyword:不區分大小寫,從文件尾部向首部依次查找;

  • n:與查找命令方向相同;

  • N:與查找命令方向相反;

退出:

  • q:quit;

3)info

獲取命令的在線文檔 
info COMMAND

4)很多應用程序會自帶幫助文檔

位置:/usr/share/doc/APP-VERSION

  • README:程序的相關信息;

  • INSTALL:安裝幫助;

  • CHANGES:版本迭代時的變動信息;

5)主流發行版的官方文檔

如:http://www.redhat.com/doc

6)程序的官方文檔

官方站點的“Documents”

7)搜索引擎

google搜索技巧:

  • keyword1+keyword2:同Space,keyword1與keyword2同時匹配

  • keyword1-keyword2:排除keyword2

  • keyword*:匹配keyword后為任意字符

  • "keyword":keyword完全匹配

  • inurl:keyword:url中包含keyword

  • intitle:keyword:標題中包含keyword

  • allintitle:keyword1 keyword2:標題中包含keyword1與keyword2

  • keyword filetype:pdf:搜索包含keyword的pdf格式文件

  • keyword site:domain.tld:搜索domain.tld網站上包含keyword的資源

6. 請羅列Linux發行版的基礎目錄名稱命名法則及功用規定

Linux目錄配置的依據為FHS(Filesystem Hierarchy Standard);

FHS將目錄定義為四種交互作用的形態

blob.png

CentOS 7的目錄結構

[root@localhost ~]# ls -l /
total 32
lrwxrwxrwx.   1 root root    7 Aug 21 23:55 bin -> usr/bin
dr-xr-xr-x.   4 root root 4096 Aug 22 00:11 boot
drwxr-xr-x.  19 root root 3160 Aug 28 04:20 dev
drwxr-xr-x.  75 root root 8192 Aug 28 04:20 etc
drwxr-xr-x.   2 root root    6 Aug 12  2015 home
lrwxrwxrwx.   1 root root    7 Aug 21 23:55 lib -> usr/lib
lrwxrwxrwx.   1 root root    9 Aug 21 23:55 lib64 -> usr/lib64
drwxr-xr-x.   2 root root    6 Aug 12  2015 media
drwxr-xr-x.   2 root root    6 Aug 12  2015 mnt
drwxr-xr-x.   2 root root    6 Aug 12  2015 opt
dr-xr-xr-x. 364 root root    0 Aug 28 04:20 proc
dr-xr-x---.   2 root root 4096 Aug 22 02:04 root
drwxr-xr-x.  20 root root  560 Aug 28 04:20 run
lrwxrwxrwx.   1 root root    8 Aug 21 23:55 sbin -> usr/sbin
drwxr-xr-x.   2 root root    6 Aug 12  2015 srv
dr-xr-xr-x.  13 root root    0 Aug 28 04:20 sys
drwxrwxrwt.   7 root root 4096 Aug 28 04:20 tmp
drwxr-xr-x.  13 root root 4096 Aug 21 23:55 usr
drwxr-xr-x.  19 root root 4096 Aug 28 04:20 var

Linux基礎目錄名稱的命名及其功用

/:(root,根目錄)與開機系統有關;

  • /bin:所有用戶可用的基本命令程序文件;

  • /sbin:供系統管理使用的工具程序;

  • /boot:引導加載器必須 用到的各種靜態文件,如kernel、initramfs(initrd)、grub等;

  • /dev:存儲特殊文件或設備文件,如/dev/null、/dev/zero、/dev/tty、/dev/loop、/dev/sd等;設備有兩種:字符設備(線性設備)和塊設備(隨機設備);

  • /etc:系統程序的配置文件,只能為靜態,如/etc/modprobe.d/、/etc/passwd、/etc/fstab、/etc/issue等;

  • /media:便攜式設備的掛載點,如/media/cdrom、/media/floppy等;

  • /mnt:其他文件系統的臨時掛載點;

  • /opt:附加應用程序的安裝位置;

  • /srv:當前主機為服務提供的數據;

  • /run:系統開機后產生的各項信息;

  • /tmp:為那些會產生臨時文件的程序提供的用于存儲臨時文件的目錄;可供所有用戶執行寫入操作,有特殊權限;

  • /lib:為系統啟動或根文件系統上的應用程序(/bin,/sbin等)提供共享庫,以及為內核提供內核模塊;其下一般有libc.so(動態鏈接的C庫)、ld*(運行時的連接器或加載器)、modules(存儲內核模塊)等;

  • /lib64:64位系統特有的存放64位共享庫的路徑;

  • /home:普通用戶家目錄(home directory)的集中目錄;一般每個普通用戶的家目錄默認為此目錄下與用戶名同名的子目錄,/home/USERNAME;

  • /root:系統管理員的家目錄,為可選路徑;

  • /proc:基于內存的虛擬文件系統,用于內核及進程存儲其相關信息;它們多為內核參數,如/proc/sys/net/ipv4/ip_forward;

  • /sys:sysfs虛擬文件系統提供了一種比proc更為理想的訪問內核參數的途徑,其主要作用在于為管理Linux設備提供一種統一模型的接口;可參考https://www.ibm.com/developerworks/cn/linux/l-cn-sysfs/;

/usr:(unix software resource)與軟件安裝與執行有關,全局共享的只讀數據路徑;

  • /usr/bin:CentOS 7已將/bin鏈接至此;

  • /usr/sbin:CentOS 7已將/sbin鏈接至此;

  • /usr/lib:CentOS 7已將/lib鏈接至此;

  • /usr/lib64:CentOS 7已將/lib64鏈接至此;

  • /usr/include:C程序的頭文件;

  • /usr/share:命令手冊、命令自帶文檔等架構特有的文件存儲位置;

  • /usr/X11R6:x-window程序的安裝位置;

  • /usr/src:程序源碼文件的存儲位置;

  • /usr/local:讓系統管理員安裝本地應用程序,也通常用于安裝第三方程序;另一個層級目錄,其下其下也有bin、sbin、lib、lib64等;

/var:(variable)與系統運作過程有關,存儲常發生變化的數據;

  • /var/cache:應用程序的緩存數據;

  • /var/lib:存放程序執行過程中需要使用的數據文件;

  • /var/local:/usr/local產生的可變數據;

  • /var/lock:鎖文件,已鏈接至/run/lock;

  • /var/log:日志文件和目錄;

  • /var/opt:/opt產生的可變數據;

  • /var/run:運行的程序相關的數據,已鏈接至/run;

  • /var/spool:隊列數據;

  • /var/tmp:系統重啟時保留的臨時文件;

CentOS 7目錄樹架構示意圖

blob.png

原創文章,作者:baron,如若轉載,請注明出處:http://www.www58058.com/41136

(0)
baronbaron
上一篇 2016-08-29
下一篇 2016-08-29

相關推薦

  • 第一周 Linux基礎知識

    Linux基礎

    2018-03-18
  • 10個必需的iOS開發工具和資源

       界面總不是一件很容易事,尤其是iPhone/iPad的界面,做過iOS開發的程序員,一定會感到開發iPhone/iPad的界面是一件多么不容易的事。下面的文章來自10 Essential iOS Developer Tools & Resources,這個文章介紹了十個iOS開發的基礎性工具和資源,其一定會很有效地幫你做iO…

    Linux干貨 2015-04-01
  • 計算機操作系統與簡單命令

    計算機系統的組成 硬件:主機(cpu、內存等),外部設備(輸入設備鍵盤鼠標、輸出設備顯示屏;硬軟盤   等等)。 軟件:主要由操作系統和應用程序構成。 計算機硬件的組成部分及工作流程圖 輸入設備——存儲器——CPU運算——輸出設備   服務器主要分類有: 塔式服務器:立式PC相像 機架式服務器:統一標準寬度19英寸(48.26c…

    Linux干貨 2017-02-14
  • Linux–各種常用表達式整理收集

    文字顏色設置IP地址獲取隨機口令查找替代等

    Linux干貨 2017-12-10
  • 第二周作業

    1、Linux上的文件管理類命令都有哪些,其常用的使用方法及其相關示例演示。 目錄管理類命令: cd:變更目錄   命令格式:cd [DIRECTORY] pwd:顯示當前目錄的絕對路徑 ls:顯示文件或目錄內容     命令格式:ls [OPTION]… [FILE]… &…

    Linux干貨 2017-01-08
欧美性久久久久