linux shell目录管理,Linux文件管理、目录管理及用户管理命令

1、Linux上的文件管理类命令及常见使用方法、示例

常见的文件管理类命令有 cp(拷贝),mv(移动),rm(删除),这三者的共性选项有-i(交互式),-f(强制),cp 和 rm 还有共性选项-r(递归)。cp 和 mv 的操作可以单源或多源,单源操作时目标对象可以是文件或者目录,多源操作时,目标对象只能是目录,即 cp 和 mv 不能作为合并文件之用。下面以一个多源操作演示这三个命令

例:首先在/tmp目录下建立三个空文件a.txt b.txt c.txt,并同时创建一个测试目录test

]~# touch /tmp/{a,b,c}.txt; mkdir /tmp/test

然后复制a.txt b.txt c.txt三个文件至test文件夹

]~# cp /tmp/{a,b,c}.txt /tmp/test/

或者下面一条命令也可以,-t 表示目标文件夹,此时将目标地址/tmp/test/放在前面,源放在后面

]~# cp -t /tmp/test/ /tmp/{a,b,c}.txt

删除 test 文件夹及当中内容,并重新建立一个空test 文件夹,准备下面 mv 命令演示环境

]~# rm -rf /tmp/test; mkdir /tmp/test

移动tmp目录下a,b,c三个文件至/tmp/test/目录下

]~# mv /tmp/{a,b,c}.txt /tmp/test/

或者用下面一条命令也可以,-t 表示目标文件夹,此时将目标地址/tmp/test放前面,源放后面

]~# mv -t /tmp/test/ /tmp/{a,b,c}.txt

2、使用命令行展开功能创建目录示例

主要利用bash中{}:可承载一个以逗号分隔的路径列表,并能够将其展开为多个路径的特性,

例:创建/tmp/a1,/tmp/a2,/tmp/a1/a,/tmp/a1/b,在/tmp目录下创建目录x_y,x_z,q_y,q_z

-p 自动按需创建父目录 -v verbose 显示详细过程

]~# mkdir -pv /tmp/{a1/{a,b},a2}

]~# mkdir -pv /tmp/{x,q}_{y,z}

3、文件的元数据信息有哪些,分别有什么含义,如何查看?如何修改文件的时间戳信息

文件系统中的数据分为数据和元数据。数据是指普通文件中的实际数据,而元数据指用来描述一个文件的特征的系统数据,诸如访问权限、文件属主属组、安全上下文、文件的时间戳(access time/modify time/change time/create time)、以及文件数据块的分布信息(inode...)等等。

时间戳当中,access time即访问这个文件夹中的文件,如用 cat命令,那么文件夹和文件的访问时间就会改变;modify time,即修改这个文件夹中文件,则令文件夹和文件的更改时间产生改变;change time,通过使用 mv 命令可以单独改变这个文件夹或文件的改动时间。

查看文件的元数据信息,可以使用stat命令,后面接文件名

]~# stat /tmp/test

文件:"/tmp/test"

大小:6 块:0 IO 块:4096 目录

设备:fd00h/64768d Inode:102583006 硬链接:2

权限:(0755/drwxr-xr-x) Uid:( 0/ root) Gid:( 0/ root)

环境:unconfined_u:object_r:user_tmp_t:s0

最近访问:2019-07-06 17:05:27.057452821 +0800

最近更改:2019-07-06 17:05:27.057452821 +0800

最近改动:2019-07-06 17:05:27.057452821 +0800

创建时间:-

如何修改文件的时间戳信息,通过 touch 命令,通过后面选项-a (仅修改access time)或-m(仅修改modify time),和-t (时间戳格式为YYYYMMDDhhmm.ss)

将最近访问(access time)修改为2015年3月20日 00:21:40

]~# touch -a -t 201503200021.40 /tmp/test

]~# stat /tmp/test

文件:"/tmp/test"

大小:6 块:0 IO 块:4096 目录

设备:fd00h/64768d Inode:102583006 硬链接:2

权限:(0755/drwxr-xr-x) Uid:( 0/ root) Gid:( 0/ root)

环境:unconfined_u:object_r:user_tmp_t:s0

最近访问:2015-03-20 00:21:40.000000000 +0800

最近更改:2019-07-06 17:05:27.057452821 +0800

最近改动:2019-07-06 17:10:45.282935024 +0800

创建时间:-

将最近更改(modify time)修改为 2014年5月18日 11:11:11

]~# touch -a -m 201405181111.11 /tmp/test

]~# stat /tmp/test

文件:"/tmp/test"

大小:17 块:0 IO 块:4096 目录

设备:fd00h/64768d Inode:102583006 硬链接:2

权限:(0755/drwxr-xr-x) Uid:( 0/ root) Gid:( 0/ root)

环境:unconfined_u:object_r:user_tmp_t:s0

最近访问:2015-03-20 00:21:40.000000000 +0800

最近更改:2014-05-18 11:11:11.000000000 +0800

最近改动:2019-07-06 17:10:45.282935024 +0800

创建时间:-

4、Bash中的命令执行结果的引用,可以通过$(COMMAND )组合或者反单引号`COMMAND` 对命令结果进行强引用,推荐使用$(COMMAND )。

接下来在/tmp目录下创建字符串tfile开头,后跟当前日期和时间的文件,格式如tfile-2019-07-03-18-14-37

]~# touch /tmp/tfile-$(date +%Y-%m-%d-%H-%M-%S)

]~# ll /tmp/

-rw-r--r--. 1 root root 0 7月 6 18:00 tfile-2019-07-06-18-00-22

drwx------. 2 root root 21 7月 4 19:05 tmux-0

5、关于Bash中Globbing(通配符)机制的使用简介,然后复制指定格式的文件或目录到指定目录中

globbing:文件名通配(对整体文件名匹配,而非部分)

匹配模式:元字符

*:匹配任意长度的任意字符

?:匹配任意单个字符

[]:匹配指定范围内的任意单个字符

有几种特殊格式:

[a-z], [A-Z], [0-9], [a-z0-9]

[[:upper:]]:所有大写字母

[[:lower:]]:所有小写字母

[[:alpha:]]:所有字母

[[:digit:]]:所有数字

[[:alnum:]]:所有的字母和数字

[[:space:]]:所有空白字符

[[:punct:]]:所有标点符号

[^]:匹配指定范围外的任意单个字符

[^[:upper:]]:所有非大写字符

[^0-9]:所有非数字

[^[:alnum:]]:所有非正常字符(即不含字母和数字)

下面演示如何复制/etc目录下所有以p开头,以非数字结尾文件或目录到/tmp/mytest1目录中

]~# cp -r /etc/p*[^0-9] /tmp/mytest1/

6、创建用户,指定UID,家目录、 shell、基本组和附加组

用法:useradd [选项] 登录

useradd -D

useradd -D [选项]

选项:

-b, --base-dir BASE_DIR 新账户的主目录的基目录

-c, --comment COMMENT 新账户的 GECOS 字段

-d, --home-dir HOME_DIR 新账户的主目录

-D, --defaults 显示或更改默认的 useradd 配置

-e, --expiredate EXPIRE_DATE 新账户的过期日期

-f, --inactive INACTIVE 新账户的密码不活动期

-g, --gid GROUP 新账户主组的名称或 ID

-G, --groups GROUPS 新账户的附加组列表,多个附加组用逗号分隔

-h, --help 显示此帮助信息并推出

-k, --skel SKEL_DIR 使用此目录作为骨架目录

-K, --key KEY=VALUE 不使用 /etc/login.defs 中的默认值

-l, --no-log-init 不要将此用户添加到最近登录和登录失败数据库

-m, --create-home 创建用户的主目录

-M, --no-create-home 不创建用户的主目录

-N, --no-user-group 不创建同名的组

-o, --non-unique 允许使用重复的 UID 创建用户

-p, --password PASSWORD 加密后的新账户密码

-r, --system 创建一个系统账户

-R, --root CHROOT_DIR chroot 到的目录

-s, --shell SHELL 新账户的登录 shell

-u, --uid UID 新账户的用户 ID

-U, --user-group 创建与用户同名的组

-Z, --selinux-user SEUSER 为 SELinux 用户映射使用指定 SEUSER

下面举例:创建用户tom,指定UID为5001,指定家目录为/tmp/tom,指定shell为/bin/zsh,指定基本组为tom,附加组为jack

]~# useradd -u 5001 -m -d /tmp/tom -s /bin/zsh -G jack -U tom

7、常用的用户以及用户管理命令及使用方法

常用的用户管理命令有以下groupadd, groupmod, groupdel, useradd, usermod, userdel, passwd, gpasswd, newgrp, id, su, chage

groupadd命令:添加组

groupadd [选项] group_name

-g GID:指定GID;默认是上一个组的GID+1;

-r: 创建系统组;

groupmod命令:修改组属性

groupmod [选项] GROUP

-g GID:修改GID;

-n new_name:修改组名;

groupdel命令:删除组

groupdel [选项] GROUP

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:创建系统用户;

注意:创建用户时的诸多默认设定配置文件为/etc/login.defs

useradd -D:显示创建用户的默认配置;

useradd -D 选项: 修改默认选项的值;

修改的结果保存于/etc/default/useradd文件中;

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:删除用户时一并删除其家目录;

passwd命令:

passwd [-k] [-l] [-u [-f]] [-d] [-e] [-n mindays] [-x maxdays] [-w warndays] [-i inactivedays] [-S] [--stdin] [username]

(1) passwd:修改用户自己的密码;

(2) passwd USERNAME:修改指定用户的密码,但仅root有此权限;

-l, -u:锁定和解锁用户;

-d:清除用户密码串;

-e DATE: 过期期限,日期;

-i DAYS:非活动期限;

-n DAYS:密码的最短使用期限;

-x DAYS:密码的最长使用期限;

-w DAYS:警告期限;

--stdin:

echo "PASSWORD" | passwd --stdin USERNAME

gpasswd命令:

组密码文件:/etc/gshadow

gpasswd [选项] group

-a USERNAME:向组中添加用户

-d USERNAME:从组中移除用户

newgrp命令:临时切换指定的组为基本组;

newgrp [-] [group]

-: 会模拟用户重新登录以实现重新初始化其工作环境;

chage命令:更改用户密码过期信息

chage [选项] 登录名

id命令:显示用户的真和有效ID;

id [OPTION]... [USER]

-u: 仅显示有效的UID;

-g: 仅显示用户的基本组ID;

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

-n: 显示名字而非ID;

su命令:switch user

登录式切换:会通过读取目标用户的配置文件来重新初始化

su - USERNAME

su -l USERNAME

非登录式切换:不会读取目标用户的配置文件进行初始化

su USERNAME

注意:管理员可无密码切换至其它任何用户;

-c 'COMMAND':仅以指定用户的身份运行此处指定的命令;

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值