Linux的文件操作

作者: 想去山上定居 | 来源:发表于2018-08-05 21:15 被阅读0次
    图书馆文件操作

    地点定桩

    1. 玻璃窗 cd pwd
    2. 双书架位子 ls
    3. 三书架位子 touch ln
    4. 沙发 cp mv
    5. 电脑 rm
    6. 前台 mkdir rmdir
    7. 书架 file
    8. 前进的路 cat
    9. 桌椅(看书的)more less
    10. 玻璃墙 tail head

    玻璃窗 cd + pwd

    cd:change directory 跳转路径

    pwd:Print Working Directory 输出当前工作路径

    从左边窗户最顶玻璃开始跳,每跳一次需要cd 时间为1s,第一跳一个点,跳到当前目录,第二跳两个点,跳到上级目录,第三跳上坡的反斜杠,跳到根目录。

    1. 绝对路径:使用根目录/ 开头
    2. 相对路径:使用.当前目录,..上级目录开头

    跳到右边中间的玻璃就完成任务,完成任务可以得到一个王冠w,带上王冠w 后右边其他两个玻璃就会升起国旗p d,等到pwd。最后就会得到当前坐标位置。

    → pwd # 输出当前的工作路径
    /Users/vector.huang
    
    → cd ./nice # 进入当前目录下的nice 目录
    → pwd
    /Users/vector.huang/nice # 已经成功进入nice 目录
    
    → cd ../nice2 # 进入上一级目录的nice2 目录
    → pwd
    /Users/vector.huang/nice2 # 已经成功进入nice2 目录
    

    双书架位子 ls

    ls:list directory contents 路径内容列表

    讲解

    把指定的路径下的文件目录信息写到标准输出上,默认的路径是当前路径

    ls [-选项] [file]

    1. file 是一个文件,那么直接输出
    2. file 是一个目录,那么输出该目录下的文件目录名
    3. file 是文件扩展匹配
      • 配置单个显示的结构和两项一样
      • 匹配多个,那么就输出多个

    参数

    • -a 显示全部内容,包括影藏文件
    • -l 以列表的显示显示更详细的内容
    • -F 区分出目录、文件、可执行文件、链接文件等
    • -R 显示子目录的文件,类似tree
    • -d 显示file 参数,可以用来打印默认file 参数为一个点,可以结合文件扩展匹配 */ 打印当前目录下的目录
    • -i 显示唯一标识inode
    • -lh 显示文件大小,需要和-l 参数结合使用,只有按照列表的形式显示才有空间显示文件大小
    • -S 按照文件大小排序,降序
    → ls
    text.txt
    
    → ls -a # 隐藏文件也显示出来了
    .  ..  .bash_history  .bash_logout  .bash_profile  .bashrc  .ssh  text.txt
    
    → ls -l # 按列表显示
    总用量 0
    -rw-rw-r-- 1 vector vector 0 7月  28 20:10 text.txt
    
    →  ls -F # 名字后面多了标识
    testdir/  text.txt
    
    → ls -RF
    .: # 当前目录的内容
    testdir/  text.txt
    
    ./testdir: # 子目录的内容
    1
    
    → ls -d  # 打印file 参数,与文件扩展匹配结合使用
    . # file 参数默认就是当前目录.
    
    → ls -d */ # 打印当前目录下的目录
    testdir/
    
    → ls -i # 显示inode
    655371 testdir  655370 text.txt
    
    → ls -lh # 显示文件大小
    总用量 4.0K
    drwxrwxr-x 2 vector vector 4.0K 8月   5 15:14 testdir
    -rw-rw-r-- 1 vector vector    0 7月  28 20:10 text.txt
    
    → ls -lhS # 排序
    总用量 4.0K
    drwxrwxr-x 2 vector vector 4.0K 8月   5 15:14 testdir
    -rw-rw-r-- 1 vector vector    0 7月  28 20:10 text.txt
    
    

    记忆

    双书架的位置是孙悟空s拿着金箍棒l => ls。

    -al
    靠近玻璃窗的书架里面放着都是苹果a,因为隐形了所以看不见。只要用棍子l 扫过去,那么苹果就会在书架旁排成列表。

    -FR
    排好苹果之后,可以用大斧头F 砍,砍出不同的样子,就能区分出目录、文件、可执行文件、链接文件等,但躲在很高的草里面的苹果不被砍,只能砍掉草的叶子(叶子=子目录)。

    说大、高等字的代表大写,默认小写

    -di

    远离玻璃窗的书架有一只狗d 看守,谁过来就咬谁,直接赶出去(直接输出file),狗前面会有一根蜡烛i,蜡烛上面刻着一个数据,用来做唯一标识inode。

    -hS

    远离玻璃窗的书架上面有一张椅子h,孙悟空很喜欢坐上去称一下自己有多重(大小),大孙悟空S 可以优先坐上去(排序)。

    三书架位子 touch ln

    讲解

    touch : 新建文件

    ln :link创建链接文件

    1. 符号链接:产品一个文件(符号文件)指向其他文件,两文件的inode 不一样
    2. 硬链接:直接链接到硬盘上面的文件,两文件的inode 一样
    3. 创建符号链接需要添加 -s 参数
    4. 删除本体文件符号链接会失效,硬链接不会失效,可以理解为硬链接文件就是为硬盘文件的另一个引用。
    //理解符号链接和硬链接
    Object a = new Object();
    Object b = a; // 创建硬链接
    Object c = new Object(a); //创建软链接
    
    ...回收引用a 之后 //删除本体文件
    
    对象b 还是可用
    对象c 还是在,但是里面的a 已经没有了,相当于作废了
    
    
    → touch text.txt
    → ls
    text.txt
    
    → ln -s text.txt text2.txt #创建符号链接
    → ls -lF # -F 参数查看链接文件多一个@
    total 0
    -rw-r--r--  1 vector.huang  staff  0  8  5 19:55 text.txt
    lrwxr-xr-x  1 vector.huang  staff  8  8  5 19:57 text2.txt@ -> text.txt
    
    → ln text.txt text3.txt #创建硬链接
    → ls -lF
    total 0
    -rw-r--r--  2 vector.huang  staff  0  8  5 19:55 text.txt
    lrwxr-xr-x  1 vector.huang  staff  8  8  5 19:57 text2.txt@ -> text.txt
    -rw-r--r--  2 vector.huang  staff  0  8  5 19:55 text3.txt
    
    → ls -i # 查看inode
    8596244097 text.txt  8596243518 text2.txt 8596244097 text3.txt
    
    

    记忆

    中间书架没有书,只要人触摸touch 一下就会产生一本书,右边书架比较硬,是和中间书架直接链接ln 起来的,完成一样。左边的书架很小,像个美女s。

    沙发 cp mv

    讲解

    讲解

    cp :cope,复制多一个一样的文件或目录

    cp [-选项] source_file target_file

    运行逻辑

    1. 判断目标路径是否是已经存在的目录
      • 如果存在,就在该目录下追加源路径名称
      • 如果不存在,进入下一步
    2. 把源路径和目标路径一一对应开始复制
    → ls -FR #查看当前目录结构
    a/
    
    ./a:
    a.txt
    
    → cp -r a b # 复制a 为b,这个时候b 不是已存在的目录,直接复制为b
    → ls -FR
    a/ b/
    
    ./a:
    a.txt
    
    ./b:    # 可以看到 a->b | a/a.txt->b/a.txt
    a.txt
    
    -> cp -r a b 
    # 在次运行同样的复制名字,但是这个时候b 已经是存在的目录了
    # 需要在b 的基础上添加a,变为 b/a,所以命令相当于
    # cp -r a b/a
    # (如果b/a已经存在就不做再次添加了,只会做一次的判断)
    → ls -FR
    a/ b/
    
    ./a:
    a.txt
    
    ./b:  # b 目录下面已经存在了a 目录
    a/     a.txt
    
    ./b/a:
    a.txt
    
    → tree  # 或许这样看的比较清晰
    .
    ├── a
    │   └── a.txt
    └── b
        ├── a
        │   └── a.txt
        └── a.txt
    
    

    明白了上面的案例,估计cp 就学会了,下面来学习部分参数

    • -R/r:递归处理,将指定目录下的所有文件与子目录一并处理;
    • -f:强行复制文件或目录,不论目标文件或目录是否已存在;
    • -u:使用这项参数后只会在源文件的更改时间较目标文件更新时或是名称相互对应的目标文件并不存在时,才复制文件;
    • -i:覆盖既有文件之前先询问用户;
    • -v:详细显示命令执行的操作。
    • -l:对源文件建立硬连接,而非复制文件;
    • -s:对源文件建立符号连接,而非复制文件;
    • -a:此参数的效果和同时指定"-dpR"参数相同;
    • -d:当复制符号连接时,把目标文件或目录也建立为符号连接,并指向与源文件或目录连接的原始文件或目录;
    • -p:保留源文件或目录的属性;
    • -S:在备份文件时,用指定的后缀“SUFFIX”代替文件的默认后缀;
    • -b:覆盖已存在的文件目标前将目标文件备份;

    mv:move file,移动文件,和cp 的原理一样,可以理解为mv 把源文件删除了(当然实现逻辑不是这样的)

    # b 目录不存在,直接移动为b
    → tree
    .
    └── a
        └── a.txt
    → mv a b 
    → tree
    .
    └── b
        └── a.txt
        
    # b 目录存在,会移动到b目录下面
    → tree
    .
    ├── a
    │   └── a.txt
    └── b
        └── a.txt
    → mv a b
    → tree
    .
    └── b
        ├── a
        │   └── a.txt
        └── a.txt
    
    • -f, --force 覆盖前不询问
    • -i, --interactive 覆盖前询问
    • -n, --no-clobber 不覆盖已存在文件,如果您指定了-i、-f、-n 中的多个,仅最后一个生效。
    • -u, --update 检查文件更新了才移动
    • -v, --verbose(啰唆的) 显示正在做什么

    记忆

    1. -rfuiv
    2. -ls
    3. -dp
    4. -Sb

    1号沙发和2号沙发是cp,但是2号沙发喜欢移动mv 到了3号沙发,三角恋很可悲。
    最可悲的是一号沙发,他是做ui 的,有一次不小心运行了 rm -rf /*,啰啰嗦嗦(verbose)地赔了10万。现在还要被2号沙发甩。

    2号沙发变成孙悟空(ls)直接链接(硬链接和符号链接)到3好沙发。

    3号沙发开心的两边都插上了狗旗dp,很开心接受了2号沙发的链接,之后把自己也变成链接(符号链接),还把属性都设置为一样的。

    在我这一个外人看来,三个都是大傻逼Sb,都可以拿去备份了。

    电脑 rm

    用法

    rm:remove 移除文件,默认时,rm 不会删除目录。使用--recursive(-r 或-R)选项可删除每个给定的目录,以及其下所有的内容。

    • -f, --force 删除前不询问
    • -i 删除前询问
    • -r, -R, --recursive 递归删除目录及其内容
    • -d, --dir 删除空目录
    • -v, --verbose 哆哆嗦嗦,落落叨叨

    拿着斧头f 直接把第一台电脑的键盘砍了,砍到显示器的时候,看到显示器显示一支蜡烛,就询问一下,还有什么遗言不,问完还是砍一斧头。整部电脑就这样没有了。

    第二台电脑旁边长满了草r高高低低的都有R,就算再深入,还是一斧头砍掉键盘,这个时候显示器显示了一只狗d,什么都没有(空目录),这个就简单了轻轻斧头就能砍掉。

    第三第四台电脑这个时候就不退缩了,直接站出来,说:#&@&&……¥#%&……#@&(%&……&*@……¥
    哆哆嗦嗦,唠唠叨叨的,最后烦的要死就走了。不砍第三第四台电脑了

    1. 键盘1:-f 直接删除
    2. 显示屏1:-i 询问一下,有没有什么遗言呀!
    3. 键盘2:-rR 递归,躲进草里面
    4. 显示屏2:-d 就一只狗,什么都没有
    5. 电脑34:-v 显示当前操作,哆哆嗦嗦唠唠叨叨

    前台 mkdir rmdir

    用法

    mkdir - make directories
    mkdir 创建目录,默认不创建父级目录,可以加入-p,--parents 创建父级目录

    rmdir - remove empty directories
    rmdir 在本身已经有了rm 命令的前提下,该命令显得很多余,那么功能就定位只能删除空目录,也给一个-p,--parents 参数来删除父级空目录

    高高的前台是父亲p 创造mk 的,空空的前台(代表操作的是空目录)是时候换掉了。

    1. 高高的前台:创建目录 mkdir -p,父亲创建的前台
    2. 空空的前台:移除空目录 rmdir,空空的

    书架 file

    用法
    1. 查看文件类型 file filename
    → file tt
    tt: ASCII text
    
    → file /bin/ls
    /bin/ls: ELF 64-bit LSB executable, x86-64, version 1 (SYSV), dynamically linked (uses shared libs), for GNU/Linux 2.6.32, BuildID[sha1]=3d705971a4c4544545cb78fd890d27bf792af6d4, stripped
    
    
    记忆

    书架上我以为是书,拿起来看的时候都是文件呀

    1. 书架:查看文件类型 file,书架放的不是书,而是文件

    前进的路 cat

    前进的路,无法停下来,查看整个文件的内容

    • -n 加上行号
    • -b 只给非空的加上行号
    • -T 用^I替换制表符

    看书的桌椅 more less

    less is more,看书看的少,就是多,所以慢慢看,不要急。

    玻璃墙 tail head

    玻璃墙变成了一个怪人,有头head有尾tail,-n 可以显示行数

    相关文章

      网友评论

        本文标题:Linux的文件操作

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