文件操作

使用命令

  • 命令格式:
    1
    命令 [选项] [参数]

    [] 表示可选

  • 示例:
    1
    ls -a /etc

尝试命令

  • ls:查看指定目录的内容,不指定目录时查看当前工作目录

    选项 说明
    -a 显示所有文件,包括隐藏文件
    -l 列表显示,详细信息
    -h 人性化的显示大小,如:K/M/G

    -l 选项显示结果:类型及权限 | 引用权限 | 用户组 | 大小 | 月 | 日 | 年 / 时间 | 名称

  • 文件类型:(-l 显示结果中的第一部分的第一列)

    符号 类型
    - 普通文件
    d 目录文件
    l 链接文件
    c 字符设备文件
    b 快设备文件
    s 套接字文件
    p 管道文件
  • cd :切换工作目录

    符号 说明
    . 当前目录
    .. 上一级目录
    ~ 当前用户的家目录
    - 表示上次切换之前的目录
    / 表示根目录
    1
    2
    3
    1. 使用cd时,不指定目标地址,会切换到家目录
    2. 凡是以/开头的目录都是绝对目录
    3. 凡是以'.'或者'..'开头的目录都是相对目录
  • pwd:查看当前目录

  • alias:给命令起别名

    • l、la、ll 等

查看文件

  • 相关命令
    命令 说明
    cat 从上到下,显示文件全部内容
    tac 从下到上,显示文件全部内容
    head 查看开头指定行数的内容,不指定时默认 10 行,如:head -20 filename
    tail 查看文件末尾指定行数的内容,不指定时默认 10 行,如:tail -5 filename
    nl 功能与 cat 相同,但是多显示了行号
    wc 统计显示,内容:行数 单词 字符数 文件名
    more 一点一点查看内容
    less 一点一点查看内容
  • more/less 使用说明:
    • 显示一屏就停止
    • q 退出查看
    • enter 下翻一行
    • 空格下翻一屏
    • more 查看完毕会自动退出,less 不会
    • less 可以使用上下按钮上下翻看,more 不可以
    • 经常结合管道使用,ls /etc | more

文件及目录

  • 相关命令
    命令 说明
    touch 新建文件,可以是多个
    rm 删除文件或目录(删除目录时要传递 -r 选项)
    cp 拷贝文件或目录(拷贝目录时要传递 -r 选项)
    mv 移动文件或目录
    mkdir 创建目录,可以是多个
    rmdir 删除空目录
  • 选项说明
    • -r:删除或拷贝目录时需要添加,表示递归操作
    • -f:表示强制操作,没有提示信息
    • *:表示模糊匹配,如 rm *.py 表示删除所有的 py 文件
    • -p:创建目录时若需要创建中间目录,可以添加此选项

用户及用户组

  • 相关命令:
    命令 说明
    whoami 查看当前登录的用户
    useradd 新建用户,-d 指定家目录,-m 不存在,-s 指定 shell
    userdel 删除用户,-r 会删除用户的家目录
    passwd 设置指定用户的密码,没有指定用户时设置当前用户的密码
    su - 切换用户,一定要加上‘ - ’,否则只会切换家目录,但是环境没有切换,不指定用户时默认切换到 root 用户(记得先给 root 用户设置密码)
    sudo 用指定用户(root)身份执行命令
    visudo 专门用于编辑 /etc/sudoers 文件的命令,需要将指定用户添加进去才可以使用 sudo 命令,如:test ALL=(ALL:ALL) ALL。使用 update-alternatives --config editor 可以修改系统默认编辑器(nano)
    groupadd 新建用户组
    groupdel 删除用户组
    gpasswd 向指定组添加 / 删除指定的用户,如:gpasswd -a/-d user group
    groups 查看指定用户组的信息
    chsh 修改指定用户的 shell 解析器,如:sudo chsh test -s /usr/sbin/nologin(禁止登录)
    chown 修改文件所属用户 [及用户组],如:sudo chown test[:test] 1.py,递归操作需要添加 '-R' 选项
    chgrp 修改文件所属用户组,如:sudo chgrp test 1.py
  • 涉及文件
    • /etc/passwd:系统中的用户信息
    • /etc/group:系统中的用户组信息
    • /etc/shadow:系统中的用户密码信息
  • 相关名词
    • uid:用户的唯一表示
    • gid:用户组的唯一表示

文件权限

  • 说明:在 Linux 下,所有的文件都涉及权限,分为三组:所有者、所属组、其他
  • 权限:所有的权限可以分为:可读 (r)、可写 (w)、可执行 (x),‘ - ’表示没有该权限
  • 原理:ls -l 的结果,三位一组,分为三组,刚好对应:所有者、所属组、其他
  • 修改权限:chmod, 格式:chmod [身份] [操作] [权限] 文件
    选项 说明
    身份
    u 所有者 (user)
    g 所属组 (group)
    o 其他 (other)
    操作
    + 添加
    - 去掉
    = 设置
    权限
    r 可读
    w 可写
    x 可执行

    sudo chmod o+w 1.py,给其他用户添加可写的权限

  • 本质:使用一组(3 位)八进制的数据来表示权限,如:0755,展开如下:
    1
    2
    3
    4
    转换成二进制:0755 => 111 101 101
    对应三组身份: 所有者 所属组 其他
    每一组的权限: 都包括 可读、可写、可执行
    示例解析: 所有者可读可写可执行,所属组可读可执行,其他可读可执行
  • 简化操作:sudo chmod 0755 1.py

    若要添加递归操作,则需要添加 -R 操作

  • umask
    1
    2
    3
    4
    5
    6
    作用:用来限定新建文件的默认权限,权限与该值相反
    命令:umask [value],查看或设置掩码
    分析:
    掩码:0002 => 000 000 010
    新建目录: 111 111 101
    新建文件: 110 110 100

文件搜索

  • find

    • 作用:用于任意文件的搜索,功能非常强大
    • 格式:find [目录] 条件选项
      1
      2
      3
      4
      5
      6
      7
      8
      -name:指定名字	sudo find / -name passwd
      -maxdepth:指定最大层级的深度 sudo find -maxdepth 2 -name passwd
      -type:指定类型(d/l/s/p/c/b)
      -size:指定大小,单位:k/m/g,+表示大于,-表示小于,如:find -size +5k,查找大于5k的文件
      -mtime/-atime/-ctime:指定修改/访问/创建时间,单位是天,+表示几天前,-表示几天内
      -mmin/-amin/-cmin:功能同上,单位是分
      -user:指定用户
      -group:指定用户组
  • whereis

    • 作用:显示命令的详细信息,如:whereis ls,结果如下:
      1
      2
      ls: /bin/ls /usr/share/man/man1/ls.1.gz
      命令名 命令位置 帮助文档
  • grep

    • 作用:正则表达式搜索(文件搜索)
    • 选项:
      1
      2
      -i:忽略大小写
      -n:显示行号
    • 示例:
      1
      2
      3
      grep -n /bin/bash /etc/passwd 查找/etc/passwd文件中包含/bin/bash的行,并显示行号
      grep -i -n abc 1.py 在1.py中查找包含abc的行,不考虑大小写
      ls /bin | grep '^m' 查看/bin下以'm'开头的命令

链接文件

  • 命令:ln
  • 作用:创建一个文件或者目录的链接
  • 格式:ln [-s] 原文件 新文件
  • 查看:ls -l 结果集中的第一列就是文件类型,为 'l' 的就是链接文件
  • 软链接与硬链接:
    1
    2
    3
    4
    5
    6
    7
    硬链接:使用ln时不添加-s选项创建的链接,相当于一个文件多起了一个名字而已,极少用到
    1.不能给目录创建
    2.不能跨文件系统

    软连接:使用ln时添加-s选项创建的链接,相当于Windows中的快捷方式,比较常用
    1.可以给目录创建
    2.可以跨文件系统