Linux 文件管理常用基本命令

马哥教育网络班21期+第二周练习

目录管理

  • ls (list):列出目录及内容

    ls [OPTION]... [FILE]...
        -l:长格式显示文件的详细属性信息
            -rwxr-xr-x.  1 root root 1273 Jul 10 19:45 anaconda-ks.cfg
            第1段:文件属性段
                左起第一位:文件类型
                    -:普通文件 (file)
                    d:目录文件 (directory)
                    b:块设备文件 (block)
                    c:字符设备文件 (character)
                    l:符号链接文件 (symbolic link file)
                    p:命名管道文件 (pipe)
                    s:套接字文件 (socket)
                后面9位:文件权限,称为mode,每3位一组,每一组:rwx(读,写,执行)
                    r:读,Read
                    w:写,Write
                    x:执行,Excute
                .:表示文件有隐藏属性
                    lsattr命令可以查看
            第2段:
                数字1:文件被硬链接的次数
            第3段:
                第一个root:owner,属主,文件拥有者
            第4段:
                第二个root:group,属组,文件所属的组
            第5段:
                1273:size,文件大小,默认单位:字节
            第6段:
                Jul 10 19:45:timestamp,时间戳,文件最近一次被修改的时间
                    访问:access
                    修改:modify
                    改变:change,metadata,元数据
            第7段:
                anaconda-ks.cfg:文件名
        -h,--human-readable:做单位换算,以容易理解的格式显示文件大小,与 -l 一起使用
        -a,--all:显示所有文件,包括以 .开头的隐藏文件
            . :表示当前目录
            ..:表示父目录
        -A,--almost-all:显示不包含 . 和 .. 以外的所有文件
        -d,--directory:显示目录自身属性,通常与 -l 一起使用
        -i,--inode:index node,显示文件的索引节点号
        -r,--reverse:逆序显示
        -R,--recursive:递归显示,显示子目录中的内容
    
    示例:
        列出当前目录下所有文件和目录的详细信息,并转换显示大小(含隐藏文件)
            ls -alhR
  • cd:change directory,切换当前工作目录

    cd [dirName]
        cd 或 cd ~:进入当前用户的主目录
        cd ~USERNAME:进入指定用户的主目录
        cd -:在当前目录和前一次所在目录之间切换
  • pwd:查看当前工作目录

    pwd [OPTION]...
        -L:显示当前工作目录连接路径,默认 pwd 同 pwd -L
        -P:显示当前工作目录的物理路径
  • mkdir:创建空目录

    mkdir [OPTION]... DIRECTORY...
        -p:递归创建目录,创建目录时先创建父目录
        -v:显示创建过程信息
    
    示例:
        创建目录 /mnt/test/x/m,y
            mkdir -pv /mnt/test/x/m /mnt/test/y
            mkdir -pv /mnt/test/{x/m,y}
    
        /tmp下创建目录 a_b,a_c,d_b,d_c
            mkdir -pv /tmp/{a,d}_{b,c}
    
        /tmp下创建以下树形结构目录:
        mylinux/
            ├── bin
            ├── boot
            │   └── grub
            ├── dev
            ├── etc
            │   ├── rc.d
            │   │   └── init.d
            │   └── sysconfig
            │       └── network-scripts
            ├── lib
            │   └── modules
            ├── lib64
            ├── proc
            ├── sbin
            ├── sys
            ├── tmp
            ├── usr
            │   └── local
            │       ├── bin
            │       └── sbin
            └── var
                ├── lock
                ├── log
                └── run
            mkdir -p /tmp/mylinux/{bin,boot/grub,dev,etc/{rc.d/init.d,sysconfig/network-scripts},lib/modules,lib64,proc,sbin,sys,tmp,usr/local/{bin,sbin},var/{lock,log,run}}
  • tree:查看目录树

    tree [OPTION...] [DIRECTORY...]
        -a:显示所有文件及目录
        -d:只显示目录
        -f:显示完整路径
        -L level:显示指定层级目录树
        -P pattern:只显示指定 pattern 匹配的路径
  • rmdir:删除空目录

    rmdir [OPTION]... DIRECTORY...
        -p:删除子空目录后父目录为空时一并删除
        -v:显示删除过程信息

文件管理

  • 文件命名规则

    1、长度不能超过255个字节
    2、不能使用 / 做文件名
    3、严格区分大小写
  • stat:显示文件或文件状态

    stat [OPTION]... FILE...
        -f:显示文件系统状态
        -t:以简要信息显示文件状态值
    
    三个时间戳:
        atime,access time:访问时间,读取文件内容
        mtime,modify time:修改时间,改变文件内容(数据)
        ctime,change time:改变时间,元数据发生改变
  • touch:改变文件的时间戳,文件不存在创建文件

    touch [OPTION]... FILE...
        -a:只改变访问时间(atime)
        -c,--no-create:只改变文件时间戳,不创建文件
        -m:只改变修改时间(mtime)
        -t STAMP:指定时间改变时间戳
            [[CC]YY]MMDDhhmm[.ss]
    
    示例:
        在/tmp目录下创建以file开头,后跟当前日期和时间的文件,文件名格式如:file-1970-01-01-00-00-00
            touch file-$(date +%F-%H-%M-%S) 
        或
            touch file-`date +%F-%H-%M-%S`
    
        修改file开头的文件的时间戳,指定时间为 1970-01-01 00:00:00
            touch -t 197001010000.00 file*
  • file:检测文件类型

    file [OPTION] FILE...
        -b:只列出文件类型,不显示文件名
        -f<FILENAME>:指定文件,其中有一个或多个文件名,依序列出文件名及检测文件类型
  • cp:copy,复制文件或目录

    cp [OPTION]... SOURCE DESCRIPTION
    cp [OPTION]... SOURCE... DIRECTORY
    cp [OPTION]... -t DIRECTORY SOURCE...
        -a,--archive:归档复制,保留所有文件权限
        -p:保留源文件属主、属组、时间戳
        -f,--force:忽略交互提示,强制复制
        -i,--interactive:复制前交互提示
        -r,-R,--recursive:递归复制目录
        -l,--link:只硬链接文件不复制
        -s,--symbolic-link:只符号链接文件不复制
        -L,--dereference:源为链接文件时,不复制文件链接属性
        -P,--no-dereference:源为链接文件时,复制文件链接属性
    
    示例:
        归档/etc/rc.d/init.d 到/tmp 目录下,归档名为init.d.bak
            cp -a /etc/rc.d/init.d /tmp/init.d.bak
    
        复制/etc/inittab 到/tmp目录下,重命名为 inittab.bak,保留原有属性
            cp -p /etc/inittab /tmp/inittab.bak
    
        复制/tmp下a_b、a_c、d_b、d_c 到/tmp/bak 目录下
            cp -r /tmp/{a,d}_{b,c} /tmp/bak
    
        复制/etc/rc.local 到/tmp目录下,保留文件链接属性
            cp -P /etc/rc.local /tmp/rc.local
    
        复制/etc目录下passwd、inittab、rc.d/rc.local 到/tmp/bak目录下,并使用 -t选项
            cp -t /tmp/bak /etc/{passwd,inittab,rc.d/rc.local}
  • install:复制文件并设定权限

    install [OPTION]... SOURCE... DIRECTORY
    install [OPTION]... -t DIRECTORY SOURCE...
    install [OPTION]... -d DIRECTORY...
        -d:创建目录
        -t:先指定目标目录,再指定源文件信息
        -g:设定文件属组
        -o:设定文件属主
        -m:设定文件拥有权限
    
    示例:
        创建目录 /tmp/x/y/z 和 /tmp/x/m/n
            install -d /tmp/x/{y/z,m/n}
    
        复制 /tmp/passwd 到 /tmp/x 目录下,并指定文件属主、属组为 apache,文件权限为 700
            install -g apache -o apache -m 700 /tmp/passwd /tmp/x
  • rm:删除文件或目录

    rm [OPTION]... FILE...
        -f,--force:忽略交互提示,强制删除
        -i:删除前交互提示
        -r,-R,--recursive:递归删除目录
  • mv:move,移动文件或目录

    mv [OPTION]... SOURCE DESCRIPTION
    mv [OPTION]... SOURCE... DIRECTORY
    mv [OPTION]... -t DIRECTORY SOURCE...
        -f,--force:覆盖前不提示,强制覆盖
        -i,--interactive:覆盖前提示
        -t:先指定目标目录,再指定源文件信息
    
    示例:
        移动/tmp/bak目录下passwd、inittab、rc.local文件到 /tmp目录下,并覆盖/tmp/rc.local
            mv -f /tmp/bak/{passwd,inittab,rc.local} /tmp/

文本处理

  • cat:连接并显示文本文件内容

    cat [OPTION]... FILE...
        -E,--show-ends:显示行结束符
        -n,--number:显示行号
    
    示例:
        查看/tmp/passwd文件内容,并输出行号及行结束符
            cat -nE /tmp/passwd
    
        将/tmp/passwd、/tmp/inittab合并为 test文件
            cat /tmp/passwd /tmp/inittab > /tmp/test
  • tac:逆序显示文件内容

  • more:分页显示,默认向下翻页

    more [options] FILE [...]
        -d:显示翻页及退出提示
        -number:指定每页显示的行数
        +/:查找文件第一个出现指定字符串的行,并从该行前两行开始显示
        +number:从指定行号开始显示
  • less:分页显示,向下或向上翻页

    less [options] File...
        -e:文件显示到最后时,自动退出
        -N:显示行号
    
    键盘操作:
        h   查看帮助信息
        q,Q 退出命令
        b   向下一页
        d   向下半页
        u   向上半页
        y   向上一行
        PgUp    向上一页
        PgDn    向下一页
        Space   向下一页
        Enter   向下一行
  • head:查看文件前N行

    head [OPTION]... [FILE]...
        -n:指定显示多少行,不指定时默认显示 10行
  • tail:查看文件后N行

    tail [OPTION]... [FILE]...
        -f:查看文件尾部,不退出,等待显示后续追加至此文件的新内容
        -n:指定显示多少行,不指定时默认显示 10行
  • cut:分段截取内容

    cut [OPTION]... [FILE]...
        -d:指定字段分隔符,默认是空格
        -f:指定显示的字段
            -f 1:显示第一字段
            -f 1,5:显示第一和第五字段
            -f 1-3:显示第一到第三字段
    
    示例:
        以冒号为分隔符,显示/etc/passwd文件中用户及使用shell
            cut -d":" -f1,7 /etc/passwd
  • sort:文本排序

    sort [OPTION]... [FILE]...
        -f,--ignore-case:忽略字符大小写
        -n,--numeric-sort:以数值大小排序
        -r,--reverse:降序排序
        -t:指定字段分隔符
        -k:以指定字段进行排序
        -u,--unique:排序后去重
    
    示例:
        以第三个字段对/etc/passwd文件进行排序
            sort -t":" -k3 -n /etc/passwd
  • uniq:查找相邻重复行

    uniq [OPTION]... [FILE]...
        -c,--count:显示重复行出现的次数
        -d,--repeated:仅显示重复行
        -D:显示所有重复的行
        -u,--unique:仅显示不重复的行
    
    示例:
        显示当前系统中所有用户使用的shell
            cut -d":" -f7 /etc/passwd | sort | uniq
  • wc:文本统计

    wc [OPTION]... [FILE]...
        -c,--bytes:统计文件包含多少字节
        -m,--chars:统计文件包含多少字符
        -l,--lines:统计文件包含多少行
        -w,--words:统计文件包含多少单词
        -L,--max-line-length:统计最长的一行包含多少字符
    
    示例:
        统计/etc目录下以大小写P 开头的文件个数
            ls /etc/[pP]* | wc -l
  • tr:转换或删除字符

    tr [OPTION]... SET1 [SET2]
        -d:删除字符集中出现的所有字符
    
    示例:
        /tmp/passwd文件中所有字符替换为大写
            tr 'a-z' 'A-Z' < /tmp/passwd

bash特性

  • bash特性

    1、命令历史、命令补全
    2、管道、重定向
    3、命令别名
    4、命令行编辑
    5、命令行展开
    6、文件名通配
    7、变量
    8、编程
  • 命令执行状态

    echo $?:查看返回值
        0表示成功
        非0表示失败
  • 命令行编辑

    光标跳转
        Ctrl+a:跳到命令行首
        Ctrl+e:跳到命令行尾
        Ctrl+u:删除光标至命令行首的内容
        Ctrl+k:删除光标至命令行尾的内容
        Ctrl+l:清屏
  • 命令历史

    history:查看命令历史
        -c:清空命令历史
        -d OFFSET [n]:删除指定位置命令
        -w:保存命令至历史文件(.bash_history)
    
    命令历史使用技巧:
        !n:执行命令历史中的第 n 条命令
        !-n:执行命令历史中倒数第 n 条命令
        !!:执行上一条命令
        !string:执行命令历史中最近一条匹配 string 开头的命令
        !$:引用前一个命令的最后一个参数
            !$ 同 {Esc,.} 或 {Alt+.}
    
    命令补全:搜索PATH环境变量所指定的每个路径下以给出的字符串开头的可执行文件,如果有多个,使用两次Tab可以显示列表,否则直接补全
    
    路径补全:搜索给出的起始路径下的每个文件名,并试图补全
  • 变量

    环境变量
    PATH:命令搜索路径
    HISTSIZE:命令历史缓冲区大小(默认为 1000)
  • 命令别名

    定义别名
        alias CMDALIAS='COMMAND [options] [arguments]'
        Shell中定义的别名的有效范围仅限当前Shell进程
    
    取消别名
        unalias CMDALIAS
  • 命令引用

    命令替换:$(COMMAND) 或 `COMMAND`
    
    支持的引号
        (反引号)``:命令替换
        (双引号)"":弱引用,可以实现变量替换
        (单引号)'':强引用,不进行变量替换
  • 文件名通配

    通配符号
        *:任意长度的任意字符
        ?:任意单个字符
        []:匹配指定范围内的任意单个字符
            [abc],[a-z],[A-Z],[0-9],[a-zA-z],[0-9a-zA-Z]
            [:space:]:空白字符
            [:punct:]:标点符号
            [:lower:]:小写字母
            [:upper:]:大写字母
            [:alpha:]:大小写字母
            [:digit:]:数字
            [:alnum:]:数字和大小写字母
        [^]:匹配指定范围外的任意单个字符

练习

  1. 显示/var目录下所有以l开头,以一个小写字母结尾,且中间至少出现一位数字(可以有其它字符)的文件或目录

    ls /var/l*[0-9]*[a-z]
    ls /var/l*[[:digit:]]*[[:lower:]]
  2. 显示/etc目录下,以任意一个数字开头,且以非数字结尾的文件或目录

    ls /etc/[0-9]*[^0-9]
    ls /etc/[[:digit:]]*[^[:digit:]]
  3. 显示/etc目录下,以非字母开头,后面跟了一个字母以及其它任意长度任意字符的文件或目录

    ls /etc/[^a-zA-Z][a-zA-Z]*
    ls /etc/[^[:alpha:]][[:alpha:]]*
  4. 复制/etc目录下所有以p开头,以非数字结尾的文件或目录到/tmp/mytest1目录中

    cp -r /etc/p*[^0-9] /tmp/mytest1
    cp -r /etc/p*[^[:digit:]]
  5. 复制/etc目录下所有以.d结尾的文件或目录至/tmp/mytest2目录中

    cp -r /etc/*.d /tmp/mytest2
  6. 复制/etc目录下所有以l或m或n开头,以.conf结尾的文件至/tmp/mytest3目录中

    cp /etc/{l,m,n}*.conf /tmp/mytest3
    cp /etc/[lmn]*.conf /tmp/mytest3

原创文章,作者:N21-garyshan,如若转载,请注明出处:http://www.178linux.com/24420

(0)
N21-garyshanN21-garyshan
上一篇 2016-07-17
下一篇 2016-07-17

相关推荐

  • 8-4 文本处理工具

    本节主要了解文本处理工具 文件查看命令:cat  tac  rev     cat [OPTION]… [FILE]…         -E:显示行结束符$    &…

    Linux干货 2016-08-07
  • VSFTP通过pam_mysql插件创建进行基于mysql的虚拟用户

      1、对pam_mysql-0.7RC1包进行编译安装 编译安装环境配置 编译安装所需的包如下: ~]#yum -y groupinstall "Development Tools" "Server Platform Development" ~]#yum -y install mariadb-server…

    Linux干货 2016-11-14
  • N25-第三周作业

    N25第三周作业 博客作业 1、列出当前系统上所有已经登录的用户的用户名,注意:同一个用户登录多次,则只显示一次即可。 [root@ip-172-31-25-9 ~]# who|awk '{print $1}'|sort -u ec2-user [root@ip-172-31-25-9&n…

    Linux干货 2017-02-06
  • 第十周练习-脚本部分

    1、写一个脚本 (1) 能接受四个参数:start, stop, restart, status start: 输出“starting 脚本名 finished.” … (2) 其它任意参数,均报错退出; #!/bin/bash # case $1 in start)     echo&…

    Linux干货 2016-12-31
  • 第四周作业

    正则表达式练习

    Linux干货 2017-12-25
  • 基于heartbeat v2 crm实现基于nfs的mysql高可用集群

    前言 因heartbeat v1内置的资源管理器haresource功能比较简单,且不支持图形化管理,所以heartbeat v2不再支持haresource,转而使用更加强大的资源管理器crm进行集群管理。本文将讲解如何基于heartbeat v2 crm实现基于nfs的mysql高可用集群。 高可用实现 实验拓扑 实验环境 node1:172.16.10…

    Linux干货 2015-06-11

评论列表(1条)

  • 马哥教育
    马哥教育 2016-09-19 17:57

    写的很好,把一些常用的命令都列举出来了,有的问题还用了多种方法解答,值得表扬