Linux文件和目录管理以及常用代码

目录与路径

绝对路径与相对路径

绝对路径:路径的写法『一定由根目录 / 写起』,例如: /usr/share/doc 这个目录。

相对路径:路径的写法『不是由 / 写起』,例如由 /usr/share/doc 要到 /usr/share/man 底下时,可以写成: cd ../man这就是相对路径的写法,相对路径意指『相对于目前工作目录的路径

  1. Cd表示要转换到的目录
  2. .         代表此层目录
  3. ..        代表上一层目录
  4. -         代表前一个工作目录
  5. ~         代表『目前用户身份』所在的家目录
  6. ~account  代表 account 这个用户的家目录
  7. pwd (显示目前所在的目录) 例如在上个表格最后的目录是/var/mail这个目录,但是提示字符仅显示mail, 如果你想要知道目前所在的目录,可以输入pwd即可
  8. mkdir (创建新目录)假如你要创建一个目录为 /home/bird/testing/test1,那么首先必须要有 /home 然后 /home/bird ,再来 /home/bird/testing 都必须要存在,才可以创建 /home/bird/testing/test1 这个目录
  9. rmdir (删除『空』的目录)
  10. pwd,mkdir,rm
  11. 关于运行档路径的变量: $PATH   例如/bin/ls(这是绝对路径), 那你会不会觉得很奇怪:『为什么我可以在任何地方运行/bin/ls这个指令呢? 』 为什么我在任何目录下输入 ls 就一定可以显示出一些消息而不会说找不到该 /bin/ls 指令呢?这是因为环境变量 PATH 的帮助所致,echo有『显示、印出』的意思,而 PATH 前面加的 $ 表示后面接的是变量,所以会显示出目前的 PATH,通过上面的图可以看出这个ls确实存在于/root底下,并不是被删除了!
  12. 所以,为了安全起见,不建议将『.』加入PATH的搜索目录中。
  13. PATH
  14. ls,
  15. 文件与目录的查看: ls
  16. -a  :全部的文件,连同隐藏档( 开头为 . 的文件) 一起列出来
  17. -d  :仅列出目录本身,而不是列出目录内的文件数据
  18. -l  :长数据串列出,包含文件的属性与权限等等数据
  19. cp (复制文件或目录)
  20. -a  :相当于 -dr --preserve=all 的意思
  21. -i  :若目标档(destination)已经存在时,在覆盖时会先询问动作的进行
  22. -p  :连同文件的属性(权限、用户、时间)一起复制过去,而非使用缺省属性
  23. -r  :递归持续复制,用于目录的复制行为
  24. -l  :进行硬式链接(hard link)的链接档创建,而非复制文件本身;
  25. Cp使用时需要注意权限
  26. rm (移除文件或目录)
  27. -f  :就是 force 的意思,忽略不存在的文件,不会出现警告消息;
  28. -i  :交互模式,在删除前会询问用户是否动作
  29. -r  :递归删除,最常用在目录的删除了
  30. mv (移动文件与目录,或更名)
  31. 选项与参数:
  32. -f  :force 强制的意思,如果目标文件已经存在,不会询问而直接覆盖;
  33. -i  :若目标文件 (destination) 已经存在时,就会询问是否覆盖!
  34. -u  :若目标文件已经存在,且 source 比较新,才会更新 (update)
  35. 例如:复制一文件,创建一目录,将文件移动到目录中
  36. cd /tmp
  37. cp ~/.bashrc bashrc
  38. mkdir mvtest
  39. mv bashrc mvtest

文件内容查阅

直接查看文件内容: cat, tac, nl

  1. cat  由第一行开始显示文件内容
  2. tac  从最后一行开始显示,可以看出 tac 是 cat 的倒着写!
  3. nl   显示的时候,顺道输出行号!
  4. more 一页一页的显示文件内容
  5. less 与 more 类似,但是比 more 更好的是,他可以往前翻页!
  6. head 只看头几行
  7. tail 只看尾巴几行
  8. od   以二进位的方式读取文件内容!
  9. cat (concatenate)
  10. -n  :打印出行号,连同空白行也会有行号,与 -b 的选项不同;
  11. tac (反向列示)
  12. tac 刚好是将 cat 反写过来,所以他的功能就跟 cat 相反
  13. cat 是由『第一行到最后一行连续显示在屏幕上』,而 tac 则是『 由最后一行到第一行反向在屏幕上显示出来 』
  14. nl (添加行号打印)
  15. nl 可以将输出的-b  :指定行号指定的方式,主要有两种:
  16.       -b a :表示不论是否为空行,也同样列出行号(类似 cat -n);
  17.       -b t :如果有空行,空的那一行不要列出行号(默认值);
  18. -n  :列出行号表示的方法,主要有三种:
  19.       -n ln :行号在屏幕的最左方显示;
  20.       -n rn :行号在自己字段的最右方显示,且不加 0 ;
  21.       -n rz :行号在自己字段的最右方显示,且加 0 ;
  22. -w  :行号字段的占用的字符数。文件内容自动的加上行号
more (一页一页翻动)
  1. 空白键 (space):代表向下翻一页;
  2. Enter         :代表向下翻『一行』;
  3. /字符串         :代表在这个显示的内容当中,向下搜索『字符串』这个关键字;
  4. :f            :立刻显示出文件名以及目前显示的行数;
  5. q             :代表立刻离开 more ,不再显示该文件内容。
  6. b 或 [ctrl]-b :代表往回翻页,不过这动作只对文件有用,对管线无用。
head (取出前面几行)
  1. 若要显示前 20 行,就得要这样:
  2. head -n 20 /etc/man_db.conf
  3. 范例:如果后面100行的数据都不打印,只打印/etc/man_db.conf的前面几行
  4. head -n -100 /etc/man_db.conf
tail (取出后面几行)
  1. 若要显示最后的 20 行,就得要这样:
  2. tail -n 20 /etc/man_db.conf
  3. 例一:如果不知道/etc/man_db.conf有几行,却只想列出100行以后的数据时?
  4. tail -n +100 /etc/man_db.conf
修改文件时间或建置新档: touch
  1. 每个文件在linux底下都会记录许多的时间参数, 其实是有三个主要的变动时间
    1. Mtime
      1. 当该文件的『内容数据』变更时,就会更新这个时间!内容数据指的是文件的内容,而不是文件的属性或权限
    2. Ctime
      1. 当该文件的『状态 (status)』改变时,就会更新这个时间,举例来说,像是权限与属性被更改了,都会更新这个时间
    3. Atime
      1. 当『该文件的内容被取用』时,就会更新这个读取时间 (access)。举例来说,我们使用 cat 去读取 /etc/man_db.conf , 就会更新该文件的 atime 了
  2. 以下是实例
  3. [root@study ~]# touch [-acdmt] 文件
  4. 选项与参数:
-a  :仅修订 access time;
-c  :仅修改文件的时间,若该文件不存在则不创建新文件;
-d  :后面可以接欲修订的日期而不用目前的日期,也可以使用 --date="日期或时间"
-m  :仅修改 mtime ;
-t  :后面可以接欲修订的时间而不用目前的时间,格式为[YYYYMMDDhhmm]
  1. 至于运行的结果当中,我们可以发现数据的内容与属性是被复制过来的,因此文件内容时间(mtime)与原本文件相同。
  2. 透过 touch 这个指令,我们可以轻易的修订文件的日期与时间。并且也可以创建一个空的文件喔! 不过,要注意的是,即使我们复制一个文件时,复制所有的属性,但也没有办法复制 ctime 这个属性的。 ctime 可以记录这个文件最近的状态 (status) 被改变的时间。无论如何,还是要告知大家, 我们平时看的文件属性中,比较重要的还是属于那个 mtime 。我们关心的常常是这个文件的『内容』 是什么时候被更动的

文件与目录的缺省权限与隐藏权限

文件缺省权限:umask
  1. umask
  2. 0022
  3. umask -S
  4. u=rwx,g=rx,o=rx
  5. 简单的来说umask可以设置用户访问的默认权限
    1. umask 的分数指的是『该默认值需要减掉的权限!』因为 r、w、x 分别是 4、2、1 分,所以啰!也就是说,当要拿掉能写的权限,就是输入 2 分,而如果要拿掉能读的权限,也就是 4 分,那么要拿掉读与写的权限,也就是 6 分,而要拿掉运行与写入的权限,也就是 3 分,这样了解吗?请问你, 5 分是什么?呵呵! 就是读与运行的权限啦
  6. umask 为 003 ,所以拿掉的权限为 --------wx,因此:
  7. 文件: (-rw-rw-rw-) - (--------wx) = -rw-rw-r--
  8. 目录: (drwxrwxrwx) - (d-------wx) = drwxrwxr-
文件特殊权限: SUID, SGID, SBIT
  1. Set UID
    1. SUID的权限有这样的限制与功能:
    2. SUID 权限仅对二进位程序(binary program)有效;
    3. 运行者对于该程序需要具有 x 的可运行权限;
    4. 本权限仅在运行该程序的过程中有效 (run-time);
    5. 运行者将具有该程序拥有者 (owner) 的权限。
    6. 如果 dmtsai 使用 cat 去读取 /etc/shadow 时,他能够读取吗?因为 cat 不具有 SUID 的权限,所以 dmtsai 运行 『cat /etc/shadow』 时,是不能读取 /etc/shadow 的
观察文件类型:file
  1. 如果你想要知道某个文件的基本数据,例如是属于 ASCII 或者是 data 文件,就可以利用 file 这个指令来检阅
  2. file ~/.bashrc
  3. /root/.bashrc: ASCII text

指令与文件的搜索

which (寻找『运行档』)
  1. -a :将所有由 PATH 目录中可以找到的指令均列出,而不止第一个被找到的指令名称
  2. 这个指令是根据『PATH』这个环境变量所规范的路径
  3. 如下例子
  4. 搜索 ifconfig 这个指令的完整文件名
  5. [root@study ~]# which ifconfig
  6. /sbin/ifconfig
Find
    1. 这个可以根据时间来查找有变动过内容的文件
  1. find / -mtime 0
  2. # 那个 0 是重点0 代表目前的时间,所以,从现在开始到 24 小时前,
  • 10
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值