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

相关推荐

  • Linux系统的软链接和硬链接

    Linux的链接是一种共享文件和访问它的用户的若干目录项之间建立联系的一种方法。一共分为两种链接,分别是软链接和硬链接。 一、硬链接 1、硬链接的本质上是一个文件,它们除了名字不一样,其他都一样,占用的空间是一个。硬链接会增加文件的链接数。如下图 (1)建立硬链集之前     (2)建立硬链接之后 2、删去一个链接名,链接数减一…

    Linux干货 2016-10-22
  •   在服务器托管的过程中出现故障是不能完全避免的问题,可能是服务器硬盘出现硬件故障或者是防火墙遭到攻击。那么服务器托管出现故障怎么办?

      在服务器托管的过程中出现故障是不能完全避免的问题,可能是服务器硬盘出现硬件故障或者是防火墙遭到攻击。那么服务器托管出现故障怎么办?   服务器硬盘出现硬件故障时,大家应注意以下几点:   1、硬盘出现异声,此时磁头已不正常寻址,为防止打伤盘体,需立即断电不可拆解硬盘,需交有超净间的专业公司拆开检查。   2、BIOS不认盘,找不到硬盘,先请计算机工程师仔…

    Linux干货 2016-04-05
  • tomcat

      编程语言:硬件级:微码编程,汇编语言系统级:C,C++,…应用级:Java, PHP, Python, Ruby, Perl, C#, …Python: PVMStandard LibraryWeb Framework:Django, Flask, …Java:JVM,JDKbash:bash ex…

    Linux干货 2017-05-22
  • linux用户和用户组

    一、用户和组 1、用户账号类型 在Linux系统中,根据系统管理的需要将用户账号分为不同的类型,其拥有的权限、担任的角色也各不相同。主要包括超级用户、普通用户和程序用户。 【超级用户】:root用户是Linux系统中默认的超级用户账号,对本主机拥有最高的权限,类似于Windows系统中的Administrator用户。只有当进行系统管理、维护任务时,才建议使…

    Linux干货 2017-07-22
  • Linux文件权限之facl

    1、什么是facl         facl(file access control list)文件访问控制列表,主要目的是在原有的u,g,o之外,另一层让普通用户能控制赋权给另外的用户或组的机制;       &nbs…

    Linux干货 2016-09-19
  • python面向对象第二周魔术方法详解

    魔法方法及其使用__开头和结束的方法,定义外部没有办法直接调用,但会有影响使用运算符号的魔法方法, + ,-,*,/,%,//,**, __add__,__sub__,__mul__,__truediv__,__mod__,__floordiv__,__pow__,__divmod__(?),系统内部对于数值型,字符串型,容器内型都定义了其中部分或者全部的运…

    Linux干货 2017-11-22

评论列表(1条)

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

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