zoukankan      html  css  js  c++  java
  • 文件目录管理

      系统目录结构

     查看目录含义

    man hier

    查看网络信息

    netstat -nltp

    1.ls就是list的意思,列举目录或者文件

    2.home目录是家目录,每个用户都有一个家目录

    3.root用户的家目录是根root,普通用户的家目录在/home/下   例如/home/sunyuju

    4.useradd 添加普通用户,用useradd命令创建的普通用户,在/home目录下都有一个对应的用户名文件及是用户的家目录

    为什么配置密钥登录的时候要配置到/root/.ssh/authorized_keys文件中?

    答:因为ssh的配置文件中指定了这个文件 /etc/ssh/sshd_config

    5.如果某个命令没有安装用yum 命令安装

    例如:tree 命令没有安装 yum install -y tree

    6.tree命令是以树形展示目录结构,查看命令怎么用 tree --help

    7.man命令是显示命令的帮助文档 man tree

    8.想查看目录的两层用 命令 tree -L 2

    9.bin sbin  usr/bin  usr/sbin  目录下保存的都是常用命令 例如 ls  tree  vi 

    为什么我们能直接用这些命令呢,因为PATH环境变量的作用

    bin目录下的命令和  sbin下的命令有什么区别?

    sbin下面的命令都是root用户用的 普通用户没有权限用

    bin下是普通用户用的命令 

    10 .boot是启动目录

    11.dev目录是设备文件目录 鼠标 键盘

    12.etc目录是配置文件目录

    13.home目录是用户的家目录

    14.lib 和lib64目录是系统的库文件,相当于Windows下面的dll文件

    15.查看一个命令依赖那些库? 用ldd /bin/ls

    16.media 媒见目录 mnt挂载目录 opt  proc进程

    17.root 目录 root用户的家目录

    18.run 进程目录

    19.srv服务产生的文件

    20.sys目录系统内核相关的文件

    21.tmp 系统的零时目录

    22.usr 用户相关的目录 通常将apach放到这里

    23.var目录 日志相关的放在这里

    ls命令

     ls 

    inode:储存文件的元信息,比如文件的创建者、文件的创建日期、文件的大小等等。这种储存文件元信息的区域就叫做inode,中文译名为"索引节点"。

    1.-rw-------表示权限   1 有多少个文件用同一个inode  

    2.ls -i 查看inode号 

    3.- 代表文件类型   root 表示所有者,后面的root表示所有组 1422 表示文件大小,单位是b 后面是时间和文件名

    4.ls -a 查看所有文件,包括隐藏文件。

    5.

    这三个目录的inode号是一样的

    6.ls -alt 

    t表示正序排2.

    别名alias

    1.which  ll    查看ll命令的路径

    2.alias  查看系统哪些命令有别名

    3.创建:alias aming='ls -lah' 

    4.删除:unalias

    相对和绝对路径

    1.绝对路径:从根开始的都是绝对路径

    /root/   /usr/

    2.相对路径是,相对当前所在位置的路径

    相当于.根的路径

    cd命令

    1.cd 的意思是 change directory

    2.cd - 回到上一目录

    cd .. 到上一目录

    cd  ~ 到家目录

    mkdir和rmdir

    mkdir创建目录,目录不存在不能创建用 -p 参数强制创建目录

    -v 参数显示创建目录的过程

    rmdir的用途是删掉目录。他的功能比较鸡肋,它只能删除空的目录。

    rm

    1.rm -f 强制删除文件

    2.rm -r级联的删除目录和文件

    3.rm -v查看删除过程

    4.!su 表示执行最近执行的已su开头的命令

    环境变量$PATH

    1.环境变量指$PATH

    [root@sunyujun01 ~]# echo $PATH
    /usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin
    [root@sunyujun01 ~]# 
    

    2.为什么我们可以执行ls命令,就是因为ls位于环境变量下面的某个文件下面,下面例子中ls命令位于/usr/bin/目录下

    [root@sunyujun01 ~]# which ls
    alias ls='ls --color=auto'
        /usr/bin/ls

     3.临时增加命令,将ls1命令放到dir目录下并将dir目录添加到环境变量中,然后测试ls1命令和ls命令完全一样。

    [root@sunyujun01 ~]# ls
    anaconda-ks.cfg  dir           
    [root@sunyujun01 ~]# cp /usr/bin/ls ./dir/ls1          
    [root@sunyujun01 ~]# PATH=$PATH:dir/   将某个目录添加到环境变量中
    [root@sunyujun01 ~]# echo $PATH
    /usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin:dir/
    [root@sunyujun01 ~]# ls1
    anaconda-ks.cfg  dir
    

    4.永久加ls1命令编辑profile文件在文件尾加上PATH=$PATH:/root/dir/

    [root@sunyujun01 ~]# vi /etc/profile

    5.删除ls1命令 直接重新设置环境变量,第二种删除profile文件中的PATH=$PATH:/root/dir/

    [root@sunyujun01 ~]# PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin
    

    cp命令 

     1.copy 拷贝文件或目录

    [root@sunyujun01 ~]# cp anaconda-ks.cfg dir/
    [root@sunyujun01 ~]# ls dir/
    a  anaconda-ks.cfg  ls  ls1
    

    2.拷贝目录用-r 参数

    [root@sunyujun01 ~]# mkdir dir1
    [root@sunyujun01 ~]# ls
    anaconda-ks.cfg  dir  dir1
    [root@sunyujun01 ~]# cp dir dir1
    cp: 略过目录"dir"
    [root@sunyujun01 ~]# cp -r dir dir1
    [root@sunyujun01 ~]# ls
    anaconda-ks.cfg  dir  dir1
    [root@sunyujun01 ~]# cd dir1/
    [root@sunyujun01 dir1]# ls
    dir
    

    3.!$上条命令的最后一个参数,以空格分割

    [root@sunyujun01 dir1]# ls dir
    a  anaconda-ks.cfg  ls  ls1
    [root@sunyujun01 dir1]# tree !$
    tree dir
    dir
    ├── a
    │   └── b
    │       └── c
    ├── anaconda-ks.cfg
    ├── ls
    └── ls1
    
    3 directories, 3 files
    

    4.-i 表示 安全参数,会问是否创建

    [root@sunyujun01 dir1]# which rm
    alias rm='rm -i'
    	/usr/bin/rm
    

    5.拷贝目录的时候如果目标目录已存在,会将拷贝的目录放到目标目录下面

    mv命令

    1.移动文件或目录,如果在同一目录下是重命名

    2.移动同时改名字

    [root@sunyujun01 ~]# mv dir/ls1 dir1/ls2
    [root@sunyujun01 ~]# tree
    .
    ├── anaconda-ks.cfg
    ├── dir
    │   ├── a
    │   │   └── b
    │   │       └── c
    │   └── anaconda-ks.cfg
    └── dir1
        ├── dir
        │   ├── a
        │   │   └── b
        │   │       └── c
        │   ├── anaconda-ks.cfg
        │   ├── ls
        │   └── ls1
        ├── ls
        └── ls2
    

    3.mv命令也有i选项,所以当移动的文件在目标目录已经存在则会询问是否覆盖

    [root@sunyujun01 ~]# which mv
    alias mv='mv -i'
    	/usr/bin/mv
    

    文档查看cat_more_less_head_tail

    1.cat命令:查看文件内容,加-n选项 显示行号

    2.tac命令 和cat命令相反,倒序查看文件内容

    3.more命令查看文件内容,只是显示一屏,按空格键显示剩下的,按ctr+b往上翻,ctr+f往下翻

    4.wc -l 显示文件行数

    5.将一个文件的内容追加到另一个文件内容后

    6.less命令和more命令类似,支持方向键往上看,可以在文件中用/+(?加关键字搜索是从后往前搜)关键字进行搜索,对搜索的内容按n查看下一个,按shift+n看上一个

    7.按小g定位到行首,大g定位到行尾

    8.head命令查看文件的头10行,指定查看几行用 -n +行数

    9.tail命令查看文件的尾10行,可以查看动态文件 用 tail -f  文件名

    文件或目录权限chmod

    1.rw-r--r--(644)   rwx:读写执行,rw-:所有者 r--:所属组 r--  其他用户的权限 r用数字4 w用数字2 x 用数字1表示

    2.chmod命令更改文件权限,有的目录或文件权限后面有一个.这个点号表示文件受制于selinux,关闭selinux之后再创建文件就不会有这个点了。

    3.零时关闭selinux: setenforce 0,开启selinux:setenforce 1 查看selinux状态:getenforce 彻底关闭selinux编辑/etc/selinux/config,将SELINUX=enforcing改为disabled,然后重启selinux

    4.chmod 命令更改目录权限只是针对目录本身,目录里面的文件的权限还是之前的权限,如果想将文件内部的文件也同时更改权限可以用 -R 选项 chmod -R 777 目录名,也可以用u、g、o改权限

    更改所有者和所属组chown

    1.chown修改文件所有者,将dir目录的所有者有root改为了sunyujun

    2.修改文件的所属组chown sunyujun:sunyujun  dir 或者用chgrp命令,chown命令也支持 -R 参数 chown -R sunyujun:sunyujun  filename

    umask

    1.umask 决定了我们默认建立一个文件或者目录的默认权限755  664。

    2.umask u=, g=w, o=rwx 执行该命令以后,对于下面创建的新文件,其文件主的权限未做任何改变,而组用户没有写权限,其他用户的所有权限都被取消,
    应注意:操作符“=”在umask命令和chmod命令中的作用恰恰相反。在chmod命令中,利用它来设置指定的权限,而其余权限则被删除;但是在umask命令中,它将在原有权限的基础上删除指定的权限。

    不能直接利用umask命令创建一个可执行的文件,用户只能在其后利用chmod命令使它具有执行权限。假设执行了命令umask u=, g=w, o=rwx,虽然在命令行中,没有删去文件主和组用户的执行权限,但默认的文件权限还是640(即 rw-r-----),而不是750(rwxr-x---)。但是,如果创建的是目录或者通过编译程序创建的一个可执行文件,将不受此限制。在这种情况 下,会设置文件的执行权限。 也可以使用八进制数值来设置mode。由于在umask中所指定的权限是要从文件中删除的,所以,如果该文件原来的初始化权限是777,那么执行命令umask 022以后,该文件的权限将变为755:如果该文件原来的初始化权限是666,那么该文件的权限将变为644。

    目录:rwxrwxrwx 减去 ----w--w- = rwxr-xr-x。 777 - 022 = 755

    文件没有执行权限,为rw-r--r--所以就是644了。 666- 022 = 644

    1.touch命令创建文件默认权限为644  mkdir 创建目录默认权限为755

    2.root 的umask的值为0022

    3.特殊情况umask设置为003,创建文件。

    4.特殊情况umask设置为003,创建目录

    隐藏权限lsattr_chattr

    1.chattr设置隐藏权限,用ls -l 是看不到的,

    2. chattr + i 文件 :设定文件不能被删除、改名、设定链接关系,同时不能写入或新增内容。i参数对于文件 系统的安全设置有很大帮助。

    3.lsattr是查看文件权限的。

    4.用chattr -i 是减去i权限 

    5.chattr +a 权限是只能追加和修改时间信息,不能删除,不能修改,只能往后追加内容,

    6.chattr -a 去掉权限 

    7.给一个目录加了i权限或a权限,目录下面的文件可以写

    8.lsattr -R 列出目录多层结构,不加-R只是列出一层。

    9.lsattr -a 可以看到隐藏的文件

    特殊权限set_uid

    作用是保证普通用户临时拥有root用户的身份,文件必须是二进制文件。

    1.

    2.切换到某个用户下

    [root@sunyujun01 ~]# su - sunyujun
    

    3.当用户sunyujun想看root目录下文件时权限时不够的,这是我们可以用set_uid命令

    这时/usr/bin/ls也变红了,也可以用chmod u=rws /usr/bin/ls修改

    再切换到sunyujun目录这是就可以查看了

    4.去掉set_uid权限 chmod u-s /usr/bin/ls

    特殊权限set-gid

    和set-uid相识普通用户临时拥有所属组的身份

    1.当给一个目录设置了set-gid权限之后,再在目录里创建目录或文件,目录或文件的所属组为设置的所属组

     

    特殊权限stick_bit

    1.(防止别人删除自己的文件)root除外,权限中的t是防删除位 tmp目录下的文件可以修改,但是没有删除权限

    2.一个目录的权限是777,他下面的文件及时用户没有执行的权限也可以删除,因为能不能删除不是看到对文件的权限而是,文件所在的目录的权限,用上stick_bit之后用户就不能删除了。

    软链接文件

    1.软连接相对与Windows中的快捷方式,支持对文件和目录做软连接,命令为ln -s  源文件   目标文件

    2.给dir目录下的123.txt文件创建软连接 ln -s  /dir/123.txt  123

    3.注意的是做软连接尽量使用绝对路径

    硬链接

    1.不支持对目录做硬链接,只支持对文件做硬链接,命令格式为ln 源文件  目标文件

    2.硬链接创建的文件两个文件的inode信息一样,删除文件另一个文件不受影响,还是存在的,硬链接也不会占用多余的空间。

    3.不能跨分区做硬链接

    find命令

    1.查找相关命令  whereis   ls   locate ls   which ls

    2.find命令格式find  目录路径(不指定默认为当前目录) -type  f(文件)  d(目录) -name  “字符串”

    3. find -name "*.php" -exec grep 'sunyujun' -H {} ; 查找所有包含sunyujun字符串的php文件并将文件目录和文件名列出来

    3.stat 命令查看文件的具体信息

    4.访问时间(-atime/天,-amin/分钟):用户最近一次访问时间。

     修改时间(-mtime/天,-mmin/分钟):文件最后一次修改时间。

     变化时间(-ctime/天,-cmin/分钟):文件数据元(例如权限等)最后一次修改时间。

    5.查找一天以内更改过的文件

    6.-o 是或者的意思 -size  文件大小

    7.查找inode号和dir文件相同的文件(硬链接)

    8.查找一小时以内修改过的文件

    9.格式 find   path   -option   [   -print ]   [ -exec   -ok   command ]   {} ;

    查找当前目录下的所有文件并列出来 find ./ -type f -exec ls -l {} ;

  • 相关阅读:
    接口测试之Postman简介
    postman发送get请求
    postman添加权限验证
    接口测试基础
    postman发送post请求
    postman测试上传文件
    1 R语言介绍
    《荣枯鉴》明鉴卷六
    《荣枯鉴》节仪卷五
    《荣枯鉴》交结卷四
  • 原文地址:https://www.cnblogs.com/sunyujun/p/7811935.html
Copyright © 2011-2022 走看看