馬哥linux0728課程內容

課堂學習內容

 

-ahistory list –.bash_histroy 保存歷史列表到歷史文件

-cclear history list 清空歷史列表

-d deletehistory entru 清除歷史列表某一條命令

-rread .bash_history 讀歷史文件中的命令到歷史列表

-n 讀歷史文件中沒有讀過的命令到歷史列表(例如另外一個終端登錄輸入的命令寫到了歷史文件,但是這邊沒有讀過,就是讀到現在的歷史列表)

-w 將歷史列表寫到指定的其他文件中(我們可以通過變量來修改歷史文件)

-p 將執行的命令不寫入歷史列表

-s 將命令放入歷史列表,但是不執行

 

History的相關變量

HISTSIZE:歷史列表記錄條數

HISTFILESIZE:歷史文件記錄條數

HISTFILE:指定歷史文件

HISTTIMEFORMAT:讓歷史命令顯示其他的一些選項

HISTCONTROL(控制變量)= ignoredups(忽略重復),ignorespace(忽略命令前帶空格命令),ignoreboth(忽略重復和忽略命令前帶空格命令的結合體),erasedups(刪除重復的行,不論命令在不在一起)

 

 調用上一層命令的方法

!!

Ctrl+p

方向鍵

!-1

指定命令執行這條命令的下一條命令

Ctrl+n

 

調用歷史某個字符串開頭的行

!string

調用歷史包含某個字符串的行

!?string

調用上一個歷史列表中多個參數的方法

!^ 調用第一個參數

!$ 調用最后一個參數

!:2調用第二個參數

!* 調用命令行的所有參數

 

幫助文件

Man和info

Info的幫助相比man會更詳細

 

文件系統

FHS文件分層標準

/boot引導文件和系統內核

/bin普通用戶相關的二進制程序

/sbin管理員相關的二進制程序

/lib/modules存儲各種驅動

/lib6464位庫文件

/etc存儲配置文件

/home普通用戶的家目錄

/media/misc(centos 6自動掛載點)

/proc虛擬的進程和內核的一些信息

/proc/meminfo內存信息

/proc/cpuinfocpu信息

/proc/partitions分區信息

echo“- – -” > sys/class/scan_host/host2/scan

增加硬盤時,免重啟刷新硬盤

/sys存儲硬件信息 (屬于內存信息,虛擬的)

/opt第三方軟件存儲

/tmp臨時文件

/usr操作系統軟件資源存儲位置

/usr/local

/usr/share/manman幫助

/usr/share/docdoc幫助

/usr/share/dict字典

/var存放日志及可變信息位置

/var/log

/var/www

/var/ftp

/dev設備存儲位置

/dev/null/dev/zero

倆個特殊設備,屬于字符設備

/dev/random隨機數

/dev/tty終端設備

/srv

/root

 

查看文件各項屬性及權限

shat

三個時間戳

Accesstime :訪問時間. Atime,讀取文件的內容

(讀取文件時的時間的前提是,mtime 要比atime 新)

Modifytime :修改時間. Mtime,改變文件內容(數據)但是內容改變,元數據也會改變.

Changetime :改變時間,ctime.元數據發生改變的時間

1.jpg

2.jpg

3.jpg

ls 的用法

-a 顯示所有文件夾

-R 遞歸,進入到查看目錄的每個文件夾

-r 逆序排序,默認是數字帶字母的排序

-S 按文件大小排序

-tlmtime順序查看文件

4.jpg

-ld目錄和符號連接信息(表示只顯示目錄本身屬性,而不是其內容)

-1 文件分行顯示(行排序改變成列排序)

-S 按文件從大到小排序

-u 配合-t選項,顯示并按照atmie從新倒舊排序

-U 不排序,按目錄存放順序顯示

 

Mangolb :通配符的man幫助

配合IS使用的文件通配符

匹配零個或多個字符

匹配任何單個字符

當前用戶家目錄

~username用戶家目錄

~+ 當前工作目錄

~- 前一個工作目錄

[0-9]匹配數字范圍例:lsf[1-3]

[a-z]匹配大小寫字母  例:字母順序的排序是aAbBcCdD

[A-Z]匹配大小寫字母  例:字母順序的排序是aAbBcCdD

[wxc]匹配列表中的任何的一個字符

[^wxc]匹配列表中的所有字符以外的字符(^取反符)

 

touch命令的用法

touch[OPTION]… FILE…

-a:改變atime時間,但是ctime時間也會跟著改變.

5.jpg

-m:改變mtime時間,但是ctime時間也會跟著改變6.jpg

-t 設置文件時間戳(默認修改atime時間和mtime時間)

-c 不創建文件,如果此文件存在則刷新該文件時間戳

 

cp命令的是使用方法

-f –-force強制覆蓋,如果文件存在則刪除將文件改名

-r 遞歸(復制目錄必須使用的選項)可以復制目錄及內部所有的內容

-I 交互式

-a 歸檔(屬于備份,保留源文件所有屬性)

-d–-no-dereference   –preserv=links 不復制原文件,只復制鏈接名

–preserv=[ATT_LIST]復制原文件內容到鏈接文件中

Mode:權限

Ownership:屬主屬組

Timestamp:時間

Links:鏈接名文件

Xattr:擴展文件屬性

Context:上下文

All:所有

-p 等同于 –-preserv=mode,ownership,timestamp

-v–-verbose 顯示復制過程

 

練習題

1、   使用別名命令baketc,每日將/etc/目錄下所有的文件,備份到/testdir/下的獨立的新目錄下,并要求新目錄的格式為backupYYYY-MM-DD,備份過程可見

7.jpg

2.先創建/testdir/rootdir目錄,再復制/root所有下啊文件到該目錄內,并要求保留原有權限8.jpg

顯示當前shell進程所有可用的命令別名

alias

定義的別名需重新登錄才生效,如果不想重新登錄,有以下方法實現

Source /path/to/config_file

. /path/to/config_file

.和source等價

 

撤銷別名 unalias

 

在命令行中定義的別名,僅對當前shell進程有效,而且重啟失效

如果想永久有效,要定義在配置文件中

僅對當前用戶:~/.bashrc

對所有用戶有效:/etc/bashrc

 

mv命令的用法

mv [OPTION]… [-T] SOURCE DEST

mv [OPTION]… SOURCE… DIRECTORY

mv [OPTION]… -t DIRECTORY SOURCE

-I 交互式 例:如果移動的目標已存在,詢問覆蓋不覆蓋

-f 強制

 

rm 命令的用法

常用選項

-i 交互式

-f 強制

-r 遞歸

 

安裝tree

rpm –I /run/media/root/CentOS\ 7\x86_64/Packages/tree-1.6.0-10.el7.x86_64.rpm

即可完成安裝

tree 命令的用法

tree –L level :顯示幾層目錄樹結構

-d 只顯示目錄,不顯示文件

 

mkdir 創建目錄

-p 存在與不報錯,且可自動創建所需目錄

例:mkdir dir1/dir2/dir3/dir4 目錄全不存在,帶上這個選項,可以忽略錯誤,直接創建到第四層目錄.

-v 顯示詳細信息

-m創建目錄時直接指定權限

 

rmdir刪除目錄命令

這個命令只能刪除空目錄

 

練習

1,如何創建/testdir/dir1/x,/testdir/dir1/y,/testdir1/dir1/x/a,/testdir1/dir1/x/b, /testdir1/dir1/y/a, /testdir1/dir1/y/b

9.png

2,如何創建/testdir/dir2/x, /testdir/dir2/y,

/testdir/dir2/x/a, /testdir/dir2/x/b

10.png

3.如何創建/testdir/dir3, /testdir/dir4, /testdir/dir5,/testdir/dir5/dir6, /testdir/dir5/dir711.png

Inode (index node)表中包含文件系統所有的文件列表

一個節點(索引節點)是在一個表項,包含有關文件的信息(元數據),包括

文件類型,權限,UID,GID

鏈接數(指向這個文件名路徑名稱個數)

該文件的大小和不同的時間戳

指向磁盤上的文件的數據塊指針

有關文件的其他數據

 

一個分區中,每個節點號是位移的

我們在boot文件夾中做了相關的實驗.

12.png

節點有51200個

13.png

14.png

我們可以看到掛載點的利用已經滿了,但是磁盤空間還有很多.所以驗證了節點也是占用磁盤空間的,雖然磁盤看到還有容量,但是可能就是節點空間占滿了·


實現倆個文件同一個節點(inode)號

ln命令 (link )

15.png

節點編號在同一分區如果一樣,就是一個文件

硬鏈接不能跨文件系統,不能跨分區.

軟鏈接的inodes節點號是不同的,因為他們不是同一個文件.

   硬鏈接不能對目錄進行操作

   目錄的inodes的可以變化,方法就是通過增加這個目錄下的目錄就可以,因為每個父目錄的子目錄下都有個..目錄是指向父目錄

 

在centos6里面節點號為2為分區的根(掛載點),節點號為1都是虛擬目錄

 

在centos 7里面節點號為128為分區的根(掛載點),2為虛擬目錄

 

軟鏈接

本質上不是同一個文件.

原始文件的相對路徑:是相對與軟鏈接文件的路徑,而不是相對與當前工作目錄的路徑

ln–s 原始文件路徑(filename)軟鏈接(linkname)

 

每一個文件的數據分成兩個部分

元數據放在inode table(節點表)里面

數據放在block(塊)當中

 

每一個文件的節點的條目(inode entry)

 

文件引用一個是inode號

人是通過文件名來引用一個文件.

一個目錄是目錄下的文件名和文件inode號之間的映射

一個分區一個獨立的索引表

 

通過inode節點表來理解cp和rm和mv命令

cp命令的理解

分配一個空閑的inode號,在inode表中生成新條目

在目錄中創建一個目錄項,將名稱與inode編號關聯,

拷貝數據生成新的文件

rm命令的理解

鏈接數遞減,從而釋放的inode號可以被重新使用

把數據塊放到空閑列表

刪除目錄項

數據實際不會馬上被刪除,但當另一個文件使用數據塊時將被覆蓋.

mv命令的理解

如果mv命令的目標和源在相同的文件系統,作為mv命令

用新的文件名創建對應的目錄項

刪除舊目錄項條目對應的舊的文件名

不影響inode表(除時間戳)或磁盤上的數據位置:沒有數據被移動!

如果目標和源在一個不同的文件系統,mv相當于cp和rm

 

file命令的用法

-b 列出文件的辨識結果,但是不顯示文件名

-c詳細顯示指令過程,便于排錯或分析程序執行過程

-f 列出文件中文件名的文件類型(例將多數文件名寫入一個文件執行這條命令,就可以批量顯示)

-F使用指定分隔符號替換輸出文件名后默認的“:”分隔符

(例file –F”–” 文件名)

-I輸出mime類型的字符串

-L查看對應軟鏈接對應文件的文件類型

-z 嘗試去解讀壓縮文件的內容

 

 

標準的輸入輸出

 

程序:指令+數據

讀入數據:Input

輸出數據:Ouput

打開的文件都有一個fd:file descriptor(文件描述符)

可以在proc中看到

Linux給程序提供三種i/o設備

標準輸入(STDIN)-0 默認接受來及鍵盤的輸入

標準輸出(STDOUT)-1 默認輸出到終端窗口

標準錯誤(STDERR)-2 默認輸出到終端窗口

(STD=stardard標準)

I/O重定向:改變默認位置

STDOU和STDERR可以被重定向到文件:

命令 操作符號 文件名

支持的操作符號包括

>把STDOU重定向到文件

2>把STDERR重定向到文件

&>把所有輸出重定向到文件

>這個符號會使文件內容覆蓋

>>這個符號是附加到這個文件中,不會覆蓋原有內容

 

Set命令可以調整文件是否可以覆蓋

Set–C 禁止將文件內容覆蓋到已有文件,但可追加

Set+C 允許覆蓋

>|強制覆蓋

2>>追加重定向錯誤輸出數據流到文件中

標準輸出和錯誤輸出各自定向至不同位置

COMMAND> /path/to/file.out 2> /path/to/error.out

合并標準輸出和錯誤輸出為同一個數據流進行重定向

&>覆蓋重定向

&>>追加重定向

COMMAND> /path/to/file.out 2>&1 (順序很重要就要放到后面

)

COMMAND>> /path/to/file.out 2>>&1

Find/etc –name passwd 2> /dev/null

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

(0)
KartikKartik
上一篇 2016-08-04
下一篇 2016-08-04

相關推薦

  • RPM和YUM的使用說明

    一、RPM包管理程序 centos系統上使用rpm命令管理程序包: 安裝、卸載、升級、查詢、校驗、數據庫維護 RPM包安裝選項:   –test:測試安裝,但不真正執行安裝   –nodeps:忽略依賴關系   –nosignature:不檢查來源合法性   –nodig…

    Linux干貨 2016-08-24
  • 高級文件系統管理

    為用戶設定配額  執行開始或取消配額:quotaon quotaoff  取消編輯配額:edqouta username  在shell中直接編輯:setquota usename 80000 100000 0 0 /foo  定義原始標準用戶 :edquota -p user1 user2 實例如下: 配額的實現 1…

    Linux干貨 2017-05-02
  • centos啟動流程

    linux系統啟動流程 內核的設計結構單內核:linux(線程–lwp輕量級進程)微內核:windows(支持真正意義上的多線程) 單內核:很多功能驅動都集成在一起 微內核:內核很小,功能單一。模塊化 linux為了適應眾多用戶的不同硬件需求,linux內核在設計上采用模塊化設計??梢詣討B加載模塊。核心模塊:ko 內核所獨有的。共享對象:so 紅…

    Linux干貨 2016-09-09
  • 命令的查看幫助 和 命令行的歷史

    命令的查看 分內部命令 和外部命令  查看外部命令 可用 man command–help info  查看內部命令 可用 help command man 幫助是 使用最頻繁的 命令查看 而 man 又有很多選項 如下    man – format and display the on-li…

    Linux干貨 2016-08-12
  • 如何在Java中避免equals方法的隱藏陷阱

    譯者注 :你可能會覺得Java很簡單,Object的equals實現也會非常簡單,但是事實并不是你想象的這樣,耐心的讀完本文,你會發現你對Java了解的是如此的少。如果這篇文章是一份Java程序員的入職筆試,那么不知道有多少人會掉落到這樣的陷阱中。原文轉自http://www.artima.com/lejava/articles/equality.…

    開發運維 2015-04-03
  • Linux計劃任務

    Linux計劃任務

    Linux干貨 2017-10-27
欧美性久久久久