蘿卜運維記-第二周

part2–針對文件命令的介紹,使用,演示

Ⅰ Linux文件管理類命令常用方法
Ⅱ bash的工作特性,相關示例
Ⅲ 文件的元數據有哪些,以及所代表的含義。
Ⅳ 相關命令的操作,和結果演示。

①Linux文件管理命令常用方法

Linux常見文件類型

-:常規文件;即f;

d: directory,目錄文件;

b: block device,塊設備文件,支持以“block”為單位進行隨機訪問

c:character device,字符設備文件,支持以“character”為單位進行線性訪問

    8位二進制:0-255

    major number:主設備號,用于標識設備類型,進而確定要加載的驅動程序

    minor number:次設備號,用于標識同一類型中的不同的設備;

l:symbolic link,符號鏈接文件;

p: pipe,命名管道;

s: socket,套接字文件;

命令管理工具指南:cp、rm、mv

1. cp(copy)復制:命令格式

  單源復制:cp [OPTION]… [-T] SOURCE DEST

  多源復制:cp [OPTION]… SOURCE… DIRECTORY

  cp [OPTION]… -t DIRECTORY SOURCE…

常用參數

  -r:遞歸復制目錄及其子目錄內的所有內容

  -a:相當于-dR –preserve=all

  -p:保持指定文件的原有屬性

  -d:等于–no-dereference –preserve=links

  -f:強制覆蓋

例1:將home目錄下的test1文件夾里名為jiang的文件,復制到test2下,如下

  home]#cp test1/jiang test2
  home]#ls
  jiang

例2:將test1文件夾里的所有文件、子文件夾adb下的jiang2內容全部復制到test2,如下:

 home]#cp -r test1/* test2
 home]#cd test2
 test2]#ls
 adb jiang
 test2]cd adb
 adb]#ls
 jiang2

例3:使用參數-f 復制test1里面的jiang ,到test2里面,同時test2下已經存有jiang這個文件!

 cp -f test1/jiang test2
 當目標文件夾下有一個和源文件夾一樣的同名文件,那么在操作這個cp命令時,系統會提示,如果想跳過這個直接加上f 就可以強制覆蓋!

2.  rm(Remove)刪除,移除:命令格式

 rm [OPTION]… FILE…

常用參數

 -i:interactive (默認rm是‘rm -i’的別名)

 -f:force

 -r: recursive

 -v:顯示指令的詳細過程

 刪除目錄:rm -rf /PATH/TO/DIR

★注意:廢棄文件建議不要直接刪除,而是移動至某個專用目錄;rm -rf  file  這個命令請謹慎使用!

例1:刪除home目錄下的test1里的所有文件,文件夾。

 home]#ls
 test1  test2  Vince
 home]#rm -rf  test1
 home]#ls
 test2 Vince

3. mv(move)剪切,重命名:命令格式

   mv [OPTION]… [-T] SOURCE DEST

   mv [OPTION]… SOURCE… DIRECTORY

   mv [OPTION]… -t DIRECTORY SOURCE…

常用參數

 -i: 交互式

 -f: force

例1:將test1 重命名為Angela

 home]#ls
 test1
 home]#mv test1 Angela
 home]#ls
 home]#Angela

例2:將test1目錄移動到etc目錄下

 home]#mv test1 etc/
 home]#cd /etc
 etc]#ls
 test1

★注意:使用mv時候,請確認目標目錄位置,mv在同一個硬盤分區上操作是inode號是不變的,
mv在同一個硬盤分區上操作是inode號是不變的,無論文件多大都很快,
是因為只是修改了文件對應的指針。跨分區是執行復制操作,所以很慢。

②bash的工作特性,相關示例

bash特性之一:命令別名

 #alias NAME='COMMAND'

bash的特性之二:命令歷史

命令語法格式:

 history [-c] [-d OFFSET] [n]
 history -anrw [FILENAME]
 history -ps VALUE [VALUE…]

常用參數
    -c: 清空命令歷史;
    -d offset(偏移量):刪除指定命令歷史,offset為history顯示出來的命令數字;
    -r: 從文件讀取命令歷史至歷史列表中;
    -w:把歷史列表中的命令追加至歷史文件中;
    history #:顯示最近的#條命令;

bash特性之三:快捷鍵

 Ctrl+a:跳轉至命令行行首;
 Ctrl+e:跳轉至命令行行尾;
 Ctrl+u:刪除行首至光標所在處之間的所有字符;
 Ctrl+k:刪除光標所在處至行尾的所有字符;
 Ctrl+l:清屏,相當于clear;

bash的特性之四:命令補全和路徑補全

1.命令查找和補全機制:
    (1) 查找內部命令;

 (2) 根據PATH環境變量中設定的目錄,自左而右逐個搜索目錄下的文件名;

 (3) 給定開頭的部分字符串如果能惟一標識某命令程序文件,則直接補全;

 不能惟一標識某命令程序文件,再擊tab鍵一次,會給出列表;

2.路徑補全:

 在給定起始路徑下,以對應路徑下的打頭字串逐一匹配起始路徑下每個文件:
 TAB按鍵;如果能惟一標識,則直接補全;否則,再一次tab,給出列表;

3.命令行展開

 ~:自動展開為用戶的家目錄,或指定的用戶的家目錄;

 {}:花括號展開。可承載一個以逗號分隔的路徑列表,并能夠將其展開為多個路徑;

bash的特性之五:命令行展開:

 1)、命令行展開;

 以某些bash能夠解釋的符號來代替命令中的某些參數。

 ~:展開為用戶的家目錄;

例1:切換至家目錄

 cd ~;pwd
 /root
 {}:可承載一個以逗號分隔的列表,并將其展開為多個路徑;

例2:在/tmp/d目錄下創建f1,f2,f3三個文件

 touch /tmp/d/f{1,2,3}

 bash

bash特性之六:命令的執行狀態結果:

 1)、bash的基礎特性之狀態值返回:在bash中使用一個特殊的變量$?來保存上一個命令的執行狀態結果。

 0表示成功,

 1-255表示失敗

③ 使用命令行展開功能實現習題

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

 tmp]#mkdir {a,b}{_c,_d}
 tmp]#ls
 a_c,a_d,b_c,b_d

2.創建/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

 home]#mkdir -p test1/mylinux {{bin,dev,lib64,proc,sbin,sys,tmp,
 {boot/grup,lib/modules,var/{lock,log,run},usr/local/{bin,sbin},
 etc/{rc.d/init.d,sysconfig/network-scripts}}}}

3. 文件的元數據信息有哪些?分別代表什么含義?如何查看?如何修改時間戳信息?

元數據信息:文件名稱、屬主屬組、文件訪問權限、uid、gid、三個時間戳(centos7是四個)、inode號等等

訪問時間access time:讀一次這個文件的內容,這個時間就會更新。比如對這個文件運用 more、cat等命令。ls、stat命令都不會修改文件的訪問時間。

修改時間modify time:修改時間是文件內容最后一次被修改時間。比如:vi后保存文件。ls -l列出的時間就是這個時間。

狀態改變時間change time:是該文件的i節點最后一次被修改的時間,通過chmod、chown命令修改一次文件屬性,這個時間就會更新。

查看命令:stat filename

  [root@localhost mylinux]# stat bin
  File: ‘bin’
  Size: 6             Blocks: 0          IO Block: 4096   directory
  Device: fd00h/64768d    Inode: 71268759    Links: 2
  Access: (0755/drwxr-xr-x)  Uid: (    0/    root)   Gid: (    0/    root)
 Context: unconfined_u:object_r:user_tmp_t:s0
 Access: 2016-12-12 15:19:52.198280184 +0800      //第一次的時間
 Modify: 2016-12-12 15:19:42.192280550 +0800
 Change: 2016-12-12 15:19:42.192280550 +0800
 Birth: -

修改時間戳信息:touch [option] filename

touch命令:

touch – change file timestamps

touch [OPTION]… FILE…

-c: 指定的文件路徑不存在時不予創建;

-a: 僅修改access time;

-m:僅修改modify time;

-t 指定時間:[[CC]YY]MMDDhhmm[.ss]

  [root@localhost mylinux]# touch -a bin    //修改文件的訪問時間
  [root@localhost mylinux]# stat bin
  File: ‘bin’
  Size: 6             Blocks: 0          IO Block: 4096   directory
  Device: fd00h/64768d    Inode: 71268759    Links: 2
  Access: (0755/drwxr-xr-x)  Uid: (    0/    root)   Gid: (    0/    root)
  Context: unconfined_u:object_r:user_tmp_t:s0
  Access: 2016-12-12 15:48:10.714218002 +0800       //時間已經更新
  Modify: 2016-12-12 15:19:42.192280550 +0800
  Change: 2016-12-12 15:48:10.714218002 +0800
  Birth: -

 [root@localhost mylinux]# touch -m bin    //修改文件的編輯時間
       Modify: 2016-12-12 15:57:33.883197385 +0800    //時間已經更新

4. 文件別名的定義,如何在命令中引用另一個命令的執行結果。

alias命令

  alias NAME='COMMAND'      //只對當前shell進程有效,結束后得重新來再次定義
  unalias NAME              //撤銷別名

例子:

 [root@localhost mylinux]#  alias A='cd /home'     //將A定義為使用cd 進入home目錄

 [root@localhost mylinux]# A                       //此時要進入home目錄無需在cd /home,直接使用A即可

 [root@localhost home]#                            //切換到home目錄下


 *引用命令的執行結果:使用$()或者 “*

④exercise

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-9-32-22

   touch /tmp/tfile-$(date +%F-%H-%M-%S)

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

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

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

  cp -a /etc/*.d /tmp/mytest2

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

 cp -r /etc/[lmn]*.conf /tmp/mytest3

原創文章,作者:Vince,如若轉載,請注明出處:http://www.www58058.com/63419

(0)
VinceVince
上一篇 2016-12-12 16:51
下一篇 2016-12-12 17:25

相關推薦

  • 關于RHEL6中ulimit的nproc限制

    ulimit 用于限制 shell 啟動進程所占用的資源,支持以下各種類型的限制:所創建的內核文件的大小、進程數據塊的大小、Shell 進程創建文件的大小、內存鎖住的大小、常駐內存集的大小、打開文件描述符的數量、分配堆棧的最大大小、CPU 時間、單個用戶的最大線程數、Shell 進程所能使用的最大虛…

    Linux干貨 2016-10-19
  • ntp時間服務器

    前言   ntp(Network Time protocol)是網絡時間協議,是用來使網絡中的各個計算機時間同步的一種協議。 ntp配置  1)ntp是由ntp軟件提供,如果沒有可以使用yum進行安裝  2)ntp配置文件介紹:/etc/ntp.conf   利用restrict來管理權限控制;語法格式:restric…

    Linux干貨 2015-06-24
  • N26-第一周博客作業

    1、計算機的組成及功能     CPU: Central Processing Unit 運算與管理控制功能        包括:          &nbsp…

    Linux干貨 2017-01-10
  • 重定向以及管道

    描述I/O設備的重定向

    Linux干貨 2017-11-19
  • 馬哥教育網絡班N22期+第三周課程練習

    1、列出當前系統上所有已經登錄的用戶的用戶名,注意:同一個用戶登錄多次,則只顯示一次即可。    who | cut -d " " -f 1 | sort | uniq 2、取出最后登錄到當前系統的用戶的相關信息。    last | head -n 1  3、取出當前系統上被用戶當作其默…

    Linux干貨 2016-09-08
  • grep命令

    ]# chmod -R 700 /home/tuser1 ]# ll /home/tuser1/ total 0 drwx——. 2 root root 72 Nov 20 17:33 skel 新增用戶與組: 顯示/proc/meminfo: 顯示shell 非 /sbin/nologin 的用戶 找出/etc/passwd文件中一…

    Linux干貨 2016-11-20

評論列表(1條)

  • 馬哥教育
    馬哥教育 2016-12-16 17:03

    贊~~總結的不錯~加油~

欧美性久久久久