第二周 Linux基礎命令入門(二)

1、描述Linux上的文件管理類命令并詳解。 2、描述Bash的工作特性。 3、描述文件的元數據信息詳解。 4、描述命令別名的使用。 5、詳解文件通配符。

第二周 Linux基礎命令入門(二)

摘要

1、描述Linux上的文件管理類命令并詳解。
2、描述Bash的工作特性。
3、描述文件的元數據信息詳解。
4、描述命令別名的使用。
5、詳解文件通配符。

一、Linux上的文件管理類命令

[root@localhost etc]# ls -l
-rw-r--r--.  1 root root        0 1019 02:00 3axaxx
-rw-r--r--.  1 root root        0 1019 02:01 abcdefg
drwxr-xr-x.  3 root root       97 1015 17:51 abrt
lrwxrwxrwx.  1 root root       56 1015 17:51 favicon.png -> /usr/share/icons/hicolor
/16x16/apps/fedora-logo-icon.png
    Linux系統上的文件類型:
     - : 常規文件,即f 
     d :directory   即目錄文件   
     b :block device   映射塊設備文件  ,支持以"block"為單位,支持隨機訪問
     c: character device   字符設備文件,支持以“character”為單位,支持線性訪問(有次序得訪問)
           ls - l /dev      crw-rw----. 1 root video    10, 175 11月 10 15:48 agpgart
                major number   主設備號,用表示設備類型,進而確定要加載的驅動程序
                minor number 次設備號,用于表示同一類型中的不同設備
             二者用,來區分
      l: symbolic link  符號鏈接文件(類似windows的快捷方式,指向另一文件的路徑?;蚍Q為軟連接文件)
      p:pipe  命名管道
      s:socket 套接字文件,實現多個進程之間進行通信,多用于提供服務

 

二、Bash的工作特性之命令執行狀態返回值和命令行展開所涉及的內容

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

命令的執行狀態結果 
    1) bash通過狀態返回值來輸出此結果
         成功:0            失?。?-255
       命令執行完成之后,其狀態返回值保存于bash特殊變量 $? 中 。$?只能獲取當前命令的結果
        [root@localhost etc]# echo $?
            0
      2)引用命令的執行結果:
           $(COMMAND) 或者 `COMMAND`
             [root@localhost etc]# mkdir $(date +%T) 
             [root@localhost etc]# ls 
                12:53:45                 hosts.allow               rc0.d

命令行展開所涉及的內容:

1)cp:copy  文件復制功能
源文件:目標文件         
   單源復制     cp [OPTION]... [-T] SOURCE DEST
        如果dest路徑不存在,則復制原內容,粘貼創建該目錄dest內
        如果dest存在,1)dest是非目錄文件,則會復制目標文件   2)dest是目錄文件,則先在dest目錄下創建一個與源文件同名的文件,并復制過來
    多源復制     cp [OPTION]... SOURCE... DIRECTORY
                    cp [OPTION]... -t DIRECTORY SOURCE...
                    如果dest不存在,返回錯誤
                    如果dest存在,分別復制每個文件到目標目錄中,并保持原名
     常用選項:
                 -i  交互式復制  覆蓋之前提醒客戶確認
                 -f  強制性覆蓋目標文件           
                 -r  遞歸復制目錄  
                 -d  復制符號鏈接文件本身,而非其指向的源文件本身
                 --preserv=
                              mode   權限
                              ownership  屬主和屬組
                              timestamps  時間戳    
                              context  安全標簽
                              links  符號鏈接
                              xattr:擴展屬性
                              all  上述所有屬性
                  -a   -dr --preserve=all    archive   用于實現歸檔,備份使用

2)mv: move 移動
     常用選項
                -i 交互式
                -f force           
3)rm:remove  刪除文件(建議move到一個單獨的文件夾,作用類似回收站)
                -i
                -r   刪除命令,每個文件都會確認一遍
                -rf   強制刪除           
                        危險操作,勿操作?。?! rm-rf /或者rm  -rf /*
4)目錄管理類的命令:
     mkdir , rmdir 
     mkdir          make  DIRECTORY 創建目錄
            mkdir [OPTION]... DIRECTORY...
              注意:路徑基名方為命令的作用對象,基名之前的路徑必須存在。             
            -p   自動按需創建父目錄
            -v   verbose   顯示詳細過程
            -m  MODE    直接給定權限    
         rmdir   rmdir [OPTION]... DIRECTORY...
                 刪除文件下的空目錄,如果刪除為非空目錄,則失敗,需要先刪除里面內容再刪除外部
             -p   刪除某目錄后,如果其父目錄為空,則一并刪除之
             -v   顯示過程
                             pwd:printing woking  directory     顯示工作目錄
5)cd: change directory      切換目錄
         cd   [/PATH/TO/SOMENDIR]
            只輸入 cd    切換回家目錄
             bash中,~也表示家目錄
                 cd ~   切換回自己的家目錄
                 輸入cd ~USERNAME ;切換至指定用戶的家目錄,只有管理員可以切換至其他用戶家目錄
                 cd -  在上一次所在目錄與當前目錄來回切換
                    $PWD:當前工作目錄
                    $OLDPWD:上一次的工作目錄
6)ls:list   列出指定目錄下的內容                               
          ls [OPTION]... [FILE]...
               -a  顯示所有文件,包括隱藏文件
               -A:顯示除了。和。。之外的所有文件,包括隱藏文件
                         ls -A /etc
               -l     --long   長格式列表,顯示文件的詳細屬性信息:
                         /]# ls -l /etc
                          -rw-r--r--.  1 root root    16 10月 10 14:35 adjtime
                     -r :文件類型,- ,d,b,c,l,s,p
                           -rw-r--r--.  
                             rw-    文件屬主權限 
                             r--    文件屬組權限
                             r--      其他用戶(非屬主、屬組)的權限
                             1:數字表示文件被硬鏈接的次數,
                             root   第一個root   文件的屬主
                             root   第二個root    文件的屬組
                             16: 數字表示文件大小,單位是字節   
                             16 10月 10 14:35    文件最近一次修改時間
                             adjtime    文件名       
                     -h   對文件大小單位換算,換算后的結果非精確值
                     -ld  查看文件本身的信息,而非其自身內部的文件內容
                             /]# ls -ld /etc
                              drwxr-xr-x. 74 root root 8192 10月 12 02:24 /etc
                     -r或者-lr    對文件排序呈降序排序
                     -R    recursive   遞歸顯示
7) cat:  concatenate file  連接文件   文件正序顯示
               文本文件查看工具
               cat  /etc/fstab
               cat后可以跟多個路徑文件
                     -n :顯示的文件內容進行統一編號
                          cat -n [COMMAND] [COMMAND]
                     -E:顯示行結束符$
8) tac    文本 逆序顯示                        
                文本文件查看工具
                tac  /etc/fstab
                   tac后可以跟多個路徑文件
                -n :顯示的文件內容進行統一編號
                   tac -n [COMMAND] [COMMAND] 
                -E:顯示行結束符$
9)file:查看文件內容類型
                 file  [FILE].................
10)echo :回顯命令 
                echo [SHORT-OPTION]... [STRING]...
           STRING 可以使用引號,單引號和雙引號均可用
           單引號:強引用,變量引用不執行替換
                 [root@localhost /]# echo '$SHELL'
                    $SHELL
           雙引號:  弱引用,變量引用會被替換
                 [root@localhost /]# echo "$SHELL"
                     /bin/bash 
                 [root@localhost /]# echo "DAA"
                      DAA
            -n   輸出后不自動換行操作
                 [root@localhost /]# echo  -n "DAA"
                      DAA[root@localhost /]# 
            -e   讓轉義符生效      \n顯示換行   \t:制表符,類似增加新字段
                  [root@localhost /]# echo  -e "D \nAA"
                       D 
                       AA

三、完成以下練習(1)

命令行展開

    ~ :自動展開為用戶的家目錄,或指定的用戶的家目錄
    { }:可承載一個以逗號分隔的路徑列表,并能夠將其展開為多個路徑
(1)創建/tmp目錄下的:a_c, a_d, b_c, b_d
[root@localhost tmp]# mkdir -pv /tmp/{a,b}_{c,d}
mkdir: 已創建目錄 "/tmp/a_c"
mkdir: 已創建目錄 "/tmp/a_d"
mkdir: 已創建目錄 "/tmp/b_c"
mkdir: 已創建目錄 "/tmp/b_d"
[root@localhost tmp]# ls
a_c  a_d  b_c  b_d  

創建/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
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
[root@localhost tmp]# mkdir -pv /tmp/mylinux/{bin,boot/grub,dev,etc/{rc.d/init.d,syscon
fig/{network-scripts}},lib/{modules},lib64,proc,sbin,sys,tmp,usr/{local/{bin,sbin}},var/{lo_{ck,g},run}}
mkdir: 已創建目錄 "/tmp/mylinux"
mkdir: 已創建目錄 "/tmp/mylinux/bin"
mkdir: 已創建目錄 "/tmp/mylinux/boot"
mkdir: 已創建目錄 "/tmp/mylinux/boot/grub"
mkdir: 已創建目錄 "/tmp/mylinux/dev"
mkdir: 已創建目錄 "/tmp/mylinux/etc"
mkdir: 已創建目錄 "/tmp/mylinux/etc/rc.d"
mkdir: 已創建目錄 "/tmp/mylinux/etc/rc.d/init.d"
mkdir: 已創建目錄 "/tmp/mylinux/etc/sysconfig"
mkdir: 已創建目錄 "/tmp/mylinux/etc/sysconfig/{network-scripts}"
mkdir: 已創建目錄 "/tmp/mylinux/lib"
mkdir: 已創建目錄 "/tmp/mylinux/lib/{modules}"
mkdir: 已創建目錄 "/tmp/mylinux/lib64"
mkdir: 已創建目錄 "/tmp/mylinux/proc"
mkdir: 已創建目錄 "/tmp/mylinux/sbin"
mkdir: 已創建目錄 "/tmp/mylinux/sys"
mkdir: 已創建目錄 "/tmp/mylinux/tmp"
mkdir: 已創建目錄 "/tmp/mylinux/usr"
mkdir: 已創建目錄 "/tmp/mylinux/usr/{local"
mkdir: 已創建目錄 "/tmp/mylinux/usr/{local/bin}"
mkdir: 已創建目錄 "/tmp/mylinux/usr/{local/sbin}"
mkdir: 已創建目錄 "/tmp/mylinux/var"
mkdir: 已創建目錄 "/tmp/mylinux/var/lo_ck"
mkdir: 已創建目錄 "/tmp/mylinux/var/lo_g"
mkdir: 已創建目錄 "/tmp/mylinux/var/run"
[root@localhost tmp]# cd mylinux/
[root@localhost mylinux]# ls
bin  boot  dev  etc  lib  lib64  proc  sbin  sys  tmp  usr  var
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31

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

1、文件的元數據

文件的元數據包括:名稱,路徑,大小,inode號,文件類型,硬鏈接數,權限,時間戳等
                stat [option] file…
file 文件名稱
size 文件大小 單位K
blocks 所占塊的個數
IO blocks 單塊的大小
device 設備標識
inode 節點id,文件的元數據保存在磁盤上的inode區域中,每一個文件都有一個對應的inode號碼
links 硬鏈接數,一個文件的硬鏈接數為N,表示該文件在磁盤上有N個與其對應的inode號碼相同的文件
access 權限,文件的權限包括r(讀),w(寫),x(執行),suid,sgid,sbit這幾種權限,它們可以分別對應到文件的屬主、屬組和其他人上
uid 屬主信息
gid 屬組信息
access 最后一次訪問時間,文件被訪問,即文件在使用cat, more, less, head等命令查看,或者cp等命令將其作為源文件復制給其他路徑下,或者使用grep命令進行匹配查找等操作時,atime都會改變
modify 最后一次修改時間,指文件內容被修改時,mtime會改變
change 最后一次更正時間,指文件的元數據被改變,例如chmod, chown, mv等命令改變了文件權限名稱路徑等信息,ln命令增加了文件的硬鏈接等操作都會改變ctime
[root@localhost mylinux]# stat -L /tmp/mylinux/
  文件:"/tmp/mylinux/"
  大?。?span id="tzrt9vl"    class="hljs-number">4096       塊:8          IO 塊:4096   目錄
設備:fd00h/64768d Inode:202724745   硬鏈接:14
權限:(0755/drwxr-xr-x)  Uid:(    0/    root)   Gid:(    0/    root)
環境:unconfined_u:object_r:user_tmp_t:s0
最近訪問:2017-11-29 14:28:11.973040042 +0800
最近更改:2017-11-29 14:28:02.480300238 +0800
最近改動:2017-11-29 14:28:02.480300238 +0800
創建時間:-

 

使用touch修改時間戳

用法:touch [選項]... 文件...
參數:
 -a  只更改訪問時間
-c, --no-create 不創建任何文件
-d, --date=字符串  使用指定字符串表示時間而非當前時間
-f          (忽略)
-h, --no-dereference        會影響符號鏈接本身,而非符號鏈接所指示的目的地
            (當系統支持更改符號鏈接的所有者時,此選項才有用)
-m      只更改修改時間
-r, --reference=FILE   use this file's times instead of current time
-t STAMP               use [[CC]YY]MMDDhhmm[.ss] instead of current time
--time=WORD        change the specified time:
                       WORD is access, atime, or use: equivalent to -a
                       WORD is modify or mtime: equivalent to -m
--help      顯示此幫助信息并退出
--version       顯示版本信息并退出
        請注意,-d 和-t 選項可接受不同的時間/日期格式。
[root@localhost mylinux]#  touch -m -t 021211221133.00  /tmp/mylinux/
[root@localhost mylinux]# stat -L /tmp/mylinux/
  文件:"/tmp/mylinux/"
  大?。?span id="bpl5vhj"    class="hljs-number">4096       塊:8          IO 塊:4096   目錄
設備:fd00h/64768d Inode:202724745   硬鏈接:14
權限:(0755/drwxr-xr-x)  Uid:(    0/    root)   Gid:(    0/    root)
環境:unconfined_u:object_r:user_tmp_t:s0
最近訪問:2017-11-29 16:13:38.263642314 +0800
最近更改:0212-11-22 11:33:00.000000000 +0805
最近改動:2017-11-29 16:14:10.970745835 +0800
創建時間:-

五、命令的別名

 命令別名:
     獲取所有可用別名的定義:
           ~]#alias
     定義別名 
            ~]#alias  NAME=‘COMMAND’   
     注意:只對當前shell進程設置有效
            /]# alias cls=clear
     撤銷別名
           /]# cls
           ~]#unalias   NAME 
 which    
      顯示文件完成路徑 which - shows the full path of (shell) commands.
       which [options] [--] programname [...]
           ~]# which which
                alias which='alias | /usr/bin/which --tty-only --read-alias --show-dot --show-tilde'
                /usr/bin/alias
                /usr/bin/which
         --COMMAND-alias   忽略別名

   whereis  
          顯示文件的路徑,手冊頁,
          -b  只看二進制文件路徑
          -m 只看使用手冊文件路徑                      
    who 
           查看登錄當前用戶的相關信息
           -b  顯示系統此次啟動時間
           -d  顯示此次死亡進程
            -l  顯示登錄進程
            -u 比who多顯示端口號
            -r  運行級別
    w
           查看當前用戶和其現階段工作內容

六、詳解文件通配符并完成以下練習

詳解文件通配符

globbing :文件名通配
       匹配模式:元字符     
            *:匹配任意長度的任意字符
            ? :匹配任意單個字符
                   pa?   ??pa   p?a   p?a?
            [ ]: 匹配指定范圍內的任意單個字符
            有幾種特殊格式:
                    [a-z]  [A-Z] [0-9] [a-z0-9] [abcxyz]
                        pa[0-9][a-z]    pa2[0-9][0-9]
                    [[:upper:]]  只匹配大寫字母
                    [[:lower:]]   只匹配小寫字母
                    [[:alpha:]]   只匹配所有字母
                    [[:digit:]]     只匹配所有數字
                    [[:alnum:]]  只匹配所有字母和數字
                    [[:space:]]   所有空白字符  touch p \空格  a
                    [[:punct:]]    匹配所有符號
                    [^] :匹配指定范圍外的單個字符(非??!)
                          [^[:upper:]]  
                          [^0-9]

 

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

[root@localhost var]# ls -d l*[[:alnum:]] 
lib  local  local01  local02  lock  log

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

[root@localhost var]# ls -d [0-9]*[^0-9]
0_abcc  0_bafaf  2_abcc  2_bafaf

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

[root@localhost etc]# ls -d /etc/[^[:alpha:]][a-zA-Z]*
/etc/3axaxx  /etc/,avc23

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

[root@localhost etc]# touch /tmp/tfile-$(date +"%Y-%m-%d-%H-%M-%S")
[root@localhost etc]# ls /tmp
a_c  a_d  b_c  b_d  magedu1.com  mylinux  tfile-2017-11-29-18-08-27

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

[root@localhost mytest2]# cp -a /etc/p*[^[:digit:]] /tmp/mytest2/
[root@localhost mytest2]# ls
pam.d   passwd-  pki       pm      postfix  prelink.conf.d  profile    protocols
passwd  pinforc  plymouth  popt.d  ppp      printcap        profile.d

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

[root@localhost mytest2]# mkdir -pv /tmp/mytest1
mkdir: 已創建目錄 "/tmp/mytest1"
[root@localhost ~]# cp -a /etc/*.d /tmp/mytest1
[root@localhost ~]# ls /tmp/mytest1
bash_completion.d  gdbinit.d     modules-load.d  rc1.d  rsyslog.d    usb_modeswitch.d
binfmt.d           grub.d        my.cnf.d        rc2.d  rwtab.d      xinetd.d

 

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

[root@localhost ~]# mkdir -pv /tmp/mytest3
mkdir: 已創建目錄 "/tmp/mytest3"
[root@localhost ~]# cp /etc/[lmn]*.conf /tmp/mytest3
[root@localhost ~]# ls  /tmp/mytest3
ld.so.conf     libuser.conf  logrotate.conf  mke2fs.conf  nsswitch.conf
libaudit.conf  locale.conf   man_db.conf     named.conf

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

(0)
TK_linTK_lin
上一篇 2017-12-18 19:31
下一篇 2017-12-19 09:21

相關推薦

  • linux下正則表達式的學習

    linux 下正則表達式用法總結 正則表達式作為一個模板,將某個字符模式與所搜索的字符串進行匹配。簡單的說,正則表示式就是處理字符串的方法。常用來匹配字符的元字符總結如下: Paste_Image.png 有了以上這些元字符原則上可以搜索出任務想要表達的字符,可為了更靈活使用,往往還要搭配一些次數匹配的用法 Paste_Image.png 例如:a&nbsp…

    Linux干貨 2017-06-04
  • 用戶管理、組管理、權限管理、文本處理工具應用示例

    用戶管理、組管理、權限管理、文本處理工具應用示例 1.復制/etc/skel目錄為/home/tuser1,要求/home/tuser1及其內部文件的屬組和其他用戶均沒有任何訪問權限 [root@localhost ~]# cp -a /etc/skel/ /home/tuser1/ [root@localhost ~]# chmod -R go= /hom…

    Linux干貨 2017-07-23
  • 推薦-虛擬化網絡之OpenvSwitch(二)

    上一篇介紹了openvswitch的基礎知識,接下來我們來做一個實驗,利用GRE通道搭建一個跨多宿主機的虛擬化網絡,深入了解openvswitch的功能。 一、實驗拓撲 ip地址分配:  A1:192.168.10.1/24  A2:192.168.10.10/24   B1:192.168.10.2/24 &nbsp…

    2016-03-27
  • Linux磁盤陣列RAID以及mdadm實現軟件RAID

    一、概要 RAID(磁盤陣列):由眾多價格較便宜的磁盤,組合成一個容量巨大的磁盤組,利用個別磁盤提供數據所產生加成效果來提升整個磁盤的性能。 二、RAID的級別及其優缺點 讀性能提升 寫性能提升 容錯能力 組合后空間大小 RAID0 上升 上升 無 n*單個磁盤大小 RAID1 上升 下降 有(最多壞一塊磁盤) 1*單個磁盤大小 RAID4 上升 上升 有(…

    2015-04-20
  • 軟件包管理

    一、軟件管理程序rpm 簡介:RPM是通過預編譯并打包成為RPM文件格式后再加以安裝的一種方式,并且還能夠進行數據庫的記載。 1、優點:     1、RPM內含已經編譯過的程序與設置文件等數據,可以讓用戶免除重新編譯的困擾;     2、RPM在被安裝之前,會先檢查系統的硬盤容量…

    Linux干貨 2016-08-24
  • Linux Basics

    計算機的組成及其功能:             CPU:運算器、控制器、寄存器、緩存             存儲器:內存,RAM(Random Access Memory)   …

    Linux干貨 2016-09-17
欧美性久久久久