馬哥教育網絡班19期第二周課程練習

1、Linux上的文件管理類命令都有哪些,其常用的使用方法及其相關示例演示。

cd:切換目錄命令
實例

 cd [dirctory] 切換目錄
 cd .. 返回上一級目錄
 cd -  來回切換
 cd ~  切換到家目錄

pwd:顯示當前目錄
實例

  pwd:顯示當前目錄

ls:列出目錄內容
實例與常見的使用方法

   ls -ld  [dirctory]或[file]
   ls -al  顯示所有文件包括隱藏文件
   ls -i   顯示所有的文件的iNode  后面加文件名或目錄命只顯示單個iNode 
   ls --color  以彩色形式顯示文件

alias:別名

實例

alias l='ls -l'  定義別名 alias  alias=“command”

cat:查看文件的內容

     實例和使用方法
        cat filename 直接顯示這個文件
        cat -n filename  對行進行編號
        cat -b filename  對空白行不進行編號
        cat >  linuxsir.org.txt  << EOF  注:創建linuxsir.org.txt文件;
         輸入內容
        EOF結束

more:查看文件的內容

        用man來查看用法

less:查看文件的內容

      用man來查看用法

tail:查看尾部文件內容
實例和使用方法

     tail -n # filename   指定獲取后#行
     tail -c # filename   指定獲取后#字節
     tail -f filename   動態獲取后面追加的內容

head:查看頭部文件內容
實例和使用方法

    head -n # filename   指定獲取后前#行
    head  -c # filename   指定獲取前#字節

split:分割文件
實例和使用方法

 split -l 300 large_file.txt new_file_prefix 
 對與txt文本文件,可以通過指定分割后文件的行數來進行文件分割。 
 split -b 10m large_file.bin new_file_prefix 
 對于可執行文件等二進制文件,則不能通過文件行數來進行文件分割,此時我們可以指定分割大小來分隔文件。

cut:剪切命令
實例和使用方法
cut -d分隔符 -f指定字段

            #: 第#個字段
            #,#[,#]:離散的多個字段,例如1,3,6
            #-#:連續的多個字段, 例如1-6
            還可以混合使用 1-3,5
 cut -b 指定字節
 cut -c 指定字符

wc:統計指定文件中的字節數、字數、行數,并將統計結果顯示輸出。
實例和使用方法

       wc -l filename  統計行數
        wc -w  filename   統計字數
        wc -c filename  統計字符

sort:排序命令
實例和使用方法

      sort -f  filename 忽略字符大小寫
       sort -r  filename 逆序排序
    sort -t DELIMITER filename 指定字段分隔符
     sort -k# filename   以指定字段為標準排序
     sort-n filename 以數值大小進行排序
      sort -u filename uniq,排序后去重

uniq:去重命令
實例和使用方法

      uniq -c filename 顯示每行重復出現的次數;
      uniq -d filename 僅顯示重復過的行;
      uniq -u filename 僅顯示不曾重復的行;

    Note: 連續且完全相同方為重復

mkdir:創建目錄
實例和使用方法

  mkdir -p  /dirctory/files   遞歸創建文件
  mkdir -m [+-]mode files 指定權限創建文件

touch:創建文件
實例和使用方法

 三個時間戳:
        access time:訪問時間,簡寫為atime,讀取文件內容
        modify time: 修改時間, mtime,改變文件內容(數據)
        change time: 改變時間, ctime,元數據發生改變

   touch  -a file  only atime
   touch  -m  file  only mtime
   touch  -t STAMP 使用指定時間,不是現在時間
             [[CC]YY]MMDDhhmm[.ss]
   touch -c  file   如果文件不存,則不予創建

mv:重命名
實例和使用方法

 mv -b oldfilename newfilename  重命名之前先備份
 mv oldfilename newfilename 
 mv oldfielname1 oldfilename2  newdirctory
 mv -i oldfilename  newfilename  目標文件已存在,覆蓋之前會詢問

cp:復制
實例和使用方法

cp file  /tmp/file  復制file到/tmp下的file file可以重命名
cp -a 用來備份文件
cp -r dirctory  dirctory  復制目錄的內容到另一個目錄

rm:刪除
實例和使用方法

rm -r dirctory 遞歸刪除
rm -f file  強制刪除 
rm -i file 詢問刪除

ln:鏈接
實例和使用方法

 ln -s file  filelink  創建軟連接
 ln  file  filehardlink 穿件硬連接

which:查看可執行文件的位置。
實例和使用方法

  which command

whereis:查看文件的位置。
實例和使用方法

  whereis  **            將和**文件相關的文件都查找出來
  whereis -b **           把二進制文件找出來 也就是可執行文件

locate:配合數據庫查看文件位置。并不是實時的
實例和使用方法

     locate filename      會查找所有有filename的文件或目錄

     用man 看

find:實際搜尋硬盤查詢文件名稱 實時
find:
實時查找工具,通過遍歷指定路徑下的文件系統完成文件查找;

    語法:
        find [OPTION]... [查找路徑] [查找條件] [處理動作]
            查找路徑:指定具體目標路徑;默認為當前目錄;
            查找條件:指定的查找標準,可以文件名、大小、類型、權限等標準進行;默認為找出指定路徑下的所有文件;
            處理動作:對符合條件的文件做什么操作;默認輸出至屏幕;

            查找條件:
                根據文件名查找:
                    -name "文件名稱":支持使用glob
                        *, ?, [], [^]
                    -iname "文件名稱":不區分字母大小寫

                    -regex "PATTERN":以PATTERN匹配整個文件路徑字符串,而不僅僅是文件名稱;

                根據屬主、屬組查找:
                    -user USERNAME:查找屬主為指定用戶的文件;
                    -group GRPNAME: 查找屬組為指定組的文件;

                    -uid UserID:查找屬主為指定的UID號的文件;
                    -gid GroupID:查找屬組為指定的GID號的文件;

                    -nouser:查找沒有屬主的文件;
                    -nogroup:查找沒有屬組的文件;

                根據文件類型查找:
                    -type TYPE:
                        f: 普通文件
                        d: 目錄文件
                        l: 符號鏈接文件
                        s:套接字文件
                        b: 塊設備文件
                        c: 字符設備文件
                        p: 管道文件

                組合條件:
                    與:-a
                    或:-o
                    非:-not, !

                    !A -a !B = !(A -o B)
                    !A -o !B = !(A -a B)

                    找出/tmp目錄下,屬主不是root,且文件名不是fstab的文件;
                        find /tmp \( -not -user root -a -not -name 'fstab' \) -ls
                        find /tmp -not \( -user root -o -name 'fstab' \) -ls

                根據文件大小來查找:
                    -size [+|-]#UNIT
                        常用單位:k, M, G

                        #UNIT: (#-1, #]
                        -#UNIT:[0,#-1]
                        +#UNIT:(#,oo)

                根據時間戳:
                    以“天”為單位;
                        -atime [+|-]#,  
                            #: [#,#+1)
                            +#: [#+1,oo]
                            -#: [0,#)
                        -mtime
                        -ctime

                    以“分鐘”為單位:
                        -amin
                        -mmin
                        -cmin

                根據權限查找:
                    -perm [/|-]MODE
                        MODE: 精確權限匹配
                        /MODE:任何一類(u,g,o)對象的權限中只要能一位匹配即可;
                        -MODE:每一類對象都必須同時擁有為其指定的權限標準;

            處理動作:
                -print:默認的處理動作,顯示至屏幕;
                -ls:類似于對查找到的文件執行“ls -l”命令;
                -delete:刪除查找到的文件;
                -fls /path/to/somefile:查找到的所有文件的長格式信息保存至指定文件中;
                -ok COMMAND {} \; 對查找到的每個文件執行由COMMAND指定的命令;
                    對于每個文件執行命令之前,都會交互式要求用戶確認;
                -exec COMMAND {} \; 對查找到的每個文件執行由COMMAND指定的命令; 
                    {}: 用于引用查找到的文件名稱自身;

                注意:find傳遞查找到的文件至后面指定的命令時,查找到所有符合條件的文件一次性傳遞給后面的命令;
                有些命令不能接受過多參數,此時命令執行可能會失?。涣硪环N方式可規避此問題:
                    find | xargs COMMAND

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

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

   成功:0
   失?。?-255
使用echo $! 查看

命令行展開

  ~: 展開為用戶的主目錄
    ~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

mkdir -r {a,b}_{c,d}

(2)、創建/tmp/mylinux目錄下的:
mkdir -p 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}}

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、文件的元數據信息有哪些,分別表示什么含義,如何查看?如何修改文件的時間戳信息。

   [root@king-liu mylinux]# stat bin   使用stat查看
  File: `bin'   文件
   Size: 4096  大小        Blocks: 8   塊大小       IO Block: 4096 輸入輸出塊大小  directory
  Device: 802h/2050d設備    Inode: 2883666  iNode號   Links: 2  鏈接
 Access: (0755/drwxr-xr-x) 權限 Uid: (    0/    root)   Gid: (    0/    root)
 Access: 2016-06-19 06:42:46.032726013 +0800
 Modify: 2016-06-19 06:42:46.032726013 +0800
 Change: 2016-06-19 06:42:46.032726013 +0800

 三個時間戳:
        access time:訪問時間,簡寫為atime,讀取文件內容
        modify time: 修改時間, mtime,改變文件內容(數據)
        change time: 改變時間, ctime,元數據發生改變
   touch -a :僅更新Access time(同時更新Change為current time)
   touch -m:僅更新Modify time(同時更新Change為current time)
   touch -c:不創建新文件
   touch -t:使用指定的時間更新時間戳(僅更改Access time與Modify time,Change time更新為current time)
   例:touch -t  [[CC]YY]MMDDhhmm[.ss] filename

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

   alias  commandname=“command option ....”
   |   使用管道命令可以引用另一個命令

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

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

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

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

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

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

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

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

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

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

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

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

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

cp /etc/[1mn]*.conf /tmp/mytest3

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

(0)
N19_kingN19_king
上一篇 2016-06-18
下一篇 2016-06-19

相關推薦

  • 計算機(服務器)的基礎知識

    計算機(服務器)基礎知識  計算機系統由硬件系統與軟件系統兩大部分組成 一、計算機(Computer)):又稱電腦,是一種能自動接收和存儲信息,并按照存儲在其內部的程序對海量數據進行自動、高速地處理,然后把處理結果輸出的現代化智能電子設備。 發展歷史:       第一代計算機(1946-1957)…

    Linux干貨 2017-02-15
  • linux網絡屬性管理

    Linux網絡屬性配置 計算機網絡:TCP/IP:協議棧(使用)ISO,OSI:協議棧(學習) MAC:Media Access Control48bits:ICANN:24bits, 2^24地址塊:2^24 網橋(bridge):MAC地址表靜態指定:動態學習:根據原地址學習; 交換機(switch):多端口網橋; IP(Internet protoco…

    Linux干貨 2017-10-14
  • Linux文件查找之find命令詳解

    文件查找 文件查找就是在在文件系統上查找符合條件的文件; 文件查找分為: 實時查找:遍歷所有文件進行條件匹配 非實時查找:根據所以查找 locate: 1、查詢系統上預建的文件索引數據庫 /var/lib/mlocate/mlocate.db 2、locate屬于非實時查找,依賴于事先構建的索引; 索引的構建是在系統較為空閑時自動進行(周期性任務);管理員手…

    Linux干貨 2016-08-18
  • 對ssh的簡單理解

    ssh:secure shell,protocol,22、tcp安全的遠程登錄 具體的軟件實現:openssh:ssh協議的開源實現,centos默認安裝dropbear:另一個開源實現ssh協議版本v1:基于crc-32做MAC,不安全;man-in-middle 已淘汰v2:雙方主機協議選擇安全的MAC方式基于DH算法做密鑰交換,基于RSA或DSA實現身…

    2017-09-29
  • 計劃任務管理

        Linux系統計劃任務有兩種:A、一次性任務;B、定時循環任務。     一次性任務:at命令。at的安裝包名字就是at,可以使用命令"yum install at"進行安裝.安裝完成后,啟用atd服務就可以運行at命令了.運行格式為:at [opti…

    Linux干貨 2016-11-27
  • Linux Basics-Linux Bash歷史和其概念名詞解釋part1

    Linux Basics-Linux Bash歷史和其概念名詞解釋part1 閱讀本文你將知道:查看更多BashFAQ.pdf   Bash的歷史及其特性   Bash的如何工作   Bash的概念解釋   前提知識:      對linux有一定基礎而且了解Bash的…

    Linux干貨 2016-10-29

評論列表(1條)

  • 馬哥教育
    馬哥教育 2016-06-21 22:44

    排版很好,如果可以在寫一些例子說明一下會更好,加油!

欧美性久久久久