完成作业:
第二周
1、总结cp、move命令的用法(要求列出源及目标各种情况的表格)
利用cp(copy)命令可以实现文件或目录的复制
格式:
cp [option]...[-T] SOURCE DEST cp [option]...SOURCE DIRECTORY cp [option]...-t DIRECTORY SOURCE...-
-i 如果目标已存在,覆盖前提示是否覆盖
-
-n 不覆盖,主要两者顺序
-
-r,-R 递归复制目录及内部的所有内容
-
-a 归档,相当于-dR --preserv=all,常用于备份功能
-
-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.~#~,可以保留多个版本
mv命令移动和重命名文件
同一分区移动数据,速度很快,数据位置没有变化
不同分区移动数据,速度相对慢,数据位置发生了变化
格式:
mv [option]...[-T] SOURCE DEST mv [option]...SOURCE DIRECTORY mv [option]...-t DIRECTORY SOURCE...常用选项
- -i 交互式
- -f 强制
- -b 目标存在,覆盖前先备份
利用rename可以批量修改文件名
格式:
rename [options] <expression> <replacement> <file>...范例:
#为所有的conf文件加上.bak后缀: rename 'conf' 'conf.bak' f* #去掉所有的bak后缀: rename '.bak' ' ' *.bak2、总结IO重定向的类别和区别
标准输入和输出
程序:指令+数据
打开的文件都有一个fd:file descriptor(文件描述符)
Linux给程序提供三种I/O设备
- 标准输入(STDIN) -0 默认接受来自终端窗口的输入
- 标准输出(STDOUT)-1 默认输出到终端窗口
- 标准错误(STDERR)-2 默认输出到终端窗口
通常我们在linux下看到的*控制台(console)*是由几个设备完成的。分别是/dev/ttyN(其中tty0就是/dev/console,tty1,tty2就是不同的*虚拟终端*(virtual console))。通常使用热键ctrl+alt+Fn来在这些虚拟终端之间进行切换。所有的这些tty设备都是由linux/drivers/char/console.c和vt.c对应。*/dev/pts*是*远程登陆*(telnet,ssh等)后创建的控制台设备文件所在的目录。由于可能有好几千个用户登陆,所以/dev/pts其实是动态生成的,不象其他设备文件是构建系统时就已经产生的硬盘节点(如果未使用devfs)
范例:文件描述符
[root@southseal ~]# ll /dev/std* lrwxrwxrwx 1 root root 15 Apr 29 09:23 /dev/stderr -> /proc/self/fd/2 lrwxrwxrwx 1 root root 15 Apr 29 09:23 /dev/stdin -> /proc/self/fd/0 lrwxrwxrwx 1 root root 15 Apr 29 09:23 /dev/stdout -> /proc/self/fd/1 [root@southseal ~]# ll /proc/self/fd/* ls: cannot access '/proc/self/fd/255': No such file or directory lrwx------ 1 root root 64 Apr 29 09:28 /proc/self/fd/0 -> /dev/pts/0 lrwx------ 1 root root 64 Apr 29 09:28 /proc/self/fd/1 -> /dev/pts/0 lrwx------ 1 root root 64 Apr 29 09:28 /proc/self/fd/2 -> /dev/pts/0 lr-x------ 1 root root 64 Apr 29 09:28 /proc/self/fd/3 -> /var/lib/sss/mc/passwd lrwx------ 1 root root 64 Apr 29 09:28 /proc/self/fd/4 -> 'socket:[42991]' lr-x------ 1 root root 64 Apr 29 09:28 /proc/self/fd/5 -> /var/lib/sss/mc/groupI/O重定向redirect
I/O重定向:将默认的输入,输出或错误对应的设备改变,指向新的目标
标准输出和错误重定向
STDOUT和STDERR可以被重定向到指定文件,而非默认的当前终端
格式:
命令 操作符号 文件名支持操作符号包括:
1> 或 > 把STDOUT重定向到文件 2> 把STDERR重定向到文件 &> 把标准输出和错误都重定向 >& 和上面功能一样,建议使用上面方式以上如果文件已存在,文件内容会被覆盖
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
合并多个程序
(CMD1;CMD2......)或者{CMD1;CMD2;...;}合并多个程序的STDOUT
范例:标准输出重定向
[root@southseal ~]# ls > /dev/pts/0 #将ls命令输出重定向到/dev/pts/0虚拟终端上 anaconda-ks.cfg Downloads Music Templates windows.txt Desktop initial-setup-ks.cfg Pictures Videos win.txt Documents linux.txt Public windows1.txt [root@southseal ~]# ls /data > /dev/pts/0 #将ls /data命令输出重定向到/dev/pts/0虚拟终端上;/dev/pts/0 表示当前虚拟终端 backup conf f1.txt~ f1.txt.~2~ f3.txt rootdir1 backup2021-04-22 f1.txt f1.txt.~1~ f2.txt rootdir rootdir2范例:标准错误重定向
[root@southseal ~]# rm /data/f1.log 2> /data/all.log [root@southseal ~]# cat /data/all.log rm: cannot remove '/data/f1.log': No such file or directory范例:合并多个命令的结果至一个文件中
[root@southseal ~]# ( cal 2009 ; cal 2020 )> all.txt [root@southseal ~]# { ls;hostname; } > /data/all.log范例:清除大文件
[root@southseal ~]# cat /dev/null > /data/all.log范例:分别重定向
[root@southseal ~]# ls /data/ /xxx > stdout.log 2> stderr.log范例:将标准输出和错误都重定向到同一个文件
[root@southseal ~]# ls /data /xxx > /data/all.log 2>&1 [root@southseal ~]# ls /data /xxx 2> /data/all.log 1>&2 [root@southseal ~]# ls /data /xxx &> /data/all.log [root@southseal ~]# ls /data /xxx 2>&1 /data/all.log [root@southseal ~]# ls /data /xxx 2>&1 > /data/all.log1 ls: cannot access '/xxx': No such file or directory3、将/etc/issue文件中的内容转换为大写后保存至/tmp/issue.out文件中
tr命令:转换和删除字符
tr [OPTION]... SET1 [SET2]选项:
-d --delete:删除所有属于第一字符集的字符 -s --squeeze-repeats:把连续重复的字符以单独一个字符表示,即去重 -t --truncate-set1:将第一个字符集对应字符转化为第二字符集对应的字符 -c -C --complement:取字符集的补集 \NNN character with octal value NNN (1 to 3 octal digits) \\ backslash \a audible BEL \b backspace \f form feed \n new line \r return \t horizontal tab \v vertical tab [:alnum:] 字母和数字 [:alpha:] 字母 [:blank:] 空格或制表符 [:cntrl:] 控制(非打印)字符 [:digit:] 数字 [:graph:] 图形字符 [:lower:] 小写字母 [:print:] 可打印字符 [:punct:] 标点符号 [:space:] 空白字符 [:upper:] 大写字母 [:xdigit:] 十六进制字符 [root@localhost ~]# cat /etc/issue | tr 'a-z' 'A-Z' > /tmp/issue.out [root@localhost ~]# cat /tmp/issue.out \S KERNEL \R ON AN \M4、请总结描述用户和组管理类命令的使用方法并完成以下练习:
用户和组管理命令
用户管理命令
-
useradd
-
usermod
-
userdel
组账号维护命令
- groupadd
- groupmod
- groupdel
用户创建
useradd命令可以创建新的Linux用户
useradd [options] LOGIN常见选项
-u UID -o 配合-u选项,不检测UID的唯一性 -g GID 指明用户所属基本组,可为组名,也可以GID -c "COMMENT" 用户的注释信息 -d HOME_DIR 以指定的路径(不存在)为家目录 -s SHELL 指明用户的默认shell程序,可用列表在/etc/shells文件中 -G GROUP1[,GROUP2,...] 为用户指明附加组,组需事先存在 -N 不创建私有组做主组,使用users组做主组 -r 创建系统用户Centos6之前ID<500 Centos7以后ID<1000 -m 创建家目录,用于系统用户 -M 不创建家目录,用于非系统用户 -p 指定加密码的密码范例:
useradd -r -u 48 -g apache -s /sbin/nologin -d /var/www -c "Apache" apacheuseradd命令默认值设定由/etc/default/useradd定义
[root@southseal ~]# cat /etc/default/useradd # useradd defaults file GROUP=100 HOME=/home INACTIVE=-1 #对应/etc/shadow文件第7列,即用户密码过期的宽限度 EXPIRE= #对应/etc/shadow文件第8列,即用户账号的有效期 SHELL=/bin/bash SKEL=/etc/skel CREATE_MAIL_SPOOL=yes显示或更改默认设置
useradd -D useradd -D -s SHELL useradd -D -b BASE_DIR useradd -D -g GROUPB新建用户的相关文件
- /etc/default/useradd
- /etc/skel/*
- /etc/login.defs
批量创建用户
newusers passwd 格式文件批量修改用户口令
echo username:passwd | chpasswd用户属性修改
usermod命令可以修改用户属性
格式:
usermod [OPTION] login常见选项
-u UID:新UID -g GID:新主组 -G GROUP1[,GTOUP2,...[,GROUP]]:新附加组,原来的附加组将会被覆盖,若保留原有,则要同时使用-a选项 -s SHELL:新的默认SHELL -c 'COMMENT':新的注释信息 -d HOME:新家目录不会自动创建,若要创建新家目录并移动源家数据,同时使用-m选项 -l login_name:新的名字 -L:lock指定用户,在/etc/shadow密码栏的增加! -U:unlock指定用户,将/etc/shadow密码栏的!去掉 -e YYYY-MM-DD:指明用户账号过期日期 -f INACTIVE:设定非活动期限,即宽限期删除用户
userdel 可删除Linux用户
格式:
userdel [OPTION] ... Login常见选项:
-f,--forec 强制 -r,--remove 删除用户家目录和邮箱查看用户相关的ID信息
id命令可以查看用户的UID,GID等信息
id [OPTION]...[USER]常见选项:
-u:显示UID -g:显示GID -G:显示用户所属的组的ID -n:显示名称,需配置ugG使用创建组
groupadd实现创建组
格式:
groupadd [OPTION]...group_name常见选项:
-g GID指明GID号:[GID_MIN,GID_MAX] -r 创建系统组,CentOS 6 之前ID<500,Centos 7之前ID<1000范例:
groupadd -g 48 -r apache修改组
groupmod组属性修改
格式:
groupmod [OPTION]... group常见选项:
-n group_name:新名字 -g GID:新的GID组删除
groupdel可以删除组
格式:
groupdel [OPTIONS] GROUP常见选项:
-f,--force 强制删除,即使是用户的主组也强制删除更改和查看组成员
groupmems [options] [action]常见选项:
-g,--group groupname #更改为指定组(只有root) -a,--add username #指定用户加入组 -d,--delete username #从组中删除用户 -p,--purge #从组中清除所有成员 -l,--list #显示组成员列表groups可查看用户组关系
格式:
#查看用户所属组列表 groups [OPTION].[USERNAME]...