1、文件層級FHS介紹:
Filesystem Hierarchy Standard(文件系統層次化標準)的縮寫,多數Linux版本采用這種文件組織形式,類似于Windows操作系統中c盤的文件目錄,FHS采用樹形結構組織文件。
FHS定義了系統中每個區域的用途、所需要的最小構成的文件和目錄,同時還給出了例外處理與矛盾處理。
/:linux文件系統根目錄
/bin:供所有用戶使用的基本命令文件
/sbin:供系統管理員使用的工具程序文件
/lib:供/bin和/sbin程序調用的庫文件程序,及系統啟動時需要的庫文件
/lib64:供64為系統使用的庫文件,及系統啟動時需要的庫文件
/boot:系統啟動引導的靜態文件(kernel、initranfs、grub等)
/dev:存儲設備文件和特殊文件。
/etc:主機特有配置文件,只能為靜態文件,一般是文本文件。 etc也是層級目錄結構。
/etc/opt,/etc/x11,/etc/xml,
/home:用戶家目錄,可選目錄
/media:便攜設備掛載點,如光盤、u盤等
/mnt:其他文件的臨時掛載點
/opt:附加應用程序的安裝位置(第三方應用程序),可選路徑。
/root:管理員的家目錄
/srv:當前主機為服務提供數據的目錄
/tmp:臨時文件,為那些產生臨時文件的程序提供的用于存儲臨時文件的目錄,可供所有用戶執行寫操作。
/usr:全局共享只讀數據路徑,它也是一個層級文件系統。
/var:存儲經常變化的數據目錄,它也是一個層級文件系統。
/proc:用來為內核及進程存儲相關信息,多位內核參數。
/sys:提供比/proc更理想的訪問linux內核參數的方法途徑,其主要作用于為管理linux設備提供一種統一模型的接口。
2、linux文件類型:
Linux文件的類型可以通過命令:ls -l 來查看,一般有如下幾種
-:普通文件
d:目錄文件
b:塊設備文件,塊設備文件以“block”為單位,對數據可以進行隨機訪問。
c:字符設備文件,字符設備文件以“字符”為單位,對數據只能進行線性訪問。
l:符號鏈接文件,相當于windows中的快捷方式
p:命令管道文件
s:套接字文件
3、linux目錄、文件操作常用命令:
3.1、創建目錄:mkdir,刪除目錄rmdir
3.2、文件內容查看常用命令:cat、tac、首尾部分查看(tail、head)、分屏查看(more、less)
3.3、文件復制、移動、刪除命令:cp、mv、rm
mkdir:創建目錄
格式:
mkdir [OPTION]… DIRECTORY…
[OPTION]:
-p:如果父目錄不存在,則自動創建父目錄,
-m:創建目錄時,設定目錄權限
-v:顯示命令執行的詳細信息
如:
[root@localhost ~]# mkdir /tmp/x/y/z
mkdir: cannot create directory ‘/tmp/x/y/z’: No such file or directory
[root@localhost ~]# mkdir -p /tmp/x/y/z
[root@localhost ~]#
rmdir:刪除空目錄
格式:
rmdir [OPTION]… DIRECTORY…
[OPTION]:
-p:刪除子目錄后,如果父目錄為空,則一并刪除
-v:顯示命令執行的詳細信息
cat:把文件和標準輸出連接起來,即查看文件內容,它會直接顯示到文件尾部一行,
格式:?cat [OPTION]… [FILE]…
[OPTION]
E:顯示文件每一行尾的$
n:顯示文件每一行號
如:
tac:和cat類似,只是它是從文件尾部進行查看,不做翻屏處理
tail:輸出文件最后一部分內容,默認為文件尾部10行,
格式:tail [OPTION]… [FILE]…
[OPTION]
-c:輸出文件尾部多少K字節內容;
-f:輸出文件最后不退出,并顯示追加的內容,
-n ?數字:顯示從文件尾部指定多少行開始顯示,默認10行
-n ? +數字: ?顯示從第幾行開始顯示到行尾
head:輸出文件的開始部分,默認為10行;
格式:?head [OPTION]… [FILE]…
[OPTION]:
-n:指定前多少行
more:分屏查看文件內容,最后直接退出
格式:more [options] file […]
less:分屏查看文件內容,最后不直接退出,需敲入q退出,man命令調用的less命令;
/pattern:從上往下搜索內容,n方向一致,N方向相反搜索
?pattern:從下往上搜索內容,n方向一致,N方向相反搜索
#G:跳轉指定行
GG:跳轉文件尾部
空格:向尾部翻一屏
b鍵:向首部翻一屏
cp:文件復制命令 ?: 復制源文件到目的文件或目錄,復制多個源文件到目錄
格式:
單源復制:cp [OPTION]… [-T] SOURCE DEST
多源復制:cp [OPTION]… SOURCE… DIRECTORY
多源復制:cp [OPTION]… -t DIRECTORY SOURCE…
單源復制:cp [OPTION]… [-T] SOURCE DEST
如果DEST不存在,則事先創建此文件,并復制源文件的數據流至DEST中
如果DEST存在,
如果DEST是非目錄文件,則復制源文件數據流覆蓋目標文件;
如果DEST是目錄文件,則先在DEST目錄下創建一個與源文件同名的文件,并復制源文件
多源復制:cp [OPTION]… SOURCE… DIRECTORY
如果DEST不存在,會報錯
如果DEST存在,
如果DEST是非目錄文件,會報錯
如果DEST是目錄文件,分別復制每個文件至目錄文件中,并保持原名。
[OPTION]:
-i:交換式復制,即覆蓋前提醒用戶確認
-f:強制覆蓋目標文件
-r:遞歸復制目錄文件
-d:復制符號鏈接文件本身,而非其指向的源文件
-a:用于實現歸檔,保持源文件的所有讀寫執行和屬主屬組權限。
如:
[user@localhost ~]$ cp /etc/issue /tmp ?//DEST目標文件不存在,
[user@localhost ~]$ ls /tmp
anaconda.log
hsperfdata_root
hsperfdata_user
ifcfg.log
issue
[root@localhost user]# cp /etc/issue /etc/fstab /tmp/abc ?//復制issue、fstab文件到目錄abc
cp: target ‘/tmp/abc’ is not a directory
[root@localhost user]# mkdir /tmp/abc
[root@localhost user]# !cp
cp /etc/issue /etc/fstab /tmp/abc
[root@localhost user]# ls /tmp/abc
fstab ?issue
[root@localhost user]#
[root@localhost ~]# mkdir /tmp/bcd
[root@localhost ~]# cp -rv ?/var/log/ /tmp/bcd ?//復制目錄,DEST需事先存在
注意:復制后的文件/目錄權限和屬主屬組發生了變化??梢杂?a選項保持這些參數
[root@localhost ~]# cp /var/log/tomcat/ /tmp/
cp: omitting directory ‘/var/log/tomcat/’
[root@localhost ~]# cp -rv /var/log/tomcat/ /tmp/
‘/var/log/tomcat/’ -> ‘/tmp/tomcat’
‘/var/log/tomcat/catalina.out’ -> ‘/tmp/tomcat/catalina.out’
[root@localhost ~]# ll /var/log/tomcat/ /tmp/tomcat/
/tmp/tomcat/:
total 4
-rw-r—–. 1 root root 28 Sep 17 18:16 catalina.out
/var/log/tomcat/:
total 4
-rw-rw—-. 1 tomcat tomcat 28 Nov ?6 ?2016 catalina.out
[root@localhost ~]# cp -a /var/log/firewalld ?/tmp/
[root@localhost ~]# ll /var/log/firewalld /tmp/firewalld
-rw-r–r–. 1 root root 0 Aug 29 20:22 /tmp/firewalld
-rw-r–r–. 1 root root 0 Aug 29 20:22 /var/log/firewalld
mv:移動文件或重命名文件
格式: ? ?mv [OPTION]… [-T] SOURCE DEST
mv [OPTION]… SOURCE… DIRECTORY
mv [OPTION]… -t DIRECTORY SOURCE…
rm:刪除文件或目錄
格式:?rm [OPTION]… FILE…
[OPTION]:
-i:交互式命令
-r:遞歸操作,刪除目錄時會有用。
-f:強化操作
[root@localhost ~]# rm /tmp/bcd/
rm: cannot remove ‘/tmp/bcd/’: Is a directory
[root@localhost ~]# rm -r /tmp/bcd/
rm: remove directory ‘/tmp/bcd/’? y
[root@localhost ~]# ls /tmp/bcd
ls: cannot access /tmp/bcd: No such file or directory
[root@localhost ~]#
4、bash的基礎特性介紹:
4.1、命令歷史:history
shell進程會在其會話中保存此前用戶提交的執行過的命令。
命令格式:history ?【option】
history的環境變量有:
HISTSIZE:shell進程可保留的命令歷史的條數
HISTFILE:持久保存命令歷史的文件,一般每個用戶下都會有,如家目錄下的.bash_history
HISTFILESIZE:定義歷史文件的大小。
option選項有:
-c:清空歷史命令列表
-d:偏移量,刪除指定命令歷史
-r:從命令歷史文件中讀取命令至命令歷史中(內存)
-w:把歷史列表中命令追加至歷史文件中。
調用命令歷史列表中的命令: ?!
!#:再一次執行命令歷史列表中的第#條命令
!!:再一次執行上一次操作的命令
!sting:再一次執行最近一次可以匹配命令歷史列表中的以sting開頭的命令。
調用上一條命令中最后一個參數:
快捷鍵:esc + . :按esc鍵后松開,再按點號(.)
字符組合:!$. ? ? :嘆號和$號一起按
控制命令歷史記錄的方式:
環境變量:HISTCONTROL ? ? ?(修改僅對當前shell有效)
HISTCONTROL=ignoredups:忽略重復的命令
HISTCONTROL=ignorespace:忽略以空白字符開頭的命令
HISTCONTROL=ignoreboth:以上兩者同時忽略
4.2、命令補全、路徑補全(按tab鍵)
shell程序在接收到用戶執行的命令請求時,分析完成后,最左側的字符串會被當作命令執行。
命令處理機制:
查找內部命令
根據PATH環境變量中設定的目錄,從左向右逐個按目錄查找
命令補全機制:
給定的打頭字符串如果唯一標識某命令文件,則tab鍵直接補全
給定的打頭字符串如果不能唯一標識某命令程序文件,則再按一次tab鍵,會給出命令列表。
路徑補全機制:
根據給定的起始路徑補全,即以對應路徑下的打頭字符串來逐一匹配起始路徑下的每個文件。
如果能唯一標識某路徑,則補全,否則,再按一次tab,給出列表。
4.3、命令行展開: ? ?~、{ }
~ :自動展開為用戶的家目錄( # cd ~),或指定用戶的家目錄(# cd ~ user)
{ }: 可承載一個以“,”(逗號)分隔的路徑列表,并能夠將其展開為多個路徑。如:/tmp/{a,b}相當于/tmp/a和/tmp/b
如:
創建/tmp目錄下的:a_c,a_d,b_c,b_d,
[root@localhost ~]# mkdir /tmp/{a,b}_{b,d}
[root@localhost ~]# ls /tmp/
a_b
a_d
b_b
b_d
創建/tmp/mylinux目錄下的目錄結構:
[root@localhost ~]# tree /tmp/mylinux/
/tmp/mylinux/
├── bin
├── boot
│ ? └── grup
├── dev
├── etc
│ ? ├── rc.d
│ ? │ ? └── init.d
│ ? └── sysconfig
│ ? ? ? └── network-scripts
├── lib
│ ? └── modules
├── lib64
├── proc
├── sbin
├── sys
├── tmp
├── usr
│ ? ├── local
│ ? ? ?├── bin
│ ? ? ?└── sbin
│
│
└── var
├── lock
├── log
└── run
26 directories, 0 files
[root@localhost ~]#
[root@localhost ~]# mkdir -p /tmp/mylinux/{bin,boot/grup,dev,etc/{rc.d/init.d,sysconfig/network-scripts},lib/modules,lib64,proc,sbin,sys,tmp,usr/local/{bin,sbin},var/{lock,log,run}}
4.4、命令的執行狀態結果:
bash通過狀態返回值來查看命令的執行結果,狀態返回值保存于bash的特殊變量“$?”中。
注意:$? 只能獲得最近命令執行的狀態結果。
通過:#echo $? 執行結果來查看命令執行狀態結果。
如果命令成功執行:輸出數字“0”
如果命令未成功執行:輸出數字“1-255”中的一個數字,
如:
[root@localhost ~]# ls /
1 ? ?boot ?etc ? lib ? ?media ?opt ? root ?sbin ?sys ?usr
bin ?dev ? home ?lib64 ?mnt ? ?proc ?run ? srv ? tmp ?var
[root@localhost ~]# echo $?
0
[root@localhost ~]#
[root@localhost ~]# lsls /
bash: lsls: command not found…
[root@localhost ~]# !echo
echo $?
127
[root@localhost ~]#
4.5、引用命令的執行結果: $(命令) 或 `命令` ? ?注意 ` 為反引號。
如:#mkdir $(date +%H-%M-%S) ? ? ? ? ? ? //引用時分秒為創建目錄的名字。
4.6、變量的引用:
‘ 變量 ’ ?:單引號表示強引用,引用變量本身;
”變量“ ? :雙引號表示弱引用,引用變量的執行結果
$(命令) :命令執行結果引用
4.7、bash快捷鍵:
ctrl+a:跳轉至命令行首部
ctrl+e:跳轉至命令行尾部
ctrl+u:刪除行首至光標所在處之間的所有字符
ctrl+k:刪除光標所在處至行尾之間的所有字符
ctrl+l:清屏,相當于clear命令
4.8、glob通配符(文件名通配符)
linux的哲學思想之一就是一切皆文件,眾多文件組織在一起,可以通過glob通配符去匹配需要的文件名。
注意:glob匹配的是整個文件名,而非部分文件名。
glob通過“元字符”去匹配信息。
元字符介紹:
* : ?*表示匹配任意長度任意字符
?: ??表示匹配任意單個字符
[ ] : ?[ ]表示匹配指定范圍內的任意單個字符
[a-z]: 表示匹配a-z A-Z中的任意一個字母,不區分大小寫;即匹配所有字母
[A-Z]:表示匹配a-z A-Z中的任意一個字母,不區分大小寫;即匹配所有字母
[0-9]:表示匹配所有數字中的一個數字,即匹配所有數字
[a-z0-9]:表示匹配所有的字母和數字
[abcde]:表示匹配abcde中的任意一個字符
特定格式:
[[:upper:]] :表示匹配所有大寫字母中的一個
[[:lower:]]?:表示匹配所有小寫字母中的一個
[[:alpher:]]?:表示匹配所有字母(大小寫)中的一個
[[:digit:]]?:表示匹配所有數字
[[:alnum:]]?:表示匹配所有字母和數字中的一個
[[:space:]]?:表示匹配所有空白字符
[[:punct:]]?:表示匹配所有標點符號
[^ ] :?[^ ]表示匹配指定范圍外的任意單個字符
[^[:upper:]] : 表示匹配所有大寫字母以外的單個字符
[^abcde] ? : ?表示匹配abcde外的任意一個字符
如:
顯示/var/log目錄下所有以l開頭,以一個小寫字母結尾,且中間出現一位數字的文件或目錄
[root@localhost ~]# ls -d /var/log/l[0-9][[:lower:]]
顯示/etc目錄下,以任意一位數字開頭,且以非數字結尾的文件或目錄
[root@localhost ~]# ls -d /etc/[0-9]*[^0-9]
復制/etc/目錄下,所有以.conf結尾,且以mnrp開頭的文件或目錄至/tmp/conf.d目錄下
[root@localhost ~]# mkdir /tmp/conf.d
[root@localhost ~]# cp -r /etc/[mnrp]*.conf /tmp/conf.d
5、常用命令:alias,unalias,stat,touch
[root@localhost ~]# alias cls=clear
[root@localhost ~]# alias
alias cls=’clear’
[root@localhost ~]# unalias cls
stat命令:查看文件元數據信息
每個文件都有兩類數據:
元數據:metadata //不是文件的組成部分,描述文件屬性的信息,類似winodws文件的屬性常規信息
數據:data ? ? //文件本身內容數據
如:
[root@localhost ~]# stat /tmp/yum.log.old
File: ‘/tmp/yum.log.old’
Size: 52 ? ? ? ?Blocks: 8 ? ? ? ? ?IO Block: 4096 ? regular file
Device: fd00h/64768dInode: 11797030 ? ?Links: 1
Access: (0600/-rw——-) ?Uid: ( ? ?0/ ? ?root) ? Gid: ( ? ?0/ ? ?root)
Context: unconfined_u:object_r:user_tmp_t:s0
Access: 2017-09-17 18:04:23.207995463 +0800
Modify: 2017-09-17 18:04:23.207995463 +0800
Change: 2017-09-17 18:37:48.960974954 +0800
Birth: –
[root@localhost ~]#
注意:元數據有三個重要的時間參數:只能修改訪問時間和修改時間,不能修改改動時間,改動時間會因訪問時間和修改時間改變而變化。
Access: 2017-09-17 18:04:23.207995463 +0800????//actime:訪問時間
Modify: 2017-09-17 18:04:23.207995463 +0800????//mtime:修改時間
Change: 2017-09-17 18:37:48.960974954 +0800????//ctime:改動時間
touch:修改文件時間戳;如果文件不存在,則用來創建文件
格式:touch [OPTION]… FILE…
[OPTION]
-a:僅修改accestine
-m:僅修改modifytime
-c:指定文件不存在時,不創建文件
-t:use [[CC]YY]MMDDhhmm[.ss] instead of current time //用指定時間代替當前時間。
如:
[root@localhost ~]# touch -t 201709171219 /tmp/yum.log.old
[root@localhost ~]# stat /tmp/yum.log.old
File: ‘/tmp/yum.log.old’
Size: 52 ? ? ? ?Blocks: 8 ? ? ? ? ?IO Block: 4096 ? regular file
Device: fd00h/64768dInode: 11797030 ? ?Links: 1
Access: (0600/-rw——-) ?Uid: ( ? ?0/ ? ?root) ? Gid: ( ? ?0/ ? ?root)
Context: unconfined_u:object_r:user_tmp_t:s0
Access: 2017-09-17 12:19:00.000000000 +0800
Modify: 2017-09-17 12:19:00.000000000 +0800
Change: 2017-09-17 20:22:43.883910589 +0800
Birth: –
[root@localhost ~]#
本文來自投稿,不代表Linux運維部落立場,如若轉載,請注明出處:http://www.www58058.com/87304