在Linux系统中,所有文件和目录都被组织成以一个根节点开始的倒置的树状结构。
/: 跟目录
/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,即系统使用的函数库。许多程序在运行的过程中都会从这些函数库中调用一些共享的库函数。
绝对路径:路径的写法,一定由跟目录/写起,例如:/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
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
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 /
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
mkdir是(make directory的缩写)是检录目录的含义。-P 递归建立目录,
[root@Redhat7 ~]# mkdir /syj
[root@Redhat7 ~]# mkdir /hct/syj
mkdir: 无法创建目录"/hct/syj": 没有那个文件或目录
[root@Redhat7 ~]# mkdir -p /hct/syj
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.
用法: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
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 秒删除
使用touch命令可以创建一个空文件,也可以同时创建多个文件
[root@Redhat7 syj]# touch syjhct.txt hctsyj.txt
在linux系统中文件的扩展名(即后缀)并不代表文件的类型,使用file命令可以查看文件的类型。
[root@Redhat7 syj]# file syjhct.txt
syjhct.txt: empty
-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
display files on a page-by-page basis
空格键:移动一个分页(屏幕)
Enter:一次移动一行。
b:向上移动一个分页
/字符串:向前搜索字符串
q:退出more命令
[root@Redhat7 syj]# more /etc/selinux/semanage.conf
空格键或者pageup:移动一个分页(屏幕)
Enter:一次移动一行。
/字符串:向前搜索字符串
n:查找搜索字符串
q:退出less命令
[root@Redhat7 syj]# less /etc/selinux/semanage.conf
[root@Redhat7 syj]# head -n 5 /etc/selinux/semanage.conf
# Authors: Jason Tang
#
# Copyright (C) 2004-2005 Tresys Technology, LLC
#
# This library is free software; you can redistribute it and/or
语法: 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
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
[root@Redhat7 ~]# which vim
/usr/bin/vim
find files find命令在目录结构中搜索文件,并执行指定的操作。
find path -option [ -print ] [ -exec -ok command ] {} \;
参数 |
描述 |
path |
find命令所查找的目录路径。例如用.来表示当前目录,用/来表示系统根目录。 |
|
find命令将匹配的文件输出到标准输出。 |
-exec |
find命令对匹配的文件执行该参数所给出的shell命令。-exec command {} ; 将查到的文件执行command操作,注意{} 和 ;之间有空格 |
-ok |
和-exec的作用相同,只不过以一种更为安全的模式来执行该参数所给出的shell命令,在执行每一个命令之前,都会给出提示,让用户来确定是否执行 |
[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
[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’: 权限不够
-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
,按文件权限模式来查找文件的话。最好使用十进制的权限表示法。
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
一群特别多
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
-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
-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 \;