2017-05-26 10:20:16 menghuanguaishou 阅读数 1425
  • API不是从业务抽象出来的(2):举例说明

    本课程衔接上一课程:”API不是从业务抽象出来的”,进而举例详细说明之,还有代码范例。许多人相信API是从业务需求所抽象出来的,真的吗? 本课程就来探讨这个议题。此议题是另一个是频课程(名称:”父类不是抽象出来的!”)的姊妹作品。

    5897 人正在学习 去看看 高煥堂

总有些人发生在linux下无法进入上级目录,在网上收索了一堆,全是cd ..,还有截取路径之类的,然后被人各种踩。

如果你在脚本中执行cd ..提示找不到路径,有一种可能性是你用了windows编辑器,编辑好的文本上传到linux下执行,windows下换行与linux下是不同的,所以出现这种问题,直接在linux下编辑,或者换一个编辑器UE等

老毛桃一键还原,安全高效 稳定可靠 全面兼容WINDOWS系统。本程序基于Ghost(v11.02)内核,具有良好的安全和稳定性,真正达到快速备份还原;全面支持和兼容32位和64位的Windows等主流操作系统平台,支持最新的Windows7操作系统,Vista、XP、2000、2003等更不在话下;支持备份还原隐藏分区,大大降低被误删除或被破坏的可能性,使您无后顾之忧。
http://www.laomaotao.net/?H4086

2019-04-08 12:50:36 F8qG7f9YD02Pe 阅读数 125
  • API不是从业务抽象出来的(2):举例说明

    本课程衔接上一课程:”API不是从业务抽象出来的”,进而举例详细说明之,还有代码范例。许多人相信API是从业务需求所抽象出来的,真的吗? 本课程就来探讨这个议题。此议题是另一个是频课程(名称:”父类不是抽象出来的!”)的姊妹作品。

    5897 人正在学习 去看看 高煥堂
640?wx_fmt=jpeg如果你想从第九级目录回到第三级目录,那么使用 cd 命令是很糟糕的。 有什么解决方案呢?-- Magesh Maruthamuthu

两天前我们写了一篇关于 autocd 的文章,它是一个内置的 shell 变量,可以帮助我们在没有 cd 命令的情况下导航到目录中[1]

如果你想回到上一级目录,那么你需要输入 cd ..

如果你想回到上两级目录,那么你需要输入 cd ../..

这在 Linux 中是正常的,但如果你想从第九级目录回到第三级目录,那么使用 cd 命令是很糟糕的。

有什么解决方案呢?

是的,在 Linux 中有一个解决方案。我们可以使用 bd 命令来轻松应对这种情况。

什么是 bd 命令?

bd 命令允许用户快速返回 Linux 中的父目录,而不是反复输入 cd ../../..

你可以列出给定目录的内容,而不用提供完整路径 ls bd Directory_Name。它支持以下其它命令,如 lslnechoziptar 等。

另外,它还允许我们执行 shell 文件而不用提供完整路径 bd p/shell_file.sh

如何在 Linux 中安装 bd 命令?

除了 Debian/Ubuntu 之外,bd 没有官方发行包。因此,我们需要手动执行方法。

对于 Debian/Ubuntu 系统,使用 APT-GET 命令[2]APT 命令[3]来安装 bd

  1. $ sudo apt install bd

对于其它 Linux 发行版,使用 wget 命令[4]下载 bd 可执行二进制文件。

  1. $ sudo wget --no-check-certificate -O /usr/local/bin/bd https://raw.github.com/vigneshwaranr/bd/master/bd

设置 bd 二进制文件的可执行权限。

  1. $ sudo chmod +rx /usr/local/bin/bd

在 .bashrc 文件中添加以下值。

  1. $ echo 'alias bd=". bd -si"' >> ~/.bashrc

运行以下命令以使更改生效。

  1. $ source ~/.bashrc

要启用自动完成,执行以下两个步骤。

  1. $ sudo wget -O /etc/bash_completion.d/bd https://raw.github.com/vigneshwaranr/bd/master/bash_completion.d/bd
  2. $ sudo source /etc/bash_completion.d/bd

我们已经在系统上成功安装并配置了 bd 实用程序,现在是时候测试一下了。

我将使用下面的目录路径进行测试。

运行 pwd 命令或 dirs 命令,亦或是 tree 命令来了解你当前的路径。

  1. daygeek@Ubuntu18:/usr/share/icons/Adwaita/256x256/apps$ pwd
  2. daygeek@Ubuntu18:/usr/share/icons/Adwaita/256x256/apps$ dirs
  3. /usr/share/icons/Adwaita/256x256/apps

我现在在 /usr/share/icons/Adwaita/256x256/apps 目录,如果我想快速跳转到 icons 目录,那么只需输入以下命令即可。

  1. daygeek@Ubuntu18:/usr/share/icons/Adwaita/256x256/apps$ bd icons
  2. /usr/share/icons/
  3. daygeek@Ubuntu18:/usr/share/icons$

甚至,你不需要输入完整的目录名称,也可以输入几个字母。

  1. daygeek@Ubuntu18:/usr/share/icons/Adwaita/256x256/apps$ bd i
  2. /usr/share/icons/
  3. daygeek@Ubuntu18:/usr/share/icons$

注意:如果层次结构中有多个同名的目录,bd 会将你带到最近的目录。(不考虑直接的父目录)

如果要列出给定的目录内容,使用以下格式。它会打印出 /usr/share/icons/ 的内容。

  1. $ ls -lh `bd icons`
  2. daygeek@Ubuntu18:/usr/share/icons/Adwaita/256x256/apps$ ls -lh `bd i`
  3. total 64K
  4. drwxr-xr-x 12 root root 4.0K Jul 25 2018 Adwaita
  5. lrwxrwxrwx 1 root root 51 Feb 25 14:32 communitheme -> /snap/communitheme/current/share/icons/communitheme
  6. drwxr-xr-x 2 root root 4.0K Jul 25 2018 default
  7. drwxr-xr-x 3 root root 4.0K Jul 25 2018 DMZ-Black
  8. drwxr-xr-x 3 root root 4.0K Jul 25 2018 DMZ-White
  9. drwxr-xr-x 9 root root 4.0K Jul 25 2018 gnome
  10. drwxr-xr-x 3 root root 4.0K Jul 25 2018 handhelds
  11. drwxr-xr-x 20 root root 4.0K Mar 9 14:52 hicolor
  12. drwxr-xr-x 9 root root 4.0K Jul 25 2018 HighContrast
  13. drwxr-xr-x 12 root root 4.0K Jul 25 2018 Humanity
  14. drwxr-xr-x 7 root root 4.0K Jul 25 2018 Humanity-Dark
  15. drwxr-xr-x 4 root root 4.0K Jul 25 2018 locolor
  16. drwxr-xr-x 3 root root 4.0K Feb 25 15:46 LoginIcons
  17. drwxr-xr-x 3 root root 4.0K Jul 25 2018 redglass
  18. drwxr-xr-x 10 root root 4.0K Feb 25 15:46 ubuntu-mono-dark
  19. drwxr-xr-x 10 root root 4.0K Feb 25 15:46 ubuntu-mono-light
  20. drwxr-xr-x 3 root root 4.0K Jul 25 2018 whiteglass

如果要在父目录中的某个位置执行文件,使用以下格式。它将运行 shell 文件 /usr/share/icons/users-list.sh

  1. $ `bd i`/users-list.sh
  2. daygeek@Ubuntu18:/usr/share/icons/Adwaita/256x256/apps$ `bd icon`/users-list.sh
  3. daygeek
  4. thanu
  5. renu
  6. 2gadmin
  7. testuser
  8. demouser
  9. sudha
  10. suresh
  11. user1
  12. user2
  13. user3

如果你位于 /usr/share/icons/Adwaita/256x256/apps 中,想要导航到不同的父目录,使用以下格式。以下命令将导航到 /usr/share/icons/gnome 目录。

  1. $ cd `bd i`/gnome
  2. daygeek@Ubuntu18:/usr/share/icons/Adwaita/256x256/apps$ cd `bd icon`/gnome
  3. daygeek@Ubuntu18:/usr/share/icons/gnome$

如果你位于 /usr/share/icons/Adwaita/256x256/apps ,你想在 /usr/share/icons/ 下创建一个新目录,使用以下格式。

  1. $ daygeek@Ubuntu18:/usr/share/icons/Adwaita/256x256/apps$ sudo mkdir `bd icons`/2g
  2. daygeek@Ubuntu18:/usr/share/icons/Adwaita/256x256/apps$ ls -ld `bd icon`/2g
  3. drwxr-xr-x 2 root root 4096 Mar 16 05:44 /usr/share/icons//2g

本教程允许你快速返回到特定的父目录,但没有快速前进的选项。

我们有另一个解决方案,很快就会提出,请保持关注。


via: https://www.2daygeek.com/bd-quickly-go-back-to-a-specific-parent-directory-in-linux/

作者:Magesh Maruthamuthu[6] 选题:lujun9972 译者:MjSeven 校对:wxy

本文由 LCTT 原创编译,Linux中国 荣誉推出

640?wx_fmt=png
2020-02-20 10:05:42 m0_46356860 阅读数 77
  • API不是从业务抽象出来的(2):举例说明

    本课程衔接上一课程:”API不是从业务抽象出来的”,进而举例详细说明之,还有代码范例。许多人相信API是从业务需求所抽象出来的,真的吗? 本课程就来探讨这个议题。此议题是另一个是频课程(名称:”父类不是抽象出来的!”)的姊妹作品。

    5897 人正在学习 去看看 高煥堂

绝对路径

绝对路径:路径的写法一定是由根目录 / 写起的,例如 /usr/local/mysql

相对路径

相对路径:路径的写法不是由根目录 / 写起,而是从当前所在的工作目录开始写起。经常会用到两个特殊目录,即当前目录(用 . 表示)和父目录(用 .. 表示)。

例如:首先用户进入到 /home,然后再进入到test,执行的命令为 “cd /homecd test”。此时用户所在的路径为 /home/test。第一个cd命令后紧跟/home,前面有斜杠;而第二个cd命令后紧跟test,前面没有斜杠。
这个test目录是相对于/home目录来讲的,所以称为相对路径。

父目录

对于父目录的理解:

在Windows系统中,根目录就是每个分区(或光盘、软盘)的盘符加上冒号和斜杠,如A:\ C:\ E: 等,
它的特点是它没有父目录了。

子目录和父目录 是相对于当前目录(文件夹)而言的:
子目录: 当前所在目录的下一层目录(文件夹)
父目录: 当前所在目录的上一层目录(文件夹)

例如:
C:\既是根目录,又是C:\windows的父目录。
C:\windows既是c:\的子目录,又是C:\windows\system的父目录。

2019-03-27 13:45:10 weixin_41843699 阅读数 1494
  • API不是从业务抽象出来的(2):举例说明

    本课程衔接上一课程:”API不是从业务抽象出来的”,进而举例详细说明之,还有代码范例。许多人相信API是从业务需求所抽象出来的,真的吗? 本课程就来探讨这个议题。此议题是另一个是频课程(名称:”父类不是抽象出来的!”)的姊妹作品。

    5897 人正在学习 去看看 高煥堂

权限对于文件和目录的意义
拥有目录的x权限表示用户可以进入该目录成为工作目录,能不能进入一个目录,只与该目录的x权限有关,如果用户对于某个目录不具有x权限,则无法切换到该目录下,也就无法执行该目录下的任何命令,即使具有该目录的r权限。且如果用户对于某目录不具有x权限,则该用户不能查询该目录下的文件的内容,注意:指的是内容,如果有r 权限是可以查看该目录下的文件名列表或子目录列表的。所以要开放目录给任何人浏览时,应该至少要给与r及x权限。

一、权限对于目录的意义
1、首先要明白的是目录主要的内容是记录文件名列表和子目录列表,而不是实际存放数据的地方。
2、r权限:拥有此权限表示可以读取目录结构列表,也就是说可以查看目录下的文件名和子目录名,注意:仅仅指的是名字。
3、w权限:拥有此权限表示具有更改该目录结构列表的权限,总之,目录的w权限与该目录下的文件名或子目录名的变动有关,注意:指的是名字。具体如下:
1)在该目录下新建新的文件或子目录。
2)删除该目录下已经存在的文件或子目录(不论该文件或子目录的权限如何),注意:这点很重要,用户能否删除一个文件或目录,看的是该用户是否具有该文件或目录所在的目录的w权限(配合x权限,因为要进入目录)。
3)将该目录下已经存在的文件或子目录进行重命名。
4)转移该目录内的文件或子目录的位置。

4、x权限:拥有目录的x权限表示用户可以进入该目录成为工作目录,能不能进入一个目录,只与该目录的x权限有关,如果用户对于某个目录不具有x权限,则无法切换到该目录下,也就无法执行该目录下的任何命令,即使具有该目录的r权限。且如果用户对于某目录不具有x权限,则该用户不能查询该目录下的文件的内容,注意:指的是内容,如果有r 权限是可以查看该目录下的文件名列表或子目录列表的。所以要开放目录给任何人浏览时,应该至少要给与r及x权限。

二、权限对于文件的意义
1、也应该明白的是文件是实际含有数据的地方,所以r、w、x权限对文件来说是与其内容有关的。
2、r权限:用于此权限表示可以读取此文件的实际内容。

3、w权限:拥有此权限表示可以编辑、添加或者是修改该文件的内容。但是不包含删除该文件,因为由上面权限对于目录的意义得知删除文件或目录的条件是什么。
4、x权限:表示该文件具有可以被系统执行的权限。文件是否能被执行就是由该权限来决定的,跟文件名没有绝对的关系。

要开放目录给任何人浏览时,应该至少也要给予r及x的权限,但w权限不可随便给!

因为:如果A用户对某文件没有任何权限,但是对该文件所在目录拥有w权限的话,那么A用户依然可以删除该文件。

实验环境搭建:
创建两个用户zhangsan、lisi,并设定密码
在/目录下创建一个test目录,目录下创建5个文本文件

[root@xuegod110 /]# ls
bin dev home lib64 mnt proc run srv tmp var
boot etc lib media opt root sbin sys usr
[root@xuegod110 /]# mkdir test
[root@xuegod110 /]# touch test/{1…5}.txt
[root@xuegod110 /]# useradd zhangsan
[root@xuegod110 /]# useradd lisi
[root@xuegod110 /]# passwd zhangsan
更改用户 zhangsan 的密码 。
新的 密码:
无效的密码: 密码少于 8 个字符
重新输入新的 密码:
passwd:所有的身份验证令牌已经成功更新。
[root@xuegod110 /]# echo 123456 | passwd --stdin lisi
更改用户 lisi 的密码 。
passwd:所有的身份验证令牌已经成功更新。

针对other用户的权限测试:

1、修改子文件1.txt的other权限为0,测试other用户是否可以修改文件

[root@xuegod110 test]# ll -d /test/
drwxr-xr-x 2 root root 71 3月 27 11:41 /test/
[root@xuegod110 test]# ll 1.txt
-rw-r–r-- 1 root root 0 3月 27 11:41 1.txt
[root@xuegod110 test]# chmod 640 1.txt
[root@xuegod110 test]# ll 1.txt
-rw-r----- 1 root root 0 3月 27 11:41 1.txt
[root@xuegod110 test]# su - zhangsan
[zhangsan@xuegod110 ~]$ cat /test/1.txt
cat: /test/1.txt: 权限不够
[zhangsan@xuegod110 ~]$ echo aaa >> /test/1.txt
-bash: /test/1.txt: 权限不够

总结:当父目录other拥有读取和执行权限,子文件other没有权限时,other用户无法读取和修改文件。

2、修改子文件1.txt的other权限为4,测试other用户是否可以读取文件

[root@xuegod110 test]# ll 1.txt
-rw-r----- 1 root root 0 3月 27 11:41 1.txt
[root@xuegod110 test]# chmod 644 1.txt
[root@xuegod110 test]# ll 1.txt
-rw-r–r-- 1 root root 0 3月 27 11:41 1.txt
[root@xuegod110 test]# su - zhangsan
上一次登录:三 3月 27 11:46:14 CST 2019pts/1 上
[zhangsan@xuegod110 ~]$ cat /test/1.txt
[zhangsan@xuegod110 ~]$ echo aaa >> /test/1.txt
-bash: /test/1.txt: 权限不够

总结:当父目录other拥有读取和执行权限,子文件other拥有读取权限,other用户只能读取文件内容,不能修改。

3、修改子文件1.txt的other权限为6,测试other用户是否可以修改文件

[root@xuegod110 test]# ll 1.txt
-rw-r–r-- 1 root root 0 3月 27 11:41 1.txt
[root@xuegod110 test]# chmod 646 1.txt
[root@xuegod110 test]# ll 1.txt
-rw-r–rw- 1 root root 0 3月 27 11:41 1.txt
[root@xuegod110 test]# su - zhangsan
上一次登录:三 3月 27 11:50:29 CST 2019pts/1 上
[zhangsan@xuegod110 ~]$ echo aaa > /test/1.txt
[zhangsan@xuegod110 ~]$ cat /test/1.txt
aaa

总结:当父目录other拥有读取和执行权限,子文件other拥有读取和修改权限,other用户可以读取和修改文件。

4、修改父目录other的权限为4,测试other用户是否可以修改文件

[root@xuegod110 test]# ll -d /test/
drwxr-xr-x 2 root root 71 3月 27 11:41 /test/
[root@xuegod110 test]# ll 1.txt
-rw-r–rw- 1 root root 4 3月 27 11:53 1.txt
[root@xuegod110 test]# chmod 754 /test/
[root@xuegod110 test]# ll -d /test/
drwxr-xr-- 2 root root 71 3月 27 11:41 /test/
[root@xuegod110 test]# su - zhangsan
上一次登录:三 3月 27 11:53:17 CST 2019pts/1 上
[zhangsan@xuegod110 ~]$ cd /test/
-bash: cd: /test/: 权限不够
[zhangsan@xuegod110 ~]$ echo aaa > /test/1.txt
-bash: /test/1.txt: 权限不够
[zhangsan@xuegod110 ~]$ cat /test/1.txt
cat: /test/1.txt: 权限不够

总结:因为父目录没有执行权限,X对于目录来说相当于进入cd,无法进入目录,所以无法修改用户。
父目录other用户有读取权限,子文件other用户有读取和修改权限,other用户无法读取和修改文件

5、修改父目录other权限为2,测试other用户是否可以修改文件

[root@xuegod110 test]# ll -d /test/
drwxr-xr-- 2 root root 71 3月 27 11:41 /test/
[root@xuegod110 test]# chmod 752 /test/
[root@xuegod110 test]# ll -d /test/
drwxr-x-w- 2 root root 71 3月 27 11:41 /test/
[root@xuegod110 test]# su - zhangsan
上一次登录:三 3月 27 11:59:01 CST 2019pts/0 上
[zhangsan@xuegod110 ~]$ cd /test/
-bash: cd: /test/: 权限不够

总结:因为父目录没有X权限,无法进入目录,所以无法修改文件

6、修改父目录other权限为1,测试other用户是否可以修改文件

[root@xuegod110 test]# ll -d /test/
drwxr-x-w- 2 root root 71 3月 27 11:41 /test/
[root@xuegod110 test]# chmod 751 /test/
[root@xuegod110 test]# ll -d /test/
drwxr-x–x 2 root root 71 3月 27 11:41 /test/
[root@xuegod110 test]# su - zhangsan
上一次登录:三 3月 27 12:12:42 CST 2019pts/0 上
[zhangsan@xuegod110 ~]$ cd /test/
[zhangsan@xuegod110 test]$ ll 1.
ls: 无法访问1.: 没有那个文件或目录
[zhangsan@xuegod110 test]$ ll
ls: 无法打开目录.: 权限不够

总结:父目录没有读取权限,只有执行权限。other用户可以进度目录, 无法列出内容,更加无法修改文件

针对说所属组用户的权限测试

将zhangsan用户加入到root组里面

[root@xuegod110 test]# usermod -G root zhangsan
[root@xuegod110 test]# id zhangsan
uid=1002(zhangsan) gid=1002(zhangsan) 组=1002(zhangsan),0(root)

1、修改子文件所属组的权限为4,测试所属组用户是否可以修改文件

[root@xuegod110 test]# ll -d /test/
drwxr-xr-x 2 root root 71 3月 27 11:41 /test/
[root@xuegod110 test]# ll 1.txt
-rw-r–r-- 1 root root 4 3月 27 11:53 1.txt
[root@xuegod110 test]# su - zhangsan
上一次登录:三 3月 27 12:17:44 CST 2019pts/0 上
[zhangsan@xuegod110 ~]$ cd /test/
[zhangsan@xuegod110 test]$ ll
-rw-r–r-- 1 root root 4 3月 27 11:53 1.txt
[zhangsan@xuegod110 test]$ echo aaa > 1.txt
-bash: 1.txt: 权限不够
[zhangsan@xuegod110 test]$ cat 1.txt
aaa

总结:父目录所属组拥有读取和执行权限,子文件的所属组拥有读取权限,所属组用户可以读取文件内容,无法修改文件

2、修改子文件所属组的权限为2,测试所属组用户是否可以修改文件

[root@xuegod110 test]# ll 1.txt
-rw-r–rw- 1 root root 4 3月 27 11:53 1.txt
[root@xuegod110 test]# chmod 624 1.txt
[root@xuegod110 test]# ll 1.txt
-rw–w-r-- 1 root root 4 3月 27 11:53 1.txt
[root@xuegod110 test]# su - zhangsan
上一次登录:三 3月 27 12:28:12 CST 2019pts/0 上
[zhangsan@xuegod110 ~]$ echo aaa > /test/1.txt
[zhangsan@xuegod110 ~]$ cat /test/1.txt
cat: /test/1.txt: 权限不够

总结:父目录所属组拥有读取和执行权限,子文件的所属组拥有修改权限,所属组用户可以修改文件内容,无法读取文件。

3、修改子文件所属组的权限为1,测试所属组用户是否可以修改文件

[root@xuegod110 test]# ll 1.txt
-rw–w-r-- 1 root root 4 3月 27 12:29 1.txt
[root@xuegod110 test]# chmod 614 1.txt
[root@xuegod110 test]# ll 1.txt
-rw—xr-- 1 root root 4 3月 27 12:29 1.txt
[root@xuegod110 test]# su - zhangsan
上一次登录:三 3月 27 12:29:43 CST 2019pts/0 上
[zhangsan@xuegod110 ~]$ echo aaa > /test/1.txt
-bash: /test/1.txt: 权限不够
[zhangsan@xuegod110 ~]$ cat /test/1.txt
cat: /test/1.txt: 权限不够

总结:父目录所属组拥有读取和执行权限,子文件的所属组拥有执行权限,所属组用户无法修改和读取文件内容。

4、修改父目录的所属组的权限为4,测试所属组用户是否可以修改文件

[root@xuegod110 test]# ll -d /test/
drwxr-xr-x 2 root root 71 3月 27 11:41 /test/
[root@xuegod110 test]# chmod 745 /test/
[root@xuegod110 test]# ll -d /test/
drwxr–r-x 2 root root 71 3月 27 11:41 /test/
[root@xuegod110 test]# su - zhangsan
上一次登录:三 3月 27 12:31:59 CST 2019pts/0 上
[zhangsan@xuegod110 ~]$ cd /test/
-bash: cd: /test/: 权限不够
[zhangsan@xuegod110 ~]$ cat /test/1.txt
cat: /test/1.txt: 权限不够
[zhangsan@xuegod110 ~]$ echo aaa > /test/1.txt
-bash: /test/1.txt: 权限不够

总结:父目录所属组拥有读取权限,子文件所属组有读取和修改权限。所属组用户没有执行权限,无法进入目录,所以无法修改和读取文件内容

5、修改父目录的所属组的权限为2,测试所属组用户是否可以修改文件

[root@xuegod110 test]# ll -d /test/
drwxr–r-x 2 root root 71 3月 27 11:41 /test/
[root@xuegod110 test]# chmod 725 /test/
[root@xuegod110 test]# ll -d /test/
drwx-w-r-x 2 root root 71 3月 27 11:41 /test/
[root@xuegod110 test]# su - zhangsan
上一次登录:三 3月 27 12:37:53 CST 2019pts/0 上
[zhangsan@xuegod110 ~]$ cd /test/
-bash: cd: /test/: 权限不够
[zhangsan@xuegod110 ~]$ echo aaa > /test/1.txt #无法tab补全,因为没有r权限
-bash: /test/1.txt: 权限不够
[zhangsan@xuegod110 ~]$ cat /test/1.txt #无法tab补全,因为没有r权限,无法列出
cat: /test/1.txt: 权限不够

总结:父目录所属组拥有修改权限,子文件所属组有读取和修改权限。所属组用户没有执行权限,无法进入目录,所以无法读取和修改文件内容

6、修改父目录的所属组的权限为1,测试所属组用户是否可以修改文件

[root@xuegod110 test]# ll -d /test/
drwx-w-r-x 2 root root 71 3月 27 11:41 /test/
[root@xuegod110 test]# chmod 715 /test/
[root@xuegod110 test]# ll -d /test/
drwx–xr-x 2 root root 71 3月 27 11:41 /test/
[root@xuegod110 test]# su - zhangsan
上一次登录:三 3月 27 12:40:42 CST 2019pts/0 上
[zhangsan@xuegod110 ~]$ cd /test/
[zhangsan@xuegod110 test]$ ll
ls: 无法打开目录.: 权限不够

总结:父目录所属组拥有执行权限,子文件所属组有读取和修改权限。所属组用户可以进入目录,因为没有读取权限,所以无法列出目录的结构,导致无法读取和修改文件内容

针对主组用户修改权限测试
将zhangsan从root组内踢出

[root@xuegod110 test]# id zhangsan
uid=1002(zhangsan) gid=1002(zhangsan) 组=1002(zhangsan),0(root)
[root@xuegod110 test]# usermod -G “” zhangsan
[root@xuegod110 test]# id zhangsan
uid=1002(zhangsan) gid=1002(zhangsan) 组=1002(zhangsan)

将父目录和子文件的主组修改为zhangsan用户

[root@xuegod110 test]# chown zhangsan /test/
[root@xuegod110 test]# ll -d /test/
drwx–xr-x 2 zhangsan root 71 3月 27 11:41 /test/
[root@xuegod110 test]# ll 1.txt
-rw-r–r-- 1 root root 4 3月 27 12:29 1.txt
[root@xuegod110 test]# chown zhangsan 1.txt
[root@xuegod110 test]# ll 1.txt
-rw-r–r-- 1 zhangsan root 4 3月 27 12:29 1.txt

1、修改子文件的主组权限为r,测试主组用户是否可以修改文件

[root@xuegod110 test]# ll 1.txt
-rw-r–r-- 1 zhangsan root 4 3月 27 12:29 1.txt
[zhangsan@xuegod110 ~]$ chmod 440 /test/1.txt
[root@xuegod110 test]# ll 1.txt
-r–r----- 1 zhangsan root 4 3月 27 12:29 1.txt
[root@xuegod110 test]# su - zhangsan
上一次登录:三 3月 27 12:43:49 CST 2019pts/0 上
[zhangsan@xuegod110 ~]$ echo aaa > /test/1.txt
-bash: /test/1.txt: 权限不够
[zhangsan@xuegod110 ~]$ cat /test/1.txt
aaa

总结:父目录的主组用户拥有读取和执行权限,子文件的主组用户拥有读取权限。所以主组用户可以读取文件内容,无法修改文件内容

2、修改子文件的主组权限为w,测试主组用户是否可以修改文件

[root@xuegod110 test]# ll 1.txt
-r–r----- 1 zhangsan root 4 3月 27 12:29 1.txt
[root@xuegod110 test]# chmod 240 1.txt
[root@xuegod110 test]# ll 1.txt
–w-r----- 1 zhangsan root 4 3月 27 12:29 1.txt
[root@xuegod110 test]# su - zhangsan
上一次登录:三 3月 27 12:51:51 CST 2019pts/0 上
[zhangsan@xuegod110 ~]$ echo aaa > /test/1.txt
[zhangsan@xuegod110 ~]$ cat /test/1.txt
cat: /test/1.txt: 权限不够

总结:父目录的主组用户拥有读取和执行权限,子文件的主组用户拥有修改权限。所以子文件的主组用户可以修改文件,无法查看文件内容。

3、修改子文件的主组权限为x,测试主组用户是否可以修改文件

[root@xuegod110 test]# ll 1.txt
–w-r----- 1 zhangsan root 4 3月 27 13:26 1.txt
[root@xuegod110 test]# chmod 140 1.txt
[root@xuegod110 test]# ll 1.txt
—xr----- 1 zhangsan root 4 3月 27 13:26 1.txt
[root@xuegod110 test]# su - zhangsan
上一次登录:三 3月 27 13:26:40 CST 2019pts/0 上
[zhangsan@xuegod110 ~]$ echo aaa > /test/1.txt
-bash: /test/1.txt: 权限不够
[zhangsan@xuegod110 ~]$ cat /test/1.txt
cat: /test/1.txt: 权限不够

总结:父目录的主组用户拥有读取和执行权限,子文件的主组用户拥有执行权限。所以子文件的主组用户无法修改和读取文件的内容。

4、修改父目录的主组权限为r,测试主组用户是否可以修改文件

[root@xuegod110 test]# ll -d /test/
drwx–xr-x 2 zhangsan root 71 3月 27 11:41 /test/
[root@xuegod110 test]# chmod 455 /test/
[root@xuegod110 test]# ll -d /test/
dr–r-xr-x 2 zhangsan root 71 3月 27 11:41 /test/
[root@xuegod110 test]# su - zhangsan
上一次登录:三 3月 27 13:29:47 CST 2019pts/0 上
[zhangsan@xuegod110 ~]$ cd /test/
-bash: cd: /test/: 权限不够
[zhangsan@xuegod110 ~]$ cat /test/1.txt
cat: /test/1.txt: 权限不够
[zhangsan@xuegod110 ~]$ echo aaa > /test/1.txt
-bash: /test/1.txt: 权限不够

总结:父目录的主组用户拥有读取权限,子文件的主组用户拥有读取和修改权限。因为父目录主组没有执行权限,无法进入目录内,所以无法修改和读取文件内容

5、修改父目录的主组权限为w,测试主组用户是否可以修改文件

[root@xuegod110 test]# ll -d /test/
dr–r-xr-x 2 zhangsan root 71 3月 27 11:41 /test/
[root@xuegod110 test]# chmod 255 /test/
[root@xuegod110 test]# ll -d /test/
d-w-r-xr-x 2 zhangsan root 71 3月 27 11:41 /test/
[root@xuegod110 test]# su - zhangsan
上一次登录:三 3月 27 13:32:25 CST 2019pts/0 上
[zhangsan@xuegod110 ~]$ cd /test/
-bash: cd: /test/: 权限不够

总结:父目录的主组用户拥有修改权限,子文件的主组用户拥有读取和修改权限。因为父目录主组没有执行权限,无法进入目录内,所以无法修改和读取文件内容

6、修改父目录的主组权限为x,测试主组用户是否可以修改文件

[root@xuegod110 test]# ll -d /test/
d-w-r-xr-x 2 zhangsan root 71 3月 27 11:41 /test/
[root@xuegod110 test]# chmod 155 /test/
[root@xuegod110 test]# ll -d /test/
d–xr-xr-x 2 zhangsan root 71 3月 27 11:41 /test/
[root@xuegod110 test]# su - zhangsan
上一次登录:三 3月 27 13:34:50 CST 2019pts/0 上
[zhangsan@xuegod110 ~]$ cd /test/
[zhangsan@xuegod110 test]$ ll
ls: 无法打开目录.: 权限不够

总结:父目录的主组用户拥有执行权限,子文件的主组用户拥有读取和修改权限。因为父目录主组没有读取权限,无法列出目录内的内容,所以无法修改文件内容

通过上述实验得出结论:
1、对于目录来说
r:代表可以列出目录下的文件结构和详细信息
w:代表可以修改目录下的文件内容和详细信息
x:代表可以进入目录下,针对文件来进行操作
总结:如果要对一个目录下的文件进行操作,最少需要开通rx权限,让用户可以进入目录,列出目录的内容。w权限一般不给目录,因为如果目录给了用户w权限,用户针对子文件没有权限,可以进行修改和删除等操作。

2、对于文件来说
r:代表可以读取文件的内容
w:代表可以修改文件的内容和信息
x:代表可以对这个文件有执行权限,一般用于脚本文件赋权限。
总结:如果需要对一个文件进行操作,可以根据需要开通rwx的权限。

2019-01-11 22:46:46 weixin_42112635 阅读数 79
  • API不是从业务抽象出来的(2):举例说明

    本课程衔接上一课程:”API不是从业务抽象出来的”,进而举例详细说明之,还有代码范例。许多人相信API是从业务需求所抽象出来的,真的吗? 本课程就来探讨这个议题。此议题是另一个是频课程(名称:”父类不是抽象出来的!”)的姊妹作品。

    5897 人正在学习 去看看 高煥堂

处理目录的常用命令

接下来我们就来看几个常见的处理目录的命令吧:

  • cd:切换目录
  • ls:列出目录
  • pwd:显示目前的目录
  • mkdir:创建一个新的目录
  • rmdir:删除一个空的目录
  • cp:复制文件或目录
  • rm:移除文件或目录
  • mv:移动文件与目录、文件重命名

你可以使用 man [命令] 来查看各个命令的使用文档,如 :man cp

目录切换命令 — cd

window 中通过图形化界面和鼠标可以任意切换需要进入的目录,但 Linux 必须通过 cd 命令切换目录。

  • cd usr:切换到该目录下usr目录
  • cd ../:切换到上一层目录
  • cd /:切换到系统根目录
  • cd ~:切换到用户主目录
  • cd -:切换到上一个所在目录

目录的操作命令(增删改查)

1、增加目录操作 —— mkdir

mkdir [-mp] 目录名称

在这里插入图片描述

选项与参数:

  • -m :配置文件的权限喔!直接配置,不需要看默认权限 (umask) 的脸色
  • -p :递归创建多层目录

例子:

  • mkdir a b:在当前目录下创建多个文件夹
  • mkdir a/{c,d}:在指定目录下创建多个文件夹
  • mkdir .abc:创建隐藏文件夹

2、查看目录 —— ls

ls [-al] 父目录

说明:

  • ls:查看当前目录下的所有的目录和文件;
  • ls -a:查看当前目录下的所有文件和目录,包括隐藏的
  • ls -l:查看当前目录下的所有目录和文件的详细信息。

注意:ls -l 可以缩写成ll

在这里插入图片描述

3、寻找目录 —— find

find 目录 参数

示例:查找/下的与test相关的目录(文件)
在这里插入图片描述

4、修改目录的名称 —— mv

mv 目录名称 新目录名称

示例:test 目录下有一个 oldTest目录,使用 mv oldTest newTest 命令修改
在这里插入图片描述

注意:mv 的语法不仅可以对目录进行重命名而且也可以对各种文件,压缩包等进行

5、移动目录的位置 —— mv

mv 目录名称 目录的新位置

示例:在 test 下将 newTest 目录剪切到 /usr下面,使用 mv newTest /usr

注意:mv 语法不仅可以对目录进行剪切操作,对文件和压缩包等都可执行剪切操作

选项与参数:

  • -f :force 强制的意思,如果目标文件已经存在,不会询问而直接覆盖;
  • -i :若目标文件 (destination) 已经存在时,就会询问是否覆盖!
  • -u :若目标文件已经存在,且 source 比较新,才会升级 (update)

6、拷贝目录 —— cp

cp -r 目录名称 目录拷贝的目标位置    # -r代表递归拷贝

示例:将/usr下的newTest拷贝到根目录下的test中,使用cp -r /usr/newTest /test

注意:cp命令不仅可以拷贝目录还可以拷贝文件,压缩包等,拷贝文件和压缩包时不用写-r递归。

选项与参数:

  • -a :相当於 -pdr 的意思,至於 pdr 请参考下列说明;(常用)
  • -d :若来源档为连结档的属性(link file),则复制连结档属性而非文件本身;
  • -f :为强制(force)的意思,若目标文件已经存在且无法开启,则移除后再尝试一次;
  • -i :若目标档(destination)已经存在时,在覆盖时会先询问动作的进行(常用)
  • -l :进行硬式连结(hard link)的连结档创建,而非复制文件本身;
  • -p :连同文件的属性一起复制过去,而非使用默认属性(备份常用);
  • -r :递回持续复制,用於目录的复制行为;(常用)
  • -s :复制成为符号连结档 (symbolic link),亦即『捷径』文件;
  • -u :若 destination 比 source 旧才升级 destination !

7、删除目录 —— rm

 rm [-fir] 文件或目录

示例:删除/usr下的newTest,进入/usr下使用rm -r newTest

示例:删除/test下的newTest而不需要询问强制删除,在/test下使用rm -rf newTest

注意:rm不仅可以删除目录,也可以删除其他文件或压缩包,为了增强大家的记忆, 无论删除任何目录或文件,都直接使用rm -rf 目录/文件/压缩包

选项与参数:

  • -f :就是 force 的意思,忽略不存在的文件,不会出现警告信息;
  • -i :互动模式,在删除前会询问使用者是否动作
  • -r :递回删除啊!最常用在目录的删除了!这是非常危险的选项!!!
 rmdir [-p] 目录名称

选项与参数:

  • -p :连同上一级『空的』目录也一起删除
没有更多推荐了,返回首页