linux学习 4.2 目录修改相关命令
这里介绍常见的修改目录相关的命令包括mkdir chmod rmdir rm cp
创建目录mkdir
mkdir [OPTION]... DIRECTORY...
1.mkdir dir1
2. mkdir dir1 dir2 dir3
支持一次创建多个目录
3. mkdir -p a/b/c/d
递归的创建父目录
利用前面学的tree
命令可以清晰地查看目录结构
修改权限chmod
(changemod)
感觉得提前说一下如何修改权限,以便于你来测试
我先用touch
创建了一个文件
你可以看到他的权限为rw-rw-r--
你可以在这里看到解释
chmod [OPTION]... MODE... FILE...
-
chmod 615 a.txt
用数字指定权限
我们着重讲一下MODE的设计
权限可以分为三组都是指定一个文件的读写执行权限
我们能够把他看成一个二进制的数
对于拥有者他的权限为rw-
对应的二进制为110
八进制则是6
读写执行这个顺序是固定的
第一种指定MODE
的形式则是3为八进制来分别指定拥有者 拥有组 其他用户的权限
所以权限 值 r 4 w 2 x 1 然后对于你想分配的可以任意组合例如
rw---xr-x
转换成8进制为615
这样你就能任意指定文件的权限了 -
chmod -R 715 dir
会递归的修改目录里的所有权限
请注意这个时候如果你再采用615
便会失败,因为修改完dir1
后你便缺失了执行权限,修改dir1
里面的文件的权限需要你有执行权限 -
添加权限
我们可以下面的形式来修改权限chmod [ugoa][+-=][rwx] FILE
其中
ugo
分别代表拥有者 拥有组 其他用户a
则代表所有+
代表添加权限-
代表减少权限chmod o+wx test.txt
为其他用户增加wx
权限
chmod go-rw test.txt
你也可以一次性指定多组
chmod a=rwx test.txt
一次指定所有用户
chmod u-w,g-rx,o=--- test.txt
你可以用,
自由设置权限
chmod +x test.txt
如果不指定用户默认是a
注意这里会出现一些小问题,最好不要省略你的命令使用默认
我先将test.txt
的权限都置0然后使用chmod =rwx test.txt
想要将权限全都改为rwx
但是你发现了一个致命的问题rwxrwxr-x
其他用户的写权限并没有被赋予,这与我们想要的不同,所以避免这样做
原因:
虽然不写用户会默认a
但是权限的修改会受制于umask
umask
是用于设置新建文件或目录的默认权限的 你可以采用如下命令查看
第一个0
代表八进制后面的002
则和数字设置权限的配置相同
umask
会影响创建的文件的默认权限
- 新建 文件 的默认权限 = 666 - umask
- 新建 目录 的默认权限 = 777 - umask
这其实相当于屏蔽设置002
屏蔽了其他用户的写权限,所有你在默认操作的时候不能修改写权限
删除空目录rmdir
这个命令只能用于删除空目录
rmdir [OPTION]... DIRECTORY...
1.rmdir dir1
删除指定的空目录
2.rmdir dir2 dir3
同样可以用于一次多删除几个
3.rmdir -p a/b/c/d
同时删除父目录
如果不使用-p
则只能删除d目录
删除目录或文件rm
rm [OPTION]... [FILE]...
rm a.txt
删除文件
rm -f rootx.txt
强制删除文件
我用root用户在/home/wxy
下创建了一个rootx.txt
的文件,使用touch rootx.txt
创建的
如果不使用-f
命令则会跳出一个提示,因为你没有权限ls -l
可以看到rootx.txt
的第一列为-rw-r--r--
上一节说了明了这代表他是一个普通文件,所有者的权限为rw-
所有组为r--
其他用户为r--
我们是其他用户所有没有写权限,在删除的时候会出现循环,这时候你按y
即可删除
如果使用-f
命令则可以避免出现这种情况
**请注意:**这里的强制删除实际上是要求你有权限的,只是可以避免在具有保护的时候出现确认信息 ,你可以试一试用普通用户去删除root
用户里的内容,是会被拒绝的
能否删除一个文件实际上取决于你对其父目录的权限,你必须拥有其父目录的写和执行权限才行 即使没有读的权限也能删除,但是你不能用
ls
如果你记得有什么文件名一样能完成删除动作
rm -r test
递归的删除一个目录,你必须使用-r
才能删除一个目录
如果你没有对里面的文件的写权限可能会跳出确认信息,在具有大量文件或者编写脚本的时候你可能想避免这种情况,所以请结合上-f
你可能会好奇什么情况下会弹出确认消息,这其实是一个保护措施,如果你没有对他的写权限便会弹出,换言之只要你有w权限便能删除
可以看到只缺少了写权限便会出提示
只具有写权限便能删除
复制目录和文件cp
cp [OPTION]... SOURCE DESTcp [OPTION]... SOURCE... DIRECTORY
OPTION | 作用 |
---|---|
-v | 显示复制过程 |
-r | 递归复制目录 |
-p | 保留文件属性:所有者时间戳权限 |
-u | 仅当源文件比目标文件新时覆盖 |
-n | 不覆盖已存在文件 |
-f | i强制覆盖 |
可能只有-r
你会经常用到
简单使用
cp 1.txt 2.txt
简单复制文件
或者复制到文件夹里也可以
2.cp 1.txt 2.txt dir/
将两个文件复制到目录里
3.cp -r dir/ dir1/
递归复制dir目录里的内容
你可以注意到包括dir
所有都被复制了过去
如果你想只复制文件可以这样做
*
是通配符将在下一节讲解,你可以在这里暂时理解成所有文件
说实话掌握这几个基础操作即可,想要特定的功能例如不要修改文件的信息呀,只将新的文件复制过去呀,你可以使用man cp
查看具体的设定,可选项还是非常多的
目前可能还有查询没有将,将在说完正则表达式和通配符后介绍