歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
Linux教程網 >> Linux基礎 >> Linux技術 >> 馬哥預習視頻

馬哥預習視頻

日期:2017/3/3 11:04:38   编辑:Linux技術

馬哥預習視頻第三天

linux 根文件系統

回顧:linux文件系統的特性,命令的使用幫助,常用的命令

如何使用幫助,內部命令help,外部man

官方文檔

自帶文檔(README,CHANGELOG,INSTALL)

發行版的文檔

google

Linux 內核:documentation

man非常重要:manual,使用手冊

章節有很多whatis keyword

man # KEYWORD

SECTION:

NAME:

SYNOPSIS

[],<>,|,{}

..

控制命令

space,b

enter,k

ctrl+d,ctrl+u

q

#G

/keyword

?keyword

基礎命令:pwd,cd,ls,echo,date,clock,cal,hwclock,cat,tac,file,type,tty,shutdown,reboot,

linux的組成部分

硬件的組成部分,由內而外,能夠操作硬件的只能是內核,因此內核整個把硬件封裝起來,所有硬件提供的hardware被隱藏起來,把硬件的功能轉化為了系統調用,程序要和內核打交道,要通過系統調用。內核把硬件隱藏起來,抽象為系統調用。外面要打交道,需要通過系統調用。文件系統,硬件功能,安全加密等,很多通用的功能在內核。所有的工作要通過應用程序。也可以通過庫函數來實現,庫只是為了簡化程序員研發困難度的,有了庫以後可以把很多功能提供成公共功能模塊,庫文件沒有獨立單獨的執行入口,只能被其他程序調用時方可運行。各種應用程序,程序員研發應用程序時調用了庫,這個程序執行啟動為進程時,首先把它依賴的庫裝載到內存中才能運行的,因為庫本身就是這個程序的組成部分。如果一個程序員在開發時, 調用了庫,在編譯時做了靜態編譯(程序員編譯好以後,也調用了庫,但在編譯的時候把所調用的每一個庫都直接編譯到程序中去,把每一個用到的庫復制了一個副本,直接放在程序中,程序到任何位置都能運行)

linux的文件系統:

linux要用的庫,是由glibc提供,

程序編譯方式:

動態鏈接

靜態鏈接

進程的類型:

終端:硬件設備,關聯一個用戶接口

與終端相關:通過終端啟動

與終端無關:操作引導啟動過程當中自動啟動

操作系統的組成:

靜態:內核文件(kernel),應用程序(application)

文件系統:層級結構,方便去查找每一個文件,

FHS;

filesystem hierachy standard標准文件系統

/bin:供所有用戶使用的二進制用戶文件;

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

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

/dev:所有硬件設備的設備文件,存儲特殊文件或設備文件;

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

/etc:系統程序的靜態配置文件,只能是靜態

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

/root:管理員的家目錄;可選;

/lib:為系統啟動或根文件系統上的應用程序(/bin,/sbin等)提供共享庫以及為內核提供內核模塊,

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

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

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

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

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

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

/opt:附加應用程序的安裝位置;可選路徑

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

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

/usr:/usr hierarchy,全局共享的只讀數據路徑;重要

bin,sbin

lib,lib64

include:C程序頭文件;

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

local:另一個層級目錄;

X11R6:x-windows程序的安裝位置

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.ipvt4.ip_forward,虛擬為net/ipv4/ip_forward,存儲於/proc/sys/,因此期完整路徑為/proc/sys/net/ipv4/ip_forward;

/sys:sysfs虛擬文件系統提供了一種比proc更為理想的訪問內核數據的途徑;其主要作用在於為管理linux設備提供一種統一模型的接口;

bash基礎特性

linux基礎命令及命令歷史

linux系統上的文件類型:

-:常規文件:即f;

d:directory,目錄文件:完成路徑映射的

b:block device,塊設備文件,以“block”為單位進行隨機訪問;特殊文件

c:charactor device,字符設備文件,支持以“character”

為單位進行線性訪問;

major number:主設備號,用於標識設備類型,進而確定要加載的驅動程序

minor number:次設備號,用於標識同一類型的不同的設備;

8位二進制:0-255

l:symbolic link,符號鏈接文件;

p:pipe,命名管道;

s:socket,套接字文件;兩個進程通信時套接的;

基本命令:

命令類型:

外部命令

shell內嵌命令原名被隱藏

bash:

type COMMAND

內部:builtin

外部:顯示為命令文件路徑;

注意:命令可以有別名;別名可以與原名相同,此時原名被隱藏;此時如果要運行原命令,則使用\COMMAND;

命令別名:

獲取所有可用別名的的定義;

~]# alias

定義別名:

~]#alias NAME='COMMAND'

撤銷別名:

~]#unalias 有效NAME

注意:僅對當前shell進程有效

which命令

顯示命令完整路徑

which [options] programname [...]

--skip-alias:忽略別名

whereis 命令

whereis - locate the binary, source, and manual page files for a command

whereis [options] name...

-b:僅搜索二進制程序路徑:

-m:僅搜索使用手冊文件路徑

who命令:

who - show who is logged on

who [OPTION]...

-b:系統此次啟動的時間;

-r:運行級別;

w命令:

增強版的who命令;

bash的基礎特性:

命令歷史:shell進程會其回話中保存此前用戶提交執行過的命令;

~]# history

定制history的功能,可通過環境變量實現;

HISTSIZE:shell進程可保留的命令歷史的條數;

HISTFILE:持久保存命令歷史的文件;

.bash_history (ls -a 家目錄下的隱藏文件)

HISTFILESIZE:命令歷史文件的大小

echo $HISTFILESIZE 結果1000

history -c清空命令歷史 history -r 恢復

history -r:把文件讀取命令歷史至歷史列表中;

history -d: 刪除指定命令history -d 100

history -w:把歷史列表中的命令追加至歷史文件中; (保存到.bash_history裡)

history #:顯示最近的#條命令;

調用命令歷史列表中的命令:

!#:再一次執行歷史列表中的第#條命令;

!!:再一次執行上一條命令;

!STRING:再一次執行命令歷史列表中最近一個以STRING開頭的命令;

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

調用上一條命令的最後一個參數:

快捷鍵:ESC,. 按ESC松開,再按.

字符串:!$

控制命令歷史記錄的方式:

環境變量:HISTCONTROL ignoredups

ignoredups:忽略重復的命令;

ignorespace:忽略以空白字符開頭的命令;

ignoreboth:以上兩者同時生效;

修改變量的值:(僅對當前shell有效)

NAME='VALUE'

回顧:

FHS、命令及bash命令歷史

FHS:linux的根文件系統是有特定格式標准,由某種層級結構組成的,其中有好多個一級子目錄,任何一個程序都有四部分組成,這四個部分有

二進制程序文件bin,通常安裝操作系統自身需要的

庫文件lib,

配置文件etc ,

幫助文件usr

普通用戶家目錄home,

管理員的家目錄root,

放引導文件boot,

掛載點media,mnt。

兩個虛擬文件proc,sys

臨時文件tmp,

為服務提供數據srv,

獨立的文件opt

設備目錄,dev

usr下可以有很多二進制程序,獨立的用來專門提供全局共享的只讀文件路徑,經常用來安裝程序

bin,sbin,lib,lib64,share。local。。

var幾個存放文字會經常發生變化

cache緩存,lib,log,。。。

命令:which,whereis,who,w,alias,unalias

命令歷史:history

文件類型:-,d,b,c,l,p,s

linux基礎知識

bash的基礎特性:

命令補全:

shell程序在接收到用戶執行命令的請求,分析完成之後,最左側的字符串會被當成命令;

命令處理機制:

查找內部命令:

根據PATH環境變量中設定的目錄,自左而右逐個搜索目錄下的文件名;

給定的打頭字符串如果能唯一標識某命令程序文件,則直接補全;如果不能唯一標識某命令程序文件,再擊tab鍵,會給出列表;

路徑補全:

在給定的起始路徑下,以對應路徑下的打頭字串來逐一匹配起始路徑下的每個文件;

tab:

如果能唯一標識,則直接補全;

否則,再一次tab,給出列表;

目錄管理類的命令:

mkdir,rmdir,

mkdir:make directory

mkdir [OPTION]... DIRECTORY...

重要: mkdir /tmp/x/y/z

注意: z(機名),方為命令的作用對象;機名之前的路徑必須要存在;

-p:自動按需創建父目錄;

-v:verbose,顯示詳細過程;

-m MODE(選項參數):在創建目錄時設置權限的;否則默認權限

rmdir:remove empty director

僅用於刪除空目錄

rmdir [OPTION]... DIRECTORY...

-p:刪除某目錄後,如果其父目錄為空,則一並刪除

-v:顯示過程;

問題1:如何創建/tmp/x/y1,/tmp/x/y2,/tmp/x/y1a,/tmp/x/y1/b?

問題2:如何創建a_c,a_d,b_c,b_d:

mkdir {a,b}_{c,d}

問題3:創建如下目錄結構:

/tmp/mysysroot/

bin

sbin

etc

sysconfig

network_scripts

usr

bin

sbin

local

bin

sbin

etc

lib

lib

lib64

var

cache

log

run

/tmp/mysysroot

├── bin

├── etc

│ ├── sysconfig

│ └── network-scripts

├── sbin

├── usr

│ ├── bin

│ ├── lib

│ ├── lib64

│ ├── local

│ │ ├── bin

│ │ ├── etc

│ │ ├── lib

│ │ └── sbin

│ └── sbin

└── var

├── cache

├── log

└── run

bash的基礎特性之一:命令行展開

~:自動展開為用戶的家目錄,或指定的用戶的家目錄;

{}:可承載一個以逗號分隔的路徑列表,並能夠將其展開為多個路徑;

例如:/tmp/{a,b},相當於/tmp/a /tmp/b

centos7:安裝tree命令;yun install tree

tree命令:

tree [option] [directory]要顯示的層級;

-L level:指定

bash的基礎特性:命令的執行狀態結果

命令執行的狀態結果:

bash通過狀態返回值來輸出此結果:

成功:0

失敗:1-255

命令執行完成之後,其狀態返回值保存於bash的特殊變量$!中;

注意:立即獲取,只能獲得最近一條的狀態結果

命令正常執行時,有的還會有命令返回值;

根據命令及其功能不同,結果各不相同;

命令的狀態返回值(狀態結果),命令自己的運行結果

狀態結果:看返回值

命令結果:執行的命令

可以引用命令的執行結果:

$(COMMAND)

或者`COMMAND` 反引號,引用命令的執行結果

bash的基礎特性:引用

強引用:'' 其內部字串直接顯示

弱引用:"" 變量會替換,會顯示變量中所存儲的值

命令引用:`` 建議使用$()

bash的基礎特性:快捷鍵

ctrl+a:跳轉至命令行首

ctrl+e:跳轉至命令行尾

ctrl+u:刪除行首到光標所在處之間的所有字符

ctrl+k:刪除光標所在處到行尾的所有字符

ctrl+l:清屏,相當於clear(目前不能用)

linux文件查看及管理

文本查看類命令:cat,tac,head,tail,more,less

分屏查看命令:more和less

cat /etc/rc.d/init.d/functions 記住這個路徑

more命令:

more FILE

特點:翻屏至文件尾部後自動退出;

less命令:

less FILE

head命令:

查看文件的前n行:

head [options] FILE

-n #

-#

tail命令:

查看文件的後n行:

tail [options] FILE

-n #

-#

-f:查看文件尾部內容結束後不退出,跟隨顯示新增的行;

stat命令:

stat - display file or file system status

stat FILE...

文件:兩類數據

元數據:metadata

數據:data

區別意思:一本書前面有索引,索引幫助快速檢索,索引也需要占用空間,目錄就是元數據,正文才叫數據;

時間戳:

訪問時間Access: 2016-07-29 13:12:46.140365682 +0800

更改時間Modify: 2016-07-29 13:12:43.255365765 +0800

最近改動Change: 2016-07-29 13:12:43.255365765 +0800

stat看到的是元數據,cat看到的是數據

touch命令:

change file timestamps

touch [OPTION]... FILE...

-c:指定的文件路徑不存在時不予創建;

-a:僅修改access time

-m:僅修改modify time

-t STAMP

[[CC]]YY]MMDDhhmm[.ss]

文件管理類命令及變量基礎

文件管理工具:cp,mv,rm

cp命令:copy

源文件;目標文件;

文件復制,新建一個文件,復制文件的數據,不是

元數據

單源復制:cp [OPTION]... [-T] SOURCE DEST(目標目錄) 單個文件(文件或目錄)

多遠復制:cp [OPTION]... SOURCE... DIRECTORY

cp [OPTION]... -t DIRECTORY SOURCE...

targe目標之一

單源復制:

如果DEST不存在:則事先創建此文件,並復制源文件的數據流至DEST中;

如果DEST存在:

如果DEST是非目錄文件:則會覆蓋目標文件;

如果DEST是目錄文件:則現在DEST目錄下創建一個與源文件同名的文件,並復制其數據流至目標文件

cp只能復制文件,不能復制目錄

多源復制:cp [OPTION]... SOURCE... DIRECTORY

cp [OPTION]... -t DIRECTORY SOURCE...

如果DEST不存在:錯誤;

如果DEXT存在:

如果DEST是非目標文件:錯誤;

如果DEST是目錄文件:分別復制每個文件至目標目錄中,並保持原名;

-i :-interactive,交互式復制,覆蓋之前提醒用戶確認

-f:強制覆蓋目標文件;

-r:遞歸復制目錄;

-d:復制符號鏈接文件本身,而非其指向的源文件;

-a:archice,用於實現歸檔(備份)

--preserv=

mode:權限

ownership:屬主和屬組

timestamps:時間戳

context:安全標簽

xattr:擴展屬性

links:符號鏈接

all:上述所有屬性

mv命令 :move

mv 文件 文件

常用選項:

-i:交互式

-f:force

rm 命令:remore

rm [option] file

常用選項:

-i:interactive

-f:force

-r:recursive

刪除目錄:rm -rf /PATH/TO/DIR

rm -rf / 非常危險,刪除根目錄

注意:所有不用的文件建議不要直接刪除,而是移動至某個專用目錄:(模擬回收站)

變量:

命名的內存空間;

變量類型:

字符型

數值型

精確數值型

近似數值型

存儲格式、數據范圍、參與運算;

8:1000 ,計算機0000 1000

16:10000 0001 0000

ASCII碼:

變量的賦值操作:

name=tom 左側是名字,右側是值,把值存儲名字所指定的內存空間

Copyright © Linux教程網 All Rights Reserved