課堂學習內容
-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.元數據發生改變的時間
ls 的用法
-a 顯示所有文件夾
-R 遞歸,進入到查看目錄的每個文件夾
-r 逆序排序,默認是數字帶字母的排序
-S 按文件大小排序
-tlmtime順序查看文件
-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時間也會跟著改變.
-m:改變mtime時間,但是ctime時間也會跟著改變
-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,備份過程可見
2.先創建/testdir/rootdir目錄,再復制/root所有下啊文件到該目錄內,并要求保留原有權限
顯示當前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
2,如何創建/testdir/dir2/x, /testdir/dir2/y,
/testdir/dir2/x/a, /testdir/dir2/x/b
3.如何創建/testdir/dir3, /testdir/dir4, /testdir/dir5,/testdir/dir5/dir6, /testdir/dir5/dir7
Inode (index node)表中包含文件系統所有的文件列表
一個節點(索引節點)是在一個表項,包含有關文件的信息(元數據),包括
文件類型,權限,UID,GID
鏈接數(指向這個文件名路徑名稱個數)
該文件的大小和不同的時間戳
指向磁盤上的文件的數據塊指針
有關文件的其他數據
一個分區中,每個節點號是位移的
我們在boot文件夾中做了相關的實驗.
節點有51200個
我們可以看到掛載點的利用已經滿了,但是磁盤空間還有很多.所以驗證了節點也是占用磁盤空間的,雖然磁盤看到還有容量,但是可能就是節點空間占滿了·
實現倆個文件同一個節點(inode)號
ln命令 (link )
節點編號在同一分區如果一樣,就是一個文件
硬鏈接不能跨文件系統,不能跨分區.
軟鏈接的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