Week2–Linux基礎三

一. Linux上的文件管理類命令都有哪些,其常用的使用方法和例子是啥呢?

文件管理類命令大概就是這些: ls, cd, pwd, mkdir, rmdir, cp, rm, mv, touch, cat, more, less, head, tail, file, grep.

目錄或文件操作類:

1. ls: (查看文件名命令)

-a :全部的文件,連同隱藏檔( 開頭為 . 的文件) 一起列出來 (常用)

-A :全部的文件,連同隱藏檔,但不包括 . 與 .. 這兩個目錄

-d :僅列出目錄本身,而不是列出目錄內的文件數據 (常用)

-f :直接列出結果,而不進行排序  (ls 默認會以檔名排序!)

-h :將文件容量以人類較易讀的方式(例如 GB, KB 等等)列出來 (常用)

-i :列出 inode 號碼,inode 的意義下一章將會介紹 (常用)

-l :長數據串列出,包含文件的屬性與權限等等數據 (常用)

-n :列出 UID 與 GID 而非使用者與群組的名稱 (UID與GID會在用戶管理提到!)

-r :將排序結果反向輸出,例如:原本檔名由小到大,反向則為由大到小

-R :連同子目錄內容一起列出來,等于該目錄下的所有文件都會顯示出來 (常說的遞歸)

-S :以文件容量大小排序,而不是用檔名排序

-t :依時間排序,而不是用檔名

2. cd: (切換用戶當前目錄)

cd [相對路徑或絕對路徑]

# 最重要的就是目錄的絕對路徑與相對路徑,還有一些特殊目錄的符號羅!

[root@kk ~]# cd ~test

# 代表去到 vbird 這個使用者的家目錄,亦即 /home/test

[root@kk vbird]# cd ~

# 表示回到自己的家目錄,亦即是 /root 這個目錄

[root@kk ~]# cd

# 沒有加上任何路徑,也還是代表回到自己家目錄的意思喔

[root@kk ~]# cd ..

# 表示去到目前的上一級目錄,亦即是 /root 的上一級目錄的意思

[root@kk /]# cd –

# 表示回到剛剛的那個目錄,也就是 /root 羅~

[root@kk ~]# cd /var/spool/mail

# 這個就是絕對路徑的寫法!直接指定要去的完整路徑名稱

[root@kk mail]# cd ../mqueue

# 這個是相對路徑的寫法,我們由/var/spool/mail 去到/var/spool/mqueue 就這樣寫

3. pwd: (之前有寫過了, 查看用戶當前所在位置)

pwd [-P] 選項與參數:   

-P :顯示出確實的路徑,而非使用鏈接 (link) 路徑。    

例:

pwd    

cd /var/mail

pwd –P

/var/spool/mail

pwd與pwd –P 顯示的路徑不同,大家清楚了吧!

4. mkdir: (創建目錄)

mkdir [-mp] 目錄名稱 選項與參數:

-m :配置文件的權限喔!直接配置,不需要看默認權限 (umask)

-p :幫助你直接將所需要的目錄(包含上一級目錄)遞回創建起來!

-version 顯示版本信息

例:

mkdir -p test1/test2/test3/test4 (一起創建)

mkdir -m 744 test2

5. rmdir: (刪除目錄)

rmdir [-p] 目錄名稱 選項與參數:

-p :連同上一級“空的”目錄也一起刪除

#一般要記住刪除的目錄必須是空的,不能包含目錄或文件,如果要刪除的話請先刪除目錄里面包含的內容再去刪除目錄, 當然也可以加-p, 全部刪除, 但要小心, 免得里面有需要的文件或者文本也一并刪了!

例:

rmdir -p test1/test2/test3/test4 (全部刪除)

6. rm: (簡單明了的命令, 但必需小心使用!!!)

rm [-fir] 文件或目錄 選項與參數:

-f :就是 force 的意思,忽略不存在的文件,不會出現警告信息(強制刪除!)

-i :互動模式,在刪除前會詢問使用者是否動作

-r :循環刪除直到刪除到沒!最常用在目錄的刪除了(這是非常危險的選項)

我們一般常組合使用,rm –rf (刪除全部文件或目錄,大家得小心使用,因為刪除了就無法恢復了)

7. cp: (復制)

格式: cp 源文件 目標位置

#源文件:制定源文件列表。默認情況下,cp命令不能復制目錄,如果要復制目錄,則必須使用-R選項;

#目標文件:指定目標文件。當“源文件”為多個文件時,要求“目標文件”為指定的目錄。

但這里的CP命令是分為2種的.

單源復制: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

        cp [OPTION]… -t DIRECTORY SOURCE…

      如果DEST不存在:錯誤;

      如果DEST存在:

      如果DEST是非目錄文件:錯誤;

      如果DEST是目錄文件:分別復制每個文件至目標目錄中,并保持原名;

cp指令常用的選項:

-i 使用交互式模式進行復制操作(存在覆蓋情況時進行提示)

-f 強制覆蓋目標文件

-r 或者-R 遞歸復制目錄

-d 復制鏈接文件本身而非其指向的真實文件

  -a:-dR –preserve=all, archive,用于實現歸檔

  –preserv=

  mode:權限

      ownership:屬主和屬組

      timestamps: 時間戳

      context:安全標簽

      xattr:擴展屬性

      links:符號鏈接

      all:上述所有屬性

8. mv:

mv [-fiu] source destination 選項與參數:

-f :force 強制的意思,如果目標文件已經存在,不會詢問而直接覆蓋

-i :若目標文件 (destination) 已經存在時,就會詢問是否覆蓋

-u :若目標文件已經存在,且 source 比較新,才會升級 (update)

我們一般還可以用mv 命令進行重命名(例: mv test test.bak)

9. touch: (改變文件時間戳)

touch [-acdmt] 文件 選項與參數:

-a :僅修訂 access time

-c :僅修改文件的時間,若該文件不存在則不創建新文件

-d :后面可以接欲修訂的日期而不用目前的日期,也可以使用 –date="日期或時間"

-m :僅修改 mtime

-t :后面可以接欲修訂的時間而不用目前的時間,格式為[YYMMDDhhmm]–[[cc]YY]MMDDhhmm[.ss] 即[年]月日小時分鐘[秒]

補充:

我們在 ls 這個命令的介紹時(ls –l),有提到每個文件在linux底下都會記錄許多的時間參數,其實是有三個主要的變動時間,那么三個時間的意義是什么呢?

在這里補充一下

modification time (mtime):      

當該文件的“內容數據”變更時,就會升級這個時間!內容數據指的是文件的內容,而不是文件的屬性或權限喔

status time (ctime):      

當該文件的“狀態 (status)”改變時,就會升級這個時間,舉例來說,像是權限與屬性被更改了,都會升級這個時間啊。

access time (atime):      

當“該文件的內容被取用”時,就會升級這個讀取時間 (access)。舉例來說,我們使用 cat 去讀取 /etc/man.config,就會升級該文件的 atime 了

文件內容操作類:

10. cat: (直接顯示文本)

cat [-AbEnTv] 選項與參數:

-A :相當于-vET 的整合選項,可列出一些特殊字符而不是空白而已

-b :列出行號,僅針對非空白行做行號顯示,空白行不標行號

-E :將結尾的斷行字節 $ 顯示出來

-n :列印出行號,連同空白行也會有行號,與 -b 的選項不同 (常用)

-T :將 [tab] 按鍵以 ^I 顯示出來

-v :列出一些看不出來的特殊字符

11. more: (一頁一頁翻動查看)

常用的快捷鍵:

空白鍵 (space):代表向下翻一行

Enter     :代表向下翻一行

/字串     :代表在這個顯示的內容當中,向下搜尋字串這個關鍵字

:f            :立刻顯示出檔名以及目前顯示的行數

q            :代表立刻離開 more ,不再顯示該文件內容

b 或 Ctrl+b :代表往回翻頁,不過這動作只對文件有用

12. less: (一頁一頁翻動)

less與more區別: 在 more 的時候,我們并沒有辦法向前面翻, 只能往后面看,但若使用了 less 時,就可以使用 [pageup] [pagedown] 等按鍵的功能來往前往后翻看文件

常用的快捷鍵:

空白鍵    :向下翻動一頁

[pagedown]:向下翻動一頁

[pageup]  :向上翻動一頁

/字串     :向下搜尋字串的功能

?字串     :向上搜尋字串的功能

n         :重復前一個搜尋 (與 / 或 ? 有關!)

N        :反向的重復前一個搜尋 (與 / 或 ? 有關!)

q         :離開 less 這個程序

13. head: (取用前面幾行)

head [-n number] 文件 選項與參數:

-n :后面接數字,代表顯示幾行的意思(默認是前10行)

14. tail:(與head相反,取用后面幾行)

tail [-n number] 文件 選項與參數:

-n :后面接數字,代表顯示幾行的意思  (默認后10行)

-f :表示持續查看后面所接的文件,要等到按下Ctrl+c才會結束tail的查看

#(tail –f 非常有用,當我們看某些經常更新的日志時,例: tail -f /var/log/maillog)

15. file: (查看文件類型)

file ~/.bashrc ——–ASCII 的純文字檔

file /usr/bin/passwd ————可執行文件

file /var/lib/mlocate/mlocate.db  ————— data 文件

總結: 這里所列出的只是命令中常用的部分選項, 不代表已經是最完全,最完整的.

有些命令有更多的參數可選, 具體可以Man,help,whatis等幫助文檔再去詳細看.

二. bash的工作特性之命令執行狀態返回值和命令行展開所涉及的內容, 和一般小例子。

1. bash的工作特性之—-命令執行狀態返回值

  簡單說就是Bash的執行結果狀態.

  命令執行的狀態結果:

  bash通過狀態返回值來輸出此結果:

成功:0

失?。?-255

命令執行完成之后,其狀態返回值保存于bash的特殊變量$?中;

$?–它是Linux的一個特殊變量,其值為0或非0;為0表示命令執行成功,非0表示命令執行失敗

命令正常執行時,有的還會有命令返回值:根據命令及其功能不同,結果各不相同;

引用命令的執行結果:

$(COMMAND)

或'COMMAND'

例子:

1. # echo "Helllo World"

2. Helllo World

3. # echo $?

4. 0

5. # echoa "Hello World"

6. -bash: echoa: command not found

7. # echo $?

8. 127

2. bash的工作特性之—-命令行展開

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

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

例如:/tmp/{a,b} 相當于 /tmp/a /tmp/b

三. 請使用命令行展開功能來完成以下練習:

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

  (2)、創建/tmp/mylinux目錄下的:

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

(一). 一般的做法是什么?肯定是這樣:

mkdir -pv /tmp/a_c

mkdir -pv /tmp/a_d

mkdir -pv /tmp/b_c

mkdir -pv /tmp/b_d

但這樣mkdir命令要敲4遍,冗余操作太多了,可以利用bash的特性–命令行展開來簡化操作:

mkdir -pv /tmp/{a,b}_{c,d}

(二). 用命令行展開功能來創建題目中列出的Linux目錄結構:

mkdir -pv /tmp/mylinux/{bin,boot/grub,dev,etc{rc.d/init.d,sysconfig/network-scripts},lib/modu1es,lib64,proc,sbin,sys,tmp,usr/local{bin,sbin},var{lock,log,run}}

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

首先來解釋, 什么是元數據:

任何文件系統中的數據分為數據和元數據.

數據是指普通文件中的實際數據,而元數據指用來描述一個文件的特征的系統數據,諸如訪問權限、文件擁有者以及文件數據塊的分布信息(inode…)等等.

在集群文件系統中,分布信息包括文件在磁盤上的位置以及磁盤在集群中的位置.

用戶需要操作一個文件必須首先得到它的元數據,才能定位到文件的位置并且得到文件的內容或相關屬性.

元數據包含: 名稱, 大小, 塊數量, IO塊數量, 文件類型, Inode, 鏈接, UID, GID, atime, mtime.

1. 文件元數據查看:

  可使用stat命令查看文件的元數據

  stat用法:

  stat – display file or file system status

  顯示文件或文件系統的狀態

  stat FILE…

  文件:  兩類數據

元數據:metadata:access(最后訪問),modify(最后修改),change(最后改變)

   數據: data

例如:

# echo 123 >> /tmp/functions

# stat /tmp/functions

File: ‘/tmp/functions’(文件名)

Size: 4 (大小) 

Blocks: 8  (文件占了多少個數據塊) 

IO Block: 4096 (文件所占數據塊的塊大小) 

regular file (普通文件)

Device: fd00h/64768d (硬件,既說明該文件在硬盤的那個柱面) 

Inode: 134  (節點號)

Links: 1  (鏈接)

Access: (0644/-rw-r–r–) (權限)

Uid: (0/root)–(該文件所屬的屬主)

Gid: (0/root)–(該文件所屬的屬組)

Context: unconfined_u:object_r:user_tmp_t:s0–(安全上下文)

Access: 2016-12-12 15:38:47.104522265 -0400–(文件上一次的訪問時間,其實就是最近訪問時間)

Modify: 2016-12-12 15:38:48.104522265 -0400–(文件上一次修改的時間,其實就是最近數據修改過)

Change: 2016-12-12 15:38:48.104522265 -0400–(文件上一次屬性更改的時間,其實就是最近元數據&數據修改過)

2. 修改文件的時間戳信息:

可以使用touch命令更改文件的時間戳(前面已經有講解過)

touch – change file timestamps

例子: 

# touch -t 201612100810.00 /tmp/functions  #修改文件訪問時間和修改時間為: 2016-12-10 08:10.00

-t選項就是實現自定義時間戳.

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

1. 定義命令別名使用alias命令.

alias命令

# alias(獲取所有可用的別名定義)

# alias NAME='COMMAND'(定義別名), 注意: 僅對當前shell進程有效

# unalias NAME(撤銷別名)

2. 在命令中引用另一個命令的執行結果:(Bash特性之一,前面已有提及)

$(COMMAND)

或'COMMAND'

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

ls -dh /var/l[a-z0-9][a-z]

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

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

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

ls -dh /etc/[^a-z][a-z]*

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

touch /tmp/tfile-$(date +%Y-%m-%d-%H-%M-%S)

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

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

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

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

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

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

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

(0)
KelvinKelvin
上一篇 2016-12-12
下一篇 2016-12-12

相關推薦

  • Net-25第5周作業

    1、顯示/boot/grub/grub.conf中以至少一個空白字符開頭的行; grep -E "^[[:space:]]+" /boot/grub/grub.conf 2、顯示/etc/rc.d/rc.sysinit文件中以#開頭,后面跟至少一個空白字符,而后又有至少一個非空白字符的行; grep&nbsp…

    Linux干貨 2017-01-03
  • linux基礎命令

            轉眼已經過了一周,在南老師的悉心指導下,我學會了一些基礎的LINUX命令,下面做一下本周小結。 命令1:tty、who am i、whoami、w 作用:查看當前登錄信息            終端傳遞信息 echo hello &g…

    Linux干貨 2017-07-15
  • N22-第四周

    1、復制/etc/skel目錄到/home/tuser1,要求/home/tuser1及其內部文件的屬組和其它用戶均沒有任何訪問權限。 ~]# cp -r /etc/skel /home/tuser1~]# ll -d /home/tuser1drwxr-xr-x. 3 root root 74 Aug 31 10:13 /home/tuser1~]# ch…

    Linux干貨 2016-09-07
  • 網絡管理

    常見的網絡物理組件:路由器、交換機、PC機 網絡的特性:速度、成本、安全性、可用性、可擴展性、可靠性、拓撲 拓撲結構:           物理拓撲:總線拓撲               &…

    Linux干貨 2017-05-09
  • 自制linux與內核編譯

    自制Linux系統 1分區并創建文件系統 fdisk/dev/sdb 分兩個必要的分區 /dev/sdb1對應/boot /dev/sdb2對應根/ mkfs.ext4 /dev/sdb1 mkfs.ext4 /dev/sdb2 2掛載boot mkdir/mnt/boot mount /dev/sdb1 /mnt/boot ? 3安裝grub grub-i…

    Linux干貨 2016-09-13
  • 文本處理工具(練習+作業)

    文本處理工具(cut,sort,uniq)練習 1、找出ifconfig命令結果中本機的所有IPv4地址 [root@localhost ~]# ifconfig | tr -cs '[:digit:].' '\n'| sort -t. -k3 |tail -5 2、查出分區空間使用率的最大百分比值 [root@loc…

    Linux干貨 2016-08-07

評論列表(1條)

  • 馬哥教育
    馬哥教育 2016-12-16 23:23

    贊,內容上基本上是沒啥問題~能結合markdown來使用會更好~加油~

欧美性久久久久