linux文件管理

Linux文件管理

一、bash shell對文件的操作

創建、複製、刪除、移動、查看、編輯、壓縮、查找


二、Linux目錄結構


bin 普通用戶使用的命令 /bin/ls, /bin/date
sbin 管理員使用的命令 /sbin/service

dev 設備文件 /dev/sda,/dev/tty1,dev/tty2,/dev/pts/1, /dev/zero, /dev/null, /dev/random
root root用戶的HOME
home 存儲普通用戶家目錄
lost+found 孤兒文件,用於存放系統不正常關機後形成的一些無家可歸的文件
proc 虛擬的文件系統,反映出來的是內核,進程信息或實時狀態,只存在於內存中,大小爲0,du -sh /proc
sys 僞文件系統(硬件信息,內核參數,進程在內存中的信息),是一種虛擬的基於內存的文件系統,
類似於proc目錄

opt 第三方軟件(flush,splunk,open office)
cgroup 資源控制目錄(內存 cpu....)
usr 系統文件(應用程序目錄),相當於C:\Windows
/usr/local 軟件安裝的目錄,相當於C:\Program
/usr/bin 普通用戶使用的應用程序
/usr/sbin 管理員使用的應用程序

/usr/lib 32 bit庫文件Glibc
/usr/lib64 64 bit 庫文件Glibc
boot 存放的系統啓動相關的文件,例如kernel,grub(引導裝
載程序)

etc 配置文件(系統相關如網絡/etc/sysconfig/network,應用相關配置文件...)
lib 庫文件,存放應用程序所需要的共享庫,類似於windows裏的.dll文件
lib64 庫文件Glibc
tmp 臨時文件(主要是程序產生的臨時數據)
var 存放的是一些變化文件,比如數據庫,日誌,郵件....
mysql: /var/lib/mysql
vsftpd: /var/ftp
mail: /var/spool/mail
cron: /var/spool/cron
log: /var/log
臨時文件: /var/tmp (主要是程序產生的臨時文件)
misc和net autofs服務使用的目錄
srv 服務器數據目錄

設備(主要指存儲設備)掛載目錄

media 移動設備默認的掛載點
mnt 手工掛載設備的掛載點

misc automount進程掛載
net automount進程掛載

# df -ThP 查看系統中的掛載項
# mount 查看系統中的掛載項,顯示詳細的掛載信息

命令存儲位置:
/bin 普通用戶使用的命令 /bin/ls, /bin/date RHEL7淘汰
/sbin 管理員使用的命令 RHEL7淘汰
/usr/bin 普通用戶使用的應用程序
/usr/sbin 管理員使用的應用程序
庫文件存儲位置:
/lib 庫文件Glibc RHEL7淘汰
/lib64 庫文件Glibc RHEL7淘汰
/usr/lib 庫文件Glibc
/usr/lib64 庫文件Glibc

三、文件類型

# ll anaconda-ks.cfg //看第一個字符
-rw-------. 1 root root 2460 6月 1 13:14 anaconda-ks.cfg
- 普通文件(文本文件,二進制文件,壓縮文件。。。)
d 目錄文件(藍色
b 設備文件(塊設備)存儲設備硬盤,U盤 /dev/sda, /dev/sda1
c 設備文件(字符設備)打印機,終端 /dev/tty1
s 套接字文件
p 管道文件
l 鏈接文件(淡藍色)lrwxrwxrwx 1 root root 9 4月 22 18:17 check_spop -> check_tcp

注:
1、通過顏色判斷文件的類型是不一定正確
2、Linux文件是沒有擴展名這一說

四、路徑 (定位文件)

/tmp/file1 和 /home/tom/file1 不是同一文件!
絕對路徑: 從' / '開頭的路徑 '/'  ,
/home/user1  ,/var/log
相對路徑: 相對於當前目錄開始  
Desktop/file1 file1 . ..
----------------------------------
. 鏈接到當前目錄
.. 鏈接到上一級目錄
~ 當前用戶的家目錄
----------------------------------
# useradd tom
# touch /home/alice/file1
# touch ~tom/file2
# ls /home/tom

# mkdir abc
# touch ../file3
# touch file4
# touch abc/file5
# ls

# ls abc

五、文件操作

文件操作之:cd 改變目錄:
cd 絕對路徑 cd /home/tom    cd ~tom
cd 相對路徑 cd Desktop/abc cd ..

cd 專用:

cd - 返回上次目錄 ,   cd ..
cd 直接回家

2. 文件管理之:創建/複製/移動/刪除
文件創建
文件 touch
# touch file1.txt //無則創建,有則修改時間
# touch file2 file3
# touch /home/file4.txt
# touch /home/file5 file6

# touch file{1..20}
# touch file{a..c}
# touch mu{a,b} //{}集合,等價touch mua mub

注:在同一個目錄下面,創建一個同名的文件是可以成功的,但是文件的修改時間會發生變化

[root@localhost tmp]# ls /tmp/hao/* // *表示所有的意思

目錄創建
目錄 mkdir
# mkdir dir1
# mkdir /home/dir2 /home/dir3
# mkdir /home/{dir4,dir5}
# mkdir -v /home/{dir6,dir7}
# mkdir -v /home/dir8/111/222
# mkdir -pv /home/dir8/111/222 
# mkdir -pv /home/{yang/{dir1,111},zhanghao}

複製 cp
用法: cp [OPTION]... [-T] SOURCE DEST
# cd
# mkdir /home/dir{1,2}
# cp -v install.log /home/dir1
# cp -v install.log /home/dir1/test.txt //將前面的文件拷貝到後面的目錄當中並重新命名
# cp -v /etc /home/dir1
# cp -rv /etc /home/dir1 //-r遞歸
# cp -v anaconda-ks.cfg !$
# cp -rv /etc/sysconfig/network-scripts/ifcfg-eth0 /etc/passwd /etc/grub.conf /home/dir2 //將多個文件拷貝到同一個目錄
# cp -rv /etc/sysconfig/network-scripts/ifcfg-eth0 /etc/passwd /etc/grub.conf /etc/hosts.
# cp -r /etc /tmp
# cp -rf /etc /tmp
# \cp -r /etc /tmp

[root@localhost ~]# type -a cp
cp is aliased to `cp -i'
cp is /bin/cp

[root@localhost ~]# cp -rvf /etc/sysconfig/network-scripts/{ifcfg-eth0,ifcfg-eth0.bak}
[root@localhost ~]# cp -rvf /etc/sysconfig/network-scripts/ifcfg-eth0{,.old}

移動 mv
用法: mv [OPTION]... [-T] SOURCE DEST
# mkdir /tmp/dir3
# mv file1 /tmp/dir3 //將file1移動到/home/dir3
# mv file2 /tmp/dir3/file20 //將file2移動到/home/dir3,並改名爲file20
# mv file4 file5 //將file4重命名爲file5,當前位置的移動就是重命名

刪除 rm rmdir

示例1:刪除/home/dir1
# cd /home
# rm -rf dir1
-r 遞歸
-f force強制
-v 詳細過程

# rmdir /tmp/dir/ 只能刪除空目錄


示例2:
[root@localhost ~]# rm -rf file*
[root@localhost ~]# rm -rf dir*
[root@localhost ~]# rm -rf /home/dir*
[root@localhost ~]# rm -rf *.pdf

示例3:
[root@localhost dir]# mkdir -- -a
[root@localhost dir]# ls
-a dir2 file1
[root@localhost dir]# mkdir -- -b
[root@localhost dir]# ls
-a -b dir2 file1
[root@localhost dir]# rm -- -a
rm: 無法刪除"-a": 是一個目錄
[root@localhost dir]# rm -rf -- -a
[root@localhost dir]# ls
-b dir2 file1
[root@localhost dir]# rm -rf ./-b/
[root@localhostdir]# ls
dir2 file1


3. 文件管理之:查看文件內容

文本文件 命令: (cat lessmore head tail grep tac rev)
cat看文件的所有的內容
less支持上下翻看,並且支持搜索,使用n或者是N上下切換搜索的內容
more只支持向下翻看

/bin/ls
/etc/hosts
/etc/sysconfig/network
/etc/sysconfig/network-scripts/ifcfg-eth0
/etc/passwd
/etc/shadow
/etc/group
/etc/grub.conf
/etc/resolv.conf
/var/log/messages
/var/log/secure


cat
-n 顯示所有行
-b 顯示有效行
-A 包括控制字符(換行符)
linux $
Windows ^M$
========================================================
擴展:
dos2unix 將Windows格式的文件轉換成Unix格式
unix2dos 將Unix格式的文件轉換成Windows格式

例如
# unix2dos file1
# dos2unix file2
========================================================

less more head tail
# head /etc/passwd 默認的看頭10行
# head -2 /etc/passwd 看頭兩行
# tail /etc/passwd 看尾10行,默認顯示的是10行
# tail -1 /etc/passwd 看尾1行
# tail /var/log/messages
# tail -30 /var/log/messages 看尾30行

# tail -f /var/log/messages //-f 動態查看文件尾部信息
# tailf /var/log/messages
另外打開一個終端,手動產生日誌,使用下面的命令
# logger kldskjjdfa
切換回到動態查看日誌的終端中,看一下是否成功動態產生的日誌

擴展:

# tail -f /var/log/messages //-f 動態查看文件尾部信息,追蹤的是文件的inode號
# tail -F /tmp/file1 //動態查看文件尾部信息,追蹤的是文件名
注:vim, gedit編輯文件時,inode會改變
==============================================================================

grep 針對文件內容進行過濾
# grep 'root' /etc/passwd
# grep --color 'root' /etc/passwd
# grep --color '^root' /etc/passwd
# grep --color 'bash$' /etc/passwd
# grep 'failure' /var/log/secure

隨記:

Linux文件有三種時間:
訪問時間:atime,查看內容
修改時間:mtime,修改內容
改變時間:ctime,文件屬性,比如權限

注:RHEL6開始relatime,atime延遲修改,必須滿足其中一個條件:
1. 自上次atime修改後,已達到86400秒;
2. 發生寫操作時;


發佈了38 篇原創文章 · 獲贊 7 · 訪問量 4萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章