第二周學習總結

寫在最前

通過上一周對計算機系統、Linux發展的學習,我們認識到了Linux是一個一切皆文件的內核系統。那么怎樣去操作系統上的各文件來達到你想要的目的呢?今天的總結就是幫助我們更快的達成目標。

文件管理類命令的分類

對于這類命令主要分為兩類:

操作類:touch、cp、mv

查看類:cat、tac、head、tail、less、more

touch

功能描述:創建新的空文件或更改文件的時間戳。

語 ? ?法:touch [OPTION]… FILE…

選 ? ?項:

  • -c:指定的文件路徑不存在時不予創建;
  • -a:僅修改access time;
  • -m:僅修改modify time;
  • -t [[CC]YY]MMDDhhmm[.ss],其后跟上指定的時間;

實 ? ?例:

11

通過使用touch命令修改訪問時間:touch -a -t 1712141414.14 linux.txt?

得到如下結果:

222

擴 ? ?展:細心的你可能會發現上面截圖中有一個stat命令,那么stat命令輸出的都是什么文件的什么信息呢?其實文件主要由兩類數據組成:元數據和數據,元數據主要是用于描述文件的屬性信息,使用stat命令顯示的全部是文件的元數據,而數據信息則是文件的具體內容數據,可以通過上述命令中的cat查看。上圖所顯示的信息中:

  • File:當前文件的文件名;
  • Size:當前文件的文件大小;
  • Device:存儲在那個設備上;
  • Inode:文件的Inode號碼;
  • Linkes:文件當前的鏈接數;
  • Access:訪問權限;
  • Uid:屬主ID號碼;
  • Gid:屬組ID號碼;
  • Access time:最近一次文件的訪問時間;
  • Modify time:最近一次文件的內容被修改時間;
  • Change time:最近一次文件的狀態被改變的時間;

cp

功能描述:復制文件或目錄。

語 ? ?法:cp [OPTION]… SOURCE DEST

選 ? ?項:

  • -a:此參數的效果相當于同時使用dpR參數;
  • -d:復制符號鏈接本身,而非其指向的源文件;
  • -f:強制進行復制;
  • -i :交互式復制,有提示信息;
  • -R、-r:遞歸復制目錄;將目錄下的文件一并復制過去;
  • -p:保留源文件所有者的屬性;

mv

功能描述:移動或重命名文件、目錄。

語 ? ?法:mv [OPTION]… ?SOURCE DEST

選 ? ?項:

  • -f:強制進行覆蓋;
  • -i :交互式覆蓋,有提示信息

cat

功能描述:讀取文件并打印到標準輸出。

語 ? ?法:cat [OPTION]… [FILE]…

選 ? ?項:

  • -n:對輸出的行數進行編號;

tac

功能描述:讀取文件并逆序打印到標準輸出。

語 ? ?法:tac [OPTION]… [FILE]…

選 ? ?項:

333

head

功能描述:輸出文件的開頭部分內容,默認顯示10行。

語 ? ?法:head [OPTION]… FILE…

選 ? ?項:

  • -c <字符數>:指定顯示頭部內容的字符數;
  • -n <數字>:指定顯示頭部內容的行數;

more

功能描述:按頁瀏覽文本文件的內容,只能向后翻頁。

語 ? ?法:more [options] file […]

選 ? ?項:

  • – <數字>:指定每屏顯示的行數;

less

功能描述:按頁瀏覽文本文件的內容,可以向前或向后翻頁。

語 ? ?法:less [OPTION]… FILE…

選 ? ?項:

  • -e:文件內容顯示完畢后自動退出;
  • -N :每行行首顯示行號;

?bash特性

在Linux中,bash的其中一個工作特點叫做沒有返回信息通常是最好的信息。這里并不是說真的沒有返回結果,其實每條命令執行完成之后,其狀態返回值都保存于bash的特殊變量$?中,通過echo $?的值即可查看上一條指令是否執行成功,成功的話,值肯定是0,如果值是1-255之間的任何一個數字,都表示上條指令沒有執行成功。此處需要注意的是一定$?只表示上一次的狀態返回值。

此外,在bash中,還有一個重要的命令行展開特性,通過此特性,可以極大的節省時間,提高工作效率。

  • ~[USERNAME]:展開為指定用戶的家目錄;
  • {} :可承載一個或多個以,號分割的路徑列表,并能夠將其展開為多個路徑;

例如:(1)、創建/tmp目錄下的:a_c,a_d,b_c,b_d

201

結果如下顯示:

202

(2)、創建如下目錄結構:

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
├── locak
├── log
└── run

使用命令行展開方式創建,實現方法為:(由于篇幅的原因,刪除了部分輸出信息)

203

結果顯示如下:

204

其實bash還有很多特性,比如下面將要介紹的也是在實際中可能會用到的,那就是命令別名、命令引用。命令別名主要有兩個好處,第一就是對一些危險的命令使用別名,可以起到提示的作用,第二就是命令或者路徑很長時,使用別名可以提高效率。別名的設置也很簡單,主要有三種方式:

  1. 命令行編輯別名alias,alias ‘COMMAND’=’alias’ ? ?此種方法只對當前用戶在當前回話中有效;
  2. 要想永久生效,必須修改配置文件,編輯用戶家目錄下的 .bashrc文件,添加別名,然后重新讀取配置文件生效;
  3. 要想所有用戶都生效,則要編輯/etc/bashrc文件添加別名,然后重新讀取配置文件生效;

其次命令的引用在實際中也會經常遇到,那么怎么引用呢,其實也很簡單,用法為:$(COMMAND)或`COMMAND`,注意此處為反引號。說了這么多,那來個例子練練手吧:在/tmp目錄下創建以tfile開頭,后跟當前日期和時間的文件,文件名形如:tfile-2016-05-27-09-32-22。綜合前面的知識,我想此處你肯定不能用touch創建時自己敲上去時間,如果你真是這樣創建,那么前面的內容就算白講了,因為此處tfile后明顯是個時間,因此可以用date表示,綜合上面的命令替換,是不是感覺有點思緒了呢?答案就是這樣的:

touch tfile-`date +”%Y-%m-%d-%H-%M-%S”`是不是覺得還是挺簡單的。

說完了上面的內容,下面來說說bash的文件名通配,很多時候我們想要查找一些特定格式名稱的文件,這時文件名通配就非常有用了。常見的通配符有如下幾種:

  • *:任意長度的任意字符;
  • ?:任意單個字符;
  • []:中括號范圍內的單字符;
  • [^]:中括號以外的單字符;
  • 字符集合:
? ? [:space:] : 所有空白字符
? ? [:punct:] : 所有標點符號
? ? [:lower:] :所有小寫字母
? ? [:upper:]:任意大寫字母
? ? [:digit:]:任意數字
? ? [:alnum:]:任意數字、大小寫字母
? ? [:alpha:]:任意大小寫字母

bash特性練習

學習了上述bash的眾多特性,如果在生產環境中給你如下問題,你是不是能搞定呢:

  1. ?ls /var/l*[[:digit:]]*[[:lower:]]是什么意思?
  2. ls /etc/[[:digit:]]*[^[:digit:]]表示什么?
  3. ls /etc/[^[:alpha:]][[:alpha:]]*又表示什么?

根據上面內容的提示,我們可以將上述問題放到bash的文件通配符段落中查找答案,所以:

  1. 表示顯示/var目錄下,以1開頭,中間跟了1個數字,以小寫字母結尾的文件或目錄;
  2. 表示顯示/etc目錄下,以數字開頭,非數字結尾的文件或目錄;
  3. 表示顯示/etc目錄下,以非大小寫字母開頭但緊跟著任意一個大寫或小寫字母的文件或目錄;

其實吧,學習有時候就是你做完了上面的內容,肯定覺得要是再有幾個練習一些該多好哇!哈哈哈,其實吧,下面還真有。有時間又覺得不錯的話可以練習練習

  1. cp -r /etc/p*[^[:figit:]] /tmp/mytest1
  2. cp -r /etc/*.d /tmp/mytest2
  3. cp ? ?/etc/[lmn]*.conf /tmp/mytest3

忙碌的一周又過去了,為了趕上其他小伙伴的進度,一天當做三天用,用四天的時間學完了兩周的課程,接下來繼續向前奔跑。

 

 

 

 

 

 

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

(0)
蟲草君蟲草君
上一篇 2017-12-16 14:28
下一篇 2017-12-16 17:45

相關推薦

  • 實驗:路由、bonding、team

    實驗:路由實驗 路由表構成目標網絡:網絡ID 子網掩碼接口:到達目標網絡,從哪個接口出來,此接口網關:gateway,下一個鄰近路由器的鄰近接口的IP地址,如果目標網絡和本路由器直接,網關的地址為接口的IP centos6 關閉NetworkManager服務chkconfig NetworkManagerservice NetworkManager sto…

    Linux干貨 2017-05-06
  • 網絡基礎

    計算機網絡     計算機網絡,是指將地理位置不同的具有獨立功能的多臺計算機及其外部設備,通過通信線路連接起來,在網絡操作系統,網絡管理軟件及網絡通信協議的管理和協調下,實現資源共享和信息傳遞的計算機系統。 1、網絡通信設備     網絡通信設備種類繁多,且日新月異,網絡通信設備通常由網絡線纜、網卡、集線器、中繼器、網橋、交換機、路由器等組成。 網橋(Bri…

    Linux干貨 2016-12-16
  • HTTP詳解(3)-http1.0 和http1.1 區別

    翻了下HTTP1.1的協議標準RFC2616,下面是看到的一些它跟HTTP1.0的差別。 1. Persistent Connection持久連接        在HTTP1.0中,每對Request/Response都使用一個新的連接。      …

    Linux干貨 2015-04-04
  • grep、egrep正則表達式之初窺門徑

    何謂正則表達式 正則表達式,又稱正規表示法、常規表示法(Regular Expression,在代碼中常簡寫為regex、regexp或RE),是一類字符所書寫的模式,其中許多字符不表示其字面意義,而是表達控制或通配等功能。正則表達式使用單個字符串來描述、匹配一系列符合某個句法規則的字符串。在很多文本編輯器里,正則表達式通常被用來檢索、替換那些符合某個模式的…

    2015-03-19
  • 磁盤陣列RAID

          RAID全名為Redundant Arrary of lnexpensive Disks,是一種可以提高磁盤IO和提高磁盤耐用性   的磁盤陣列。       RAID的實現方式一般分為三種:             …

    Linux干貨 2016-06-22
  • 第九周作業

    第九周作業

    Linux干貨 2017-11-13

評論列表(1條)

  • 馬哥教育
    馬哥教育 2018-01-07 17:18

    內容上有自己思考的部分很贊,繼續加油~

欧美性久久久久