文件、目录管理

学Linux注意事项

    语法格式 

        命令+空格+选项或参数+空格+文件或目录(路径)

    命令 文件名 目录名 都是严格区分字母大小的

       Linux约定 使用路径要以路径分隔符'/'结尾。例如:

            cd /tmp 应该要在结尾加上'/'  cd /tmp/ 很明白要去的是个目录

2.1&2.2 系统目录结构

[root@linux_202 ~]# tree -L 1 /
/
├── bin -> usr/bin
├── boot
├── dev
├── etc
├── home
├── lib -> usr/lib
├── lib64 -> usr/lib64
├── media
├── mnt
├── opt
├── proc
├── root
├── run
├── sbin -> usr/sbin
├── srv
├── sys
├── tmp
├── usr
└── var

19 directories, 0 files
目录名称作用
/根目录,位于Linux文件系统目录结构的顶层,一般根目录下只存放目录,不要存放文件,/etc、/bin、/dev、/lib、/sbin应该和根目录放置在一个分区中。
/binbin是Binary的缩写,该目录下存放的是最常用的命令
/boot该目录下存放的是启动Linux时使用的一些核心文件,包括一些连接文件以及镜像文件
/devdev是Device(设备)的缩写。该目录下存放的是Linux的外部设备。在Linux中,访问设备的方式和访问文件的方式是相同的。
/etc该目录下存放的是所有系统管理所需要的配置文件和子目录。
/home这是用户的主目录。在Linux中,每个用户都有一个自己的目录,一般该目录名是以用户的账号命名的。
/lib这两个目录下存放的是系统最基本的动态连接共享库,其作用类似于Windows里的DLL文件,几乎所有的应用程序都需要用到这些共享库。其中/lib64为64位的软件包的库文件所在目录。
/lib64
/media系统会自动识别一些设备(如U盘、光驱等),当识别后,Linux会把识别的设备挂载到该目录下。
/mnt系统提供该目录是为了让用户临时挂载别的文件系统。我们可以将光驱挂载到/mnt/上,然后进入该目录查看光驱里的内容
/opt这是给主机额外安装软件所设置的目录,该目录默认为空。比如你要安装一个ORACLE数据库,可以放到该目录下。
/proc该目录是一个虚拟的目录,是系统内存的映射,我们可以通过直接访问来获取系统信息。该目录的内容在内存里,我们可以直接修改里面的某些文件。比如可以通过下面的命令来屏蔽主机的ping命令,使其他人无法ping你的机器。后续,在日常工作中,你会经常用到类似的用法。
 # echo 1 > /proc/sys/net/ipv4/icmp_echo_ignore_all
/root该目录是系统管理员的用户主目录。
/run这个目录其实和/var/run是同一个目录,这里面存放的是一些服务的pid,一个服务启动完后,是有一个pid文件的。至于为什么说是同一个目录,Linux是如何做到的,后续介绍。
/sbins就是Super User的意思,该目录存放的是系统管理员使用的系统管理程序。
/srv该目录存放的是一些服务启动之后需要提取的数据。
/sys该目录存放的是与硬件驱动程序相关的信息。
/tmp该目录是用来存放一些临时文件的。
/usr这是一个非常重要的目录,类似于Windows下的Program Files目录,用户的很多应用程序和文件都存放在该目录下。后面会多次用到这个目录。
/usr/bin该目录存放的是系统用户使用的应用程序。
/usr/sbin该目录存放的是超级用户使用的比较高级的管理程序和系统守护程序。
/usr/src该目录是内核源代码默认的放置目录。
/var该目录存放的是在不断扩充且经常被修改的目录,包括各种日志文件或者pid文件,刚刚提到的/var/run就是在/var目录下面

    总结: 

        /etc目录下是系统的配置文件,如果更改了该目录下的某个文件可能会导致系统无法正常启动。 

        /bin、/sbin、/usr/bin和/usr/sbin目录是系统预设的执行文件的放置目录,其中/bin和/usr/bin目录下是供系统用户使用的指令(除root外的通用账户),而/sbin和/usr/sbin目录下则是供root使用的指令。比如ls指令就存放在/bin/目录下。     

        /var也是一个非常重要的目录,系统上运行各个程序时所产生的日志都被记录在该目录下(即/var/log目录中),另外mail指令的预设也放置在这里。

2.3 ls命令

    ls 显示目录下的内容及相关属性信息

    【功能说明】

            ls 命令可以理解为英文单词list的缩写,其功能是列出目录的内容及其内容属性信息(list directory contents)。该命令有点类似于DOS系统下的dir命令,有趣的是,Linux系统下其实也有dir命令,但大多数更习惯使用ls

      【语法格式】

                ls    [option]    [file and directory]

                ls    [选项]    [文件或目录]

ls命令的参数选项及说明表

参数选项

解释说明

-l

长格式列出文件及目录信息

-a

显示目录下的所有文件或目录,包括以”.”开始的隐藏文件及目录

-t

根据最后修改时间(mtime)排序,默认是以文件名排序

-i

显示文件的inode编号

-d

当需要查看目录的长格式信息时,列出目录本身而非目录内的文件,并且不跟随符号链接。

-h

以便于人类识别的信息显示文件或目录大小,如:1k、234MB、2G等

--color=auto

不同的文件类型以不同颜色显示参数,auto自

2.4 文件类型   

        ls -l显示的第一个字符表示文件类型 如图:

64cbd6be5649697d13348ab05bbac974869.jpg

        图中的文件类型有d和-,其实除了这两种文件类型,还有l、b、c、s等,具体描述如下所示

d 表示文件为目录
- 表示该文件为普通文件
l 表示该文件是软连接文件,软连接文件类似于Windows快捷方式
b 表示卡块设备,如/dev/sda就是块设备文件,磁盘分区文件就是块设备文件
c 表示该文件为串行端口设备文件(又称字符设备文件),比如键盘、鼠标、打印机、tty终端等都是这样的文件。
s 表示该文件为套接字文件(socket),用于进程之间的通信。使用MySQL会用到该类型文件。

2.5 alias命令

        功能描述

                在Linux(CentOS)进行系统的管理工作一定会有一些经常固定使用,但有很长的命令。那可以给这些长串的命令定义别名。之后需要使用常用的长串命令时就直接以定义的别名来替代。   

                系统中已经有一些默认的命令别名。可以使用alias查看。也可以查看家目录的隐藏文件(~/.bashrc)。这个属于定义用户使用的别名。如果想定义全部用户(包括root)都使用某一个长串命令的别名。可以将长串命令定义到/etc/bashrc文件中。要是定义的别名立即生效需要使用(source /etc/bashrc或者 source ~/.bashrc)命令。

                在命令行定义的别名只会在当前终端生效,重启、注销或打开一个新的终端都是不生效的。

        系统默认自带的别名示例:

11c6b98ee9741e10a1a5a5e9873665188db.jpg

        语法: alias+空格+[别名]=[需要执行的长串命令]

                 取消已经定义的别名:  unalias+空格+[已经定义的别名]    

        注意: 在定义别名时不允许等号两边的第一位有空格出现

2.6 相对和绝对路径   

            绝对路径是以/目录写起,例如:vi /etc/sysconfig/network-scripts/ifcfg-ens33  

            相对路径不是以根目录写起,例如: cd /etc/sysconfig/network-scripts/       (cd进入指定的目录)

                                                                 vi ifcfg-ens33                                         (上一步已经进入到与ifcfg-enss33配置文件同一个目录下,就可以使用命令操作文件)

            约定: 以家目录 ~ 开始的的也算绝对路径。

2.7 CD命令    

        cd 英文全称'chage diretcory'取每个单词的首字母缩写。其功能是从当前工作目录切换到指定的工作目录。

          语法:   cd+空格+路径

           常用选项或参数:

                cd -  切换当前用户所在的工作目录最近使用的一次工作目录。当使用'-'选项时,将会从当前目录切换系统环境变量"OLDPWD"对应的值得目录路径。

                cd ~ 使用'~'选项时,将会从当前目录切换到系统环境变量"HOME"对应值的目录路径,即当前用户的家目录所在的路径

                cd ..  当使用".."选项时,将会从当前目录切换到当前目录的上一级目录所在的路径

                 特别的两点 :  1、工作目录在/下时,执行"cd .."或"cd /.."都是不能离开/目录下的

                                        2、"cd ~" 切换工作目录到家目录,其实可以直接使用"cd"不接任何参数,同样的效果。可以理解为'cd=cd ~'

2.8 创建和删除目录mkdir rmdir 

    mkdir 英文全称'make directories'其功能是创建目录,默认情况下,如果要创建的目录已经存在,则会提示此文件已存在。不会继续创建目录。

            语法 mkdir+空格+参数+目录名称

           参数说明:

                           mkdir -p   递归创建目录,递归的意思就是创建父目录的子目录的子目录的子目录......  (及时要创建的目录事先已经存在也不会有给出提示目录已经存在)

                           mkdir -v   显示创建目录的过程,一般配合-p参数使用。

    说明:  mkdir命令可以同时创建多个目录 ,目录名不同的目录,格式为mkdir dir1 dir2 .. ;也可以同时创建多个目录,目录名以序列形式创建,格式为mkdir dir{1..10}
6dd25fc5362b8a7d07182eac3e480afec64.jpg

    rmdir 用于删除空目录,当目录不为空时,命令不起作用。

        语法: rmdir+空格+参数选项+为空的目录名   

        参数选项:    

                        rmdir -p 递归删除目录,当子目录删除后其父目录为空时一并删除。如果整个路径删除被删除或者由于某种原因保留了部分路径,则系统在标准输出上显示相应的信息。

                        rmdir -v  显示命令执行过程。

          说明:  rmdir命令也可以同时删除多个目录,但是这些目录一定为空目录。

2.9 rm命令   

        rm 作用是删除一个或多个文件(目录) 。最常用的选项参数有以下两个

            语法: rm+空格+选项参数+文件或目录名

             参数选项 

                                rm -r 删除目录使用的选项,比rmdir厉害的地方在于可以删除非空目录,连目录的内容一起删除。

                                rm -f 表示强制删除,在你删除文件时系统都会友情提示是你是否要删除文件,使用这个参数就不会给出友情提示。

            说明: 不能删除所在的工作目录,要删除工作的目录一定要切换到当前工作目录的上一级目录删除。示例如下:

[root@linux_202 1]# pwd      
/tmp/1
[root@linux_202 1]# rm -rf /tmp/1   
[root@linux_202 1]# rm -r /tmp/1 
rm: cannot remove ‘/tmp/1’: No such file or directory
[root@linux_202 1]# rm -rf /tmp/1 
[root@linux_202 1]# pwd
/tmp/1

2.10 环境变量PATH

        环境变量PATH: 是定义命令执行的路径(绝对路径),命令也是文件(二进制文件),在没有定义PATH环境变量时,命令行执行命令时都需要使用命令文件的绝对路径。

        下面就演示一下定义PATH环境变量:

[root@linux_202 ~]# cp /usr/bin/ls /root/ls2  (拷贝一份和ls功能相同的命令文件到/root/下改名为ls2)
[root@linux_202 ~]# ls /root/ls2              (查看文件拷贝成功没有)
/root/ls2                                     (有内容说明拷贝成功)
[root@linux_202 ~]# ls2                       (执行这个命令文件)
-bash: ls2: command not found                 (提示没有这个命令)
[root@linux_202 ~]# PATH=$PATH:/root          (定义PATH环境,在原有PATH环境上加上/root路径)
[root@linux_202 ~]# echo $PATH                (查看当前PATH环境)
/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin:/root (PATH环境变量以:分隔的多个/root路径)
[root@linux_202 ~]# ls2                       (定义完成后,执行ls2命令)
anaconda-ks.cfg  ls2                          (ls2命令结果和ls命令结果相同)
以上是自定义PATH环境变量。

        这种自定义环境变量时当前对话生效的,重启、登出或新开终端都是无效的。需要改变PATH永久生效方法见下表:

修改方法二:
通过修改.bashrc文件:
vi ~/.bashrc 
//在最后一行添上:
export PATH=/root:$PATH
生效方法:(有以下两种)
1、关闭当前终端窗口,重新打开一个新终端窗口就能生效
2、输入“source ~/.bashrc”命令,立即生效
有效期限:永久有效
用户局限:仅对当前用户
修改方法三:
通过修改profile文件:
vi /etc/profile
/export PATH //找到设置PATH的行,添加
export PATH=/root:$PATH
生效方法:系统重启
有效期限:永久有效
用户局限:对所有用户
修改方法四:
通过修改environment文件:
vim /etc/environment
在PATH="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin"中加入“:/root”
生效方法:系统重启
有效期限:永久有效

2.11 cp命令   

        cp命令可以理解为英文单词copy的缩写,其功能为复制文件或目录

    语法: cp [选项] [源文件] [目标文件]

    cp命令的参数选项及说明

        -i 覆盖已有的文件或目录提示用户确认

        -r 递归复制目录,即复制目录下的层级的子目录及文件。

2.12 mv命令

     mv 移动或重命名文件(目录)

       【语法格式

                    mv [option] [source] [dest]

                    mv [选项] [源文件] [目标文件]

        当目标文件不存在时,则重命名;当目标文件存在时,则提示是否覆盖
        当目标目录不存在时,则重命名一个目录;当目标目录存在时,则将源目录移动到目标目录下。

2.13 文档查看cat_more_less_head_tail

       cat查看文件  

                -n  查看文件,从1开始对所有输出的内容按行编号,包括空行也会显示行号。

            76560aa85f760650c31f2f0b1aaaaeb739a.jpg

            -A 显示所有内容并显示不可打印字符,在行尾显示结束符$

ee39224170124d5e373e9dd65d30361d6b5.jpg

more 分页显示文件内容
            查看一个文件的内容,当文件内容太多,一屏显示不能显示时,按空格可以据需查看

               空格键 向下翻一页(一屏)

                b键   向上翻一页(一屏)

less  分页显示文件内容

            less与more相同,单要比more 功能多一些。可以理解为more的升级版。

         空格键   向下翻页

          b键      向上翻页

           g键     移动到首行

            Shift+g 移动到结尾行

            /字符串   回车键确认 n键 显示下一个匹配的字符串 Shift+n显示上一个匹配的字符串

            ?字符串   回车键确认 n键 显示下一个匹配的字符串 Shift+n显示上一个匹配的字符串

head命令用于显示文件内容前面10行内容

       -n 显示文件内容的行数 

                                b75cb2d9a76e663f7a58a5d452c74999509.jpg

                           -n后面有无空格都是可以的,可以简写 -数字  显示需要的多少行。

                                        3593b0d2b130c9e91119422a9588c20d6a4.jpg

tail命令与head相反,默认显示文件结尾的10行内容。

    常用参数有 -f  实时查看文件结尾的内容,适合查看动态文件,比如日志文件。

                      -F 功能等同于 -f --retry

                                        72c40fe44c2bc064c16efd7d0fad21080ac.jpg

                      --retry 不停的尝试打开文件直到打开为止。和-f 参数合用

2.14 文件或目录权限chmod  

          命令chmod(change mode简写)用于改变用户对文件/目录的读写执行权限;
        格式:chmod xyz 文件名 (xyz是数字0-7,八进制)

        7a87a6c6e25350d381e107055d4e8c5fa89.jpg    

        linux默认目录权限最高为777;默认文件权限最高为666

前面文件属性的时候有讲到,文件或目录的详细信息分9段,第1段drwxr-xr-x包含文件的类型和所有者,所属组,其他用户对文件的权限;

    r(read)读    w(write)写    x(executable)执行    r=4 w=2 x=1
注意:目录必须有x权限,文件没有x权限

     chmod //修改文件和目录的权限

e2f8329d1b1c75b0baca46ddae97ab60e87.jpg

     chmod –R //联级更改,修改目录本身及目录下所有的子目录文件权限

3575db52767578e1c4674aef1c755351ff3.jpg

还有一种修改方法:

     chmod a=rwx,g=rx,o=rx 文件名
  • u(user) 所有者
  • g(group)所属组
  • o(others)其他用户

            0d01b35e14a98c94cd0e7ff7a0b15d4a461.jpg

  • (all)全部 包括用户、用户组、其他用户

        639e06741fa208130cd5c68e0b4844a53a2.jpg

2.15 更改所有者和所属组chown        

  • chown(change ownar)命令用来修改文件的所属主,所属组,其他用户
  • chown -R 作用于目录联级修改,目录本身和子目录文件。
[root@linux_201 ~]# useradd test                          #创建test用户
[root@linux_201 ~]# groupadd group                        #创建group用户组
[root@linux_201 ~]# touch /tmp/1.txt                      #创建1.txt普通文件
[root@linux_201 ~]# ls -l /tmp/1.txt                      #查看1.txt普通文件的所属主与所属用户组
-rw-r--r-- 1 root root 0 Oct 22 09:05 /tmp/1.txt          #输出查看结果   
[root@linux_201 ~]# chown test:group /tmp/1.txt           #修改1.txt普通文件的所属主与所属用户组
[root@linux_201 ~]# ls -l /tmp/1.txt                      #查看1.txt普通文件的所属主与所属用户组
-rw-r--r-- 1 test group 0 Oct 22 09:05 /tmp/1.txt1        #输出查看结果
[root@linux_201 ~]# chown test /tmp/1.txt            #修改文件所属用户
[root@linux_201 ~]# chown test:group /tmp/1.txt      #修改文件所属用户及所属用户组
[root@linux_201 ~]# chown test.group /tmp/1.txt      #修改文件所属用户及所属用户组
[root@linux_201 ~]# chown .group /tmp/1.txt          #修改文件所属用户组  
[root@linux_201 ~]# chown :group /tmp/1.txt          #修改文件所属用户组 
[root@linux_201 ~]# ls -l /tmp/1.txt
-rw-r--r-- 1 test group 0 Oct 22 09:05 /tmp/1.txt

131750_V2Ys_3791387.png

  • chgrp 修改文件属组 chgrp group1 1.txt
    chgrp -R group1 111

2.16 umask

        umask XXX(3个x表示数字)
        umask 022

132244_UZBs_3791387.png

        注意:通常只用到后面三位022 --- -w- -w-

        系统默认情况下目录权限值为755,文件权限为644,这个是有umask规定的

 777  rwx rwx rwx        666  rw- rw- rw-
-022   --- -w- -w-        -022  --- -w- -w-  
=      rwx r-x r-x                      rw- r-- r--
=      7  5   5                          6   4   4

2.17 隐藏权限lsattr_chattr

  1. lsattr -d 查看目录本身特殊属性

132704_HDmj_3791387.png

  1. lsattr -R 联级,查看目录下子目录子文件的特殊属性

132853_N4Im_3791387.png

    2、chattr 

  • chattr +a 增加后只能追加,不能删除或者直接更改它的内容,非root用户不能设置该属性
  • chattr +i 增加后不能做任何操作,不能添加,删除,重命名,设定链接,修改属主,属组。
  • chattr +A 增加后文件或者目录的atime将不可被修改
  • chattr +S 增加后会将数据同步写入磁盘中
  1. 例子1:给文件1.txt加上i权限,然后进行删除,修改、追加内容,修改文件属性,所有者,所属组。

133515_Lq1n_3791387.png

删除i权限后就能正常修改了。

133625_is83_3791387.png

  1. 例子2:给文件1.txt加上a权限,然后进行删除,修改、追加内容,修改文件属性,所有者,所属组。

133949_jPxM_3791387.png

  • 注意:1.txt加上a权限后,只能进行追加内容
  • 针对目录来添加a,i权限
  1. 给目录加一个i 属性后,不能给这个目录做任何操作,但是不妨碍已经存在的文件进行修改内容,但不能删除这个文件。 例子:

140555_ncxn_3791387.png

  1. 给目录加一个a 属性后,该目录能创建文件,修改文件里面的内容,但是不能删除。 例子:

140901_Ojma_3791387.png

2.18 特殊权限set_uid

            set_uid:该权限针对二进制可执行文件,使文件在执行阶段具有文件所有者的权限; 通俗一点讲就是,普通用户想要访问一个没有其他用户可执行权限的目录时,暂时借助二进制文件的所属主权限去访问这个目录,如果没有s权限,就不能访问; 注意:普通用户要有这个二进制文件的可执行权限。如果没有,那也是不能访问的。 我们系统中passwd命令就具有s权限。当普通用户执行passwd命令的时候,可以临时获得root权限,从而可以更改密码;

系统修改密码命令:passwd

115347_tV7s_3791387.png

系统密码文件:/etc/shadow

115307_22p9_3791387.png

注意:这里所有者,所属组,其他用户都没有执行权限,但是root是超级用户,它具有至高无上的权限,所以root用户是可以修改密码的;按理说普通用户没有执行权限是没办法去修改密码的,但是我们passwd命令具有s权限,普通用户在使用命令passwd时,可以临时获取到passwd所属主的root权限,所以能修改密码。

例子:使用普通用户查看/root/目录:

115958_pOK9_3791387.png

我们怎样才能让普通用户yyl打开/root/目录呢? 解:我们给ls命令加上一个s权限,让用户yyl临时拥有ls的所有者权限;例如:

140119_oexK_3791387.png

设置s权限:

chmod u+s 二进制文件名
chmod u=rws 二进制文件名
chmod 4755 二进制文件名 这个4是这样得出来的:
suid = 4
sgid = 2
stick_bit = 1

取消s权限:

chmod u-s
chmod u=rwx
chmod 755

2.19 特殊权限set_gid

            

set_gid:该权限可以作用在二进制可执行文件上,也可以作用在目录上。当作用在文件上时,其功能和set_uid一样,它会使文件在执行阶段具有该文件所属组的权限。作用在目录上时,任务用户在此目录下创建的文件和目录都具有和该目录所属组相同的组。

设置s权限:

chmod g+s 二进制文件名或目录
chmod g=rws 二进制文件名或目录
chmod 2755 二进制文件名或目录

例子:作用在二进制文件上

141334_K8lj_3791387.png

例子:作用于目录上

143906_A8wH_3791387.png

2.20 特殊权限stick_bit

    

特殊权限stick_bit

sticky_bit:防删除位。一个目录下的文件能不能被删除,不是取决于文件本身的属组属组还有其他权限, 而是在于这个文件所在目录的权限是否可读可写可执行,如果目录可写,那就意味着我们可以删除目录下的任何文件。当一个目录的权限为其他人可读可写可执行的时候,那么其他用户都可以删除这个目录下的文件,包括root文件,为了防止文件被其他用户删除,我们给这这个目录增加一种特殊权限:sticky,防删除位,要用root用户操作。这样一个用户就不能删除另一个用户创建的文件了。只有root和创建文件本人才能够删除。

/tmp/ 这个目录有这个权限,哪个用户创建的文件或文件夹都只有它本身和root用户有权限删除和更改

(谁的文件谁做主)

更详细参考:http://blog.51cto.com/walkerqt/1354117 

特殊权限的数值表示
三种特殊权限可以用单独的一位8进制数值表示

SUID、SGID和sticky-bit的数值表示

SUID SGID sticky 二进制 八进制 说明
- - - 000 0 不设置特殊权限
- - t 001 1 只设置sticky
- s - 010 2 只设置SGID
- s t 011 3 只设置SGID和sticky
s - - 100 4 只设置SUID
s - t 101 5 只设置SUID和sticky
s s - 110 6 只设置SUID和SGID
s s t 111 7 设置三种特殊权限

153816_BvVp_3791387.png

设置t权限:

chmod o+t 目录
chmod o=rwt 目录
chmod 1755 目录

例子:

145105_7wLw_3791387.png

2.21 软链接文件

       软链接:是建立一个独立的文件,当读取这个链接文件时,它会把读取的行为转发到该文件所链接的文件上。

          软链接 相当于一个快捷方式

          软链接的大小取决于软链接源文件的路径长短

           软链接支持文件和目录

            软链接的源文件不能被删除,如果删除源文件,软链接文件会失效;软链接删除,源文件不受影响。 创建软链接格式:

            尽量使用绝对路径来做软链接 ln -s 源文件 目标文件

155954_9C91_3791387.png

比较源文件和软链接的大小,软连接的大小与源文件的长度有关

160103_HGaW_3791387.png

        du -sh 文件 \查看文件大小

        df -h \查看磁盘情况

2.22 硬链接文件

        硬链接:当系统要读取一个文件时,会先读取inode信息,然后再根据inode的信息到块区域将数据取出来。而硬链接就是直接在建立一个inode链接到文件放置的块区域,即进行硬链接时,该文件的内容没有任何变化,只是增加了一个指向这个文件的inode,并不会额外占用磁盘空间。

  • 硬链接不能夸文件系统,不同的文件系统有不同的inode table;
  • 硬链接不能链接目录; 格式: ln 来源文件 目标文件

162233_N5sc_3791387.png

162354_iLPF_3791387.png

注意:我们创建的硬链接和源文件的inode一样,大小一样,真正存文件的是在inode号这个块里面

删除源文件,对硬链接没影响,对软连接有影响。

162637_dAZ8_3791387.png

硬链接不能链接目录 软连接可以

163437_AiCt_3791387.png

2.23\2.24\2.25 find命令

           搜索工具 which :用于查找可执行文件的绝对路径 

            d63e0147b135dc06a21a8400cf8c344e2b4.jpg

        whereis:通过预先生成的一个文件列表库查找与给出的文件名相关的文件; 格式: whereis [选项] 文件名 -b:只查找二进制文件; -m:只查找帮助文件; -s:只查找源代码文件;

            8c60d79a5348323241d73f20847b41c4c40.jpg

    locate:和whereis类似,也是通过查找预先生成的文件列表库来查找文件在哪里,后面直接跟文件名;需要安装mlocate软件包:

[root@linux_201 ~]# yum install -y mlocate   
[root@linux_201 ~]# updatedb 
[root@linux_201 ~]# locate 122
/usr/lib/firmware/mellanox/mlxsw_spectrum-13.1420.122.mfa2
/usr/lib/firmware/pcxhr/dspb1222e.b56
/usr/lib/firmware/pcxhr/dspb1222hr.b56
/usr/lib/firmware/pcxhr/dspd1222.d56
/usr/lib/firmware/pcxhr/xlxc1222e.dat
/usr/lib/firmware/pcxhr/xlxc1222hr.dat
/usr/lib/modules/3.10.0-862.el7.x86_64/kernel/sound/usb/usx2y/snd-usb-us122l.ko.xz
/usr/lib64/gconv/IBM1122.so
/usr/share/alsa/firmware/usx2yloader/us122.conf
/usr/share/alsa/firmware/usx2yloader/us122.prepad
/usr/share/alsa/firmware/usx2yloader/us122.rbt
/usr/share/alsa/firmware/usx2yloader/us122fw.ihx

        安装好后,第一次运行locate会报错,需要运行updatedb命令立即生成或者更新这个库文件;默认情况下这个库每周更新一次;locate不适合精准查找。

find 命令

    格式:find [路径] [参数]

                    -type 文件类型:f(文件)d(目录)l(软链接)s(sock)d(块设备)c(串口设备键盘鼠标等)

                    -name 文件名

                    -size 文件大小(10K;10M等)

                    -mmin +- 分钟数

                    -inum 跟inode,通过inode来查找一个文件的硬链接

                    -o 或者

                    -exec <执行指令>:假设find指令的回传值为True,就执行该指令。

                    -atime +n/-n 表示访问或执行时间大于或小于n天的文件。

                    -ctime +n/-n 表示更改inode属性(如更改所有者,权限或者链接)的时间大于或小于n天的文件。

                    -mtime +n/-n 表示创建或者修改文件时间大于或小于n天的文件,该参数用得最多

                                -1 小于1天;1天以内         +1 大于1天;1天以前 不能等于1

    例子:

            查找1天内创建或修改的后缀名为.conf的文件

                        15bb15fcf0af2f56a1c22ba38e7d32221f6.jpg

            查找root目录下1天内创建或修改的文件

                        d5975a09e589cc897f4257cf16e732f3e82.jpg

           查找root目录下10分钟内创建的文件

                    433cbae12f5a5ea5c050834b8d04826f698.jpg

            查找root目录下10分钟创建或修改的文件,并且显示出具体修改时间

                    28060aab352d248eb164955afb4eb4280f8.jpg

                           {}表示前面列出来的文件,\脱意符号,;换行符

            查找目录/root/下1天内修改的文件,并且备份一份

                a5941fb5679992eeaa138829a4032ab6073.jpg

            查看root目录下小于6k的文件,并且列出它具体的大小

                    4b6c84569dee9d10d8460a721ab9aadf6fc.jpg

            通过inode来查找一个文件的硬链接

                    79e55e455ec7894271ff4964c8477b0d403.jpg

    start命令 

                stat命令可以列出文件的atime,mtime,ctime

              8495ff3a96db287e48f603344f57374fa97.jpg

2.26 文件名后缀    

在Linux系统中,虽然扩展名没有什么实际意义,但是为了兼容Windows。同时,便于我们大多数习惯了Windows的用户区分文件的不同,所以我们还是习惯通过扩展名来表示不同文件的类型.举例如下

    1)源码文件.tar、.tar.gz、.tgz、.zip、.tar.bz表示压缩文件,创建命令一般为tar,gzip,zip等

    2).sh表示shell脚本文件.通过shell语音开发的程序

    3).pl表示perl语言文件.通过perl语言开发的程序

    4).py表示pythou语言文件,通过pythou语言开发的程序

    5).html、.htm、.php、.jsp、.do表示网页语言文件

    6).conf表示系统服务的配置文件 配置文件有时也使用.cfg

    7).rpm表示rpm安装包文件

    8).lock锁(lock)文件:用来判断程序或设备是否正在被使用

    9).back 表示备份文件

    10).bz2 使用bzip2压缩的文件

    11).gz 使用gzip压缩的文件

    12).tar 使用tar(tape archive,磁带归档的简写)

    13).tbz 使用tar和bzip压缩的文件

    14).tgz 使用tar和gzip压缩的文件

    15).rar Windows中常见,Linux中使用比较少

    16).zip MS-DOS中常见.Linux下使用gzip压缩,而.zip归档较少见

2.27 Linux和windows互传文件

yun install -y lrzsz         #安装lrzsz工具包

            rz :从Windows上传到Linux

            sz:从Linux上传到Windows

 

转载于:https://my.oschina.net/u/3992047/blog/2250589

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值