一、Linux文件目录结构

常用的shell命令,    在讲述之前,先简短的说说Windows文件结构,打开‘计算机’,看到的一个个的驱动器(盘符,例C盘、D盘等),点开其中任意盘符,看到的是一个个文件或文件夹,继续打开...,每个盘都有自己的根目录。若是把其打开过程画下来,便可得到如下多棵倒树并列的图形:wKiom1nHhRyDp_ysAABH6-Y85bY188.png-wh_50

而在Linux下,看到的是文件夹(目录),Ubuntu没有盘符一说,只有一个根目录(/表示),同样画下来:

wKioL1nHhzbBIsXEAAG1DlFxkuE034.png-wh_50         wKiom1nHh-SzB4H4AACTAp7Loeo476.png-wh_50

那有读者可能会疑惑:Linux是多用户操作系统,比较安全,而这里只有一个根文件,也就是所有用户都在根目录下面,那用户A可以随意修改其中某一文件,对于用户B来说可能会受到影响,怎么还会是安全的呢?原因:Linux在创建不同的用户时,会默认生成同名的组(group),每个组以及组内的每个用户都有相应的操作权限,一般来说普通用户是没有权限修改其他组用户或系统系统信息的(如密码验证,管理员权限,文件目录权限等),所以多个用户在同一个根目录下一般是无权夸组跨权限更改系统、它组的信息。例如:以地球为根目录,每个家庭为组,家庭成员为组内用户;小王、小吴是好邻居,一天,小王想去小王家借盐,前提是要进入小吴家中,就要有小吴的许可,进入之后,还要得到借盐许可,小王方可借到盐。Linux也一样,所以Linux还是安全的。

二、常用文件和目录命令

    1).终端命令格式: 命令 [-选项][参数]

            命令:相应功能英文单词或者缩写

            -选项:对命令进行选择控制[注意:前面有一横杠]

            参数:给命令加上范围

            中括号表示可省略,例如:

            $ls

                wKiom1nHkr3igievAAAGxhNH38s153.png-wh_50

            $ls -ll

                    wKiom1nHk3bS4gpLAAAQiaBjTTY370.png-wh_50

            $ls -l test.py

                 wKioL1nHkqvBl5q_AAAT92QDiXQ113.png-wh_50

            

    2).帮助命令

            命令 --help 或者是 man 命令  (注意:这里是双横杠,man是manual的简写,包含了Linux绝大部分的命令即使用说明)

            如:

                wKioL1nHlNXi21GMAABNGWZ8EPw541.png-wh_50

      3).增删查改操作命令

           touch/mkdir/rm/ls/pwd/cat/find/grep/more/重定向等等   

        touch:新建文件,若文件存在,则把上一次操作的时间改成本次时间,内容不变                mkdir:新建文件夹(目录),注意不能出现重名现象

            $touch 某路径下xxx1 xxxx2....

            $mkdir 某路径下yyy1 yyy2....

            注意:两者支持批量创建,并且可指定路径

        rm:remove的缩写,用于删除文件,加上选项 -r强行删除文件夹,包括其子内容

            改命令不可恢复(无法撤销)

        ls:list的缩写,查看目录下的内容 (例子在上面写过)

                有-a、 -l、 -h常见选项,

                    -a:显示指定目录下所有子目录和文件,包括隐藏的;

                    -l:以列表的方式显示详细信息;

                     -h:配合-l以列表的方式显示文件的大小

        tree:显示当前目录下的层级关系,选项-d只显示目录层级关系;也可指定目录

                $tree 

                $tree -d

                $tree -d 指定路径下的某一目录

        pwd : 显示当前目录的绝对路径,print working directory

        echo:向屏幕显示内容,作用像镜子一样

                $echo 你好

                        wKiom1nHpHXzXkr9AAACBnERh10176.png-wh_50

        cat:查看文件内容、 创建文件、 文件合并、 追加文件内容等功能(不存在先创建,再合并追加,存在直接操作),常与管道(接下来有讲述)配合使用。选项有-n和-b等,分别输出行号和非空行的行号,例如

            wKioL1nHppXgQU_eAAAIfaJtVAU577.pngwKioL1nHqRLzhMR3AABJTs8vEjY389.png

          history:查看此次在终端中输入的历史命令。

          cd:change directory的简写,用户切换目录;  

    cd ~ 和cd 切换到当前用户的主目录(/home/用户目录,即根目录/家目录)位置

    cd .. 上一级目录

    cd . 当前目录

    cd -  在当前与上一次目录之间来回切换

         find:强大的搜索命令,用来在特定目录下搜索符合条件的文件或目录。

                find [路径] -name "正则表达式"         

                如在当前目录下查找以py结尾的文件:$find -name "*.py"  

         grep:强大的文本搜索工具,常和管道配合使用。

                常有-n、-i等选项,显示符合条件[正则表达式]行的行号,-i忽略大小写,

        管道:用 | 表示,将一个命令的输出通过管道作为另一个命令的输入。

               例:$cat 1.txt 2.py | 4.txt  :将1.txt和2.py的内容输入到4.txt

                   $cat 4.txt : 打印结果和3.txt一样

                   $cat 1.txt 2.py | grep 'ghd':管道右侧没有指定文件名,则系统会将左边结果临时放到缓冲区中,再去缓冲区查找符合条件'ghd'字符串的行

        重定向:将执行结果重定向到一个文件。有>和>>两种方式,前者表示输出,会覆盖文件原有的内容,后者表示追加,将内容追加到已有文件的末尾。如

            $1.txt 2.py > 4.txt  :左边的结果会覆盖右边文件已有的内容  

            $1.txt 2.py >> 4.py  :左边的结果追加到右边内容的末尾,不会覆盖

        more:功能类似于cat,但在文件内容多的情况下,more能够分屏控制显示,cat相对视觉体验不够好。选项:空格键、-b、-f、enter键、p:作用分别是显示下一屏、回滚一屏、前滚一屏、滚动下一行、退出。

              $more xxx.log   : 分屏显示日志内容

                $more ifconfig | grep inet :将ifconfig网卡信息临时放入缓冲区,并使用grep查找inet信息(即ip地址),注意在Windows中使用ipconfig查看网卡信息。

        小结:a)Linux命令若是忽略路径,则默认使用当前路径;

              b)有些命令是具备多种功能,如cat,不存在则先创建文件,在再执行响应操作

              c)重定向、more、grep,没有指定文件,则默认操作缓冲区

              d)说一千道一万,重要的事情说三遍:动手实践、动手实践、动手实践,只有反复去实践,才能印象深刻,记住:实践出真知!

        注意:本文默认是在Ubuntu虚拟机中进行编码,日后若无特殊注明,均是在Ubuntu中进行。

                (若尚未安装Linux虚拟机的朋友可以参考:在VMware虚拟机中安装Ubuntu系统)

        ---在下一篇:将继续讲解Linux常用命令(二) -----

        文章中若有不足或错误之处,真心希望您提出意见、建议,我会尽快完善的,谢谢O(∩_∩)O谢谢