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

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 204,053评论 6 478
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 85,527评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 150,779评论 0 337
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,685评论 1 276
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,699评论 5 366
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,609评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,989评论 3 396
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,654评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,890评论 1 298
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,634评论 2 321
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,716评论 1 330
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,394评论 4 319
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,976评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,950评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,191评论 1 260
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 44,849评论 2 349
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,458评论 2 342

推荐阅读更多精彩内容