Linux-Ch02 文件与操作

文件的组织与操作

Linux文件系统的特点

Linux系统中一切事物都是文件,包括常见的普通文件(文本文件、多媒体文件、可执行文件)和特殊文件(硬件、内存、进程)等。

Linux文件系统是一个典型的单根、分层、树形结构,第一级目录称根目录,符号 / 表示。根目录包含文件和子目录,依此递归。

其他特点:

  • 文件名严格区分大小写,支持“空格”、“.”、“-”、“_”四种特殊符号
  • 字符“.”开始的文件名为隐藏文件,默认不显示
  • 目录(文件夹)也是文件
  • 后缀名不是文件名称必须的要素,只是方便用户使用

Linux文件系统常见目录说明

目录名称 意义
/bin 可执行二进制文件
/boot 引导目录,引导系统所需要的文件
/etc 系统配置文件
/home 家目录,每个普通用户的家目录,如/home/starlightglimmer
/root 超级管理员的家目录
/sbin 超级管理员权限的可执行文件
/usr Unix Software Resource,软件安装目录
/var 内容变动频繁的文件,如日志文件
/usr/bin 绝大部分的用户使用命令
/usr/sbin 用户自行安装的系统级别软件
/var/log 日志文件

文件相关操作

  • pwd,显示当前工作目录

    1
    2
    pwd [-P]
    # -P 代表当前目录显示当前路径,而非使用链接(link)路径,注意大写

  • ls,列出文件和目录

    1
    ls [-aAdFhlrSt]
    选项 长选项 描述
    -a –all 列出所有文件和目录,包括隐藏文件
    -d –directory 列出指定目录自身信息,常与-l结合
    -F –classify 所列出内容上加上类型符号
    -h –human-readable 以更可读的方式显示内容,常与-l结合
    -l 长格式显示内容
    -r –reverse 以默认方式的逆序显示结果
    -S 按文件大小排序
    -t 按修改时间排序

​ 权限字符串 链接数 所有者 所在群 文件大小 最后修改时间 文件名

  • cd,切换目录

  • du,显示目录包含文件的大小

    参数 效果
    -h 以K、M、G方式显示大小
    -a 显示文件和目录大小(默认只显示目录)
    -s 显示总计大小

  • cat,一次性显示文件内容

    1
    cat 文件名
  • less分页显示文件内容

    1
    less 文件名

    常用快捷键:

    • 空格:向下翻一屏
    • 回车:向下翻一行
    • b:后退一页
    • y:后退一行
    • q:退出less命令
    • =:显示目前内容在文件的位置
    • /:进入搜索模式
  • 其他显示文件内容命令

    命令 效果
    tac 逆序显示文件内容
    more 类似less,交互弗如less
    head -n 数字 文件名 显示文件前n行,默认n=10
    tail -n 数字 文件名 显示文件最后n行,默认n=10
    od 以进制方式显示内容
  • touch:新建一个空白文件

    本意是修改文件的最后修改时间,但文件不存在会新建文件

    1
    touch test_file

    文件的三个时间属性:

    • mtime:文件内容更改时就会修改该时间
    • ctime:文件属性(状态)更改时就会修改该时间
    • atime:文件内容被访问时就会修改该时间
  • mkdir:创建目录

    1
    mkdir [-mp] 目录名称

    -m:创建目录时指定权限,直接设置,不考虑默认权限

    -p:将所需目录递归创建

  • cp:拷贝文件

    1
    cp [参数] 源文件 目标文件

    参数:

    • -a:相当于-dpr
    • -d:若源文件为链接文件,则复制链接文件而不是文件本身
    • -i:若目标文件已经存在,覆盖时会询问
    • -p:连同文件属性一起复制而不是使用默认属性
    • -r:递归持续复制
  • rm:删除文件

    1
    rm [-参数] 文件或目录

    参数:

    • -f:强制删除
    • -i:互动模式,删除前会询问
    • -r:递归删除

文件搜索和查找

  • 命令查找which

    参数:-a:如果有多个,全部列出

  • 范围内查找whereis

    参数:

    • -b:只查找二进制文件
    • -l:列出查找的目录范围
    • -m:只在man命令对应的目录下查找
    • -s:只查找source源文件
    • -u:查找不在-b、-m、-s范围内的文件

  • 索引查询locate

    1
    locate [-iclSr] 关键字

    参数:

    • -i:忽略大小写
    • -c:不输出文件名,输出文件数
    • -l:输出结果的行数
    • -S:输出索引数据库的相关信息
    • -r:支持正则表达式
  • 通用查找find

    1
    find [PATH][option][action]

用户和权限

Linux用户和用户组

根据与文件的关系,将用户分为:所有者(User),使用者;使用者又分为:组内用户(Group)和其他用户(Other)

用户必须隶属于一个或多个组

系统对这三种用户规定能进行的操作和行为

用户相关文件:

功能 文件
用户账号信息 /etc/passwd
用户密码信息 /etc/shadow
组账号信息 /etc/group
组管理以及密码信息 /etc/gshadow
  • 账号管理:新增账号useradd

    1
    useradd [-u][-gG][-d][-s][-r]用户名

    参数:

    • -u:指定账号UID
    • -g:指定账号初始用户组
    • -G:指定账号有效用户组
    • -s:指定账号的shell
    • -r:创建系统账户
  • 密码管理:passwd

  • 切换用户:su

    1
    su [-][-c][用户名]

    参数:

    • 无:只切换用户,不切换新用户的环境(shell、变量等)
    • -:切换用户同时切换环境
    • -c:只执行-c后的命令时切换用户,之后切换回原用户

  • 切换用户身份执行:sudo

    1
    2
    sudo [-u][用户名] 
    #默认只有root用户才能执行

    参数:

    • -u:指定想切换的用户名,默认为root

文件权限

字段 含义
-rw-rw-r– 文件类型和权限字符串,10个字符,第一个拿掉,剩下9个每3个一组分别表示U\G\O的权限
1 链接数
starlightglimmer 文件所属用户名
starlightglimmer 文件所属组名
10663778 字节数表示大小,若使用-h可以看到K、M、G的表示
jun 20 00:41 最后一次修改时间
apache- 文件名

第一个字符表示文件类型:

  • d:目录
  • -:文件
  • l:链接文件
  • b:面向块的文件,一般式供储存的接口设备
  • c:面向字符的设备文件:如键盘鼠标

file命令确定文件具体类型:

Linux使用UGO模型进行权限管理:

  • U:所有者
  • G:所有者所在用户组
  • O:其他用户

​ 权限字符:

  • r:读
  • w:写
  • x:执行
  • rwx,三个一组,一般用8进制表示,如:4 -> 100 -> r–;711表示rwxr–r–

权限修改:chmod

  • 使用数字:

    1
    chmod 数字形式 文件名

  • 使用字符:

    1
    chmod [对象][动作][权限] 文件名
    对象 动作 权限
    u +(增加) r
    g -(去除) w
    o =(设置) x
    a(所有人)

针对文件(非目录)权限的意义:

  • r:可以读取文件的实际内容,如文本文件的文字
  • w:可以编辑、新增或修改内容(不含删除文件)
  • x:可以被系统执行

针对目录权限的意义:

  • r:有读取目录的权限,可以用ls命令查询该目录下的文件信息
  • w:有更改目录结构列表的权限,如新建文件、删除文件、转移文件、重命名文件等
  • x:是否能进入该目录

Linux文件是否可以执行不由文件后缀名决定,由权限的x属性决定

一个文件内存有多大,需要其父目录的r权限

目录一般需要x权限