馬哥教育網絡班20期+第2周課程練習

1、Linux上的文件管理類命令都有哪些,其常用的使用方法及其相關示例演示。 
常用文件管理命令有:ls、mkdir、cd、pwd、cp、rm、mv、touch、cat、more、less、head、tail等
 
(1)ls命令:列出目錄內容

ls [OPTION]... [FILE]...    
-a:顯示全部文件,包括隱藏文件    
-d:僅列出目錄本身,不列出目錄內的文件數據    
-l:列出文件的屬性與權限等數據
[root@testmin ~]# ls -l 
total 36 
-rw-r--r--. 1 root root 3568 Jun 18 22:02 123.txt 
-rw-------. 1 root root 1128 Jun 8 07:59 anaconda-ks.cfg 
-rw-r--r--. 1 root root 9458 Jun 8 07:59 install.log 
-rw-r--r--. 1 root root 3161 Jun 8 07:58 install.log.syslog 
-rw-r--r--. 1 root root 9192 Jun 18 20:09 used to configure the kernel-resident network interfaces

(2)mkdir命令:創建目錄

mkdir[OPTION]... DIRECTORY...   
-m:配置文件的權限,直接配置,不需要看默認權限  
-p:直接將所需要的目錄(包含上一級目錄)遞歸創建
[root@testmin ~]# mkdir -p /adb/123/456
[root@testmin ~]# tree adb
adb
└── 123
    └── 456

(3)cd命令:變化工作目錄

cd[相對路徑或絕對路徑]
[root@testmin ~]# ls 
adb  anaconda-ks.cfg  install.log  install.log.syslog
[root@testmin ~]# cd adb
[root@testmin adb]# ls
123
[root@testmin adb]# cd
[root@testmin ~]# cd /root/adb
[root@testmin adb]#

(4)pwd:顯示當前工作目錄

pwd[OPTION]...
 -p:顯示區確實的路徑,而非使用link路徑
[root@testmin ~]# pwd
/root

(5)cp命令:復制文件和目錄

cp[OPTION]...SOURCE DEST
-a 盡可能將檔案狀態權限等資料都照原狀予以復制
-r 若 source 中含有目錄名則將目錄下之檔案亦皆依序拷貝至目的地
-f 若目的地已經有相同檔名的檔案存在則在復制前先予以刪除再行復制
-P: 復制符號鏈接文件本身,而非其指向的目標文件
[root@testmin ~]# ls
adb  anaconda-ks.cfg  install.log  install.log.syslog
[root@testmin ~]# tree adb
adb
└── 123
    └── 456
2 directories, 0 files
[root@testmin ~]# cp -r adb abc
[root@testmin ~]# ls
abc  adb  anaconda-ks.cfg  install.log  install.log.syslog
[root@testmin ~]# tree abc
abc
└── 123
    └── 456
2 directories, 0 files

(6)rm命令:刪除文件或目錄

rm [OPTION]... FILE...
-f:忽略不存在的文件,不會出現警告信息
-i:互動模式,在刪除前會詢問使用者是否動作
-r:遞歸刪除,常用在目錄的刪除(非常危險的選項)
一般常用rm -rf刪除全部文件或目錄,使用需謹慎
[root@testmin ~]# tree adb
adb
└── 123
    └── 456
2 directories, 0 files
[root@testmin ~]# rm -rf adb
[root@testmin ~]# ls
abc  anaconda-ks.cfg  install.log  install.log.syslog

(7)mv命令:移動文件

mv [OPTION]... SOURCE DEST
-f:如果目標文件已存在,不會詢問直接覆蓋
-i:若目標文件已存在,就會詢問是否覆蓋
[root@testmin ~]# mv -i abc /home
mv: overwrite `/home/abc'?

(8)touch命令:改變文件的時間戳

touch [OPTION]... FILE...
如果FILE不存在,默認會創建一個空文件
-a:僅修改access time
-c:僅修改文件的時間,若文件不存在則不創建新文件
-m:僅修改mtime
-t:后面可以接欲修改的時間格式為[[CC]YY]MMDDhhmm[.ss]
modification time (mtime):      
當該文件的“內容數據”變更時,就會升級這個時間!內容數據指的是文件的內容,而不是文件的屬性或權限喔
status time (ctime):      
當該文件的“狀態 (status)”改變時,就會升級這個時間,舉例來說,像是權限與屬性被更改了,都會升級這個時間啊。
access time (atime):      
當“該文件的內容被取用”時,就會升級這個讀取時間 (access)。舉例來說,我們使用cat去讀取/etc/rc.local,就會升級該文件的 atime 了
[root@testmin ~]# stat a.txt 
  File: `a.txt'
  Size: 0         	Blocks: 0          IO Block: 4096   regular empty file
Device: fd00h/64768d	Inode: 1442014     Links: 1
Access: (0644/-rw-r--r--)  Uid: (    0/    root)   Gid: (    0/    root)
Access: 2016-06-24 19:57:39.034679240 +0800
Modify: 2016-06-24 19:52:27.490673485 +0800
Change: 2016-06-24 19:57:39.034679240 +0800
[root@testmin ~]# touch -a a.txt
[root@testmin ~]# stat a.txt 
  File: `a.txt'
  Size: 0         	Blocks: 0          IO Block: 4096   regular empty file
Device: fd00h/64768d	Inode: 1442014     Links: 1
Access: (0644/-rw-r--r--)  Uid: (    0/    root)   Gid: (    0/    root)
Access: 2016-06-24 19:59:16.942680244 +0800
Modify: 2016-06-24 19:52:27.490673485 +0800
Change: 2016-06-24 19:59:16.942680244 +0800

(9)cat命令:連接并顯示文本文件內容

cat [OPTION]... [FILE]...
-E:將結尾的斷行字符$顯示出來
-n:顯示行號,連同空白行也會有行號
-b:列出行號,僅針對非空白行做行號顯示,空白行不標行號
[root@testmin ~]# cat -n install.log
     1	Installing libgcc-4.4.7-4.el6.x86_64
     2	warning: libgcc-4.4.7-4.el6.x86_64: Header V3 RSA/SHA1 Signature, key ID c105b9de: NOKEY
     3	Installing setup-2.8.14-20.el6_4.1.noarch
     4	Installing filesystem-2.4.30-3.el6.x86_64
     5	Installing basesystem-10.0-4.el6.noarch
     6	Installing ncurses-base-5.7-3.20090208.el6.x86_64
     7	Installing tzdata-2013g-1.el6.noarch
     8	Installing glibc-common-2.12-1.132.el6.x86_64
     9	Installing nss-softokn-freebl-3.14.3-9.el6.x86_64
    10	Installing glibc-2.12-1.132.el6.x86_64
    11	Installing ncurses-libs-5.7-3.20090208.el6.x86_64
    12	Installing bash-4.1.2-15.el6_4.x86_64
    13	Installing libattr-2.4.44-7.el6.x86_64
    14	Installing libcap-2.16-5.5.el6.x86_64
    15	Installing zlib-1.2.3-29.el6.x86_64
    16	Installing info-4.13a-8.el6.x86_64
    17	Installing audit-libs-2.2-2.el6.x86_64
    18	Installing popt-1.13-7.el6.x86_64
    19	Installing chkconfig-1.3.49.3-2.el6_4.1.x86_64

(10)more命令:是一個基于vi編輯器的文本過濾器,以全屏的方式按頁顯示文本的內容,支持vi中的關鍵字定位操作

more [OPTIONS...] FILE...
-d:顯示翻頁及退出提示
-c:不進行滾屏操作,每次刷新這個屏幕
-s:將多個空行壓縮成一行顯示
-u:禁止下劃線
+數字:從指定數字的行開始顯示
[root@testmin ~]# more install.log
Installing libgcc-4.4.7-4.el6.x86_64
warning: libgcc-4.4.7-4.el6.x86_64: Header V3 RSA/SHA1 Signature, key ID c105b9de: NOKEY
Installing setup-2.8.14-20.el6_4.1.noarch
Installing filesystem-2.4.30-3.el6.x86_64
Installing basesystem-10.0-4.el6.noarch
Installing ncurses-base-5.7-3.20090208.el6.x86_64
Installing tzdata-2013g-1.el6.noarch
Installing glibc-common-2.12-1.132.el6.x86_64
Installing nss-softokn-freebl-3.14.3-9.el6.x86_64
[root@testmin ~]# more  +3 install.log
Installing setup-2.8.14-20.el6_4.1.noarch
Installing filesystem-2.4.30-3.el6.x86_64
Installing basesystem-10.0-4.el6.noarch
Installing ncurses-base-5.7-3.20090208.el6.x86_64

(11)less命令:作用與more十分相似,不同的是less允許用戶向前或向后瀏覽文件,more只能向前瀏覽

less [OPTIONS...] FILE...
-e:文件內容顯示完畢后,自動退出; 
-f:強制顯示文件; 
-g:不加亮顯示搜索到的所有關鍵詞,僅顯示當前顯示的關鍵字,以提高顯示速度;
-l:搜索時忽略大小寫的差異; 
-N:每一行行首顯示行號;
-s:將連續多個空行壓縮成一行顯示; 
-S:在單行顯示較長的內容,而不換行顯示;
-x<數字>:將TAB字符顯示為指定個數的空格字符
[root@testmin ~]# less -N install.log
      1 Installing libgcc-4.4.7-4.el6.x86_64
      2 warning: libgcc-4.4.7-4.el6.x86_64: Header V3 RSA/SHA1 Signature, key ID c105b9de:       2 NOKEY
      3 Installing setup-2.8.14-20.el6_4.1.noarch
      4 Installing filesystem-2.4.30-3.el6.x86_64
      5 Installing basesystem-10.0-4.el6.noarch
      6 Installing ncurses-base-5.7-3.20090208.el6.x86_64
      7 Installing tzdata-2013g-1.el6.noarch

(12)head命令:用于顯示文件的開頭的內容,默認顯示頭10行內容

head [OPTION]... [FILE]...
-n<數字>:指定顯示頭部內容的行數; 
-c<字符數>:指定顯示頭部內容的字符數; 
-v:總是顯示文件名的頭信息;
-q:不顯示文件名的頭信息。

(13)tail命令:用于輸入文件中的尾部內容,默認顯示指定文件的末尾10行

tail [OPTION]... [FILE]...
-c #: 指定獲取后#字節
-n #: 指定獲取后#行
-f: 跟蹤顯示文件新追加的內容;
[root@testmin ~]# tail -c 10 install.log
CKAGES ***[root@testmin ~]# tail install.log
Installing iwl4965-firmware-228.61.2.24-2.1.el6.noarch
Installing rt61pci-firmware-1.2-7.el6.noarch
Installing iwl3945-firmware-15.32.2.9-4.el6.noarch
Installing ql2200-firmware-2.02.08-3.1.el6.noarch
Installing rt73usb-firmware-1.8-7.el6.noarch
Installing ipw2100-firmware-1.3-11.el6.noarch
Installing ql23xx-firmware-3.03.27-3.1.el6.noarch
Installing ipw2200-firmware-3.1-4.el6.noarch
Installing rootfiles-8.1-6.1.el6.noarch
*** FINISHED INSTALLING PACKAGES ***[root@testmin ~]#

2、bash的工作特性之命令執行狀態返回值和命令行展開所涉及的內容及其示例演示。

(1)命令的執行結果狀態
成功
失敗
bash使用特殊變量$?保存最近一條命令的執行狀態結果:
0:成功
1-255:失敗
程序執行有兩類結果:
程序的返回值;
程序的執行狀態結果;
(2)命令行展開
~:展開為用戶的主目錄
~USERNAME:展開為指定用戶的主目錄
{}:可承載一個以逗號分隔的列表,并將其展開為多個路徑
/tmp/{a,b}=/tmp/a,/tmp/b
/tmp/{tom,jerry}/hi=/tmp/tom/hi,/tmp/jerry/hi

3、請使用命令行展開功能來完成以下練習: 
(1)、創建/tmp目錄下的:a_c, a_d, b_c, b_d 

[root@testmin ~]# touch /tmp/{a,b}_{c,d}
[root@testmin ~]# ls /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
[root@testmin tmp]# 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}}
[root@testmin tmp]# tree 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

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

 (1)文件的元素信息有:文件名、文件大小、文件權限、文件屬組、屬主、access time、modify time、change time等

  (2)stat /PATH/TO/SOMEFILE:獲取指定文件的元數據

[root@testmin ~]# stat 123.txt
  File: `123.txt'
  Size: 3568      Blocks: 8          IO Block: 4096   regular file
Device: fd00h/64768dInode: 1572878     Links: 1
Access: (0644/-rw-r--r--)  Uid: (    0/    root)   Gid: (    0/    root)
Access: 2016-06-18 22:02:11.185993594 +0800
Modify: 2016-06-18 22:02:11.185993594 +0800
Change: 2016-06-18 22:02:11.185993594 +0800

 (3)touch命令:改變文件的時間戳

touch [OPTION]... FILE...
-a: only atime
-m: only mtime
-t STAMP:
[[CC]YY]MMDDhhmm[.ss]
-c: 如果文件不存,則不予創建
[root@testmin ~]# stat 123.txt
  File: `123.txt'
  Size: 3568      	Blocks: 8          IO Block: 4096   regular file
Device: fd00h/64768d	Inode: 1572878     Links: 1
Access: (0644/-rw-r--r--)  Uid: (    0/    root)   Gid: (    0/    root)
Access: 2016-06-18 22:02:11.185993594 +0800
Modify: 2016-06-18 22:02:11.185993594 +0800
Change: 2016-06-18 22:02:11.185993594 +0800
[root@testmin ~]# touch 123.txt
[root@testmin ~]# stat 123.txt
  File: `123.txt'
  Size: 3568      	Blocks: 8          IO Block: 4096   regular file
Device: fd00h/64768d	Inode: 1572878     Links: 1
Access: (0644/-rw-r--r--)  Uid: (    0/    root)   Gid: (    0/    root)
Access: 2016-06-26 22:54:19.238004986 +0800
Modify: 2016-06-26 22:54:19.238004986 +0800
Change: 2016-06-26 22:54:19.238004986 +0800

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

 (1)alias:顯示當前shell進程所有可用的命令別名

   alias NAME='VALUE'定義別名NAME,其相當于執行命令VALUE;
   在命令行中定義的別名,僅對當前shell進程有效;如果想永久有效,要定義在配置文件中;
   僅對當前用戶:~/.bashrc
   對所有用戶有效:/etc/bashrc
[root@testmin ~]# alias NAME='VALUE'
[root@testmin ~]# alias 
alias NAME='VALUE'
alias cp='cp -i'
alias l.='ls -d .* --color=auto'
alias ll='ls -l --color=auto'
alias ls='ls --color=auto'
alias mv='mv -i'
alias rm='rm -i'
alias which='alias | /usr/bin/which --tty-only --read-alias --show-dot --show-tilde'

 (2)引用另一個命令的執行結果可以用管道符號

COMMAND1 | COMMAND2 | COMMAND3 |...

[root@testmin ~]# ls /tmp | tr 'a-z' 'A-Z'
A_C
A_D
B_C
B_D
MYLINUX
WHO.OUT

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

[root@testmin ~]#ls -d /var/l*[0-9]*[[:lower:]]

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

[root@testmin ~]#ls -d /etc/[0-9]*[^0-9]

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

[root@testmin ~]#ls /etc/[^[:alpha:]][[:alpha:]]*

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

[root@testmin ~]# touch /tmp/tfile-"$(date +%F-%H-%M-%S)"
[root@testmin ~]# ls /tmp
a_c  a_d  b_c  b_d  mylinux  tfile-2016-06-27-01-39-43  who.out

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

[root@testmin ~]#cp -a /etc/p*[^0-9] /tmp/mytest1

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

[root@testmin ~]#cp -a /etc/*.d /tmp/mytest2

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

[root@testmin ~]#cp -a /etc/[1mn]*.conf /tmp/mytest3

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

(0)
7oup7oup
上一篇 2016-06-29
下一篇 2016-06-29

相關推薦

  • bash語句的具體應用之“顯示/etc/passwd文件中ID號最大的用戶的用戶名?”

    問題:顯示/etc/passwd文件中ID號最大的用戶的用戶名 回答:sort -t; -k3 -n /etc/passwd | tail -1 |cut -d: -f1 看似很簡答的一個回答,其實其中包含了多個命令的使用方法: 第一個用到的命令:sort sort命令是幫我們依據不同的數據類型進行排序,其語法及常用參數格式:  sort [-bcfMnrt…

    Linux干貨 2016-04-11
  • N26-第十四周

    1、系統的INPUT和OUTPUT默認策略為DROP;[root@centos7 ~]# iptables -P INPUT DROP[root@centos7 ~]# iptables -P OUTPUT DROP1、限制本地主機的web服務器在周一不允許訪問;新請求的速率不能超過100個每秒;web服務器包含了admin字符串的頁面不允許訪問;web服務…

    Linux干貨 2017-06-20
  • 制作epel源

    在linux的使用過程中,ISO鏡像的rpm包并不是十分的齊全。這個時候就需要去epel源去下載安裝rpm包安裝。這里簡單的描述下epel源的配置方法。僅供參考。 1.關閉SELinuxsed -i.bak ‘s/SELINUX=enforcing/SELINUX=permissive/’ /etc/selinux/config se…

    2017-12-18
  • 學習宣言

    已經虛度了第一個關鍵的10年,不能再失去下一個10年,3年內年薪20w,5年內年薪30w。

    Linux干貨 2016-12-26
  • puppet進階管理之終極應用

         上一篇博客寫了puppet操作file、cron、user、group、exec基礎資源的使用,連接地址為 http://www.www58058.com/13990  這次實驗puppet的操作Package、Server和puppet的特殊資源屬性Metaparameters。 回顧下…

    Linux干貨 2016-04-12
  • Linux之網絡管理

    Linux之網絡管理     在學習linux的過程中,Linux網絡的管理和配置中是很重要的,幾乎學習的后期都離不開網絡的概念和配置,如集群中的使用,學習好Linux網絡至關重要。     Linux網絡IP地址有兩種配置方式:靜態指定和動態分配 動態分配就是利用DHCP服務器,動態的給linux主機分配IP地址。靜…

    Linux干貨 2016-09-05

評論列表(1條)

  • 馬哥教育
    馬哥教育 2016-06-29 14:55

    寫的很好,排版也很漂亮,加油

欧美性久久久久