Linux---常用命令总结以及权限理解(超详细)

       从这篇文章开始,我将记录总结一下我学习Linux的过程,方便今后查找以及复习。若文章中有错误,请大家及时指出。
一.常用命令:

命令格式:
命令名称 【命令参数】【操作对象】

Linux基本命令分为:
1.目录相关命令。
2.普通文件命令。
3.压缩/解压缩命令。
4.系统时间命令。
5.匹配查找命令。
6.其他命令。

  1. 目录相关命令:
    ls: 列出当前目录下的文件列表信息。
            -a:显示隐藏文件(注:Linux中的隐藏文件通常以 . 开头)
            -l:显示目录文件下的详细信息。
            -r:对目录反向排序。
            -R:递归列出目录下的所有文件。
            -s:打印出文件的大小。
            -t:按照时间前后对目录进行排序

    pwd:显示当前所在路径。(显示为:绝对路径)
    Linux---常用命令总结以及权限理解(超详细)
    绝对路径:以根目录作为起始路径,成为绝对路径。
    相对路径:以当前目录作为起始路径,成为相对路径。
    Linux---常用命令总结以及权限理解(超详细)

    mkdir:创建目录(文件夹)
            -p:逐级创建多层目录。(递归创建目录)

    rmdir:删除空目录(文件夹)
            -p:逐级删除多层目录。(递归删除目录)

    rm:删除普通文件
            -r:递归删除目录以及目录下的所有文件
            -f:忽略提示信息,直接进行操作。
            -i:显示提示信息,删除前逐一进行确定。

    cp:拷贝一个文件到指定目录中去,如果这个指定目录不存在,相当于改名备份。
            -r:递归复制目录以及目录下的所有文件
            -f:忽略提示信息,直接进行操作。

    mv:移动一个目录/文件到指定位置(eg:mv [选项] [源文件] [目标文件])(注:如果目标文件不存在,则相当于备份改名)
            -i:显示提示信息。

    cd:进入指定目录。
            ~:当前用户的家目录。
            -:上一次活动的路径。

  2. 普通文件命令
    file:辨识文件类型。
    stat:显示文件详细信息。eg:stat filename

    touch:刷新文件属性,如果文件不存在创建新的文件。(命令格式:touch [选项] [依赖文件] [目标文件])
            -c:不创建任何文件。
            -d:使用指定时间来刷新文件的时间属性。(字符串形式:“1999-11-22 07:08:56”)
            -r:使用指定文档的时间属性刷新另一个文件的时间属性。
            -t:使用指定的时间日期来刷新文件的时间属性。(格式如下:[[CC]YY]MMDDhhmm[.SS]
    这里,CC为年数中的前两位,即”世纪数”;YY为年数的后两位,即某世纪中的年数.如果不给出CC的值,则linux中touch命令参数将把年数CCYY限定在1969–2068之内.MM为月数,DD为天将把年数CCYY限定在1969–2068之内.MM为月数,DD为天数,hh 为小时数(几点),mm为分钟数,SS为秒数.此处秒的设定范围是0–61,这样可以处理闰秒.这些数字组成的时间是环境变量TZ指定的时区中的一个时间.由于系统的限制,早于1970年1月1日的时间是错误的)

    cat:打印文件内容信息
            -n:在内容前面显示行号。

    tac:按照行逆序显示文件内容

    more:分页显示文件内容。(注:不能向上翻页)
            空格:向下翻页。
            回车:向下滚动一行。

    less:分页显示文件内容(注:可以向上翻页)
            空格:向下翻页。
            b:向上翻页。
            /string:向下匹配字符串string.
            ?string:向上匹配字符串string.
            n:匹配下一个。(next)

    head:显示文件内容前 10 行内容。
            -n指定显示文件前 n 行内容(n:表示具体的数字)。

    tail:显示文件内容后 10 行内容。
            -n指定显示文件后 n 行内容(n:表示具体的数字)。
            -f:一直刷新文件末尾的内容 。

  3. 压缩与解压缩命令
    zip/unzip:zip 格式的压缩与解压缩。
             -r: 递归对目录及目录下所以文件进行操作。
    eg:zip 123.zip 123.(压缩)
    eg:unzip 123.zip.(解压缩)

    gzip/gunzip:gzip 格式的压缩与解压缩。
    eg:gzip 123(其后可以跟上多个文件)
    eg:gunzip 123.gz(其后可以跟上多个文件)

    bzp2/bunzip2:bzip2 格式的压缩与解压缩。
    eg:bzip2 123(其后可以放置多个文件)
    eg:bunzip2 123.bz2(同样)

最常用的最重要的:
          tar:
          -c:打包。
          -x:解包。
          -z:打/解包同时进行bzip2格式的压缩与解压缩。
          -j :打/解包同时进行gzip格式的压缩与解压缩。
          -v:显示详细的打/解包信息。(view)
          -f :用于指定文件名(通常放到最后)(file)
          eg:tar -czvf c.tar.gz 123.c 456.c 789.c(将文件123.c 456.c 789.c打包并且压缩到c.tar.gz).
          eg:tar -xzvf c.tar.gz (将文件c.tar.gz解包并且解压缩).

  1. 系统时间命令
    date:查看系统当前时间。
    +:以指定格式进行显示。
    -s: 设置系统时间。(注:必须为 root 下才可以修改)

    cal:查看日历。
    -y :显示一整年的日历。
    -j :以天数显示日历。
    -3:显示最近三个月的日历。

  2. 匹配查找命令
    grep:文件内容的匹配查找。eg:grep [选项] [字符串] [文件]
    -i:忽略大小写。(ignore)
    -v:反向匹配,匹配不包含指定字符串的行。(invert)
    -R:递归匹配目录下的所有文件的内容。(recursive递归)

    find:在指定目录下查找文件。(注:+/-:表示大于/小于)
    -name:按照文件名进行查找。
    -type :按照文件类型进行查找。
    -size:按照文件大小进行查找。+/-n 单位:【c b w k M G】
    -mtime -atime -ctime:通过时间来进行查找。(单位为:天)+/-n
    -mmin -amin -cmin:通过时间来进行查找。(单位为:分钟)+/-n
    -exec:连接一个命令,对查找到的文件进行操作。(execute)
    eg:find ./ -mmin -1 -exec rm -rf ‘{}’ \;

  3. 其他命令
    man:命令手册(不会的指令,模糊的指令直接 man 它)。
    | :管道符,连接两个命令,将前面的命令的处理结果交给后面的进行处理。
    bc:计算器。
    su:切换用户
    >:修改数据流向。
    tab:自动补全功能。
    CTRL+c:终止当前操作。
    reboot:重启。
    halt:关机。
    shutdown -h now:立即关机。
    idd:查看可执行程序的依赖项。
    uname:用来获取电脑和操作系统的相关信息。
    -r:显示版本信息。
    -a:输出详细信息。

         以上为我们常用的基本命令,后期我会继续更新新的关于其他方面的命令

二.权限理解:
         在我们日常生活中,也有很多的事情与权限相关。比如:当我们想进去某些公司,学校可能需要登记信息才能允许进入,但是,他们的相关人员,则不需要就可以直接进入,这就是因为他们有相关权限,而外来人员没有相关权限,其实这个和我们的计算机里的权限是相似的。我们来一起看看Linux中文件的相关权限。

说起权限我们就不得不说一下Linux中用户分类:

Linux中的用户分类:
1.超级用户(root):在Linux中做任何事情不受限制。
2.普通用户:只能做被允许的事情。

        我们先用ls -l 看一下文件相关权限在哪里表示着,如下图:
Linux---常用命令总结以及权限理解(超详细)

文件权限对用户的分类:  
文件所有者	    文件所属组	       其他用户
    u                   g                 o
文件权限对操作的分类:
   可读              可写               可执行(当为文件时)
   可浏览         可创建/可删除           可进入(当为目录时)
    r                 w                  x

如果文件权限对文件操作都有那么表示为:rwx ,如果缺少哪一个权限就用 - 表示,比如,缺少可执行权限时为:rw- 。

 字符表示:rwx rwx rwx.
 为了方便表示,大佬们用二进制来进行了表示
 位图表示:111 111 111 
 大佬觉得还是很麻烦,就又改进了表示方法,用八进制表示
 八进制数字进行表示:7 7 7

注:当一个文件被创建出来的时候,它的给定权限为 7 7 7,
我们来看一看是不是呐?
Linux---常用命令总结以及权限理解(超详细)
我们可以看到它的权限为 6 6 4, 而不是 7 7 7,这其实不是我们所说的是错的,而是权限在给予的时候有一定的规则。

        先来看几个权限相关的命令:
                 umask:查看/设置文件的创建权限掩码。(注:普通用户掩码为 0002, 超级用户(root)掩码为 0022)
                 实际权限 = 给定权限 & (~umask);

        这就能解释为什么刚才创建文件权限为 6 6 4,首先,给定权限为 7 7 7 ,~umask 为 7 7 5 他们两个 & 后为 7 7 5,由于,它本身就是文本文件,不是可执行程序,因此,每个在减去 0 0 1 ,故为 6 6 4。

在我们实际工作中,如果我们想修改某些文件的权限就要使用如下指令:
                 chmod:修改文件权限。(注:有两种修改方式)(格式:chmod [选项] [劝限] 文件名)
               -R:递归修改目录下所有文件的权限。
             +:向权限范围增加权限代号所表示的权限
             -:向权限范围取消权限代号所表示的权限
             =:向权限范围赋予权限代号所表示的权限

                1.chmod 777 filename (通过八进制数字权限修改)
                2.chmod o - x filename(通过用户的权限修改)
                3.chmod o + x filename

                chown:修改文件所有者。(格式:chown [选项] [用户名] [文件名])
                 eg:chown uername filename

                chgrp:修改文件所有组。
                 eg:chgrp grpname filename

最后再说一个:
粘滞位:(设置:chmod +t 文件名)

  1. 超级管理员删除
  2. 该目录的所有者删除
  3. 该文件的所有者删除
;