linux-文件管理、IO重定向、管道、用户与组管理

对应章节:

第三、教学总监老王亲讲-Linux文件管理实战

第四、教学总监老王亲讲-IO重定向、管道、用户与组管理

**Linux系统目录遵循FHS文件分层标准。**

  /boot:引导文件存放目录,内核文件(vmlinuz)、引导加载器(bootloader, grub)都存放于此目录

  /bin:供所有用户使用的基本命令;不能关联至独立分区,OS启动即会用到的程序

  /sbin:管理类的基本命令;不能关联至独立分区,OS启动即会用到的程序

  /lib:启动时程序依赖的基本共享库文件以及内核模块文件(/lib/modules)

  /lib64:专用于x86_64系统上的辅助共享库文件存放位置

  /etc:配置文件目录

  /home/USERNAME:普通用户家目录

  /root:管理员的家目录

  /media:便携式移动设备挂载点

  /mnt:临时文件系统挂载点

  /dev:设备文件及特殊文件存储位置

        b: block device,随机访问

      c: character device,线性访问

  /opt:第三方应用程序的安装位置

  /srv:系统上运行的服务用到的数据

  /tmp:临时文件存储位置

蓝色-->目录  绿色-->可执行文件  红色-->压缩文件浅  蓝色-->链接文件          灰色-->其他文件

大小写敏感取决于文件系统格式 ,比如ext4

**cd 改变目录**

切换至父目录:cd..

切换至当前用户主目录:cd

切换至以前的工作目录:cd-

**ls列出当前目录的内容或指定目录**

用法:ls [options] [files_or_dirs]

只显示目录 ls -d */

**文件通配符**

*匹配零个或多个字符

?匹配任何单个字符

~ 当前用户家目录

~mage 用户mage家目录

~+ 当前工作目录

~-前一个工作目录

[0-9]匹配数字范围

[a-z]:字母

[A-Z]:字母

[wang]匹配列表中的任何的一个字符

[^wang]匹配列表中的所有字符以外的字符

[:digit:]:任意数字,相当于0-9

[:lower:]:任意小写字母

[:upper:]: 任意大写字母

[:alpha:]: 任意大小写字母

[:alnum:]:任意数字或字母

**touch命令:**

touch [OPTION]... FILE...

-a仅改变atime和ctime

-m 仅改变mtime和ctime

-t [[CC]YY]MMDDhhmm[.ss]

指定atime和mtime的时间戳

-c如果文件不存在,则不予创建

access time:访问时间,atime,读取文件内容

modify time: 修改时间, mtime,改变文件内容(数据)

change time: 改变时间, ctime,元数据发生改变

**cp命令**

-i:覆盖前提示

-n:不覆盖,注意两者顺序

-r, -R: 递归复制目录及内部的所有内容

-a: 归档,相当于-dR--preserv=all  备份用

-d:--no-dereference --preserv=links 不复制原文件,只复制链接名

-p: 等同--preserv=mode,ownership,timestamp

-v: --verbose

-f: --force 先删文件再创建

-u:--update 只复制源比目标更新文件或目标不存在的文件

--backup=numbered 目标存在,覆盖前先备份加数字后缀

练习:1创建/data/rootdir目录,并复制/root下所有文件到该目录内,要求保留原有权限

cp -a /root /data/rootdir

          2定义别名命令baketc,每天将/etc/目录下所有文件,备份到/testdir独立的子目录下,并要求子目录格式为backupYYYY-mm-dd,备份过程可见

          alias baketc=”cp -av /etc /data/backup`date +%F`”

**删除rm**  rm-rf/ 慎用

-i: 交互式

-f: 强制删除

-r: 递归

**tree 显示目录树**

-d: 只显示目录

-L level:指定显示的层级数目

-P pattern: 只显示由指定pattern匹配到的路径

**mkdir创建目录**

-p: 存在于不报错,且可自动创建所需的各目录

-v: 显示详细信息

-m MODE: 创建目录时直接指定权限

**rmdir删除空目录**

-p: 递归删除父空目录

-v: 显示详细信息

rm-r递归删除目录树

如何创建/testdir/dir2/x,/testdir/dir2/y,/testdir/dir2/x/a,/testdir/dir2/x/b

mkdir -p /testdir/dir2/{x/{a,b},y}  注意{}与【】的用法

file [options] ...

**标准输入和输出**

Linux给程序提供三种I/O设备

标准输入(STDIN)-0默认接受来自键盘的输入

标准输出(STDOUT)-1默认输出到终端窗口

标准错误(STDERR)-2默认输出到终端窗口

合并标准输出和错误输出为同一个数据流进行重定向

&>覆盖重定向

&>> 追加重定向

COMMAND > /path/to/file.out 2>&1 (顺序很重要)

COMMAND >> /path/to/file.out 2>&1

tr转换和删除字符

tr[OPTION]... SET1 [SET2]

ln f1 f2 创建f2与f1同样的incode号

ln -s f2 f2_link 创建软连接

硬连接与软连接的区别:

软和硬链接区别

1 本质不同:

硬是同一个文件,软不是同一个文件

2 删除

硬链接不影响,软链接失效

3 创建

硬:链接数加1,软:链接数不变

4 跨分区

硬:不,软:可以

5 目录

硬:不,软:可以

硬连接:一个文件多个名字 软连接:一个文件对应快捷方式,不同文件

**管道**

命令1 | 命令2 | 命令3 | …

将命令1的STDOUT发送给命令2的STDIN,命令2的STDOUT发送到命令3的STDIN

STDERR默认不能通过管道转发,可利用2>&1 或|& 实现

最后一个命令会在当前shell进程的子shell进程中执行用来

组合多种工具的功能

ls | tr 'a-z' 'A-Z'

**用户与组**

Authentication:认证

Authorization:授权

Accouting|Audition:审计

管理员:root, 0

普通用户:1-65535

系统用户:1-499, 1-999(CentOS7)

对守护进程获取资源进行权限分配

登录用户:500+, 1000+(CentOS7)

交互式登录

管理员组:root, 0

普通组:

系统组:1-499, 1-999(CENTOS7)

普通组:500+, 1000+(CENTOS7)

用户必须属于一个且只有一个主组

组名同用户名,且仅包含一个用户,私有组

用户的附加组(supplementary group)

一个用户可以属于零个或多个辅助组

Linux用户和组的主要配置文件:

/etc/passwd:用户及其属性信息(名称、UID、主组ID等)

/etc/group:组及其属性信息

/etc/shadow:用户密码及其相关属性

/etc/gshadow:组密码及其相关属性

更改加密算法authconfig--passalgo=sha256 --update

md5: message digest, 128bits

sha1: secure hash algorithm, 160bits

sha224: 224bits

sha256: 256bits

sha384: 384bits

sha512: 512bits

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: 创建系统用户CentOS 6: ID<500,CentOS 7: ID<1000

-m 创建家目录,用于系统用户

-M 不创建家目录,用于非系统用户

/etc/default/useradd

/etc/skel/*

/etc/login.defs

newusers passwd格式文件批量创建用户

chpasswd 批量修改用户口令

usermod[OPTION] login

-u UID: 新UID

-g GID: 新主组

-G GROUP1[,GROUP2,...[,GROUPN]]]:新附加组,原来的附加组将会被覆盖;若保留原有,则要同时使用-a选项

-s SHELL:新的默认SHELL

-c 'COMMENT':新的注释信息

-d HOME: 新家目录不会自动创建;若要创建新家目录并移动原家数据,同时使用-m选项

-l login_name: 新的名字;

-L: lock指定用户,在/etc/shadow 密码栏的增加!

userdel[OPTION]... login

-r: 删除用户家目录

id [OPTION]... [USER]

-u: 显示UID

-g: 显示GID

-G: 显示用户所属的组的ID

-n: 显示名称,需配合ugG使用

su[options...] [-] [user [args...]]

切换用户的方式:

suUserName:非登录式切换,即不会读取目标用户的配置文件,不改变当前工作目录

su-UserName:登录式切换,会读取目标用户的配置文件,切换至家目录,完全切换

**passwd: 修改自己的密码**

常用选项:

-l:锁定指定用户

-u:解锁指定用户

-e:强制用户下次登录修改密码

-n mindays: 指定最短使用期限

-x maxdays:最大使用期限

-w warndays:提前多少天开始警告

-iinactivedays:非活动期限

--stdin:从标准输入接收用户密码

echo "PASSWORD" | passwd--stdinUSERNAME

chage[OPTION]... LOGIN

-d LAST_DAY

-E --expiredateEXPIRE_DATE

-I --inactive INACTIVE

-m --mindaysMIN_DAYS

-M --maxdaysMAX_DAYS

-W --warndaysWARN_DAYS

**创建组**

groupadd[OPTION]... group_name

-g GID: 指明GID号;[GID_MIN, GID_MAX]

-r: 创建系统组

CentOS 6: ID<500

CentOS 7: ID<1000

**修改和删除组**

组属性修改:groupmod

groupmod[OPTION]... group

-n group_name: 新名字

-g GID: 新的GID

组删除:groupdel

groupdelGROUP

**更改组密码**

组密码:gpasswd

gpasswd[OPTION] GROUP

-a user 将user添加至指定组中

-d user 从指定组中移除用户user

-A user1,user2,... 设置有管理权限的用户列表

newgrp命令:临时切换主组

如果用户本不属于此组,则需要组密码

groupmems[options] [action]

options:

-g, --group groupname更改为指定组(只有root)

Actions:

-a, --add username 指定用户加入组

-d, --delete username 从组中删除用户

-p, --purge 从组中清除所有成员

-l, --list 显示组成员列表

groups [OPTION].[USERNAME]... 查看用户所属组列表

作业

1、w|tr 'a-z' 'A-Z' >/tmp/who.out

2、echo {1..100} |tr ' ' '+'|bc      seq -s + 100|bc

3、用户管理命令:useradd usermod userdel

useradd命令:创建用户

useradd [选项] 登录名

-u, --uid UID:指定UID;

-g, --gid GROUP:指定基本组ID,此组得事先存在;

-G, --groups GROUP1[,GROUP2,...[,GROUPN]]]:指明用户所属的附加组,多个组之间用逗号分隔;

-c, --comment COMMENT:指明注释信息;

-d, --home HOME_DIR:以指定的路径为用户的家目录;通过复制/etc/skel此目录并重命名实现;指定的家目录路径如果事先存在,则不会为用户复制环境配置文件;

-s, --shell SHELL:指定用户的默认shell,可用的所有shell列表存储在/etc/shells文件中;

-r, --system:创建系统用户;

usermod命令:修改用户属性

usermod [选项] 登录

-u, --uid UID:修改用户的ID为此处指定的新UID;

-g, --gid GROUP:修改用户所属的基本组;

-G, --groups GROUP1[,GROUP2,...[,GROUPN]]]:修改用户所属的附加组;原来的附加组会被覆盖;

-a, --append:与-G一同使用,用于为用户追加新的附加组;

-c, --comment COMMENT:修改注释信息;

-d, --home HOME_DIR:修改用户的家目录;用户原有的文件不会被转移至新位置;

-m, --move-home:只能与-d选项一同使用,用于将原来的家目录移动为新的家目录;

-l, --login NEW_LOGIN:修改用户名;

-s, --shell SHELL:修改用户的默认shell;

-L, --lock:锁定用户密码;即在用户原来的密码字符串之前添加一个"!";

-U, --unlock:解锁用户的密码;

userdel命令:删除用户

userdel [选项] 登录

-r:删除用户时一并删除其家目录;

    文件管理命令:cp mv rm

cp 复制文件

-i:交互式复制,即覆盖之前提醒用户确认;

-f:强制覆盖目标文件;

-r, -R:递归复制目录;

-d:复制符号链接文件本身,而非其指向的源文件;

-a:-dR --preserve=all, archive,用于实现归档;

mv:移动

常用选项:

-i:交互式;

-f:force

rm 删除

常用选项:

-i:interactive

-f:force

-r: recursive

4、useradd  -s /bin/csh -c "Gentoo Distribution" -G bin,root gentoo

5、mkdir -p /testdir/dir

  chgrp webs /testdir/dir

  chmod g+s /testdir/dir

  setfacl -m g:apps:rwx /testdir/dir

  setfacl -m g:dbs:rx /testdir/dir

  chmod o= /testdir/dir

6、ifconfig ens33 |grep -o "\([0-9]\{1,3\}\.\)\{3\}[0-9]\{1,3\}" |head -n1

7、cat /etc/passwd |cut -d ":" -f1,3,7|sort -nt: -k2|tail -n1

8、cp /etc/rc.d/init.d/functions /tmp

  vim /tmp/functions

  :%s@/etc/sysconfig/init@/var/log@g

你可能感兴趣的:(linux-文件管理、IO重定向、管道、用户与组管理)