当前位置: 代码迷 >> 综合 >> rm命令;环境变量PATH(cp,mv,more,head,tail,less);文件和目录权限
  详细解决方案

rm命令;环境变量PATH(cp,mv,more,head,tail,less);文件和目录权限

热度:69   发布时间:2023-12-20 23:47:08.0

rm删除命令

格式:
rm [参数][文件或目录路径]

[root@jinkai01 ~]# rm a.txt
rm:是否删除普通空文件 "a.txt"?y
[root@jinkai01 ~]# rm abc
rm: 无法删除"abc": 是一个目录

  • -f:强制删除文件(无法删除目录)

    [root@jinkai01 ~]# rm -f abc
    rm: 无法删除"abc": 是一个目录

  •  -r:强制删除文件目录下的所有目录(有询问

    [root@jinkai01 ~]# rm -r abc/
    rm:是否进入目录"abc/"? y
    rm:是否删除普通空文件 "abc/123"?y
    rm:是否删除目录 "abc/"?y

  •  -rf:强制删除所有文件与文件夹(无询问)

    [root@jinkai01 ~]# ls
    1 abc anaconda-ks.cfg
    [root@jinkai01 ~]# ls abc/
    123
    [root@jinkai01 ~]# rm -rf abc/
    [root@jinkai01 ~]# ls
    1 anaconda-ks.cfg
    [root@jinkai01 ~]#

注意:rm -rf abc/ #强制删除且不提示abc目录

[root@jinkai01 ~]# tree abc/
abc/
└── 123
└── 111

1 directory, 1 file
[root@jinkai01 ~]# rm -rf abc/
[root@jinkai01 ~]# tree
.
├── 1
└── anaconda-ks.cfg
0 directories, 2 files

环境变量PATH

就是指定默认路径
使用任何命令都需要进入/bin 目录下才能使用,而有了path 环境变量 我们可以赋予 变量值是/root/bin/ 那么我们就能在其他目录下调用命令的原因

PATH 变量

echo $PATH 查看path变量值
PATH=$PATH:/tmp/ 临时将PATH赋值为 /tmp/
PATH变量代表多个值;
①/usr/local/sbin
②/usr/local/bin
③/usr/sbin
④/usr/bin
⑤/root/bin

[root@jinkai01 ~]# echo $PATH
/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin

可以编辑 vi /etc/profile 来更改开机赋予PATH的变量值
在unset -f pathmunge后面加上一行PATH=$PATH:/tmp/可以赋予永久变量/tmp/

unset -f pathmunge
PATH=$PATH:/tmp/

cp命令

拷贝命令
格式:
cp [参数][源文件路径][目的文件路径]

cp /etc/passwd /tmp/1.txt #将etc下的passwd文件复制到tmp文件下为1.txt文件
-r:拷贝目录必须加r参数;
root@jinkai01 ~]# cp abc/123/ /
cp: 略过目录"abc/123/"

[root@jinkai01 ~]# cp -r abc/123/ /
[root@jinkai01 ~]#

mv命令

移动或重命名
格式:
mv [参数][源文件目录][目的文件路径]

移动文件
mv 1.txt 123/abc/1.txt #将当前目录下的1.txt文件移动到当前目录的123/abc/目录下为1.txt

[root@jinkai01 ~]# ls
1.txt abc anaconda-ks.cfg
[root@jinkai01 ~]# mv 1.txt abc/123/1.txt
[root@jinkai01 ~]# ls abc/123/
111 1.txt

重命名文件:
mv 2.txt 3.txt #将当前文件夹下的2.txt重命名为3.txt

[root@jinkai01 ~]# ls
2.txt abc anaconda-ks.cfg
[root@jinkai01 ~]# mv 2.txt 3.txt
[root@jinkai01 ~]# ls
3.txt abc anaconda-ks.cfg

文档查看cat、more、less、head、tail

cat命令

全部显示
格式:
cat [参数][文件路径]

[root@jinkai01 ~]# cat /etc/passwd
root:x:0:0:root:/root:/bin/bash
bin:x:1:1:bin:/bin:/sbin/nologin
daemon:x:2:2:daemon:/sbin:/sbin/nologin
adm:x:3:4:adm:/var/adm:/sbin/nologin
lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin
sync:x:5:0:sync:/sbin:/bin/sync

-n 显示行号

[root@jinkai01 ~]# cat -n /etc/passwd
1 root:x:0:0:root:/root:/bin/bash
2 bin:x:1:1:bin:/bin:/sbin/nologin
3 daemon:x:2:2:daemon:/sbin:/sbin/nologin
4 adm:x:3:4:adm:/var/adm:/sbin/nologin
5 lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin
6 sync:x:5:0:sync:/sbin:/bin/sync

more命令

一页一页显示(使用空格向下翻页,ctrl+b想上翻页)
格式:
more [参数][文件路径]

[root@jinkai01 ~]# more /etc/passw

less命令

一页一页显示(可以使用方向键上下翻,可以使用/来查询字符,按q退出)
格式:
less [参数][文件路径]

[root@jinkai01 ~]# less /etc/passwd

head命令

默认显示前10行
格式:
head [参数][文件路径]

[root@jinkai01 ~]# head /etc/passwd
root:x:0:0:root:/root:/bin/bash
bin:x:1:1:bin:/bin:/sbin/nologin
daemon:x:2:2:daemon:/sbin:/sbin/nologin
adm:x:3:4:adm:/var/adm:/sbin/nologin
lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin
sync:x:5:0:sync:/sbin:/bin/sync
shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown
halt:x:7:0:halt:/sbin:/sbin/halt
mail:x:8:12:mail:/var/spool/mail:/sbin/nologin
operator:x:11:0:operator:/root:/sbin/nologin

-n 数字:查看前几行

[root@jinkai01 ~]# head -2 /etc/passwd
root:x:0:0:root:/root:/bin/bash
bin:x:1:1:bin:/bin:/sbin/nologin

tail命令

默认查看文件的尾10行
格式:
tail [参数][文件名]
-n 数字:查看后几行

[root@jinkai01 ~]# tail -2 /etc/passwd
postfix:x:89:89::/var/spool/postfix:/sbin/nologin
linuxprobe:x:1000:1000:linuxprobe:/home/linuxprobe:/bin/bash

-f:用户查看动态文件,比如log日志专用;

tail -f 1.txt

文件或目录的权限

使用ls -l来查看文件与目录的详细权限(文件拥有x权限才能执行,目录拥有x权限才能打开)

[root@jinkai01 ~]# ls -l
总用量 4
-rw-r--r-- 1 root root 0 7月 31 11:58 3.txt
drwxr-xr-x 3 root root 17 7月 31 11:56 abc
-rw-------. 1 root root 1693 3月 24 17:38 anaconda-ks.cfg

-rw-r--r-- 除开前面- 分三段(最前面的一个表示文件的类型,也就是之前讲到的文件类型)详细数下总共10个字符
r=可读 w=可写 x=可执行
r=4 w=2 x=1 rwx=7 rw-=6 --x=1 
rw-r--r--=644 rw-r-xr-x=655
第一段:所有者的权限 
第二段:所属组 属于哪个用户组
第三段:所有者与所属组以外的用户的权限

chmod命令

更改文件或目录的权限
格式:
chmod [参数][权限数字][文件名] 
更改权限:

[root@jinkai01 ~]# chmod 777 3.txt
[root@jinkai01 ~]# ls -l
总用量 4
-rwxrwxrwx 1 root root 0 7月 31 11:58 3.txt
drwxr-xr-x 3 root root 17 7月 31 11:56 abc
-rw-------. 1 root root 1693 3月 24 17:38 anaconda-ks.cfg

实验:赋予1.txt权限700(root用户可执行可读写,其他用户以及root组都不行),切换到linuxprobe用户,无法操作1.txt;

[root@jinkai01 123]# chmod 700 1.txt
[root@jinkai01 123]# ls -la
总用量 0
drwxr-xr-x 2 root root 30 7月 31 12:00 .
drwxr-xr-x 3 root root 17 7月 31 11:56 ..
-rw-r--r-- 1 root root 0 7月 31 11:56 111
-rwx------ 1 root root 0 7月 31 11:45 1.txt
[root@jinkai01 123]# su linuxprobe
[linuxprobe@jinkai01 123]$ ls -la
总用量 0
drwxr-xr-x 2 root root 30 7月 31 12:00 .
drwxr-xr-x 3 root root 17 7月 31 11:56 ..
-rw-r--r-- 1 root root 0 7月 31 11:56 111
-rwx------ 1 root root 0 7月 31 11:45 1.txt
[linuxprobe@jinkai01 123]$ cat 1.txt
cat: 1.txt: 权限不够

-R:更改整个目录下的所有文件权限(所有该目录下的子文件子目录的权限都更改)(批量更改)

[root@jinkai01 abc]# ls -la 123/
总用量 0
drwxr-xr-x 2 root root 30 7月 31 12:00 .
drwxr-xr-x 3 root root 17 7月 31 11:56 ..
-rw-r--r-- 1 root root 0 7月 31 11:56 111
-rwx------ 1 root root 0 7月 31 11:45 1.txt
[root@jinkai01 abc]# chmod -R 777 123/
[root@jinkai01 abc]# ls -la 123/
总用量 0
drwxrwxrwx 2 root root 30 7月 31 12:00 .
drwxr-xr-x 3 root root 17 7月 31 11:56 ..
-rwxrwxrwx 1 root root 0 7月 31 11:56 111
-rwxrwxrwx 1 root root 0 7月 31 11:45 1.txt

chown

更改文件所有者和所属组
格式:
chown [参数] [用户名] [目录或文件]

更改文件所有者:chown linuxprobe 3.txt

[root@jinkai01 ~]# ls -l
总用量 4
-rwxrwxrwx 1 root root 0 7月 31 11:58 3.txt
[root@jinkai01 ~]# chown linuxprobe 3.txt
[root@jinkai01 ~]# ls -l
总用量 4
-rwxrwxrwx 1 linuxprobe root 0 7月 31 11:58 3.txt

chown 用户名:用户组 文件名
更改文件的所有者和所有组

[root@jinkai01 ~]# ls -l
总用量 4
-rw-r--r-- 1 root root 0 7月 31 12:23 1.txt
[root@jinkai01 ~]# chown linuxprobe:linuxprobe 1.txt
[root@jinkai01 ~]# ls -la
-rw-r--r-- 1 linuxprobe linuxprobe 0 7月 31 12:23 1.txt

chown -R 用户名:用户组 目录名
更改目录的所有者和所有组(子目录、子文件全部更改)

[root@jinkai01 ~]# ls -l
总用量 4
-rwxrwxrwx 1 linuxprobe root 0 7月 31 11:58 3.txt
drwxr-xr-x 3 root root 17 7月 31 11:56 abc
[root@jinkai01 ~]# chown -R linuxprobe:linuxprobe abc/
[root@jinkai01 ~]# ls -la abc/
总用量 0
drwxr-xr-x 3 linuxprobe linuxprobe 17 7月 31 11:56 .
drwxrwxrwx 2 linuxprobe linuxprobe 30 7月 31 12:00 123

chgrp命令

chgrp 用户组 目录或文件
更改所有组(不更改所有者)

[root@jinkai01 ~]# ls -l
drwxr-xr-x 3 linuxprobe linuxprobe 17 7月 31 11:56 abc
[root@jinkai01 ~]# chgrp root abc/
[root@jinkai01 ~]# ls -l
drwxr-xr-x 3 linuxprobe root 17 7月 31 11:56 abc

umask命令

当我们创建一个文件的时候默认权限为rw-r--r--(644)权限,目录为rwxr-xr-x(755),如果我们想创建一个文件默认值为777,那么就得用到umask命令了;
决定创建文件的默认权限
实验:
root@jinkai01 ~]# touch a.txt
[root@jinkai01 ~]# mkdir aa
[root@jinkai01 ~]# ls -l
drwxr-xr-x 2 root root 6 7月 31 12:30 aa
-rw-r--r-- 1 root root 0 7月 31 12:29 a.txt

查询umask值

[root@jinkai01 ~]# umask
0022

更改umask值
(改值后新建a.txt文件与aa目录,查看默认权限文件为664,目录为775)
那么规律就来了
我们更改的文件权限是umask 0002 就是002 文件满权限是666 目录满权限是777 通过满权限减
必须使用权限号一位位相减,而不是数字减
文件最高满权限 :666=(rw-rw-rw-)
目录最高满权限:777=(rwxrwxrwx)
umask 0002 =002 (-------w-)
新文件默认权限=【文件满权限】-【umask值】=(rw-rw-rw-)-(-------w-)=(rw-rw-r--)
新目录默认权限=【目录满权限】-【umask值】=(rwxrwxrwx)-(-------w-)=(rwxrwxr-x

[root@jinkai01 ~]# umask 0002
[root@jinkai01 ~]# touch b.txt
[root@jinkai01 ~]# mkdir bb
[root@jinkai01 ~]# ls -l
drwxr-xr-x 2 root root 6 7月 31 12:30 aa
-rw-r--r-- 1 root root 0 7月 31 12:29 a.txt
drwxrwxr-x 2 root root 6 7月 31 12:34 bb
-rw-rw-r-- 1 root root 0 7月 31 12:34 b.txt

注意:权限并不是完全按照(满权限)-(umask值)
例如:设置umask值为0033 按照 666-033=633=rw--wx-wx 下图显示为rw-r--r-- =644
所以当默认权限位没有的时候,不需要算 rw-rw-rw- 减 ----wx-wx 因为满权限位没有x 所以不算默认就是0

[root@jinkai01 ~]# umask 0033
[root@jinkai01 ~]# touch c.txt
[root@jinkai01 ~]# ls -l
-rw-r--r-- 1 root root 0 7月 31 12:39 c.txt

  相关解决方案