linux文件、目錄基本操作命令及bash特性介紹

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

(1)
N27_zhangweitaoN27_zhangweitao
上一篇 2017-09-17 20:25
下一篇 2017-09-18 00:13

相關推薦

  • 第五周作業

    1. 顯示當前系統上root、fedora或user1用戶的默認shell; grep -E "^(root|centos|user1)\>" /etc/passwd 或 awk -F: '{if($1=="root" || $1==…

    Linux干貨 2017-01-10
  • N25期–第十三周作業

    1、 建立samba共享,共享目錄為/data,要求:(描述完整的過程)  1)共享名為shared,工作組為magedu;  2)添加組develop,添加用戶gentoo,centos和ubuntu,其中gentoo和centos以develop為附加組,ubuntu不屬于develop組;密碼均為用戶名;  3)添加sam…

    Linux干貨 2017-04-05
  • iptables, sudo N28

    2018/2/25 17:14 第十二周

    2018-02-25
  • Tomcat公貓

    官方站點:http://tomcat.apache.org/ Tomcat是一個能夠運行java頁面(jsp)的java’web服務器程序;安裝使用之前需要先安裝jdk包 jdk是JAVA的開發工具包,已隨base收錄進來,安裝jdk1.8版本:yum -y install java-1.8.0-openjdk-devel (其中jvm虛擬機的運行程序就叫j…

    2017-05-23
  • linux系統用戶管理和grep正則表達式練習

    1、復制/etc/skel目錄為/home/tuser1,要求/home/tuser1及其內部文件的屬組和其它用戶均沒有任何訪問權限。 [root@suywien ~]# cp -rpv /etc/skel/ /home/tuser1/ ‘/etc/skel/’ -> ‘/home/tuser1/’ ‘/etc/skel/.mozilla’ ->…

    Linux干貨 2018-03-25
  • http協議

    ##socket套接字– 套接字,進程間通信IPC的一種實現,允許位于不同主機(或同一主機)上不同進程之間進行通信和數據交換。– socketAPI:封裝了內核中所提供的socket通信相關的系統調用– socketDomain:根據其所使用的地址– AF_INET:Address Family,Ipv4&#8…

    Linux干貨 2017-12-06
欧美性久久久久