您的位置:首页 > 运维架构 > Linux

linux文件管理

2017-02-11 10:36 375 查看

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.
cfd3
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. 发生写操作时;
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息