Linux經常使用命令-文件管理

Linux文件管理

  文件系統與目錄結構

  • 文件和目錄被組織成一個單根倒置樹結構
  • 文件系統從根開始,用「/」表示
  • 文件名稱區分大小寫
  • 以.開通的文件爲隱藏文件
  • 路徑分隔符爲 / 

  文件命名規則

  • 文件名最長255個字節
  • 包括路徑在內文件名稱最長4095個字節
  • 顏色表示
    • 藍色 —>目錄
    • 綠色—>可執行文件
    • 紅色—>壓縮文件
    • 藍綠色—>連接文件
    • 灰色—>其餘文件
    • 白色 普通的文件
  • 除了斜槓/和NULL,全部的字符都有效
  • 文件名稱大小寫敏感

  文件系統結構

  • /boot 引導文件存放目錄,內核文件、引導加載器都存放在此目錄
  • /bin 全部用戶使用的基本命令,不能關聯至獨立分區,系統啓動即會用到程序
  • /sbin 管理類的基本命令;不能關聯至獨立分區,系統啓動即會用到程序
  • /lib 啓動時程序以來的基本共享庫以及內核模塊文件
  • /lib64 專用於X86_64系統上的輔助共享庫文件存放位置
  • /etc 配置文件目錄
  • /home/USERNAME 普通用戶家目錄
  • /root 管理員的家目錄
  • /media 便攜式移動設備掛載點
  • /mnt 臨時文件系統掛載點
  • /dev 設備文件及特殊文件存儲位置
  • /opt 第三方應用程序的安裝位置
  • /src 系統上容許的服務用到的數據
  • /tmp 臨時文件存儲位置
  • /usr 存放安裝程序
  • /var 存放常常變化的文件,好比日誌
  • /proc 用於輸出內核與進程相關的虛擬文件系統
  • /sys 用於輸出當前系統上硬件設備相關虛擬文件系統
  • /selinux selinux相關的安全策略等信息的存儲位置

  linux上的應用程序組成部分

  • 二進制程序
    • /bin
    • /sbin
    • /usr/bin
    • /usr/sbin
    • /usr/local/bin
    • /usr/local/sbin
  • 庫文件
    • /lib
    • /lib64
    • /usr/lib
    • /usr/lib64
    • /usr/local/lib
    • /usr/local/lib64
  • 配置文件
    • /etc
    • /etc/directory
    • /usr/local/etc
  • 幫助文件
    • /usr/share/man
    • /usr/share/doc
    • /usr/local/share/man
    • /usr/local/share/doc

  centos7 目錄變化

  • /bin —>/usr/bin
  • /sbin —> /usr/sbin
  • /lib —>/usr/lib
  • /lib64 —> /usr/lib64

  相對和絕對路徑

    相對路徑

  • 以根開始
  • 完整的文件的位置路徑
  • 可用於任何想指定一個文件名

   絕對路徑

  • 不以根開始
  • 指定相對於當前工做工做目錄或者某目錄的位置
  • 能夠做爲簡短的形式指定一個文件名
  • . 當前目錄
  • .. 父目錄

  獲取文件名和文件目錄

   basenamenode

[root@centos network-scripts]#basename /etc/sysconfig/network-scripts/ifcfg-eth0
ifcfg-eth0
[root@centos network-scripts]#dirname /etc/sysconfig/network-scripts/ifcfg-eth0
/etc/sysconfig/network-scripts

  更改目錄

  cd 改變目錄 (change directory)linux

使用絕對或者相對路徑git

  • cd /etc/sysconfig/network-script
  • cd ifcfg-eth0

切換至父目錄windows

[root@centos network-scripts]#cd ..
[root@centos sysconfig]#

切換之當前用戶主目錄centos

[root@centos sysconfig]#cd
[root@centos ~]#

 

 切換至上一次的工做目錄跨域

[root@centos ~]#cd -
/etc/sysconfig

  顯示當前工做目錄

   pwd    (printing working directory)安全

[root@localhost etc]#pwd
/etc
[root@localhost etc]#cd sysconfig/network-scripts/
[root@localhost network-scripts]#pwd
/etc/sysconfig/network-scripts

  列出目錄內容

列出當前目錄或者指定目錄的內容socket

用法 ls [options] [files_or_dirs]centos7

ls -a 列出全部的文件,包括隱藏文件
ls -l  使用較長格式列出信息
ls -R 目錄遞歸顯示
ls -d 顯示目錄自己 ls
-ld 顯示目錄(自己)和符號連接信息 ls -1(數字1) 文件分行顯示 ls -S 按從大到小排序
ls -lSr 升序排序 ls
-t 按建立時間排序 ls -r 倒序排序 ls -d */ 顯示當前目錄下的目錄 ls -lh 按照人類易讀方式顯示 l. 顯示當前目錄下的目錄 ls -u 配合-t選項,顯示並按照atime從心到舊排序

  文件通配符

  • * 匹配零個或者多個字符
  • ?匹配任意單個字符
  • ~ 當前用戶的家目錄
  • [0-9] 匹配數字範圍
  • [a-z] 字母(有坑)從a-z而且包括A-Y
  • [A-Z] 字母 (有坑)  從A-Z 而且包括b-z
  • [abcdef] 任意一個字符
  • a[^abcdef] 取反
  • [:digit:] 任意數字
  • [:lower:] 任意小寫字母
  • [:upper:] 任意大寫字母
  • [:alpha:] 任意字母
  • a-zA-Z 全部字母
  • [:alnum:] 任意數字或字母
  • a-zA-Z0-9 任意字母或者數字

  查看文件狀態  stat

[root@localhost etc]#stat a.txt
File: ‘a.txt’
Size: 5 Blocks: 8 IO Block: 4096 regular file
Device: fd00h/64768d Inode: 17645672 Links: 1
Access: (0644/-rw-r--r--) Uid: ( 0/ root) Gid: ( 0/ root)
Context: unconfined_u:object_r:etc_t:s0
Access: 2019-07-31 21:08:58.702394849 +0800
Modify: 2019-07-31 21:09:40.923395591 +0800
Change: 2019-07-31 21:09:40.923395591 +0800
Birth: -spa


[root@centos ~]#stat a.txt 文件:"a.txt" 大小:5 塊:8 IO 塊:4096 普通文件 設備:fd00h/64768d Inode:17645672 硬連接:1 權限:(0644/-rw-r--r--) Uid:( 0/ root) Gid:( 0/ root) 環境:unconfined_u:object_r:etc_t:s0 最近訪問:2019-07-31 21:08:58.702394849 +0800 最近更改:2019-07-31 21:09:40.923395591 +0800 最近改動:2019-07-31 21:09:40.923395591 +0800 建立時間:- access time 訪問時間,atime 讀取文件內容 modify time 修改時間,mtime 改變文件內容 change time 改變時間 ctime 原數據發生改變  

  建立空文件和刷新時間

touch

  • 格式 touch [OPTION]... FILE...
  • -a 僅改變atime 和ctime
  • -m 僅改變mtime和ctime

若是文件存在的話,則修改時間
若是不存在,則建立文件

  複製文件和文件夾

Usage: cp [OPTION]... [-T] SOURCE(源文件) DEST(目標文件)
  or:  cp [OPTION]... SOURCE... DIRECTORY
  or:  cp [OPTION]... -t DIRECTORY SOURCE...
  • 若是source是一個文件的話

    • 若是目標不存在,新建一個目標文件,並將數據寫入到目標文件裏面

    • 若是目標文件存在

      • 若是目標文件是一個目錄,直接在目標目標下面新建一個跟源文件同名的文件,並將數據目標文件寫入到文件

      • 若是說目標文件是一個文件,直接就覆蓋,爲了安全起見,建議cp配合-i使用

  • 若是源文件是多個文件的話

    • 目標文件若是是文件的話,則直接報錯

    • 若是目標文件是一個目錄的話,則直接複製進目錄

  • 若是源文件是目錄的話

    • 若是目標不存在,則建立指定的目錄,必須-r選項

    • 若是說目錄存在

      • 若是目錄是一個文件的話,則會報錯

      • 若是目標是一個目錄的話,則在目錄下面建立一個新的同名目錄,並把文件複製過去

  經常使用選項

-i 覆蓋前提示
-n 不覆蓋
-f 強制
-r -R 遞歸複製目錄及內部的全部文件
-a 歸檔
-d 不復制源文件,只複製連接名
-v 顯示詳細的步驟
-b 目標存在,覆蓋前先備份
--backup=numbered 目標存在,覆蓋前先備份加數字後綴
-p 保留原來屬性

  移動和重命名文件

Usage: mv [OPTION]... [-T] SOURCE DEST
  or:  mv [OPTION]... SOURCE... DIRECTORY
  or:  mv [OPTION]... -t DIRECTORY SOURCE...
-i  交互式
-f  強制
-b  覆蓋前作備份
-v 顯示進度

  刪除

rm [OPTION]... FILE...
-i 交互式
-f 強制刪除
-r 遞歸刪除
rm -rf /* 慎用
cd /
rm -rf *

  目錄操做

    • tree 顯示目錄樹
yum install -y tree
tree name
-L 控制顯示的層數
-b 只顯示目錄
    • mkdir 建立目錄
mkdir s21
mkdir s21-{3..10}
mkdir -p a/b/c/d
mkdir -pv {s13,s14}/{ss11,ss12}/{sss11,sss12} 
-p 遞歸建立
-v 顯示建立過程
  • rmdir 刪除空目錄
    • -p 遞歸刪除父空目錄
    • -v 顯示詳細信息
  • rm -r 遞歸刪除目錄樹

  linux下的文件類型

  • - 普通文件
  • d 目錄文件
  • b 塊設備
  • c 字符設備
  • l 符號連接文件
  • p 管道文件pipe
  • s 套接字文件socket

 查看文件類型

  file

  連接

  硬連接

    • ln 源文件 目標文件

    • 源文件發生改變,目標會發生改變

    • 將硬盤的引用次數+1

    • 刪除

      • 將磁盤上的引用次數-1

      • 源文件刪除對目標不會受影響

    • 不能對目錄作硬連接

    • 不能跨越分區

 

  軟連接

    • 至關於windows的快捷方式

    • ln -s 能夠生成軟連接

    • 連接大小就是制定的源文件的字符數

    • 源文件發生改變,目標會發生改變

    • 刪除

      • 源文件刪除目標會收影響

    • 能夠對目錄作軟連接

    • 能夠跨域分區

相關文章
相關標籤/搜索