美文网首页工作生活magedu马哥教育
Linux文件管理、目录管理及用户管理命令

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

作者: Sa山 | 来源:发表于2019-07-08 06:41 被阅读0次

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':仅以指定用户的身份运行此处指定的命令;

相关文章

  • linux基本文件命令

    linux基本文件命令 文件及目录管理 .. contents:: 目录 文件管理不外乎文件或目录的创建、删除、查...

  • Linux文件管理、目录管理及用户管理命令

    1、Linux上的文件管理类命令及常见使用方法、示例常见的文件管理类命令有 cp(拷贝),mv(移动),rm(删除...

  • Linux操作系统学习笔记 0 ——目录

    环境配置和软件安装环境配置和软件安装地址 初识Linux——命令示例命令示例 目录管理目录管理 文件管理文件管理 ...

  • 2018-07-01

    Linux的文件管理和Bash的基础特性 一:Linux的文件管理类命令 (一)目录管理命令: 1、ls:用于显示...

  • 第三节 用户及文件权限管理

    用户及文件权限管理 一.Linux 用户管理 1.查看用户:请打开终端, 输入命令:$ who am i或者$ w...

  • 简书历史文章列表(不定时更新)

    Linux命令 Linux命令-文件管理Linux命令-系统管理 Python基础、相关模块及进阶 Python开...

  • Chapter 2——Linux文件管理基本命令

    Linux上常用的文件管理命令 首先说说对目录的管理操作,因为在Linux中,目录也算是一种特殊的文件。 目录管理...

  • Linux的简单学习记录(三)

    Linux的文件目录管理一、文件和目录管理 1.cd命令与pwd命令 进入文件目录与现实当前文件目录 2.mkdi...

  • Linux入门知识

    基础: Linux是什么 Linux用户、文件、目录管理 VIM编辑器 Linux文件系统管理进阶: Linux网...

  • Linux 基础知识

    本文包括: 1、Linux 系统概述 2、Linux 用户和用户组管理 3、Linux 文件和目录管理 4、Lin...

网友评论

    本文标题:Linux文件管理、目录管理及用户管理命令

    本文链接:https://www.haomeiwen.com/subject/buyacctx.html