扩展

        这里用于介绍:目录、路径、基础命令。

目录树 

        在Linux系统中,所有的文件和目录都组织在Linux目录树结构中。Linux目录树是由根目录 “/” 开始的,该目录是Linux文件系统的根目录,它包含了所有其他的文件和目录。Linux目录树遵循一种文件系统层次结构标准,又称为FHS(Filesystem Hierarchy Standard),其标准描述了Linux文件系统中各个目录的用途和作用。

路径  

        使用命令和一些工具时,必须知道如何使用路径来快速访问文件。

        路径分为2种:绝对路径、相对路径

绝对路径

        指定文件或者文件夹时,可以使用绝对路径,该路径都是由“/”(根)开始,后跟分隔符一直到指定的文件或目录。

       例1: 使用pwd命令可以直接显示当前的绝对路径,如图1所示。

        这里“/home/Kyiln”就是我们当前的目录。

图1 

        例2 :在当前的目录下有个c.txt里面包含了一些内容,现在使用绝对路径将其内容显示出来,如图2所示。

       这里使用了绝对路径,可以发现该路径是以“/”开头跨过了目录指向的该文件。

图2 

相对路径

        与绝对路径不同,相对路径是相对于当前的目录。因此,相对路径会跟随当前目录的变化而变化。 

        其中:

        “./”,表示当前目录。

        “../”,表示上一层目录。

        例:在当前的目录下有个c.txt里面包含了一些内容,现在使用相对路径将其内容显示出来,如图3所示。

        这里使用了相对路径,因为c.txt文件在当前工作目录下。

图3

“树” 

        麒麟系统的目录结构类似于树,所有内容都是由根部开始的。

        这里介绍几个比较重要的目录:

        1. /bin:该目录包含一些重要的二进制可执行文件,如bsh(Bourne Shell)、cat、cp、ls等等。

        2. /boot:该目录包含Linux启动时所需的一些文件,如Linux的内核文件、启动配置文件和一些硬件的驱动程序等等。

        3. /dev:该目录包含了所有的设备文件,如硬盘、网络卡、鼠标、键盘等等,Linux系统中所有的设备都通过该目录来访问。

        4. /etc:该目录存储了Linux系统中的配置文件,比如网络配置文件、用户配置文件、服务配置文件等等。

        5. /home:该目录包含了所有的用户目录,每个用户都可以在该目录下创建属于自己的目录,供自己存储文件。

        6. /lib:该目录包含了各种库文件,这些库文件为Linux系统中的其他程序提供了支持,其中也包括Linux系统启动时所需要运行的一些库文件。

        7. /mnt:该目录是挂载点目录,用于挂载其他文件系统,比如光盘、磁盘等等。

        8. /opt:该目录是用来安装一些第三方软件的,比如Oracle数据库、WebLogic、WebSphere等等。

        9. /proc:该目录是一个虚拟目录,存放的是Linux内核数据结构,比如进程信息、内存信息等等,它不是存储在磁盘上的目录,而是存储在内存中的。

        10. /root:该目录是超级用户的家目录,它与/home目录类似,但是只有超级用户才能访问该目录。

        11. /usr:该目录包含了Linux系统的大部分应用程序和文件,如/bin、/lib、/share等等。

        12. /var:该目录包含了一些经常变化的文件,比如日志文件、邮件文件、缓存文件等等。

基础命令 

        这里主要介绍一些命令的基础使用;很多命令可以联合使用这里不过多介绍。

创建文件命令

        创建文件的方法有很多种,这里只介绍1种:“touch”命令

         touch命令作用:用于修改文件或者目录的时间属性,包括存取时间和更改时间。若文件不存在,系统会建立一个新的文件,这里我们只用来创建文件。

        创建文件命令格式:touch  <相对路径或绝对路径>

        如图4所示。

        这里使用了相对路径的方式在当前目录下创建了一个文件“1.txt”

图4 

         修改文件或目录的时间属性命令格式:

        touch [-acm][-d<日期时间>][-r<参考文件或目录>] [-t<日期时间>][--help][--version][文件或目录…]

参数说明

        -a 改变档案读取时间的记录。

       -m 改变档案修改时间的记录。

       -c 如目的档案不存在,不会建立新的档案。与 --no-create 的效果一样。

       -r 使用参考档的时间记录,与 --file 的效果一样。

        -d 设定时间与日期,可以使用各种不同的格式。

        -t 设定档案的时间记录,格式与 date 指令相同。

        --no-create 不会建立新档案。

        --help 显示帮助信息。

        --version 显示版本信息。

创建文件夹命令

        这里主要介绍使用“mkdir”命令创建文件夹。

        命令格式:mkdir   [可选项]  <文件夹名称>

        常用可选项参数:

                -p 递归创建,不存在就创建。

        例:在当前目录下递归创建文件夹1/2/3/4/5,如图5所示。

        这里用mkdir命令根据相对路径递归创建了目录名称为“5”的文件夹。

图5 

权限

        在系统中很多文件没有“写”权限。如果我们需要编辑文件,这时候就需要修改文件的权限。

        这里只介绍一些基础权限。

        注:为了系统的安全与稳定性,修改好文件后请将文件权限还原。

“权”

        在麒麟系统中权限最高的用户为系统内置的“root”,它在整个系统中就是“王”。拥有全部文件的读写执行等权限。

        默认我们无法使用“root”用户,但是可以使用“sudo”命令提权。来完成一些操作。

        文件权限:

        r:读取文件内容

        w:修改文件内容

        x:执行权限(对除程序外的文件来说没有意义)

        目录权限:

        r:查看目录下的文件列表

        w:删除和创建目录下的文件        

        x:可以cd进入目录,能查看目录中的详细属性,能访问目录下的内容(基础权限)

如表1所示。

文件类型执行执行执行
字符(d|l|c|s|p)rwxrwxrwx
数字421421421
权限分配文件所有者文件所有者文件所有者文件所属组文件所属组文件所属组其他用户其他用户其他用户

        表1

        这里介绍使用chmod命令来更改权限

        命令格式:chomd [可选项参数] [文件名或目录]

        参数说明:

        u 表示该文件的拥有者(user),g 表示拥有该文件的组(group),o 表示其他(others),a 表示全部(all)。

        + 表示增加权限、- 表示取消权限、= 表示唯一设定权限。

        八进制语法,如表2所示

#权限rwx二进制
7读 + 写 + 执行rwx111
6读 + 写 rw-110
5读 +  执行r-x101
4只读 r--100
3 写 + 执行-wx011
2只写 -w-010
1只执行--x001
0---000

表2 

        例1: 将工作目录下的1.txt文件的权限设为“只读”,如图6所示。

        这里将1.txt文件所有的权限都设为了“只读”。

图6 

        例2: 将文件1.txt所有者的权限改为“读写执行”;将所属组的权限改为“读写”;其他用户权限改为“只读”,如图7所示。

        这里使用了两种命名格式修改权限。

图7 

 查看文件或目录信息

        这里主要介绍“ls”命令。

        ls命令用于显示指定工作目录下之内容(列出目前工作目录所含的文件及子目录)。

        命令格式:ls [可选项] <文件名称或目录>

       常用可选项:

                -a 显示所有文件及目录 (会显示隐藏文件)

                -d 只列出目录(不递归列出目录内的文件)。

                -l 以长格式显示文件和目录信息,包括权限、所有者、大小、创建时间等。

                -r 倒序显示文件和目录。

                -t 将按照修改时间排序,最新的文件在最前面。

                -F 在列出的文件名称后加一符号;例如可执行档则加 "*", 目录则加 "/"

                -R 递归显示目录中的所有文件和子目录。

         例1:查看当前目录下的文件和文件夹,如图8所示。

         有些时候,当前操作的目录为目标时,可以省略相对路径

图8 

        例2:查看当前目录下文件夹和文件的信息,如图9所示。

图9 

文件(文件夹)信息详解

        如表3所示。

说明类型所有者权限所属组权限其他用户权限所有者所有组大小日期日期日期名称
信息-rw-rw-r--KyilnKyiln06月1316:422

表3 

        注:文件类型:- 普通文件;d 目录;l 软链接;c字符设备;s 套接字;b块设备。

        例:查看当前目录下文件名为“2”的信息,如图10所示 。

        “2”的类型为“文件”、所有者权限为“读写”、所属组权限为“读写”、其他用户权限为“只读”、所有者为“Kyiln”、 所有组为“Kyiln”、大小为0、最后更改时间为:“6月12日16时42分”、名称为“1”。

图10 

移动与更改名称

        在计算机的使用过程中,很多时候需要移动文件或者更改文件的名称,为了更快更便捷的完成操作,这时候就需要我们的“mv”指令了。

        mv命令作用:命令用来为文件或目录改名、或将文件或目录移入其它位置,源文件“消失”。

        命令格式1:mv [可选项] <源文件名>  <目标文件名>

        命令格式2:mv [可选项]  <源文件>  <目标目录+名>

        常用可选项:

                -b: 如果目标文件或目录存在时,在执行覆盖前,会将其备份。

                -i: 如果重名则会询问是否覆盖,输入 y 表示直接覆盖,输入 n 表示取消该操作。

                -f: 如果重名不会询问,直接覆盖。

                -n: 与-f相反,如果重名不会询问,直接跳过。

                -u:当源文件比目标文件新或者目标文件不存在时,才执行移动操作。

        例1:将当前目录下文件“2”名称改为“cs11”,使用命令“mv 2 cs11 ”,如图11所示。

图11 

         例2:将当前目录下的文件“cs11”移动到上一层目录中并改名为“cs11.bak”,使用命令:“mv cs11 ../cs11.bak”,如图12所示。

        这是使用了相对路径“../代表上一层目录”。将当前目录下名为“cs11”的文件,改名为“11.bak”并移动到了上一层目录。

图12 

复制

        有些时候我们希望既可以改变文件名称,又不想失去源文件。这时候“cp”命令可以完成此工作。

        cp命令作用:复制文件或者目录,源文件不会消失。

        命令格式:cp [可选项] <源文件> <目标文件>

        常用可选项,如表4所示:

 -a        在复制目录时使用,它保留链接、文件属性,并复制目录下的所有内容。其作用等于 dpR 参数组合。
 -d        复制时保留链接。这里所说的链接相当于快捷方式。
-r        复制目录及其所有的子目录和文件,如果要复制目录,需要使用该选项。
-u        仅复制源文件中更新时间较新的文件。
-p        保留源文件的权限、所有者和时间戳信息。
-f        强制复制,即使目标文件已存在也会覆盖,而且不给出提示
-l        不复制文件,只是生成链接文件。

表4

        例:复制当前目录下名为“3”的文件夹,并将其改名为“3副本”,使用命令:“cp 3  3副本”,如图13所示。

        注:复制目录要加 -r选项。

图13 

显示文件内容

        cat命令作用:用于连接文件并打印到标准输出设备上,它的主要作用是用于查看和连接文件。

        命令格式:cat [可选项] <文件>

        常用可选项,如表5所示。

-n显示“每一行”行号。
-b显示“非空行”行号。
-s压缩连续的空行,只显示一个空行。
-E每一行以 $ 符号结尾。
-T将 Tab 字符显示为 ^I
-v显示一些非打印字符。

表5 

        例:查看当前目录下“cs11.bak”的内容,可以使用命令:“cat cs11.bak”,如图14所示。

        使用此命令后,会将文件“cs11.bak”的内容,输出到终端上显示。

图14 

 查找

        有些时候我们只知道文件名但是不知道文件在哪里,这个时候使用“find”命令就可以解决这个问题了。

        find命令作用:命令用于在指定目录下查找文件和目录。

        这里只介绍简单的用法。

        find命令格式:find  <路径> <匹配条件> [动作]

        参数说明:

        路径:要查找的目录路径,可以是一个目录或文件名,也可以是多个路径,多个路径之间用空格分隔,如果未指定路径,则默认为当前目录。

        匹配条件:

        -user username:按文件所有者查找。

                             -group groupname:按文件所属组查找。

        -mtime days:按修改时间查找,支持使用 + 或 - 表示在指定天数前或后,days                      是一个整数表示天数。

        -type type:按文件类型查找,可以是 f(普通文件)、d(目录)等。

        -name pattern:按文件名查找,支持使用通配符 * 和 ?。

         动作:可选的,用于对匹配到的文件执行操作,比如删除、复制等。

        例:查找文件Kylin所在的位置,可以使用“find / -name Kyiln” 完成此操作,如图15所示。

图15  

查找字符串

        “find”命令只能查找文件,但是有些时候我们需要知道文件中是否包含指定的内容,或指定的内容是否存在于文件中,这时候就需要另一个查找命令了。

        “grep”命令用于查找文件里符合条件的字符串或者正则表达式。

        如果文件中存在符合条件的内容,则会将符合的那一行的内容显示出来。若是不指定任何文件名称,或是所给予的文件名为“-”,则从标准输入设备读取设备。

        grep命令格式:

        grep [可选项] <字符串或正则表达式> [文件名(可以多个)]

常用选项:

-i:忽略大小写。

-v:反向查找,只打印不匹配的行。

-n:显示匹配行的行号。

-r:递归查找子目录中的文件。

-l:只打印匹配的文件名。

-c:只打印匹配的行数。

例:在标准输入中查找字符串“w”。如图16所示。

使用“cat”命令将文件的内容作为了标准输入,在标准输入中查找字符串“w”。

图16 

 

查看“树”

        “tree”命令用于树状图列出目录的内容。执行此命令,它会列出指定目录下的所有文件,包括子目录中的文件。

        tree命令格式:tree [可选项] [<目录>]

常用可选项参数:

-a:显示所有文件和目录。

-d:显示目录名称而非内容。

-D:列出文件或目录的更改时间。

-f:在每个文件或者目录之前,显示完整的相对路径的名称。

-L:限制层级。

-s:列出文件或者文件大小。

-t:用文件和目录的更改时间排序。

例:显示当前工作目录下的目录树,如图17所示。

图17 

Logo

开放原子开发者工作坊旨在鼓励更多人参与开源活动,与志同道合的开发者们相互交流开发经验、分享开发心得、获取前沿技术趋势。工作坊有多种形式的开发者活动,如meetup、训练营等,主打技术交流,干货满满,真诚地邀请各位开发者共同参与!

更多推荐