美文网首页
linux基础(二)

linux基础(二)

作者: SecondBJ | 来源:发表于2018-07-29 14:44 被阅读0次

    1.路径:

     相对路径:路径的写法一定由根目录”/”写起,例如/usr/local/mysql 这就是绝对路径。
     相对路径:路径的写法不是由根目录”/”写起,例如,首先用户进入到/ 然后再进入到home ,命令为 cd /home 然后 cd test 此时用户所在的路径为 /home/test 。第一个cd命令后跟 /home 第二个cd命令后跟test ,并没有斜杠,这个test是相对于/home 目录来讲的,所以叫做相对路径。
    

    2.pwd:打印当前目录:

    image.png

    3.mkdir:make directory的缩写。其语法为 mkdir [-mp] [目录名称] ,其中-m , –p 为其选项,-m:这个参数用来指定要创建目录的权限,该参数不常用。-p:这个参数很管用的,先来做个试验,你会一目了然的。

    image.png
    当我们想创建 /tmp/test/qb 目录,可是提示不能创建,原因是/tmp/test目录不存在,你会说,这个linux怎么这样傻,/tmp/test目录不存在就自动创建不就OK了嘛,的确linux确实很傻,如果它发现要创建的目录的上一级目录不存在就会报错。然后linux也为我们想好了解决办法,即-p参数。 image.png
    image.png
    rmdir删除一个目录
    image.png
    rmdir 其实是rmove directory 缩写,其只有一个选项-p 类似与mkdir命令,这个参数的作用是将上级目录一起删除。举个例子吧,新建目录mkdir -p d1/d2/d3 ,rmdir -p d1/d2/d3相当于是删除了d1,d1/d2, d1/d2/d3。如果一个目录中还有目录,那么当你直接rmdir 该目录时,会提示该目录不为空,不能删除。如果你非要删除不为空的目录,那你用rm指令吧。

    4.rm 删除目录或者文件

    rmdir只能删除目录但不能删除文件,要想删除一个文件,则要用rm命令了。rm同样也有很多选项。你可以通过 man rm 来获得详细帮助信息。在这里笔者只列举较常用的几个选项。
    -f 强制的意思,如果不加这个选项,当删除一个不存在的文件时会报错。
    -i 这个选项的作用是,当用户删除一个文件时会提示用户是否真的删除。

    5.cp copy的简写,即拷贝。格式为 cp [选项] [ 来源文件 ] [目的文件] ,例如我想把test1 拷贝成test2 ,这样即可 cp test1 test2,以下介绍几个常用的选项:

    -d 这里涉及到一个“连接”的概念。连接分为软连接和硬连接。以后会详细解释,现在只要明白这里的软连接跟windows中的快捷方式类似即可。如果不加这个-d则拷贝软连接时会把软连接的目标文件拷贝过去,而加上后,其实只是拷贝了一个连接文件(即快捷方式)。
    -r 如果你要拷贝一个目录,必须要加-r选项,否则你是拷贝不了目录的。
    -i 如果遇到一个存在的文件,会问是否覆盖。

    6.mv 移动的意思,是move的简写。格式为 mv [ 选项 ] [源文件] [目标文件],下面介绍几个常用的选项。

     mv [-iuf] src dest # 移动单个文件或目录
     mv [-iuf] src1 src2 src3 dest_dir # 移动多个文件或目录
    

    选项说明:
    --backup[=CONTROL]:如果目标文件已存在,则对该文件做一个备份,默认备份文件是在文件名后加上波浪线,如/b.txt~
    -b:类似于--backup,但不接受参数, 默认备份文件是在文件名后加上波浪线,如/b.txt~
    -f:如果目标文件已存在,则强制覆盖文件
    -i:如果目标文件已存在,则提示是否要覆盖,这是alias mv的默认选项
    -n:如果目标文件已存在,则不覆盖已存在的文件
    如果同时指定了-f/-i/-n,则后指定的生效
    -u:(update)如果源文件和目标文件不同,则移动,否则不移动
    -- mv默认已经是递归移动,不需要-r参数。

    7.inode:每个文件都有一个inode,在将inode关联到文件后系统将通过inode号来识别文件,而不是文件名。并且访问文件时将先找到inode,通过inode中记录的block位置找到该文件。

    7.1 硬链接

    虽然每个文件都有一个inode,但是存在一种可能:多个文件的inode相同,也就即inode号、
    元数据、block位置都相同,这是一种什么样的情况呢?能够想象这些inode相同的文件使用的
    都是同一条inode记录,所以代表的都是同一个文件,这些文件所在目录的data block中的inode
    指针目的地都是一样的,只不过各指针对应的文件名互不相同而已。这种inode相同的文件在Linux
    中被称为"硬链接"。
    

    硬链接文件的inode都相同,每个文件都有一个"硬链接数"的属性,使用ls -l的第二列就是被硬链接数,它表示的就是该文件有几个硬链接。

    每创建一个文件的硬链接,实质上是多一个指向该inode记录的inode指针,并且硬链接数加1。

    删除文件的实质是删除该文件所在目录data block中的对应的inode指针,所以也是减少硬链接次数,由于block指针是存储在inode中的,所以不是真的删除数据,如果仍有其他指针指向该inode,那么该文件的block指针仍然是可用的。当硬链接次数为1时再删除文件就是真的删除文件了,此时inode记录中block指针也将被删除。

    不能跨分区创建硬链接,因为不同文件系统的inode号可能会相同,如果允许创建硬链接,复制到另一个分区时inode可能会和此分区已使用的inode号冲突。

    硬链接只能对文件创建,无法对目录创建硬链接。之所以无法对目录创建硬链接,是因为文件系统已经把每个目录的硬链接创建好了,它们就是相对路径中的"."和"..",分别标识当前目录的硬链接和上级目录的硬链接。每一个目录中都会包含这两个硬链接,它包含了两个信息:(1)一个没有子目录的目录文件的硬链接数是2,其一是目录本身,即该目录datablock中的".",其二是其父目录datablock中该目录的记录,这两者都指向同一个inode号;(2)一个包含子目录的目录文件,其硬链接数是2+子目录数,因为每个子目录都关联一个父目录的硬链接".."。很多人在计算目录的硬链接数时认为由于包含了"."和"..",所以空目录的硬链接数是2,这是错误的,因为".."不是本目录的硬链接。另外,还有一个特殊的目录应该纳入考虑,即"/"目录,它自身是一个文件系统的入口,是自引用(下文中会解释自引用)的,所以"/"目录下的"."和".."的inode号相同,它自身不占用硬链接,因为其datablock中只记录inode号相同的"."和"..",不再像其他目录一样还记录一个名为"/"的目录,所以"/"的硬链接数也是2+子目录数,但这个2是"."和".."的结果。

    为什么文件系统自己创建好了目录的硬链接就不允许人为创建呢?从"."和".."的用法上考虑,如果当前目录为/usr,我们可以使用"./local"来表示/usr/local,但是如果我们人为创建了/usr目录的硬链接/tmp/husr,难道我们也要使用"/tmp/husr/local"来表示/usr/local吗?这其实已经是软链接的作用了。若要将其认为是硬链接的功能,这必将导致硬链接维护的混乱。

    不过,通过mount工具的"--bind"选项,可以将一个目录挂载到另一个目录下,实现伪"硬链接",它们的内容和inode号是完全相同的。

    硬链接的创建方法: ln file_target link_name 。

    4.2 软链接

    软链接就是字符链接,链接文件默认指的就是字符链接文件(注意不是字符设备),使用"l"表示其类型。
    软链接在功能上等价与Windows系统中的快捷方式,它指向原文件,原文件损坏或消失,软链接文件就
    损坏。可以认为软链接inode记录中的指针内容是目标路径的字符串。
    

    创建方式: ln –s source_file softlink_name ,记住是source_file<--link_name的指向关系(反箭头)。

    查看软链接的值: readlink softlink_name

    在设置软链接的时候,source_file虽然不要求是绝对路径,但建议给绝对路径。是否还记得软链接文件的大小?它是根据软链接所指向路径的字符数计算的,例如某个符号链接的指向方式为"rmt --> ../sbin/rmt",它的文件大小为11字节,也就是说只要建立了软链接后,软链接的指向路径是不会改变的,仍然是"../sbin/rmt"。如果此时移动软链接文件本身,它的指向是不会改变的,仍然是11个字符的"../sbin/rmt",但此时该软链接父目录下可能根本就不存在/sbin/rmt,也就是说此时该软链接是一个被破坏的软链接。

    相关文章

      网友评论

          本文标题:linux基础(二)

          本文链接:https://www.haomeiwen.com/subject/bsqamftx.html