用户与用户组

  1. Linux的每个文件中,依据权限分为用户、用户组与其他人三种身份。
  2. 用户组最有用的功能之一,就是当你在团队开发资源的时候,且每个账号都可以有多个用户组的支持。
  3. 利用ls -l显示的文件属性中,第一个字段是文件的权限,共有10位,第一位是文件类型,接下来三个为一组共三组,为用户、用户组、其他人的权限,权限有r,w,x三种。
  4. 如果文件名之前多一个“.”,则代表这个文件为“隐藏文件”。
  5. 更改用户的用户组支持可用chgrp,修改文件的所有者可用chown,修改文件的权限可用chmod

文件权限

  1. chmod修改权限的方法有两种,分别是符号法与数字法,数字法中r,w,x的分数为4,2,1.
  2. 对文件来讲,权限的效能为:
    (1)r:可读取此文件的实际内容,如读取文本文件的文字内容等
    (2)w:可以编辑、新增或者修改该文件的内容(但不含删除该文件)
    (3)x:该文件具有可以被系统执行的权限
  3. 对目录来说,权限的属能为:
    (1)r(read contents in directory)
    (2)w(modify contents of directory): 包含新建新的文件与目录,删除已经存在的文件与目录(不论该文件的权限为何),将已存在的文件或目录进行重命名,转移该目录内的文件、目录位置
    (3)x(access directory)
  4. 要开放目录给任何人浏览时,应该至少也要给予r及x的权限,但w权限不可随便给予

Linux文件与目录

  1. Linux文件名的限制为:单一文件或目录的最大容许文件名为255个字符;包含完整路径名称及目录(/)的完整文件名为4096个字符。
  2. 根据FHS的官方文件指出,其主要目的是希望让用户可以了解到已安装软件通常放置于哪个目录下
  3. FHS制定出来的四种目录特色为shareable,unshareable,static,variable
  4. FHS所定义的三层主目录为/、/var、/usr。
  5. 有5个目录不可与根目录放在不同的分区,分别为/etc(配置文件)、/bin(重要执行文件)、/lib(执行文件所需的函数库与内核所需的模块)、/dev(所需要的设备文件)、/sbin(重要的系统执行文件)。

目录与路径

  1. 所有目录底下都会存在的两个目录,分别是“.”与“..”,分别代表此层与上层目录的意思。根目录底下也存在“.”与“..”两个目录,不过这两个目录的属性与权限完全一致,这代表根目录底下的这两个目录都是同一个目录,都是根目录自身。
  2. 常见的目录以及目录命令:
    cd:切换目录
    pwd:显示当前目录
    mkdir:新建一个新的目录
    rmdir:删除一个空的目录
    . 代表此层目录
    .. 代表上一层目录
    - 代表前一个工作目录
    ~ 代表“目录用户身份”所在的主文件夹
    ~account 代表account这个用户的主文件夹(account是个账号名称)
  3. 不同身份用户默认的PATH不同,默认能够随意执行的命令也不同(如root与vbird)
  4. PATH是可以修改的,所以一般用户还是可以通过修改PATH来执行某些位于/sbin或/usr/sbin下的命令来查询
  5. 使用绝对路径或相对路径直接指定某个命令的文件名来执行,会比查询PATH来得正确
  6. 命令应该放置在正确的目录下,执行才会比较方便
  7. 本目录(.)最好不要放在PATH中。

文件与目录管理

  1. 查看文件与目录:ls,参数(常用):
    -a:全部的文件,连同隐藏文件(开头为.的文件)一起列出来
    -d:仅列出目录本身,而不是列出目录内的文件数据
    -l:列出长数据串,包含文件的属性与权限等数据
  2. 复制文件或目录:cp,参数(常用):
    cp -参数 源文件 目标文件
    -a:相当于-pdr的意思
    -i:若目标文件已经存在时,在覆盖时会先询问操作的进行
    -r:递归持续复制,用于目录的复制行为
    默认情况下,cp的源文件与目标文件的权限是不同的,目标文件的所有者通常会是命令操作者本身。
  3. 移除文件或目录:rm,参数(常用):
    rm -fir 文件或目录
    -f:就是force的意思,忽略不存在的文件,不会出现警告信息
    -i:互动模式,在删除前会询问用户是否操作
    -r:递归删除,最常用的目录的删除,这是非常危险的参数
  4. 移动文件与目录,或更名:mv,参数:
    mv -fiu source destination
    mv options source1 source2 source3 …. directory
    -f:force强制的意思,如果目标文件已经存在,不会询问而直接覆盖
    -i:若目标文件已经存在时,就会询问是否覆盖
    -u:若目标文件已经存在,且source比较新,才会更新
    mv test1 test2 就将test1更名为test2了
    如果有多个源文件或目录,则最后一个目标文件一定是“目录”,意思就是将所有的数据移动到该目录的意思

文件内容查阅

  1. 直接查看文件内容:
    cat(concatenate):
    -n :打印出行号,连同空白行也会有行号,与-b的参数不同
    -b :列出行号,仅针对非空白行做行号显示,空白行不标行号
    tac(反向列示):
    tac的功能与cat相反,是“由最后一行到第一行反向在屏幕上显示出来”
    nl(添加行号打印):
    nl可以将输出的文件内容自动加上行号!其默认的结果与cat -n有点不太一样,nl可以将行号做比较多的显示设计,包括位数与是否补0等的功能呢。
  2. 可翻页查看:
    more(一页一页翻动)
    在more程序运行中有几个按键可以按:
    空格键:代表向下翻动一页
    enter:代表向下滚动一行
    /字符串:代表在这个显示的内容当中,向下查询“字符串”这个关键字
    :f:立刻显示出文件名以及目前显示的行数
    q:代表立刻离开more,不再显示该文件内容
    b或crtl+b:代表往回翻页,不过这操作只对文件有用,对管道无用
  3. less(一页一页翻动):
    less的用法相比较于more更加灵活,不仅可以向下查询还能向上查询,可以输入的命令有:
    空格键:向下翻动一页
    pagedown:向下翻动一页
    pageup:向上翻动一页
    /字符串:向下查询“字符串”
    ?字符串:向上查询“字符串”
    n:重复前一个查询(与/或?有关)
    N:反向重复前一个查询(与/或?有关)
    q:离开less这个程序
  4. 数据选取:
    head(取出前面几行): head [-n number] 文件
    head不加-n选项时默认输出是十行,如果number为负数-100则代表除了最后一百行不输出前面的全部输出
    tail(取出后面几行):tail [-n number] 文件
    -f:表示持续检测后面所接的文件名,要等到按下Ctrl-c才会结束tail的检测
    tail的默认输出也是十行,number表示number行后的数据会被显示出来
  5. 非纯文本文件:od
    od [-t TYPE] 文件
    参数:-t:后面可以接各种“类型(TYPE)”的输出,例如:
    a:利用默认的字符输出
    c:使用ASCII字符输出
    d[size]:利用十进制来输出数据,每个整数占用size bytes
    f[size]:利用浮点数来输出数据,每个整数占用size bytes
    o[size]:利用八进制来输出数据,每个整数占用size bytes
    x[size]:利用十六进制来输出数据,每个整数占用size bytes
    默认使用非文本文件,即是十六进制的数值来显示的
  6. 修改文件时间或创建新文件:touch
    linux下每个文件有三个主要的变动时间:
    modification time(mtime)
    当文件的“内容数据”更改时,就会更新这个时间。内容数据指的是文件的内容,而不是文件的属性或权限
    status time(ctime)
    当文件的“状态”改变时就会更新这个时间,比如权限或属性被更改了
    access time(atime)
    当“文件的内容被取用”时,就会更新这个读取时间(access),比如我们使用cat命令读取一个文件的内容
    默认情况下ls显示出来的是改文件的mtime
    touch [-acdmt] 文件
    参数: -a:仅修改访问时间
    -c:仅修改文件的状态时间,若该文件不存在则不创建新文件
    -d:后面可以接欲修改的时间而不用目前的时间
    -m:仅修改mtime
    -t:后面可以接欲修改的时间而不用目前的时间,格式为[YYMMDDhhmm]
    通过touch这个命令,我们可以轻易修改文件的日期和时间,并且也可以创建一个空的文件。当我们复制一个文件时,复制了所有的属性,但也没有办法复制ctime这个属性,我们平时还是比较关注mtime,因为我们通常关注文件的“内容”是什么时候被改动过的。
  7. touch这个命令最常用的使用情况就是:
    (1)创建一个空的文件
    (2)将某个文件日期修改为目前日期(mtime与atime)