02葵花寶典之bash特性及文件入門

文件管理 目錄 命令替換 命令執行狀態 元數據 時間戳

02葵花寶典之bash特性及文件入門

一、文件管理命令

前面說過,linux上,一切皆文件,對文件的管理,是學習linux的基本內容之一。下面介紹linux上的一些文件管理命令

1目錄相關類命令(知識)

  1. pwd 顯示當前工作目錄
  2. cd /SOMEPATH 切換目錄
  • / 表示根目錄
  • ~ 表示當前用戶的家目錄(home directory)
  • ./ 表示當前目錄
  • .. 表示當前目錄的上父目錄(如果存在)
  • cd – 切換至前一個工作目錄
  1. mkdir 創建目錄
  • -m,–mode=MODE 設置所創建的目錄權限,如果不指定,則按照UMASK值設定默認權限
  • -p,如果所要創建的目錄的父目錄不存在,則先創建父目錄,然后創建該目錄
  • -v,–verbose 顯示創建的過程(當父目錄不存在時,使用-p選項,可以看見先創建的父目錄

mkdir

  1. rmdir 刪除目錄

注意,該命令只能刪除空目錄,使用較少。日常工作中使用rm命令較多。

  1. tree 顯示目錄層級,目錄樹及文件
  • tree [option] [directorty]
  • 以當然工作目錄為起始點前世。在某些linux系統上,該命令沒有安裝,需要手動安裝
  • -L level 顯示levle級目錄和文件
  • -d 只顯示目錄
  • -P PATTERN 顯示已PATTERN匹配到的目錄

2 文件查看類命令

  1. cat

cat [OPTION]… [FILE]…

cat 是concatenate的簡寫,連接之意,是連接文件并輸出至標準輸出(屏幕)

-n –number 顯示行號

  1. tac

用法基本同cat,只是像名字一樣,逆序顯示行

  1. more

分屏顯示文件內容,如果顯示到文件尾部,則退出!

  1. less

分屏顯示文件內容,如果顯示到文件尾部,但不退出,需要退出,可按q鍵退出 其他基本與more命令一致。使用的翻屏命令與man命令一致(man命令內部,調用的就是less -is)

  • f 或者F 或者 SPACE(空格鍵),向下翻整屏
  • b 或者B:backward,向上翻N行,默認整屏
  • d 或者D:downward,向下翻N行,默認屏幕的一半行數,即翻半屏
  • u 或者U:backward,向上翻N行,默認屏幕的一半行數,即翻半屏
  • ENTER(回車鍵),默認向下翻1行
  • 查找: 使用/keyword或者?keyword
  1. head

head [OPTION]… FILE… 顯示文件前面的行,默認10行

-n # 顯示前#行,可以簡寫為-#

-c # 顯示前#個字節

  1. tail

tail [OPTION]… FILE… 顯示文件后面的行,默認10行;常用的參數和head基本一致

  1. Stat

stat [OPTION]… FILE… 顯示文件狀態,包括大小、塊信息、訪問時間、修改時間、改變時間等信息。

stat

3 文件管理類命令

  1. touch

touch [OPTION]… FILE… 更改文件的時間戳

touch命令本意是更改文件時間戳,但現在更多應用于創建一個文件

-a 只修改access time,默認修改atime為當前時間

-m 只修改modify time,默認修改mtime為當前時間

-c –no-create 如果文件不存在,則不創建文件(默認是文件不存在則創建文件)

-t 設置時間戳為指定時間,時間戳格式為:[[CC]YY]MMDDhhmm[.ss]

  1. cp

cp 復制命令,有3種使用風格

(1)cp [OPTION]… SOURCE DEST

SOURCE、DEST都是文件,DEST存在,則覆蓋(默認不提醒用戶,直接覆蓋,可使用-i提醒用戶);如果DEST不存在,則以SOURCE為名,創建文件。

(2)cp [OPTION]… SOUTRE DIR

SOURCE是文件,DIR是目錄。在DIR下創建以SOURCE相同的文件

(3)cp [OPTION]… -r DIR DIR

DIR是目錄,必須使用-r選項,遞歸復制,目標存在,則在目標下復雜,目標不存在,在創建目標后復制

常用的選項有:

  • -i 交互式復制,即在覆蓋文件時提示用戶
  • -r 源為目錄時必須使用,遞歸復制
  • -d 不復制源文件或目錄的符號連接
  • -f 強制
  • -p 保存原來文件的屬主屬組信息
  • -v 顯示復制過程
  • –preserve[=ATTR_LIST] 保留文件或目錄指定的屬性,默認是權限、屬主屬組、時間戳等
  1. mv

mv 移動文件,相當于剪切,其用法基本與cp相似。

  1. rm rm [OPTION]… FILE… remove移除文件或目錄
  • -i 交互式,即移除過程提醒
  • -f 強制移除
  • -r 遞歸刪除目錄

rm -rf / 刪除根,可導致系統崩潰,rm -rf 應當慎用

二、bash的基本特性之一

1.命令執行狀態及返回值

bash的命令執行狀態是指一條命令執行的狀態結果,也就是是否成功,如果不成功,根據命令不同,給出相應的提示結果。一般而言,如果命令的執行狀態返回值為0,則表示命令執行成功,如果不為0,則表示命令沒有執行成功。

在運行完命令后,該執行結果保存在bash的特殊變量$?中。該變量可以和其他普通變量一樣,被引用。

注意,要查看一條命令的執行狀態返回值,必須在該命令執行完成后立即進行查看或將其保存,如果這條命令執行完成后,再執行一條或多條命令,則此時$?中保存的就不是這條命令的執行狀態結果了,因為$?這個變量已經被后面執行的行了的執行狀態返回值所覆蓋。

2.命令行展開

將類似于COMMOND1{STH1,STH2,…}COMMOND2格式的命令展開為COMMAND1STH1COMMAND2和COMMAND1STH2COMMAND2…等多條命令,依次有bash來執行,{}可以嵌套,也可以并列存在。{}類似于數學多項式中的(),STH1,STH2類似于“加數”,“,”相當于“+”,整體行為相當于多項式()相乘的展開

例如:

{a,b} 可以展開為 a b

/proc/{a,b}xxx{c,d} 可展開為/proc/axxxc /proc/axxxd /proc/bxxxc /proc/bxxxd

三、創建目錄及命令行展開

1.創建/tmp目錄下的:a_c,a_d,b_c,b_d

touch?/tmp/{a,b}_{c,d}

2.創建/tmp/mylinux目錄下的

mkdir -p /tmp/mylinux/{bin,boot/grub,dev,etc/{rc.d/init.d,sysconfig/network-scripts},lib/modules,lib64,proc,sbin,sys,tmp,usr/local/{bin,sbin},var/{lock,log,run}}touch?/tmp/{a,b}_{c,d}

四、文件的元數據

文件的數據包括兩部分,即元數據和數據,所謂元數據,可以認為是文件的屬性,所謂數據,是文件的內容。

文件的元數據包括大小、需要的存儲塊數、文件類型(f、d、c、b、p、s、l)、inode號、權限、屬主、屬主、時間戳(訪問時間、修改時間、改變時間)等。 可使用stat FILE…命令來查看。如:

stat /dev/tty0 /etc/passwd

修改文件的時間戳信息,可用touch命令

具體為: touch -a FILE 修改文件的訪問和改變時間為當前時間 touch -m FILE 修改文件的修改和改變時間為當前時間 touch -a -t STAMP FILE 修改文件的訪問和改變時間為STAMP指定的時間,STAMP的格式為:[[CC]YY]MMDDhhmm[.ss]

touch?-a -t 1102251830.05 /etc/virc

五、命令別名和命令引用

命令別名 命令別名通俗可理解為,為一個常用的命令(包含選項和參數)定義一個名稱,可用這個名稱來代替那個命令(包含選項和參數)。 使用alias命令來定義命令別名,alias [-p] [name[=value] … ] 如果沒有選項和參數,該命令顯示當前用戶shell定義的所有命令別名。 在當前shell中使用alias定義的命令別名,僅在當前shell進程中有效。若要命令別名永久有效,需要在用戶家目錄下的.bashrc(對該用戶有效)或/etc/bashrc(對所有shell為bash的用戶有效)配置文件中使用alias定義

alias

命令引用 命令引用,即在一個命令中使用另外一個命令的執行結果。需要引用執行結果的命令使用脫字符(一般位于鍵盤ESC鍵下方,像單引號)。 如:

adduser `echo "testuser"`

 

上述命令中,adduser使用echo testuser的命令結果testuser作為用戶名。

六、練習題

1.顯示/var目錄下所有以l開頭,以一個小寫字母結尾,且中間至少出現一位數字(可以有其它字符)的文件或目錄。

ls -d /var/l*[0-9]*[[:lower:]]

2.顯示/etc目錄下,以任意一個數字開頭,且以非數字結尾的文件或目錄。

ls -d /etc/[0-9]*[^0-9]

3.顯示/etc目錄下,以非字母開頭,后面跟了一個字母以及其它任意長度任意字符的文件或目錄。

ls -d /etc/[^[:alpha:]][[:alpha:]]*

4.在/tmp目錄下創建以tfile開頭,后跟當前日期和時間的文件,文件名形如:tfile-2016-05-27-09-32-22。

touch /tmp/tfile-`date +%Y-%m-%d-%H-%M-%S`

5.復制/etc目錄下所有以p開頭,以非數字結尾的文件或目錄到/tmp/mytest1目錄中。

mkdir /tmp/mytest1
cp -r /etc/p*[^0-9] /tmp/mytest1

6.復制/etc目錄下所有以.d結尾的文件或目錄至/tmp/mytest2目錄中。

mkdir /tmp/mytest2
cp -rv /etc/*.d /tmp/mytest2

7.復制/etc/目錄下所有以l或m或n開頭,以.conf結尾的文件至/tmp/mytest3目錄中。

mkdir /tmp/mytest3
cp -r /etc/[lmn]*.conf /tmp/mytest3
 如有錯誤,請聯系:1103212768@qq.com

本文來自投稿,不代表Linux運維部落立場,如若轉載,請注明出處:http://www.www58058.com/92030

(0)
koalakoala
上一篇 2018-03-10
下一篇 2018-03-11

相關推薦

  • N25期–第十七周作業

    1、  結合圖形描述LVS的工作原理; 針對高可伸縮、高可用網絡服務的需求,給出了基于IP層和基于內容請求分發的負載平衡調度解決方法,并在Linux內核中實現了這些方法,將一組服務器構成一個實現可伸縮的、高可用網絡服務的虛擬服務器。 虛擬服務器的體系結構如圖所示,一組服務器通過高速的局域網或者地理分布的廣域網相互連接,在它們的前端有一個負載調度器(…

    2017-05-08
  • 網絡班第七周 作業

    1、創建一個10G分區,并格式為ext4文件系統 (1) 要求其block大小為2048,預留空間百分比為2,卷標為MYDATA,默認掛載屬性包含acl (2) 掛載至/data/mydata目錄,要求掛載時禁止程序自動運行,且不更新文件的訪問時間戳 創建了一個20G的SCSI硬盤 fdisk /dev/sdb 創建ext4文件系統 ~]# mke2fs -…

    2017-09-16
  • Linux網站架構系列之Apache—-進階篇

    原創作品,允許轉載,轉載時請務必以超鏈接形式標明文章 原始出處 、作者信息和本聲明。否則將追究法律責任。http://nolinux.blog.51cto.com/4824967/1320167 本篇博文為Linux網站架構系列之apache的第二篇,我將帶大家一起學習apache的編譯參數,目錄結構和配置文件等方面的知識,實現對apac…

    Linux干貨 2016-08-15
  • 制作本地yum源(以redhat5.8通過復制光盤文件到本地)

    為什么要制作本地yum源 1、RPM安裝方式很多情況下不能有效解決復雜的包依賴關系。 2、而剛安裝完成系統的YUM一般是通過聯網使用。 3、如果是未注冊的redhat5.0以上系統,則不能聯網使用yum。 我們可以改變yum庫的指向,使其指向本地自己制作的yum倉庫,從而輕松實現本地yum方式查詢、安裝應用軟件了。 下面據此給大家介紹其操作方法(以Redha…

    Linux干貨 2016-04-11
  • LVM基本原理及使用

    LVM簡介 LVM全稱Logical Volume Manager(邏輯卷管理),是將幾個物理分區(或硬盤)通過軟件組合成一塊看起來是獨立大硬盤(VG),然后對這塊大硬盤分割成可使用的邏輯卷(LV),最終能夠掛載使用,以達到對磁盤空間進行彈性管理的目的。 LVM的基本原理 基本術語 dm(device mapper):將一個或多個底層塊設備組織成一個邏輯設備…

    Linux干貨 2016-04-17
  • 推薦-NFS共享MySQL使用DNS輪詢實現Web負載均衡

    NFS共享MySQL使用DNS輪詢實現Web負載均衡 NFS共享MySQL使用DNS輪詢實現Web負載均衡 前言: 實驗拓撲圖 實驗環境 實驗步驟 搭建NFS 搭建dns,MySQL環境 DNS配置 MySQL配置 WEB配置 第一臺主機安裝 第二臺主機安裝 測試 web1測試 web2測試 回到web1測試 總結 前言: 今天學習了NFS,遂結合前面學習的…

    Linux干貨 2016-03-29
欧美性久久久久