第二周:文件管理練習

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

目錄管理管理類命令

mkdir

make directories

mkdir [OPTION]... DIRECTORY...
注意:路徑基名作為命令的作用對象時,基名之前的路徑必須要存在;
    -p:自動按需創建父目錄;
    -v:--verbose,顯示詳細過程;
    -m MODE:直接給定權限;

[root@localhost ~]# mkdir -pv /tmp/mylinux/etc/sysconfig/network-scripts
mkdir: created directory ‘/tmp/mylinux’
mkdir: created directory ‘/tmp/mylinux/etc’
mkdir: created directory ‘/tmp/mylinux/etc/sysconfig’
mkdir: created directory ‘/tmp/mylinux/etc/sysconfig/network-scripts’

rmdir

remove empty directories

rmdir [OPTION]... DIRECTORY...
    -p:刪除目錄后,如果其父目錄為空,則一并刪除;
    -v:顯示詳細過程;

[root@localhost ~]# rmdir -pv /tmp/mylinux/etc/sysconfig/network-scripts/
rmdir: removing directory, ‘/tmp/mylinux/etc/sysconfig/network-scripts/’
rmdir: removing directory, ‘/tmp/mylinux/etc/sysconfig’
rmdir: removing directory, ‘/tmp/mylinux/etc’
rmdir: removing directory, ‘/tmp/mylinux’
rmdir: removing directory, ‘/tmp’
rmdir: failed to remove directory ‘/tmp’: Directory not empty

文件管理類命令

cp

copy files and directories

單源復制:
    cp [OPTION]... [-T] SOURCE DEST
    如果DEST不存在,則事先創建此文件,并復制源文件的數據流至DEST中;
    如果DEST存在:
    如果DEST是非目錄文件,則覆蓋目標文件;
    如果DEST是目錄文件,則先在DEST目錄下創建一個與源文件同名的文件,并復制其數據流;
多源復制:
    cp [OPTION]... SOURCE... DIRECTORY
    cp [OPTION]... -t DIRECTORY SOURCE...
    如果DEST不存在,則發生錯誤;
    如果DEST存在:
    如果DEST是非目錄文件,則發生錯誤;
    如果DEST是目錄文件,則分別復制每個文件至目標目錄中,并保持原名;

    -i:交互式復制,即在覆蓋之前提醒用戶確認;    
    -f:強制覆蓋目標文件;
    -r/R:遞歸復制(recursive);    
    -d:復制符號鏈接本身,而非其指向的源文件;
    --preserve[=ATTR_LIST]
          mode:權限;
          ownership:屬主和屬組;
          timestamps:時間戳;
          context:安全標簽;
          links:符號鏈接;
          xattr:擴展屬性;
          all:上述所有屬性;    
    -a:-dR --preserve=all,用于實現歸檔(archieve);

[root@localhost ~]# cp /etc/hosts /tmp/host
[root@localhost ~]# cp -r /var/log/ /tmp/

mv

move (rename) files

mv [OPTION]... [-T] SOURCE DEST
mv [OPTION]... SOURCE... DIRECTORY
mv [OPTION]... -t DIRECTORY SOURCE...
    -i:交互式(interactive);    
    -f:強制移動(force);

[root@localhost ~]# mv /tmp/host /tmp/hosts

rm

remove files or directories

rm [OPTION]... FILE...
    -i:交互式;    
    -f:強制刪除;
    -r:遞歸刪除(刪除目錄:rm -rf /PATH/TO/DIR);    
注意:危險操作:rm -rf /*;
所有不用的文件建議不要直接刪除,而是先移動至某個專用目錄(模擬回收站);

[root@localhost ~]# rm -rf /tmp/log/

文件查看類命令

ls

list directory contents

ls [OPTION]... [FILE]...    
    -a:顯示所有文件,包括隱藏文件;
    -A:顯示除.和..之外的所有文件;    
    -l:--long,長格式列表,顯示文件的詳細屬性;
    -h:--human-readable,顯示文件大小換算后的值;    
    -d:查看目錄本身而非其內部的文件列表;
    -r:逆序顯示(reverse);
    -R:遞歸顯示(recursive);

[root@localhost ~]# ls -l /etc/issue
-rw-r--r--. 1 root root 23 Dec  9  2015 /etc/issue

注意:文件屬性信息詳解:
-:文件類型
    -:常規文件,即f;
    d:directory,目錄文件;
    b:block device,塊設備文件,支持以“block”為單位進行隨機訪問;
    c:character device,字符設備文件,支持以“character”為單位進行線性訪問;
        major number:主設備號,用于標識設備類型,進而確定要加載的驅動程序;
        minor number:次設備號,用于標識同一類型中的不同設備;
    l:symbolic link,符號鏈接文件;
    p:pipe,命名管道;
    s:socket,套接字文件;
rw-r--r--:文件權限
    rw-:文件屬主的權限;
    r--:文件屬組的權限;
    r--:其他用戶(非屬主、屬組)的權限;1:使用數字表示文件被硬鏈接的次數;
root:文件的屬主;
root:文件的屬組;    
23:數字表示文件的大小,單位是字節;
Dec  9  2015:文件最近一次被修改的時間;
/etc/issue:文件名;

file

determine file type

file FILE

[root@localhost ~]# file /etc/issue
/etc/issue: ASCII text
[root@localhost ~]# file /bin/ls
/bin/ls: ELF 64-bit LSB executable, x86-64, version 1 (SYSV), dynamically linked (uses shared libs), for GNU/Linux 2.6.32, BuildID[sha1]=aa7ff68f13de25936a098016243ce57c3c982e06, stripped
[root@localhost ~]# file /var/log/wtmp 
/var/log/wtmp: data

注意:file命令將文件分為以下三類:
文本文件(ASCII):包含可打印字符的文件;
可執行文件(binary):可以在系統運行的文件;
數據文件(data):包含不可打印的二進制字符的文件,但也不可以在系統運行;

cat

concatenate files and print on the standard output
連接并顯示文件

cat [OPTION]... [FILE]...
    -n:顯示行號;
    -E:顯示行結束符;

[root@localhost ~]# cat -n /etc/passwd
     1    root:x:0:0:root:/root:/bin/bash     
     2    bin:x:1:1:bin:/bin:/sbin/nologin     
     3    daemon:x:2:2:daemon:/sbin:/sbin/nologin     
     4    adm:x:3:4:adm:/var/adm:/sbin/nologin     
     5    lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin     
     6    sync:x:5:0:sync:/sbin:/bin/sync     
     7    shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown     
     8    halt:x:7:0:halt:/sbin:/sbin/halt
        ...(此處省略)
[root@localhost ~]# cat /etc/issue /etc/fstab

\S
Kernel \r on an \m
#
# /etc/fstab
# Created by anaconda on Sun Aug 21 23:55:20 2016
#
# Accessible filesystems, by reference, are maintained under '/dev/disk'
# See man pages fstab(5), findfs(8), mount(8) and/or blkid(8) for more info
#
UUID=3a80cc61-a45f-433f-992e-21e32ae89bcb /                     xfs     defaults        0 0
UUID=4e2eb638-558e-4c6c-ae13-b0820a99acfe /boot                   xfs     defaults        0 0
UUID=f6900d6b-f21f-4a13-953d-4d969aa0b845 /home                   xfs     defaults        0 0
UUID=57d73846-3f09-4d1f-bfa4-57bace5fedc0 swap                    swap     defaults        0 0

tac

concatenate and print files in reverse
是tac的反向顯示;

tac [OPTION]... [FILE]...

[root@localhost ~]# tac /etc/issue
Kernel \r on an \m
\S

output the first part of files
查看文件的前n行,默認為前10行;

head [OPTION]... [FILE]...
    -#:查看前#行;
    
[root@localhost ~]# head -5 /etc/passwd
root:x:0:0:root:/root:/bin/bash
bin:x:1:1:bin:/bin:/sbin/nologin
daemon:x:2:2:daemon:/sbin:/sbin/nologin
adm:x:3:4:adm:/var/adm:/sbin/nologin
lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin

tail

output the last part of files

tail [OPTION]... [FILE]...
    -#:查看后#行;
    -f:查看文件尾部內容后不退出,跟蹤顯示新增的行(Ctrl+c退出);

[root@localhost ~]# tail -f /var/log/messages
...(此處省略)
Aug 30 06:01:02 localhost systemd: Starting Session 3 of user root.
Aug 30 07:01:01 localhost systemd: Started Session 4 of user root.
Aug 30 07:01:01 localhost systemd: Starting Session 4 of user root.
(光標停在此處)

more

file perusal filter for crt viewing
文件分屏查看,翻屏至文件尾部后自動退出;

more file

less

opposite of more

more file

[root@localhost ~]# less /etc/rc.d/init.d/functions 

注意:其具體的上下翻頁、查詢、退出等操作同使用man命令查看手冊的操作;

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

命令執行狀態返回值

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

  • 成功0

  • 失敗1-255

注意:命令執行完成之后,其狀態返回值保存于bash的特殊變量$?中;
命令正常執行時,有的還會有命令返回值,根據命令及其功能的不同,其結果各不相同;

命令行展開

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

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

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

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

[root@localhost ~]# mkdir -v /tmp/{a,b}_{c,d}
mkdir: created directory ‘/tmp/a_c’
mkdir: created directory ‘/tmp/a_d’
mkdir: created directory ‘/tmp/b_c’
mkdir: created directory ‘/tmp/b_d’

2).創建/tmp/mylinux目錄如下

第二周:文件管理練習

[root@localhost ~]# 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@localhost ~]# tree /tmp/mylinux/
/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
    
24 directories, 0 files

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

Linux系統的文件由3個部分組成:

  • 數據(data):指普通文件中的實際數據;

  • 元數據(metadata):指用來描述一個文件特征的系統數據,保存在inode中;

  • 目錄項(directory entry):保存文件名;

文件的元數據信息及其含義如下:

Size:文件大??;
Blocks/IO Block:單位塊大小/塊的數量,二者乘積即為文件大??;
Device:設備號;
Access:文件類型與訪問權限;
Uid:文件所有者及其ID;
Gid:文件所屬組及其ID;
Links:文件硬鏈接次數,即文件名指向inode節點的數量;
atime:access time,文件被訪問的時間;
mtime:modify time,文件被修改的時間;
ctime:change time,文件被改變的時間,即inode節點信息被改變的時間;
Birth:文件被創建的時間;

查看文件元數據信息一般使用stat命令,而修改文件的時間信息一般用touch命令;

stat

display file or file system status

stat FILE

[root@localhost ~]# stat /etc/issue
File: ‘/etc/issue’
Size: 23            Blocks: 8          IO Block: 4096   regular file
Device: 802h/2050d    Inode: 33595545    Links: 1
Access: (0644/-rw-r--r--)  Uid: (    0/    root)   Gid: (    0/    root)
Context: system_u:object_r:etc_t:s0
Access: 2016-08-28 04:20:26.763999574 +0800
Modify: 2015-12-09 17:59:15.000000000 +0800
Change: 2016-08-21 23:55:30.405994623 +0800
Birth: -

touch

change file timestamps

touch [OPTION]... FILE...
   -c:指定的文件路徑不存在時不予創建;   
   -a:僅修改access time;
   -m:僅修改modify time;
   -t STAMP:使用[[CC]YY]MMDDhhmm[.ss]格式;

[root@localhost ~]# touch /tmp/hello.txt

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

命令別名的定義與取消分別使用alias和unalias命令;

alias

Define or display aliases

[root@localhost ~]# alias
alias cp='cp -i'
alias egrep='egrep --color=auto'
alias fgrep='fgrep --color=auto'
alias grep='grep --color=auto'
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'
[root@localhost ~]# alias cls='clear'

注意:使用alias命令定義的別名僅對當前shell進程有效;

unalias

Remove each NAME from the list of defined aliases

[root@localhost ~]# unalias cls

引用命令的執行結果有以下兩種形式:

  • $(COMMAND)

  • `COMMAND`

[root@localhost ~]# echo $(pwd)/root
[root@localhost ~]# echo `pwd`/root

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

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

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

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

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

[root@localhost ~]# ls -d /etc/[^a-z][a-z]*

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

[root@localhost ~]# touch /tmp/tfile-`date +%Y-%m-%d-%H-%M-%S`

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

[root@localhost ~]# mkdir /tmp/mytest1
[root@localhost ~]# cp -r /etc/p*[^0-9] /tmp/mytest1/

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

[root@localhost ~]# mkdir /tmp/mytest2
[root@localhost ~]# cp -r /etc/*.d /tmp/mytest2

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

[root@localhost ~]# mkdir /tmp/mytest3
[root@localhost ~]# cp -r /etc/[l,m,n]*.conf /tmp/mytest3

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

(0)
dawningdawning
上一篇 2016-09-23 15:50
下一篇 2016-09-23 17:50

相關推薦

  • Mariadb數據庫復制系列(五):基于SSL的復制

       實驗五:基于SSL的主從復制功能的實現 在mysql服務器之間復制數據,默認情況下都是基于明文的,在有些場景中,明文傳輸會造成嚴重的數據安全隱患,因此,需要對mysql服務器之間的復制時的傳輸進行加密,傳輸加密方式可以基于SSL的會話進行 1、實驗環境 2、私有CA的搭建 3、在主節點node72上生成證書簽署請求、發送到私有CA服務器 4、在從節點n…

    Linux干貨 2016-11-24
  • Zabbix 新版微信告警 [2017]

    Zabbix 新版微信告警 Zabbix 新版微信告警 date 2017-06-14zabbix Zabbix可以通過多種方式把告警信息發送到指定人,常用的有郵件,短信報警方式,但是越來越多的企業開始使用zabbix結合微信作為主要的告警方式,這樣可以及時有效的把告警信息推送到接收人,方便告警的及時處理。 關于郵件報警可以參考: Zabbix 使用腳本發送…

    2017-06-17
  • Git 分布式 Moosefs + Corosync + DRBD 集群

        對于 Git 集群來說,在不采用存儲陣列的情況下,分布式存儲系統是一個很好的解決方案。目前可使用的分布式文件系統,初步了解了一下,Git 是屬于小文件的應用,因此可考量的我想就只有目前的 Moosefs、Ceph 了,Ceph 目前好似國內應用不多,貌似不太穩定。至于 GlusterFS 其比較適用于大文件的應…

    Linux干貨 2016-02-22
  • linux入門

    基本知識和操作用法。

    Linux干貨 2017-11-30
  • 腳本及變量解析

    bash腳本編程 腳本文件格式: 第一行頂格:#!bin/bash  (shebang) 注釋信息:以#開頭 代碼注釋:好的程序員必備 適量的添加縮進或添加空白行以示分割 語言:編程語言格式:庫,算法和數據結構 編程思想:      能夠把學到的編程語言的語法格式隨時轉換為解決問題的思路     &…

    Linux干貨 2016-08-12
  • 自動編譯安裝Apache腳本

    自動編譯安裝Apache腳本,Linux系統版本不同,具體信息要查看日志進行對應的處理,本腳本安裝Apache2.4.9

    Linux干貨 2018-03-17
欧美性久久久久