Linux命令---文件与目录管理

1.(常用)Linux特殊目录介绍
    .    代表此层目录
    ..   代表上一层目录
    -    代表前一个工作目录(即:上上目录)
    ~    代表【目前用户身份】所在的家目录
    ~account 代表account这个用户的家目录(account是个账号名称)
 
2.(常用)处理目录/文件指令
    cd     切换目录
    pwd    显示当前目录
    mkdir  建立一个新的目录
        参数:
          -m   配置文件的权限!直接设定,不需要看预设权限(umask)的脸色
               eg:mkdir -m 711 test.txt   即直接对创建的文件夹进行权限设置
          -p   递归创建多个文件夹  
               eg:mkdir -p /test1/test2/test3
    rmdir  删除一个空的目录(非空目录删除会失败)
  
    # 删除当前目录下除 'ok.jsp'外的所有文件
    rm -rf `ls | grep -v 'ok.jsp'`
 
    ls  显示当前目录信息
        参数:
          -a:显示隐藏文件
          -d: 仅列出目录本身,而不是列出目录内的文件数据(只罗列一个开头为.的文件)
          -l:与ll一样
          -r:将排序结果反向输出。例如:原本文件名由小到大,反向则是由大到小
          -t:按时间排序
          -S:按文件容量大小排序
          -h:将文件容量以人类易读的方式(GB、KB)展示
          --full-time:以完整的时间模式(包括年、月、日、时、分)输出
    cp  复制(copy)
        参数:
          -a 复制后的文件,权限、用户名、用户组、时间等,都一模一样
          -i 若目标文件已经存在,在覆盖时会询问动作的进行(是否覆盖)
          -p 连同文件的属性(权限、用户、时间)一起复制过去,而非使用默认属性(备份时常用)
          -r 递归持续复制,用于目录的复制行为
          -s 复制成快捷方式文件
    rm 删除(remove)
        参数:
          -r 递归删除
          -f 强制删除(force)
          -i 互动模式,删除之前会提示是否删除
    mv 移动文件/目录,更名
        参数:
          -f force强制的意思,如果目标文件已经存在,不会询问而直接覆盖
          -i 若目标文件已经存在,会提示是否覆盖
          -u 若目标文件已经存在,且该资源比较新,才会更新(update)
 
    basename 取得目录的文件名称(shell中会使用)
        eg:basename /home/hadoop/zkdata     ----->zkdata
 
    dirname  取得路径的目录名称(shell中会使用)
        eg:dirname /home/hadoop/zkdata    --------->/home/hadoop
 
3.内容的查看
    cat 直接查看文件内容(文件内容多的话,也不常用)
        参数:
          -b 列出行号,仅针对非空白行显示行号,空白行不标行号
          -n 打印出行号,连同空白行也会有行号,与-b的选项不同
 
    tac 反向显示文件内容(不常用)
        同cat命令相反,只是从最后一行内容先显示
 
    nl 添加行号,与cat -n有区别,比cat -n更灵活(不常用)
        参数:
          -b 指定行号指定的方式,主要有两种:
              -b a  表示不论是否为空行,也同样列出行号(类似cat -n) 
              -b t  如果有空行,空的那一行不要列出行号(默认值)
          -n 列出行号表示的方法,主要有三种
              -n ln : 行号在屏幕的最左方显示
              -n rn : 行号在S字段的最右方显示,且不加0 
              -n rz : 行号在S字段的最右方显示,且加0 
          -w 设定行号字段的占用的字符数。
              eg:nl -b a -n rz -w 3 xxx.xml
 
4.(常用)more/less 翻页查看
    more
        空格键   代表向下翻一页
        Enter   代表向下翻『一行』
        /字符串  代表在这个显示的内容当中,向下搜寻『字符串』这个关键词;
        :f      立刻显示出文件名以及目前显示的行数
        q       代表立刻离开more,不再显示该文件内容
        b/Ctrl+B 代表往回翻页,不过这动作只对文件有用,对管道无用
 
    less(相比more来说功能更多)
        空格键   向下翻动一页
        PageDown 向下翻动一页
        PageUp   向上翻动一页
        /字符串  向下搜寻『字符串』的功能
        ?字符串  向上搜寻『字符串』的功能
        n       重复前一个搜寻(与/或?有关!)
        N       (反向的)重复前一个搜寻(与/或?有关!)
        g       跳到第一行
        G       跳到最后一行
        q       退出less
 
5.(常用)head/tail 取出文件前面几行/后面几行
    head(取出前面几行)(head中文意思:头)
        参数:
          -n 后面接数字,代表显示几行的意思(默认显示10行)
               eg:head -n 20 text.txt
          如果后面100行的数据都不打印,只打印除末100行之前的数据,可以使用 -n -100
 
    tail(取出后面几行) (tail中文意思:尾巴)
        参数:
          -n 后面接数字,代表显示几行的意思(默认显示10行)
          -f 标识持续监测文件的内容,ctrl-c结束   eg:tail -f 100 catalina.out
 
        实例:取第11行到第20行的数据
            head -n 20 /etc/man_db.conf | tail -n 10
        解析:|->管道.其意思是:前面的指令输出的信息,通过管道交由后续指令继续使用

6.(常用)对文件中的内容进行统计
    wc  统计指定文件中的字节数、字数、行数,并将统计结果显示输出
        参数:
          -c     统计字节数
          -l     统计行数
          -m     统计字符数『这个标志不能与 -c 标志一起使用』
          -w     统计字数『一个字被定义为由空白、跳格或换行字符分隔的字符串』
          -L     打印最长行的长度。
          --help  显示帮助信息
          --version 显示版本信息

7.touch(P192)
    1.用来修改文件的时间(atime、ctime、mtime)
        参数:
            -a  仅自定义access_time(atime)
            -c  仅修改文件的时间
            -d  后面可以接自定义的日期而不用目前的日期,也可以使用--date="日期或时间"
            -m  仅修改mtime
            -t  后面可以接自定义的时间而不用目前的时间,格式为[YYYYMMDDhhmm]
    2.创建新文件 touch 文件名

8.umask
    文件的默认权限  0022
    文件,默认没有可执行x,默认权限为666
    目录,默认全开放,默认权限777
    要注意的是:umask的数字指的是该默认值需要减掉的权限。
    使用 umask 002 这种方式可以修改默认值

9.file
    观察文件的类型 [file 文件名]
    通过这个命令,可以简单的先判断这个文件的格式。包括未来你也可以用来判断 tar 包使用的是哪一种压缩方式。

10.指令和文件搜索

    which 脚本文件名搜索
        参数:
            -a  将所有由 PATH 目录中可以找到的指令均列出,而不止第一个被找到的指令名称

    * whereis 在特定的目录中寻找文件/文件名。它只会查找/usr 目录、/etc 目录。
            (可通过 whereis -l 来知道whereis到底查找了哪些目录)

        选项与参数:
            -l :可以列出 whereis 会去查询的几个主要目录而已
            -b :只找 binary 格式的文件
            -m :只找在说明文件 manual 路径下的文件
            -s :只找 source 来源文件
            -u :搜寻不在上述三个项目当中的其他特殊文件

    * locate  利用数据库来搜寻文件名(2020-08-28 我觉得这个好用,还准确点)
        通过 yum install mlocate 安装,并通过 updatedb 更新数据库(updatedb会去硬盘搜寻,数据库存在/var/lib/mlocate 目录)
        CentOS 7.x 每天更新数据库一次,新创建的文件如果查找,必须updatedb及时更新才能找到
        updatedb会根据/etc/updatedb.conf的设定,然后去硬盘搜索
        
        选项与参数: 
            -i :忽略大小写的差异;
            -c :不输出文档名,仅计算找到的文件数量 
            -l :仅输出几行的意思,例如输出五行则是 -l 5
            -S :输出 locate 所使用的数据库文件的相关信息,包括该数据库纪录的文件/目录数量等
            -r :后面可接正规表示法的显示方式


    find  
        链接:https://blog.csdn.net/lzb348110175/article/details/108275740

11.磁盘/文件容量查询

    df:列出文件系统的整体磁盘使用量;
     选项和参数:
        -k :以 KBytes 的容量显示各文件系统; 
        -m :以 MBytes 的容量显示各文件系统; 
        -h :以人们较易阅读的 GBytes, MBytes, KBytes 等格式自行显示;
        
    du:评估文件系统的磁盘使用量(常用在推估目录所占容量)
        du  会列出所有目录的容量
        du -a 会列出目录和目录下文件的容量
     选项与参数: 
        -a :列出所有的文件与目录容量,因为默认仅统计目录底下的文件量而已。
        -h :以人们较易读的容量格式 (G/M) 显示;
        -s :列出总量而已,而不列出每个各别的目录占用容量(重点)
        -m :以 MBytes 列出容量显示;

12.ln
    ln -s 源文件 新文件----软链接(符号链接、快捷方式   )
    ln 源文件 新文件-------硬链接

13.数据流重导向 (> >>  < <<)的使用
  1. 标准输入 (stdin) :代码为 0 ,使用 < 或 << 
  2. 标准输出 (stdout):代码为 1 ,使用 > 或 >> 
  3. 标准错误输出(stderr):代码为 2 ,使用 2> 或 2>> 

-----------------------------------------------------------------------------------------------
  1> :以覆盖的方法将『正确的数据stdout』输出到指定的文件或装置上;  (cat aa.txt > bb.txt)
  1>>:以累加的方法将『正确的数据stdout』输出到指定的文件或装置上;  (cat aa.txt >> bb.txt)
  2> :以覆盖的方法将『错误的数据stderr』输出到指定的文件或装置上;  (find /home -name .bashrc 
  > list_right 2> list_error)
  2>>:以累加的方法将『错误的数据stderr』输出到指定的文件或装置上;
-----------------------------------------------------------------------------------------------
  将正确的数据和错误的数据,都写入到名为list的文件中(使用2>&1 或 &>)
  find /home -name .bashrc > list 2> list <==错误
  find /home -name .bashrc > list 2>&1    <==正确
  find /home -name .bashrc &> list        <==正确
-----------------------------------------------------------------------------------------------
  < 和 << --->是『将原本需要由键盘输入的数据,改由文件内容来取代』的意思。(<后面需是文件哦)

  1.将~/.bashrc 内容,作为标准输入,写入到catfile中
    cat > catfile < ~/.bashrc
  2.将标准键盘输入写入到 catfile 中,遇到"eof"退出键盘输入
    cat > catefile << "eof"

14.cut 选取命令
  这个指令可以将一段讯息的某一段给他『切』出来~ 处理的讯息是以『行』为单位喔

  选项与参数: 
    -d :后面接分隔字符。与 -f 一起使用;
    -f :依据 -d 的分隔字符将一段讯息分区成为数段,用 -f 取出第几段的意思;(从1开始)
    -c :以字符 (characters) 的单位取出固定字符区间;

  1.取出 PATH 第5段
    echo ${PATH} | cut -c ':' -f 5
  2.取出 PATH 第3段和第5段
    echo ${PATH} | cut -c ':' -f 3,5
  3.取出 PATH 第3-5段
    echo ${PATH} | cut -c ':' -f 3-5

  export 命令返回 『 declare -x 』开头内容,不想要『 declare -x 』时,可通过 -c 来截掉
  [dmtsai@study ~]$ export
  declare -x HISTCONTROL="ignoredups"
  declare -x HISTSIZE="1000"
  declare -x HOME="/home/xxx"
  declare -x HOSTNAME="study.centos.xxx"

  4.取出 export 第 12 个字符以后的所有字符串
    export | cut -c 12-
  5.取出 export 第 12-15个字符
    export | cut -c 12-15
  








 

你可能感兴趣的:(Linux命令,Linux命令)