linux系统管理第三章Linux文件目录管理

linux系统管理第三章Linux文件目录管理

概述

在Linux系统中,所有文件和目录都被组织成以一个根节点开始的倒置的树状结构。

 

3.1 目录介绍

/: 跟目录

/etc: 系统配置文件几乎全部放在这个目录下。

/boot: 存放Linux操作系统的内核和系统启动时使用的文件,其中以vmlinuz开头的就是linux的内核。如果引导程序(loader)选择了grub,在该目录中还会有一个grub的子目录(/boot/grub)。

/dev: 存放的是服务器中所有的设备,在Unix或者linux系统中所有的东西都被看成文件,其中也报告硬件。

/usr:存放系统的应用程序和命令相关的系统数据,其中包括系统的一些函数库。有点类似windows的C:\Program Files文件夹。需要指出的是,usr为unix system resources的缩写。

Lost+found:当系统异常关机,崩溃或出现错误时,系统会将一些遗失的片段放在目录中。

/var:存放的系统运行过程中经常变化的文件,如log文件。

/proc: 操作系统运行时,进程(正在运行中的程序)信息及内核信息(比如cpu、硬盘分区、内存信息等)存放在这里。/proc目录是伪装的文件系统proc的挂载目录,proc并不是真正的文件系统。因此,这个目录是一个虚拟的目录,它是系统内存的映射,我们可以通过直接访问这个目录来获取系统信息。也就是说,这个目录的内容不在硬盘上而是在内存里。

/bin:这里存放了标准的(或者说是缺省的)linux的工具,比如像“ls”、“vi”还有“more”等等。

/libs: 存放的是libraries,即系统使用的函数库。许多程序在运行的过程中都会从这些函数库中调用一些共享的库函数。

3.2 相对路径与绝对路径

绝对路径:路径的写法,一定由跟目录/写起,例如:/usr/share/doc目录

相对路径:路径的写法,不是由/写起,例如由、usr/share/doc要到/usr/share/man。可以写成cd ../man。这就是相对路径的写法,相对路径是指,相对于目前工作目录的路径。

相对路径对比绝对路径是比较方便,但是在写程序(shell)时,务必使用绝对路径。

.  代表本层目录

. . 代表上一层目录

  • 代表前一个工作目录

~  代表使用者的家目录

/etc/yum.repos.d

cd . 目录不变

[root@RHCE7 yum.repos.d]# cd .

[root@RHCE7 yum.repos.d]#

cd . . 上层目录

[root@RHCE7 yum.repos.d]# cd ..

[root@RHCE7 etc]# pwd

cd ~ 家目录

[root@RHCE7 etc]# cd ~

[root@RHCE7 ~]# pwd

/root

cd – 前一个目录

[root@RHCE7 ~]# cd -

/etc

3.3 目录管理

3.3.1 ls和ll显示目录文件命令

Ls功能是列出目录的内容

Ls –options directions|files

-l 详细信息显示

-a 显示所有文件,暴扣隐藏文件

-h  人性化显示(hommization)

ll 是ls –l 缩写

 

[root@Redhat7 ~]# ll -ah /

总用量 44K

dr-xr-xr-x.  18 root root 4.0K 7月  22 21:41 .

dr-xr-xr-x.  18 root root 4.0K 7月  22 21:41 ..

-rw-r--r--    1 root root    0 7月  17 06:47 .autorelabel

lrwxrwxrwx.   1 root root    7 7月  17 03:51 bin -> usr/bin

3.3.2 du 计算文件使用空间

estimate file space usage

-h:以人类可读的方式显示

-a:显示目录占用的磁盘空间大小,还要显示其下目录和文件占用磁盘空间的大小

-s:显示目录占用的磁盘空间大小,不要显示其下子目录和文件占用的磁盘空间大小

[root@Redhat7 ~]# du -sh /

du: 无法访问"/proc/4831/task/4831/fd/4": 没有那个文件或目录

du: 无法访问"/proc/4831/task/4831/fdinfo/4": 没有那个文件或目录

du: 无法访问"/proc/4831/fd/4": 没有那个文件或目录

du: 无法访问"/proc/4831/fdinfo/4": 没有那个文件或目录

11G     /

 

3.3.3pwd和cd确定和切换目录

Pwd命令来显示当前目录的绝对路径。

[root@RHCE7 targeted]# pwd

/etc/selinux/targeted

Cd切换当前目录

[root@RHCE7 targeted]# cd ..

[root@RHCE7 selinux]#

 

[root@RHCE7 selinux]# cd /opt/rh/

[root@RHCE7 rh]# pwd

/opt/rh

 

 

 

 

3.3.4 mkdir创建目录命令

mkdir是(make directory的缩写)是检录目录的含义。-P 递归建立目录,

 

[root@Redhat7 ~]# mkdir /syj

 

[root@Redhat7 ~]# mkdir /hct/syj

mkdir: 无法创建目录"/hct/syj": 没有那个文件或目录

[root@Redhat7 ~]# mkdir -p /hct/syj

3.3.5 cp复制文件或者目录

   Cp复制命令的功能就是将文件(一个或者多个)复制成一个指定的文件或者指定的目标目录中。目录文件或者目录一定是cp命令中的最后参数

  cp –options sources target

  sources 一个或者多个文件,也可以是一个或多个目录名。

  Target (目的):一个文件或者目录

  -r (recursive递归的):递归地复制目录,当复制一个目录时,复制该目录所有的内容,其中也包括子目录的全部内容。

  -v, --verbose: 显示详细的进行步骤

  -p  --preserve: 保持指定的属性(默认:模式,所有权,时间戳)

  -f, --force: 若目标文件已经存在强制覆盖,系统并不询问。               

 

[root@Redhat7 ~]# cp -rvp /run/media/root/RHEL-7.2\ Server.x86_64/*   /syj

把这个目录下所有文件/run/media/root/RHEL-7.2\ Server.x86_64/* ,copy到/syj.

3.3.6 mv移动与修改文件和目录

用法:mv [选项]... [-T] 源文件 目标文件

 或:mv [选项]... 源文件... 目录

[root@Redhat7 ~]# mv /syj/* /hct

[root@Redhat7 ~]# ll /syj

总用量 0

[root@Redhat7 ~]# ll /hct

总用量 372

dr-xr-xr-x  4 root root     52 10月 30 2015 addons

dr-xr-xr-x  3 root root     17 10月 30 2015 EFI

3.3.7 rm删除文件或者目录

rm 命令是一个具有破坏性的命令,因为rm命令将永久地删除文件或者目录。

rm –options files|directions

-i 交互:在删除之前出提示

-r 递归:递归删除目录,删除一个目录时,全部删除所有内容。

-f 强制:系统不询问强制删除。

 

[root@Redhat7 ~]# rm -r /hct

rm:是否进入目录"/hct"? y

rm:是否进入目录"/hct/addons"? y

rm:是否进入目录"/hct/addons/HighAvailability"?

 

[root@Redhat7 ~]# rm -rf /hct 秒删除

 

3.4 文件管理

3.4.1 touch 创建文件命令

使用touch命令可以创建一个空文件,也可以同时创建多个文件

[root@Redhat7 syj]# touch syjhct.txt hctsyj.txt

3.4.2 file 查看文件类型

在linux系统中文件的扩展名(即后缀)并不代表文件的类型,使用file命令可以查看文件的类型。

 

[root@Redhat7 syj]# file syjhct.txt

syjhct.txt: empty

3.4.3 cat显示文件内容命令(适合内容较少的文件)

-n 显示行号

[root@Redhat7 syj]# cat -n /etc/selinux/config

     1

     2  # This file controls the state of SELinux on the system.

     3  # SELINUX= can take one of these three values:

     4  #     enforcing - SELinux security policy is enforced.

     5  #     permissive - SELinux prints warnings instead of enforcing.

     6  #     disabled - No SELinux policy is loaded.

     7  SELINUX=disabled

3.4.4 more 分页显示文件内容

display files on a page-by-page basis

 空格键:移动一个分页(屏幕)

 Enter:一次移动一行。

 b:向上移动一个分页

 /字符串:向前搜索字符串

 q:退出more命令

 

[root@Redhat7 syj]# more /etc/selinux/semanage.conf

 

3.4.5 less分页显示文件内容命令(可以前后翻页)

空格键或者pageup:移动一个分页(屏幕)

 Enter:一次移动一行。

/字符串:向前搜索字符串

n:查找搜索字符串

 q:退出less命令

[root@Redhat7 syj]# less /etc/selinux/semanage.conf

3.4.6 head显示文件内容命令(指定行数)

[root@Redhat7 syj]# head -n 5 /etc/selinux/semanage.conf 

# Authors: Jason Tang <jtang@tresys.com>

#

# Copyright (C) 2004-2005 Tresys Technology, LLC

#

#  This library is free software; you can redistribute it and/or

3.4.7 tail反向文件内容命令(文件即时更新后也能动态显示,多用于日志文件显示)

语法: tail【文件名】

    -n   指定显示的行数

    -f 动态显示文件末尾内容(即文件实时变化,那么显示内容也会随之变化)

-f 要在-n 前面

[root@Redhat7 syj]# tail -fn 5 /etc/selinux/semanage.conf

# semanage fcontext -a -e /home /althome

usepasswd=False

bzip-small=true

bzip-blocksize=5

ignoredirs=/root

3.5 文件搜索命令

3.5.1 whereis 命令位置查询

whereis命令是定位可执行文件、源代码文件、帮助文件在文件系统中的位置。

-b   定位可执行文件。
-m   定位帮助文件。
-s   定位源代码文件。

[root@Redhat7 ~]# whereis vim

vim: /usr/bin/vim /usr/share/vim /usr/share/man/man1/vim.1.gz

[root@Redhat7 ~]# whereis -b vim

vim: /usr/bin/vim /usr/share/vim

[root@Redhat7 ~]# whereis -m vim

vim: /usr/share/man/man1/vim.1.gz

3.5.2 which查看可执行文件的位置

[root@Redhat7 ~]# which vim

/usr/bin/vim

3.5.3 find最强大命令

find files find命令在目录结构中搜索文件,并执行指定的操作。

find   path   -option   [   -print ]   [ -exec   -ok   command ]   {} \;

参数

描述

path

find命令所查找的目录路径。例如用.来表示当前目录,用/来表示系统根目录。

-print

find命令将匹配的文件输出到标准输出。

-exec

find命令对匹配的文件执行该参数所给出的shell命令。-exec command {} ; 将查到的文件执行command操作,注意{} ;之间有空格

-ok

-exec的作用相同,只不过以一种更为安全的模式来执行该参数所给出的shell命令,在执行每一个命令之前,都会给出提示,让用户来确定是否执行

 

 

 

 

 

 

 

 

 

3.5.3.1 –name 根据文件名查找

[root@Redhat7 etc]# find /etc -iname SELI*

/etc/selinux

/etc/selinux/targeted/modules/active/modules/selinuxutil.pp

/etc/sysconfig/selinux

 

     查找开头A-C忽略大小写

     [root@Redhat7 etc]# find /etc -iname "[A-C]*"

/etc/crypttab

/etc/fonts/conf.d

/etc/X11/fontpath.d/cjkuni-uming-fonts

/etc/X11/applnk

3.5.3.2 user和nouser 选项 用户查找

[root@Redhat7 etc]# find / -user yxy

/home/yxy/.local/share

/home/yxy/.local/share/gvfs-metadata

/home/yxy/.local/share/gvfs-metadata/root

/home/yxy/.local/share/gvfs-metadata/home

 

使用-nousr不用指定用户名,查找的是不属于当前等于用户的文件

[root@Redhat7 etc]# find / -nouser

find: ‘/proc/6726/task/6726/fd/6’: 没有那个文件或目录

find: ‘/proc/6726/task/6726/fdinfo/6’: 没有那个文件或目录

find: ‘/proc/6726/fd/6’: 没有那个文件或目录

find: ‘/proc/6726/fdinfo/6’: 没有那个文件或目录

find: ‘/run/user/42/gvfs’: 权限不够

 

3.5.3.3 time选项

-amin n

查找系统中最近 n 分钟内被读取过的文件

-atime n

查找系统中最近n天内被读取过的文件

-cmin n

查找系统中最近 n 分钟内被改变文件状态的文件

-ctime n

查找系统中最近n天内被改变文件状态的文件

-mmin n

查找系统中最近n分钟内被改变文件数据的文件

-mtime n

查找系统中最近n天内被改变文件数据的文件

查找1天内,被更改状态的文件

[root@Redhat7 etc]# find / -ctime 1

/syj/syjhct.txt

/syj/hctsyj.txt

3.5.3.4 -perm选项 文件权限选项

,按文件权限模式来查找文件的话。最好使用十进制的权限表示法。

Linux 文件权限分为三位 user    group    other 每位rwx 最大777

x=2^0*1|0=1|0,w=2^1*1|0 =2|0,r=2^2*1|0  =4|0

使用-perm常用两种

find -perm mode  严格匹配
find -perm –mode 权限大匹配比如 mode=644那么转换成二进制为110 100 100 如有有mode=744的也匹配,只要有1的都匹配上就行。

 

[root@Redhat7 etc]# find / -perm 770

/var/cache/cups

 

[root@Redhat7 etc]# find / -perm -770

一群特别多

3.5.3.5 size根据文件大小查找

find / -size +10M

这里 +n 表示大于,-n 表示小于,n 表示等于

 

[root@Redhat7 ~]# find /   -size +80M

/sys/devices/pci0000:00/0000:00:0f.0/resource1_wc

/sys/devices/pci0000:00/0000:00:0f.0/resource1

/usr/lib/locale/locale-archive

/iso7.2/LiveOS/squashfs.img

/iso7.2/Packages/kde-wallpapers-4.10.5-2.el7.noarch.rpm

3.5.3.6 -a  -o 组合查询

-a  表示两个条件同时满足(and)

-o  表示两个条件满足任意一个即可(or)

范例:查找/etc目录下大于80MB同时小于100MB的文件

 Find  /  -size +80M -a -size -100M

[root@Redhat7 ~]# find  /  -iname *4.10* -a -size +50M

/iso7.2/Packages/kde-wallpapers-4.10.5-2.el7.noarch.rpm

3.5.3.7 exec 执行命令

-exec 参数后面跟的是command命令,它的终止是以;为结束标志的,所以这句命令后面的分号是不可缺少的,考虑到各个系统中分号会有不同的意义,所以前面加反斜杠。{} 花括号代表前面find查找出来的文件名。

1 查找当前目录并显示

[root@Redhat7 ~]# find /etc -iname console.h* -exec cat {} \;

# /etc/security/console.handlers

#

# This file is provided for configuration of handlers which will be

# executed when user obtains console lock and when he loses it.

# Additionally it is used for a configuration of console device names.

#

# Format:

# name consoledevs regex regex ...

# binary lock|unlock flag flag ...

# See man console.handlers

 

在iso目录下查找ja文件名,copy到rmiso中

[root@Redhat7 /]# find /rmiso -iname *ja* -exec cp -prv {} /rmiso \;

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值