Linux基礎知識(一)-linux哲學思想,基礎命令,FHS

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

CPU,輸入,輸出,內存(memory),存儲器(外存,磁盤)

這種結構稱為: 馮諾依曼 機

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

操作系統發展史:
day01#lesson03
day01#lesson04

什么是Linux發行版(Linux distribution)?
GNU組織發布的都是源代碼,想使用就需要將源碼編譯成二進制.但是過程復雜.
所以有不同維護者或組織,來進行編譯成二進制.這就是發行版.所以發行版種類很多.

Linux 發行版 =  Linux 內核(Kernel) + 眾多軟件工具(Application).

三大分支:debian,Slackware,RedHat

Debian:

  • Ubuntu

  • Knopix

Slackware:

  • S.u.S.E

    • OpenSUSE

RedHat:
RedHat 9.以后分為RedHat Enterprise Linux:RHEL 和Fedora Core

  • RedHat Enterprise Linux:RHEL

    • Centos:Community Enterprise OS : 可以看做是RedHat的山寨版.

  • Fedora Core:每6個月發行一個版本.

linux發展史:https://zh.wikipedia.org/wiki/Linux歷史#.E5.A4.A7.E4.BA.8B.E5.B9.B4.E8.A1.A8
linux發行版分支時間線:
https://upload.wikimedia.org/wikipedia/commons/1/1b/Linux_Distribution_Timeline.svg?uselang=zh-cn
下載:https://commons.wikimedia.org/wiki/File:Linux_Distribution_Timeline.svg?uselang=zh-cn

Linux內核:https://www.kernel.org/

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

1.一切皆文件 把幾乎所有資源都抽象為文件形式,包括硬件設備,設置通信接口. open().read(),write(),close(),delete(),create()
2.由眾多功能單一的程序組成,一個程序只做一件事.并且做好.
3.盡量避免和用戶交互 易于以編程的方式實現自動化任務.
4.使用文本文件保存配置信息 文本是最容易實現的底層接口,可以用簡單的編輯器就可以操作.

文件是什么?眾多的文件如何有效的組織起來?
目錄:路徑映射.
文件:存儲空間存儲的一段流式數據,對數據可以做到按名存取.

文件系統:   層級結構,有索引.
/:  原始初起點.
倒置樹狀結構;

如:/dev/pts/2
最左側/:表示根路徑
其他的/:表示路徑分隔符
Linux路徑分隔符是/
windows是
文件路徑表示:
絕對路徑:從根表示的路徑
相對路徑:從當前位置表示的路徑

文件名使用法則:
嚴格區分字符大小寫:file1,File1 ,FILE1 是不同的.
目錄也是文件,同一路徑下,文件不能同名
支持/以外的任意字符.
最長不超過255字符.

用戶有家目錄:
用戶的起始目錄,普通用戶管理文件的位置.

工作目錄:
basename : 最右側的文件名或目錄名
dirname:basename左側的路徑

命令:
~]# basename 文件路徑或目錄路徑/PATH/TO/SOMEFILE
SOMEFILE
~]# dirname 文件路徑或目錄路徑/PATH/TO/SOMEFILE
/PATH/TO


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

day02#lesson03

[root@nodel ~]# COMMAND
prompt:
root:當前登錄的用戶
nodel:當前主機的主機名.非完整格式
~ :用戶當前所在的目錄,也成為工作目錄
#:命令提示符
#:管理員賬號,為root,最高權限,能執行所有操作
$:普通用戶.非root用戶.不具有管理權限,不能執行系統

Linux命令的語法通用格式:
# COMMAND OPTIONS ARGUMENTS
COMMAND :
發起命令:請求內核將某一個二進制程序運行為一個進程.

程序–>進程
靜態–>動態(有生命周期)

命令本身是一個可執行的程序文件:二進制的格式的文件,有可能會調用共享庫文件:
多數系統程序文件都存放在:
/bin, /sbin, /usr/bin, /usr/sbin , /usr/local/bin , /usr/local/sbin
普通命令:/bin, /usr/bin, /usr/local/sbin
管理命令:/sbin , /usr/sbin , /usr/local/sbin
共享庫: /lib , /lib64 , /usr/lib , /usr/lib64 , /usr/local/lib , /usr/local/lib64
32bits的庫: /lib ,  /usr/lib , /usr/local/lib
64bits的庫: /lib64 ,  /usr/lib64 , /usr/local/lib64

注意:并非所有的命令都有一個在某目錄下對應的的可執行文件

命令必須遵循特定格式規范:windows(exe,msi) , linux(ELF)
查看文件類型:
~]#file 文件路徑


命令分為兩類:
由shell程序的自帶的命令:內置命令(builtin)
獨立的可執行程序文件,文件名即命令名:外部命令

shell程序是獨立的程序,負責解析用戶提供的命令:
環境變量:
PATH:從哪些路徑中查找用戶鍵入的命令字符串對應的命令文件:(查找順序,從左往右)
~]# echo $PATH

[root@localhost ~]# echo $PATH
/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin
查看命令類型:
type COMMAND

OPTIONS:
指定命令的運行特性;

選項有兩種表現形式:
長選項:  –word ,如:–help , –human -readable
長選項 不能合并
短選型:-C  如:-l , -d
有些命令選項沒有-
如果多個短類型選項可以進行合并,-l -d –> -ld
ARGUENTS:

命令作用的對象,就是命令對什么有效.

不同的命令參數:有些命令可以同時帶多個參數,多個參數之間已空白字符分隔

如:
~]# ls -ld /var /etc

常用命令:
ifconfig,echo,tty,startx,export.pwd,history,shutdown,poweroff,reboot,hwclock,date

ifconfig:
查看IP地址:
ifconfig或ip addr show

echo:
echo 回顯
echo [SHORT-OPTION]… [STRING]…
echo LONG-OPTION

-n     do not output the trailing newline 不加換行符
-e     enable interpretation of backslash escapes  讓轉義生效
\n:換行
\t :tab鍵,制表符

STRING可以使用引號,
單引號:強引用.變量不執行替換
雙引號:弱引用 , 變量會被替換
注意:變量正規引用使用${name}

tty:
查看當前設備終端
[root@localhost ~]# tty
/dev/pts/0

startx:
啟動桌面程序.

centos7 最小化安裝的話,沒有桌面應用.可以參考如下方式安裝,
http://unix.stackexchange.com/questions/181503/how-to-install-desktop-environments-on-centos-7
使用xshell遠程ssh連接可能啟動不了桌面.

export:
將shell變量輸出為環境變量,或者將shell函數輸出為環境變量。

pwd:
printing working directory
顯示工作目錄

history:
命令歷史:shell進程會其會話中保存此前用戶提交執行過的命令;
~]# history
定制history的功能,可通過環境變量實現:
HISTSIZE:shell進程可保留的命令歷史的條數;
HISTFILE:持久保存命令歷史的文件;
.bash_history
HISTFILESIZE:命令歷史文件的大小;

eg:

[root@localhost ~]# echo $HISTSIZE 
1000 
[root@localhost ~]# echo $HISTFILE 
/root/.bash_history 
[root@localhost ~]# echo $HISTFILESIZE 
1000

命令用法:
history [-c] [-d 偏移量] [n]
或 history -anrw [文件名]
或 history -ps 參數 [參數…]

-c: 清空命令歷史;
-d offset:刪除指定命令歷史, 如 history -d 10 2 刪除第10條歷史
-r: 從文件讀取命令歷史至歷史列表中;
-w:把歷史列表中的命令追加至歷史文件中;
history n:顯示最近的n條命令;

調用命令歷史列表中的命令:
!#:再一次執行歷史列表中的第#條命令;
!!:再一次執行上一條命令;
!STRING:再一次執行命令歷史列表中最近一個以STRING開頭的命令;

注意:命令的重復執行有時候需要依賴于冪等性;

調用上一條命令的最后一個參數:
快捷鍵:ESC, .
字符串:!$

控制命令歷史記錄的方式:
環境變量:HISTCONTROL
ignoredups:忽略重復的命令;
ignorespace:忽略以空白字符開頭的命令;
ignoreboth:以上兩者同時生效;

修改變量的值:
NAME='VALUE'

shutdown:
關機或重啟命令;
shutdown [OPTIONS…] [TIME] [WALL…]

OPTIONS:
-h : halt
-r:重啟
-c:取消
TIME:
now
hh:mm : 指定時間
+m: 幾分鐘后

WALL:發送廣播

poweroff:
關機命令:
Centos 7:
~]# systemctl poweroff
~]# systemctl reboot

*:
~]# poweroff
~]# reboot
~]# halt
reboot:
重啟;
hwclock:
hwclock – query or set the hardware clock (RTC)
查詢或設置硬件時鐘

hwclock [function] [option…]

option:
-s : –hctosys : 已硬件為準,把系統調整為與預硬件時間相同
-w : –systohc : 已系統為準,把硬件調整為與系統時間相同

  1. 1[root@localhost ~]# date 


  2. 2Mon Sep 19 16:38:51 EDT 2016 


  3. 3[root@localhost ~]# hwclock 


  4. 4Mon 19 Sep 2016 01:39:12 PM EDT  –0.532864 seconds 


  5. 5[root@localhost ~]# hwclock -s 


  6. 6[root@localhost ~]# date 


  7. 7Mon Sep 19 13:39:46 EDT 2016 


date:
顯示日期時間:
date [OPTION]… [+FORMAT]
FORMAT:格式符
%F     full date; same as %Y-%m-%d
%T     time; same as %H:%M:%S
%Y     year
%m     month (01..12)
%d     day of month (e.g., 01)
%H     hour (00..23)
%I     hour (01..12)
%M     minute (00..59)
%S     second (00..60)
%s     seconds since 1970-01-01 00:00:00 UTC    //時間戳

  1. 1[root@localhost ~]# date 


  2. 2Mon Sep 19 13:02:31 EDT 2016 


  3. 3[root@localhost ~]# date +%F 


  4. 420160919 


  5. 5[root@localhost ~]# date +%T 


  6. 613:09:08 


  7. 7[root@localhost ~]# date +'%Y-%m-%d %H:%M:%S' 


  8. 820160919 13:11:01 


  9. 9[root@localhost ~]# date +%s 


  10. 101474305077 


設定日期時間:
date [MMDDhhmm[[CC]YY][.ss]]    //月日小時分鐘年份(2位或4位).秒鐘

  1. 1[root@localhost ~]# date 101008082013.08 


  2. 2Thu Oct 10 08:08:08 EDT 2013 


  3. 3[root@localhost ~]# date 0919161916.08 


  4. 4Mon Sep 19 16:19:08 EDT 2016 


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

day02#lesson03
獲取命令的幫助:
內部命令:
help COMMAND

外部命令:
1.命令自帶簡要格式的使用幫助
~]# COMMAND –help
2.使用手冊
位置: /usr/share/man

  1. 1[root@localhost ~]# ls /usr/share/man 


  2. 2cs  es  id  ko     man1p  man2x  man3x  man5   man6x  man8   man9x  pt     sk  zh_CN 


  3. 3da  fr  it  man0p  man1x  man3   man4   man5x  man7   man8x  mann   pt_BR  sv  zh_TW 


  4. 4de  hu  ja  man1   man2   man3p  man4x  man6   man7x  man9   pl     ru     tr 


~]# man COMMAND
man 幫助文檔結構:
SECTION: NAME:功能性說明
SYNOPSIS:語法格式
DESCRIPTION:描述
OPTIONS:選項
EXAMPLES:示例
AUTHOR:作者
BUGS:報告陳谷BUG的方式
SEE ALSO:參考
…等等

SYNOPSIS:語法格式
[] : 可選內容
<>:必須
a|b|c : 多選一
… :同類內容可以出現多個.

使用手冊:壓縮格式的文件,有章節之分
1.用戶命令
2.系統調用
3.C庫調用
4.設備文件和特殊文件
5.文件格式(配置文件格式)
6.游戲使用幫助
7.雜項
8.管理工具和守護進程

~]# man CHAPTER COMMAND     查找指定章節下手冊
并非每個COMMAND在所有章節下都有手冊
查看:
~]# whatis COMMAND

[root@localhost ~]# whatis passwd
sslpasswd (1ssl)     – compute password hashes
passwd (1)           – update user's authentication tokens

注意:其執行過程是查詢數據庫進行的.
手動更新數據庫:
~]# make whatis

man命令打開手冊的操作方法:
翻屏:
空格行:向文件尾翻一屏
b:向文件首部翻一屏
Ctrl+D:向文件尾翻半屏
Ctrl+u:向文件首翻半屏
回車:向文件尾翻一行
k:向文件首部翻一行
G:跳轉到最后一行
#G:跳轉到指定行
1G:跳轉至文件首部
查找:
/keyword:從首部向尾部查找,不區分大小寫
?keyword:從尾部向首部查找
n:與查找命令方向相同
N:與查找命令方向相反
退出:
q:退出

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

3.info COMMAND
獲取命令的在線文檔
4.應用自帶的幫助文檔
/usr/share/doc/APP-VERSION
5.主流發行版的官方文檔
如:
6.程序的官方文檔
7.搜索引擎
google
關鍵字 filetype:pdf    //查找pdf
關鍵字 site:域名     //查找某個域名下面的資料

推薦書籍:google hacking技術手冊:
http://down.51cto.com/data/1867431
http://www.hicode.cn/download/view-software-19272.html

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

FHS:
Filesystem Hierarchy Standard : 文件系統層級標準

  1. 1[root@localhost ~]# ls / 


  2. 2bin  boot  dev  etc  home  lib  lib64  media  mnt  opt  proc  root  run  sbin  srv  sys  tmp  usr  var 


  3. 3 


/bin:所有用戶可用的基本命令程序文件;
/sbin:供系統管理使用的工具程序;
/boot:引導加載器必須用到的各靜態文件:kernel, initramfs(initrd), grub等;
/dev:存儲特殊文件或設備文件;

  • 設備有兩種類型:字符設備(線性設備)、塊設備(隨機設備);

/etc:系統程序的配置文件,只能為靜態;
/home:普通的家目錄的集中位置;一般每個普通用戶的家目錄默認為此目錄下與用戶名同名的子目錄,/home/USERNAME;
/root:管理員的家目錄;可選;
/lib:為系統啟動或根文件系統上的應用程序(/bin, /sbin等)提供共享庫,以及為內核提供內核模塊

  • libc.so.*:動態鏈接的C庫;

  • ld*:運行時鏈接器/加載器;

  • modules:用于存儲內核模塊的目錄;

/lib64:64位系統特有的存放64位共享庫的路徑;64位特有
/media:便攜式設備掛載點,U盤,cdrom, floppy等;
/mnt:其它文件系統的臨時掛載點;
/opt:附加應用程序的安裝位置;可選路徑;第三方
/srv:當前主機為服務提供的數據;
/tmp:為那些會產生臨時文件的程序提供的用于存儲臨時文件的目錄;可供所用戶執行寫入操作;有特殊權限;
/usr:usr Hierarchy,全局共享的只讀數據路徑;
子目錄:

  • bin, sbin

  • lib, lib64

  • include:C程序頭文件;

  • share:命令手冊頁和自帶文檔等架構特有的文件的存儲位置

  • local:另一個層級目錄;

  • X11R6:X-Window程序的安裝位置

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

/usr/local:Local hierarchy,讓系統管理員安裝本地應用程序;也通常用于安裝第三方程序;
/var:/var Hierarchy,存儲常發生變化的數據的目錄;
子目錄:

  • cache:    Application cache data

  • lib:      Variable state information

  • local:    Variable data for /usr/local

  • lock:     Lock files

  • log:      Log files and directories

  • opt:      Variable data for /opt

  • run:      Data relevant to running processes 運行中進程相關數據

  • spool:    Application spool data

  • tmp:      Temporary files preserved between system reboots

/proc:基于內存的虛擬文件系統,用于為內核及進程存儲其相關信息;它們多為內核參數,例如net.ipv4.ip_forward, 虛擬為net/ipv4/ip_forward, 存儲于/proc/sys/, 因此其完整路徑為/proc/sys/net/ipv4/ip_forward;
/sys:sysfs虛擬文件系統提供了一種比proc更為理想的訪問內核數據的途徑;其主要作用在于為管理Linux設備提供一種統一模型的的接口;

/sys參考:
https://www.ibm.com/developerworks/cn/linux/l-cn-sysfs/
FHS參考:
http://www.pathname.com/fhs/
http://www.pathname.com/fhs/pub/fhs-2.3.html

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

(0)
luoluoluoluo
上一篇 2016-09-22
下一篇 2016-09-22

相關推薦

  • N26_第三周

    1、列出當前系統上所有已經登錄的用戶的用戶名。同一個用戶多次登錄,只顯示一次 [root@node1 ~]# who |cut -d ‘ ‘ -f 1 | sort-u root zhh   2、取出最后登錄到當前系統的用戶的相關信息 [root@node1 ~]# id `last | head -1 | cut -d&#…

    Linux干貨 2017-05-26
  • Linux 第五天: (08月01日) Linux用戶組管理

    Linux 第五天: (08月01日) Linux用戶組管理         管理員 root,0普通用戶 1-65535系統用戶 1-499(centos6), 1-999(centos7)登錄用戶 500(centos6)+, 1000(centos7)+   /etc/passwd 用戶及屬性/etc/…

    Linux干貨 2016-08-08
  • 馬哥教育網絡班21期+第六周課程練習

    第六周作業 1、復制/etc/rc.d/rc.sysinit文件至/tmp目錄,將/tmp/rc.sysinit文件中的以至少一個空白字符開頭的行的行首加#; cp /etc/rc.d/rc.sysinit /tmpvim /tmp/rc.sysinit # 命令模式下,輸入一下內容:%s@\(^[[:space:]]…

    Linux干貨 2016-10-17
  • Linux中的 德·摩根定律

    Linux中的 德·摩根定律 §·德·摩根定律介紹 ※概念 在命題邏輯和邏輯代數中,德·摩根定律(或稱德·摩根定理)是關于命題邏輯規律的一對法則。 奧古斯塔斯·德·摩根首先發現了在命題邏輯中存在著下面這些關系: 非(P 且 Q) = (非 P) 或 (非 Q) 非(P 或 Q) = (非 P) 且 (非 Q) 德·摩根定律在數理…

    Linux干貨 2016-08-15
  • 第一周作業

    一、描述計算機的組成及其功能 計算機是由處運算器,控制器,儲存器,輸入輸出設備組成 運算器:執行各種計算和邏輯運算操作 控制器:完成協調和指揮整個計算機系統的操作 儲存器:暫時存儲或者長期存儲數據 輸入設備:向計算機輸入數據和信息的設備 輸出設備:計算機硬件系統的終端設備 二、按系列羅列Linux的發行版,并描述不同發行版之間的聯系和區別 Linux發行版=…

    Linux干貨 2016-12-05
  • bash中的變量

        對任何一門編程語言來說,最基礎的部分就是變量。那什么事變量呢?變量就是把一個已知的可以變動的值,賦給一個固定名字的,用固定的名字代表這個可變動的值。在bash中也不例外,跟大多數編程語言一樣,它也有一些自己的語法和規則 bash變量:     1.規則設置:變量和變量的值中間用=連接,=的兩…

    Linux干貨 2016-08-15

評論列表(1條)

  • 馬哥教育
    馬哥教育 2016-09-22 09:49

    看的出來很用心,寫的很好,多注意一下排版的問題

欧美性久久久久