Linux作业第二周

1. Linux上的文件管理类命令都有哪些,其常用使用方法及其相关示例演示。

  • mkdir:创建目录

    使用方法:mkdir [OPTION]... DIRECTORY…
    -p:自动按需创建父目录
    -v:显示详细过程
    -m Mode:直接给定权限
    示例:
    1、创建一个目录,名称为test1
    [root@localhost tmp]# mkdir test1
    2、创建/tmp/test1/test2目录及/tmp/test3/test4目录
    [root@localhost ~]# mkdir /tmp/test1/test2 #创建成功
    [root@localhost ~]# mkdir /tmp/test3/test4 #创建失败,提示目录不存在,因为test3目录不存在
    mkdir: cannot create directory ‘/tmp/test3/test4’: No such file or directory
    [root@localhost ~]# mkdir -p /tmp/test3/test4 #加上 -p 参数,自动创建父目录/tmp/test3
    3、创建/tmp/test5/test6 目录并显示其详细过程
    [root@localhost ~]# mkdir -v -p /tmp/test5/test6
    mkdir: created directory ‘/tmp/test5’
    mkdir: created directory ‘/tmp/test5/test6’
    4、创建/tmp/test7目录,并给定其777的权限
    [root@localhost ~]# mkdir -v -m 777 /tmp/test7
    [root@localhost ~]# ll -d /tmp/test7/ #查看/tmp/test7的权限为777
    drwxrwxrwx. 2 root root 6 Jul 26 23:33 /tmp/test7/

  • rmdir:删除空目录

    使用方法:rmdir [OPTION]... DIRECTORY…
    -p:删除某目录后,如果其父目录为空,则一并删除之;
    -v: 显示过程;
    示例:
    1、删除/tmp/test1目录
    [root@localhost ~]# rmdir /tmp/test1
    rmdir: failed to remove ‘/tmp/test1’: Directory not empty
    请注意:使用rmdir命令删除目录时,该目录必须为空,否则命令执行失败
    2、删除/tmp/test1/test2目录,显示详细过程,如果其父目录为空,则一并删除
    [root@localhost ~]# rmdir -pv /tmp/test1/test2/
    rmdir: removing directory, ‘/tmp/test1/test2/’
    rmdir: removing directory, ‘/tmp/test1’
    rmdir: removing directory, ‘/tmp’
    rmdir: failed to remove directory ‘/tmp’: Device or resource busy

  • tree:把某个目录下的子目录及文件以树形结构显示出来

    使用方法:tree [options] [directory]
    -L #:指定要显示的层级
    示例:
    1、以树形结构显示/tmp下的所有目录及文件
    [root@localhost ~]# tree /tmp
    /tmp
    ├── ssh-ghXqTgj14FDI
    │   └── agent.11690
    ├── systemd-private-4247979ab04243af91e353b6549743bf-bolt.service-OVtMg3
    │   └── tmp
    ├── systemd-private-4247979ab04243af91e353b6549743bf-colord.service-iukSKN
    │   └── tmp
    ├── systemd-private-4247979ab04243af91e353b6549743bf-cups.service-zMJOXE
    │   └── tmp
    ├── systemd-private-4247979ab04243af91e353b6549743bf-fwupd.service-tEYeB8
    │   └── tmp
    ├── systemd-private-4247979ab04243af91e353b6549743bf-rtkit-daemon.service-Ue2VYB
    │   └── tmp
    ├── test3
    │   └── test4
    ├── test5
    │   └── test6
    └── test7

    16 directories, 1 file

  • cp:文件复制

    使用方法:
    单源复制:cp [OPTION]... [-T] SOURCE DEST
    如果DEST不存在:则事先创建此文件,并复制源文件的数据流至DEST中;
    如果DEST存在:
    如果DEST是非目录文件:则覆盖目标文件;
    如果DEST是目录文件:则先在DEST目录下创建一个与源文件同名的文件,并复制其数据流;

     多源复制: cp [OPTION]... SOURCE... DEST
                        cp [OPTION]... -t DEST SOURCE...
        如果DEST不存在:错误;
        如果DEST存在:
            如果DEST是非目录文件:错误;
            如果DEST是目录文件:分别复制每个文件至目标目录中,并保持原名;
    
     常用选项:
        -i:交互式复制,即覆盖之前提醒用户确认;
        -f:强制覆盖目标文件;
        -r, -R:递归复制目录;
        -d:复制符号链接文件本身,而非其指向的源文件;
        -a:-dR --preserve=all, archive,用于实现归档;
        --preserv=
            mode:权限
            ownership:属主和属组
            timestamps: 时间戳
            context:安全标签
            xattr:扩展属性
            links:符号链接
            all:上述所有属性
    示例:
    1、单源复制
    DEST不存在情况
    [root@localhost tmp]# cp /etc/fstab fstab1
    [root@localhost tmp]# ll
    total 4
    -rw-r--r--. 1 root root 625 Sep 10 09:45 fstab1
    
    DEST存在,且为非目录文件
    [root@localhost tmp]# cp /etc/fstab fstab1
    cp: overwrite ‘fstab1’? y    提示是否覆盖该文件
    [root@localhost tmp]# ll
    total 4
    -rw-r--r--. 1 root root 625 Sep 10 09:47 fstab1
    
    DEST存在,且为非目录文件
    [root@localhost tmp]# cp /etc/fstab /tmp/
    [root@localhost tmp]# ll
    total 8
    -rw-r--r--. 1 root root 625 Sep 10 09:48 fstab
    
    2、多源复制
    
    DEST不存在情况,报错
    [root@localhost tmp]# cp /etc/fstab /etc/redhat-release /tmp1
    cp: target ‘/tmp1’ is not a directory
    
    DEST是非目录文件,报错
    [root@localhost tmp]# cp /etc/fstab /etc/redhat-release /tmp/fstab
    cp: target ‘/tmp/fstab’ is not a directory
    
    DEST存在情况,且为目录文件
    [root@localhost tmp]# cp /etc/fstab /etc/redhat-release /tmp
    [root@localhost tmp]# ll
    total 12
    -rw-r--r--. 1 root root 625 Sep 10 09:52 fstab
    -rw-r--r--. 1 root root  38 Sep 10 09:52 redhat-release
  • mv:文件移动(文件重命名)

    使用方法:mv [OPTION]... [-T] SOURCE DEST
    mv [OPTION]... SOURCE... DIRECTORY
    mv [OPTION]... -t DIRECTORY SOURCE..
    -i: 若指定目录已有同名文件,则先询问是否覆盖旧文件;
    -f: 在mv操作要覆盖某已有的目标文件时不给任何指示;
    示例:
    1、 mv 文件名 文件名 ##将源文件名修改为目标文件名
    [root@localhost tmp]# ll
    total 12
    -rw-r--r--. 1 root root 625 Sep 10 09:52 fstab
    [root@localhost tmp]# mv fstab hello
    [root@localhost tmp]# ll
    total 12
    -rw-r--r--. 1 root root 625 Sep 10 09:52 hello

    2、mv 文件名 目录名 ##将文件移动至目标目录
    [root@localhost tmp]# mv hello test/
    [root@localhost tmp]# ll /tmp/test/
    total 4
    -rw-r--r--. 1 root root 625 Sep 10 09:52 hello

    3、mv 目录名 目录名 ##目标目录已存在,将源目录移动至目标目录,目标目录不存在,则改名
    目标目录不存在情况
    [root@localhost tmp]# mv test/ test1
    [root@localhost tmp]# ll
    total 8
    drwxr-xr-x. 2 root root 19 Sep 10 10:08 test1

    目标目录存在情况
    [root@localhost tmp]# mv test1/ test2
    [root@localhost tmp]# ll
    [root@localhost tmp]# ll
    total 8
    drwxr-xr-x. 3 root root 19 Sep 10 10:11 test2
    [root@localhost tmp]# ll test2/
    total 0
    drwxr-xr-x. 2 root root 19 Sep 10 10:08 test1

  • rm:移除文件或目录

    使用方法:rm [OPTION]... FILE...
    -i:interactive 互动模式
    -f:force 强制删除
    -r: recursive 递归删除
    示例:
    1、
    [root@localhost tmp]# rm -i fstab1
    rm: remove regular file ‘fstab1’? y
    2、
    [root@localhost tmp]# rm -rf test2/ 递归强制删除,此操作很危险

  • cd:切换目录

    示例:
    使用绝对目录切换目录
    [root@localhost tmp]# cd /etc/sysconfig/
    切换至家目录
    [root@localhost sysconfig]# cd ~
    切换至上级目录
    [root@localhost ~]# cd ..
    使用相对路径切换目录
    [root@localhost /]# cd /etc/
    [root@localhost etc]# cd ./sysconfig/
    [root@localhost sysconfig]# cd ../rc.d/
    [root@localhost rc.d]#

  • pwd:显示当前所在目录

    示例:
    [root@localhost rc.d]# pwd
    /etc/rc.d

  • ls:列出目录
    ls [OPTION]... [FILE]…
          -a:显示所有文件,包括隐藏文件
          -A:显示除 . 及 .. 的所有文件
          -l:--long,长格式文件,显示文件的详细属性信息
              -rw-r--r--. 1 root root 1666 Jun 15 00:08 initial-setup-ks.cfg
                  -:文件类型:有-,d,b,c,l,s,p
                  rw-r--r--:
                      rw-:文件属主的权限
                      r--:文件属组的权限
                      r--:其他用户的权限
                  1:数字表示文件被硬链接的次数
                  root:文件的属主
                  root:文件的属组
                  1666:数字表示文件的大小,单位是字节
                  Jun 15 00:08:文件最近一次被修改的时间
                  initial-setup-ks.cfg:文件名
          -h:--human-readable:对文件大小单位进行换算,换算后结果会是非精确值
          -d:查看目录自身属性而非其内部的文件列表
          -r:逆序显示
          -R:递归显示
  • cat:文本文件查看

    使用方法:cat [OPTION]... [FILE]…
    -n:显示编号
    -E:显示行结束符$
    示例:
    [root@localhost rc.d]# cat -nE /etc/fstab
    1 $
    2 #$
    3 # /etc/fstab$
    4 # Created by anaconda on Mon Jun 24 14:44:35 2019$
    5 #$
    6 # Accessible filesystems, by reference, are maintained under '/dev/disk'$
    7 # See man pages fstab(5), findfs(8), mount(8) and/or blkid(8) for more info$
    8 #$
    9 /dev/mapper/centos-root / xfs defaults 0 0$
    10 UUID=b2a943d5-d091-435a-8e8f-82f5a09183b3 /boot xfs defaults 0 0$
    11 /dev/mapper/centos-home /home xfs defaults 0 0$
    12 /dev/mapper/centos-swap swap swap defaults 0 0$
    13 /dev/sdc1 /mydata ext4 defaults,noatime,noexec 0 0$
    14 /dev/sdc2 swap swap defaults 0 0$

2、使用命令行展开功能,创建/tmp/a1, /tmp/a2, /tmp/a1/a, /tmp/a1/b,在/tmp目录下创建目录:x_y, x_z, q_y, q_z

    [root@localhost rc.d]# mkdir -pv /tmp/{a1/{a,b},a2}
    mkdir: created directory ‘/tmp/a1’
    mkdir: created directory ‘/tmp/a1/a’
    mkdir: created directory ‘/tmp/a1/b’
    mkdir: created directory ‘/tmp/a2’

    [root@localhost rc.d]# mkdir -pv /tmp/{x,q}_{y,z}
    mkdir: created directory ‘/tmp/x_y’
    mkdir: created directory ‘/tmp/x_z’
    mkdir: created directory ‘/tmp/q_y’
    mkdir: created directory ‘/tmp/q_z’

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

文件的元数据是指文件的属性、大小、创建时间、访问时间、属主属组等信息。
可以通过stat命令查看
[root@localhost tmp]# stat redhat-release 
File: ‘redhat-release’
Size: 38            Blocks: 8          IO Block: 4096   regular file
Device: fd00h/64768d    Inode: 67974302    Links: 1
Access: (0644/-rw-r--r--)  Uid: (    0/    root)   Gid: (    0/    root)
Context: unconfined_u:object_r:user_tmp_t:s0
Access: 2019-09-10 09:52:13.872712453 +0800
Modify: 2019-09-10 09:52:13.872712453 +0800
Change: 2019-09-10 09:52:13.872712453 +0800
Birth: -
其中:
file:文件名;
size:文件大小
block:文件占了多少个数据块
IO Block:文件所占数据块的块大小
Device:硬件,既说明该文件在硬盘的那个柱
Inode:节点号
links:链接
Access(第一个):权限
Uid:该文件所属的属主
Gid:该文件所属的属组
context:安全上下文 
Access(第二个):文件上一次的访问时间
Modify:文件上一次修改的时间
Change:文件上一次属性更改的时间

可以使用touch命令修改文件的时间戳信息
        touch [OPTION]... FILE...
        -c: 指定的文件路径不存在时不予创建;
        -a: 仅修改access time;
        -m:仅修改modify time;
        -t STAMP
            [[CC]YY]MMDDhhmm[.ss]
示例:
[root@localhost tmp]# ll
-rw-r--r--. 1 root root 38 Sep 10 12:34 redhat-release
[root@localhost tmp]# touch -m -t 201909101111.11 redhat-release 
[root@localhost tmp]# ll
-rw-r--r--. 1 root root 38 Sep 10 11:11 redhat-release  #文件最后一次修改时间被改变

4、在/tmp目录下创建以tfile开头,后跟当前日期和时间的文件,文件名形如:tfile-2016-05-27-09-32-22。

  [root@localhost tmp]# touch /tmp/tfile-$(date +%Y-%m-%d-%H-%M-%S)
  [root@localhost tmp]# l
  -rw-r--r--. 1 root root  0 Sep 10 13:10 tfile-2019-09-10-13-10-51

5、复制/etc目录下所有以p开头,以非数字结尾的文件或目录到/tmp/mytest1目录中。

[root@localhost tmp]# cp -r /etc/p*[^0-9] /tmp/mytest1/
[root@localhost mytest1]# ll /tmp/mytest1/
total 56
drwxr-xr-x.  2 root root 4096 Sep 10 13:14 pam.d
-rw-r--r--.  1 root root 7058 Sep 10 13:14 passwd
-rw-r--r--.  1 root root 7009 Sep 10 13:14 passwd-
-rw-r--r--.  1 root root 1362 Sep 10 13:14 pbm2ppa.conf
-rw-r--r--.  1 root root 2872 Sep 10 13:14 pinforc
drwxr-xr-x. 12 root root  151 Sep 10 13:14 pki
drwxr-xr-x.  2 root root   28 Sep 10 13:14 plymouth
drwxr-xr-x.  5 root root   52 Sep 10 13:14 pm
-rw-r--r--.  1 root root 6300 Sep 10 13:14 pnm2ppa.conf
drwxr-xr-x.  2 root root    6 Sep 10 13:14 popt.d
drwxr-xr-x.  2 root root  154 Sep 10 13:14 postfix
drwxr-xr-x.  3 root root  219 Sep 10 13:14 ppp
drwxr-xr-x.  2 root root  105 Sep 10 13:14 prelink.conf.d
-rw-r--r--.  1 root root  233 Sep 10 13:14 printcap
-rw-r--r--.  1 root root 1819 Sep 10 13:14 profile
drwxr-xr-x.  2 root root 4096 Sep 10 13:14 profile.d
-rw-r--r--.  1 root root 6545 Sep 10 13:14 protocols
drwxr-xr-x.  2 root root   79 Sep 10 13:14 pulse
drwxr-xr-x.  2 root root   23 Sep 10 13:14 purple
drwxr-xr-x.  2 root root   35 Sep 10 13:14 python

6、创建用户tom,指定UID为5001,指定家目录为/tmp/tom, 指定shell为/bin/zsh, 指定基本组为tom,附加组为jack

useradd jack
useradd -u 5001  -G jack -d /tmp/tom -s /bin/zsh tom
[root@localhost mytest1]# id tom
uid=5001(tom) gid=1104(tom) groups=1104(tom),1103(jack)

7、常用的用户以及用户管理命令有哪些,并演示命令以及用法。

用户ID:

管理员:0
普通用户:1-65535
系统用户:1-499 centos6  1-999 centos7
登录用户:500-60000 centos6  10000-60000 centos7

组ID:

管理员:0
普通用户组:1-65535
系统用户组:1-499 centos6  1-999 centos7
登录用户组:500-60000 centos6  10000-60000 centos7
  • groupadd:添加组

    使用方法:groupadd [选项] group_name
    -g GID:指定GID;默认是上一个组的GID+1;
    -r: 创建系统组;
    [root@localhost ~]# groupadd test1
    [root@localhost ~]# tail -1 /etc/group
    test1:x:1105:

  • groupmod:修改组属性

    groupmod [选项] GROUP
    -g GID:修改GID;
    -n new_name:修改组名;
    示例:
    [root@localhost ~]# groupmod -g 3002 -n test1new test1
    [root@localhost ~]# tail -1 /etc/group
    test1new:x:3002:

  • groupdel:删除组

    groupdel GROUP
    示例:
    [root@localhost ~]# groupdel test1new

  • 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文件中;

    示例:
    [root@localhost ~]# groupadd test1
    [root@localhost ~]# groupadd test2
    [root@localhost ~]# tail -2 /etc/group
    test1:x:1105:
    test2:x:1106:
    [root@localhost ~]# useradd -u 5002 -g 1105 -G 1106 -c "this is a test user" -d /tmp/test3 -s /bin/zsh test3

  • 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
    示例:
    [root@localhost ~]# echo "123" | passwd --stdin test3
    Changing password for user test3.
    passwd: all authentication tokens updated successfully.
    [root@localhost ~]# passwd -l test3
    Locking password for user test3.
    passwd: Success
    [root@localhost ~]# passwd -u test3
    Unlocking password for user test3.
    passwd: Success

  • gpasswd:组管理命令

    gpasswd [选项] group
    -a USERNAME:向组中添加用户
    -d USERNAME:从组中移除用户

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

    newgrp [-] [group]

          -: 会模拟用户重新登录以实现重新初始化其工作环境;
  • id:显示用户的真和有效ID;

    id [OPTION]... [USER]
    -u: 仅显示有效的UID;
    -g: 仅显示用户的基本组ID;
    -G:仅显示用户所属的所有组的ID;
    -n: 显示名字而非ID;
    示例:
    [root@localhost ~]# id test3
    uid=5002(test3) gid=1105(test1) groups=1105(test1),1106(test2)

  • su命令:switch user

    登录式切换:会通过读取目标用户的配置文件来重新初始化
    su - USERNAME
    su -l USERNAME
    非登录式切换:不会读取目标用户的配置文件进行初始化
    su USERNAME
    注意:管理员可无密码切换至其它任何用户;
    -c 'COMMAND':仅以指定用户的身份运行此处指定的命令;

  • chage:更改用户密码过期信息
        chage [选项] 登录名
        -d:上一次更改的日期
        -E:账号过期的日期,过了这天,此账号将不可用
        -W:用户密码到期前,提前收到警告信息的天数
        -m:密码可更改的最小天数,为0时表示任何时候都可以更改密码
        -M:密码保持有效的最大天数
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值