1、总结cp
、mv
命令的用法
cp
格式
cp [OPTION]... [-T] SOURCE DEST
cp [OPTION]... SOURCE... DIRECTORY
cp [OPTION]... -t DIRECTORY SOURCE...
常用参数
-i # 如果目标已存在,覆盖前提示是否覆盖
-n #不覆盖,注意两者顺序
-r, -R # 递归复制目录及内部的所有内容
-a 归档,相当于-dR --preserv=all,#常用于备份功能,常用在复制目录时,保留链接,文件属性(owner,group),并复制目录下的所有内容
-d --no-dereference --preserv=links #不复制原文件,只复制链接名
--preserv[=ATTR_LIST]
mode: #权限
ownership: #属主属组
timestamp:
links
xattr
context
all
-p # 等同--preserv=mode,ownership,timestamp 保留原文件的属性,包括所有者、所属组、权限和时间
-v --verbose # 显示执行过程
-f --force
-u --update #只复制源比目标更新文件或目标不存在的文件
-b #目标存在,覆盖前先备份,默认形式为 filename~ ,只保留最近的一个备份
--backup=numbered #目标存在,覆盖前先备份加数字后缀,形式为 filename.~#~ ,可以保留多 个版本
源文件目标文件不同情况处理
源文件 | 目标文件不存在 | 目标文件存在且为文件 | 目标存在且为目录 |
---|---|---|---|
一个文件 | 会先创建DEST(目标)文件,再将SRC(源)文件内入复制到DEST文件中 | 将SRC文件中的内容覆盖至DEST中,目标文件中的原始数据将会丢失.建议复制使用-i 选项 | 在该目录下创建与SRC同名的文件,并将SRC文件中的内容复制到DEST中 |
多个文件 | 提示错误 | 提示错误 | 在该目录下分别创建与原文件同名的文件,并将SRC文件中的内容一一复制到对应的DEST 中 |
目录文件 | 创建指定DEST同名目录,复制SRC目录中所有文件至DEST下 | 提示错误 | 在DEST下创建与原目录同名的目录,并将SRC中的内容复制到新目录中 |
mv
格式
mv [OPTION]... [-T] SOURCE DEST
mv [OPTION]... SOURCE... DIRECTORY
mv [OPTION]... -t DIRECTORY SOURCE...
常用选项
-i # 交互式
-f # 强制
-b # 目标存在,覆盖前先备份
源文件 | 目标文件不存在 | 目标文件存在且为文件 | 目标文件存在且为目录 |
---|---|---|---|
一个文件 | 报错 | 源文件名会变成为目标文件名,并覆盖已经存在的同名文件,如果两者在同一目录下则是改名 | 源文件会移动到此目录,且文件名不变 |
多个文件 | 报错 | 报错 | 源文件会移动到此目录,且文件名不变 |
目录文件 | 报错 | 报错 | 源文件会移动到此目录,且文件名不变 |
2、总结IO重定向的类别和区别
Linux给程序提供三种 I/O 设备
- 标准输入
(STDIN) -0
默认接受来自终端窗口的输入 - 标准输出
(STDOUT)-1
默认输出到终端窗口 - 标准错误
(STDERR) -2
默认输出到终端窗口
IO重定向的类别:
- 标准输出重定向
- 标出错误重定向
支持的操作符
1> 或 > 把STDOUT重定向到文件
2> 把STDERR重定向到文件
&> 把所有输出重定向到文件
重定向可以改写原文件内容,可以用 set 来控制是否覆盖
set -C 禁止将内容覆盖已有文件,但可追加, 利用 >| 仍可强制覆盖
set +C 允许覆盖,默认
也可以追加
>> 追加标准输出重定向至文件
2>> 追加标准错误重定向至文件
分别定位不同位置
COMMAND > /path/to/file.out 2> /path/to/error.out
可以合并标准输入和错误输出为同一个数据流进行重定向
&> 覆盖重定向
&>> 追加重定向
COMMAND > /path/to/file.out 2>&1 (顺序很重要)
COMMAND >> /path/to/file.out 2>&1
也可以合并多个程序
( cal 20019 ; cal 2020 ) > all.txt
{ ls;hostname;} > /data/all.log
- 标准输入重定向
从文件中导入STDIN
,代替当前终端的输入设备,使用 <
来重定向标准输入
某些命令能够接受从文件中导入的STDIN
3、将/etc/issue
文件中的内容转换为大写后保存至/tmp/issue.out
文件中
cat /etc/issue | tr a-z A-Z > /tmp/issue.out
4、请总结描述用户和组管理类命令的使用方法并完成以下练习:
查看 | 创建 | 修改 | 删除 | |
---|---|---|---|---|
用户 | getent passwd user | useradd user | usermod user | userdel user |
组 | groups user | groupadd group | groupmod group | groupdel group |
(1)、创建组distro,其GID为2019;
[root@acer /home/acer]#groupadd -g 2019 distro
[root@acer /home/acer]#getent group distro
distro:x:2019:
(2)、创建用户mandriva, 其ID号为1005;基本组为distro;
[root@acer /home/acer]#useradd mandrive -u 1005 -g distro
[root@acer /home/acer]#getent passwd mandrive
mandrive:x:1005:2019::/home/mandrive:/bin/bash
(3)、创建用户mageia,其ID号为1100,家目录为/home/linux
;
[root@acer /home/acer]#useradd -u 1100 -m -d /home/linux mageia
[root@acer /home/acer]#getent passwd mageia
mageia:x:1100:1100::/home/linux:/bin/bash
(4)、给用户mageia添加密码,密码为mageedu,并设置用户密码7天后过期
[root@acer /home/acer]#passwd -x 7 mageia
Adjusting aging data for user mageia.
passwd: Success
[root@acer /home/acer]#passwd mageia
Changing password for user mageia.
New password:
BAD PASSWORD: The password is shorter than 8 characters
Retype new password:
passwd: all authentication tokens updated successfully
[root@acer /home/acer]#getent shadow mageia
mageia:$6$1U35dlDbUbxrK3pW$T5nifyPOFpZWAKburQCwpJUEs/rTVZqbbcKcyoefkK1ySIBmU8H8erceJ.JNYQj.z81elnWvWwOdGzOjASOZT1:18791:0:7:7:::
(5)、删除mandriva,但保留其家目录;
[root@acer /home/acer]#userdel mandrive
[root@acer /home/acer]#ll /home
total 4
drwx------. 15 acer acer 4096 Jun 14 02:13 acer
drwx------. 3 mageia mageia 78 Jun 14 02:45 linux
drwx------. 3 1005 distro 78 Jun 14 02:29 mandrive
drwx------. 3 test test 78 Jun 12 12:35 test
drwx------. 3 tt tt 78 Jun 12 12:26 tt
(6)、创建用户slackware,其ID号为2002,基本组为distro,附加组peguin;
[root@acer /home/acer]#useradd -u 2002 -g distro -G peguin slackware
[root@acer /home/acer]#getent passwd slackware
slackware:x:2002:2019::/home/slackware:/bin/bash
[root@acer /home/acer]#groups slackware
slackware : distro peguin
(7)、修改slackware的默认shell为/usr/bin/sh
;
[root@acer /home/acer]#chsh -s /usr/bin/sh slackware
Changing shell for slackware.
Shell changed.
[root@acer /home/acer]#getent passwd slackware
slackware:x:2002:2019::/home/slackware:/usr/bin/sh
(8)、为用户slackware新增附加组admins,并设置不可登陆。
[root@acer /home/acer]#groupadd admins
[root@acer /home/acer]#usermod -a -G admins -s /usr/sbin/nologin slackware
[root@acer /home/acer]#getent passwd slackware
slackware:x:2002:2019::/home/slackware:/usr/sbin/nologin
[root@acer /home/acer]#su slackware
This account is currently not available.
创建用户user1、user2、user3。在/data/
下创建目录test
(1)、设置目录/data/test
属主、属组为user1
[root@acer ~]#chown user1:user1 /data/test
[root@acer ~]#ll /data
total 0
-rw-rw-r--. 1 acer acer 0 Jun 14 02:13 fstab.bak
drwxr-xr-x. 2 user1 user1 6 Jun 14 03:04 test
(2)、在目录属主、属组不变的情况下,user2对test及其子目录有读写权限
chmod o+w /data/test
[root@acer ~]#ll /data
total 0
-rw-rw-r--. 1 acer acer 0 Jun 14 02:13 fstab.bak
drwxr-xrwx. 2 user1 user1 6 Jun 14 03:04 test
(3)、user1在/data/test
目录下创建文件a1.sh, a2.sh, a3.sh, a4.sh,设置所有用户都不可删除1.sh,2.sh文件。
[user1@acer root]$ touch /data/test/a{1..4}.sh
[root@acer ~]#chattr +i /data/test/a{1..4}.sh
[root@acer ~]#lsattr /data/test
----i--------------- /data/test/a1.sh
----i--------------- /data/test/a2.sh
----i--------------- /data/test/a3.sh
----i--------------- /data/test/a4.sh
(4)、清理/data/test
目录及其下所有文件的acl权限
[root@acer ~]#setfacl -b /data/test/a{1..4}.sh
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。