美文网首页
week_2_用户与文件管理基础

week_2_用户与文件管理基础

作者: 人間失格_430b | 来源:发表于2019-01-28 20:20 被阅读0次

    Q:

    1、Linux上的文件管理类命令都有哪些,其常用的使用方法及其相关示例演示。
    2、使用命令行展开功能,创建/tmp/a1, /tmp/a2, /tmp/a1/a, /tmp/a1/b,在/tmp目录下创建目录:x_y, x_z, q_y, q_z
    3、文件的元数据信息有哪些,分别表示什么含义,如何查看?如何修改文件的时间戳信息。
    4、在/tmp目录下创建以tfile开头,后跟当前日期和时间的文件,文件名形如:tfile-2016-05-27-09-32-22。
    5、复制/etc目录下所有以p开头,以非数字结尾的文件或目录到/tmp/mytest1目录中。
    6、创建用户tom,指定UID为5001,指定家目录为/tmp/tom, 指定shell为/bin/zsh, 指定基本组为tom,附加组为jack
    7、常用的用户以及文件管理命令有哪些,并演示命令以及用法。

    A:

    2、

    创建/tmp/a1, /tmp/a2, /tmp/a1/a, /tmp/a1/b

    [root@localhost ~]# mkdir -p /tmp/test/a{1/{a,b},2}
    [root@localhost ~]# tree /tmp/test/
    /tmp/test/
    ├── a1
    │   ├── a
    │   └── b
    └── a2
    
    ####4 directories, 0 files
    

    在/tmp/test目录下创建目录:x_y, x_z, q_y, q_z

    [root@localhost ~]# mkdir -pv /tmp/test/{x,q}_{y,z}
    mkdir: created directory ‘/tmp/test’
    mkdir: created directory ‘/tmp/test/x_y’
    mkdir: created directory ‘/tmp/test/x_z’
    mkdir: created directory ‘/tmp/test/q_y’
    mkdir: created directory ‘/tmp/test/q_z’
    [root@localhost ~]# tree /tmp/test
    /tmp/test
    ├── q_y
    ├── q_z
    ├── x_y
    └── x_z
    
    ####4 directories, 0 files
    

    3、touch -a 修改访问时间

    [root@localhost ~]# touch -a /tmp/abc
    [root@localhost ~]# stat /tmp/abc 
      File: ‘/tmp/abc’
      Size: 9           Blocks: 8          IO Block: 4096   regular file
    Device: fd00h/64768d    Inode: 67160811    Links: 1
    Access: (0644/-rw-r--r--)  Uid: (    0/    root)   Gid: (    0/    root)
    Context: unconfined_u:object_r:user_tmp_t:s0
    Access: 2019-01-28 04:00:22.080525564 -0500
    Modify: 2019-01-28 02:21:16.776055973 -0500
    Change: 2019-01-28 04:00:22.080525564 -0500
     Birth: -
    

    4、在/tmp目录下创建以tfile开头,后跟当前日期和时间的文件

    [root@localhost ~]# touch /tmp/tfile-`date +'%F-%H-%M-%S'`
    [root@localhost ~]# ls /tmp
    abc        test                       whoknow
    log        tfile-2019-01-28-04-16-12
    

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

    [root@localhost ~]# mkdir /tmp/mytest1
    [root@localhost ~]# cp -a /etc/p*[^[:digit:]]  /tmp/mytest1
    [root@localhost ~]# ls  /tmp/mytest1/
    pam.d  passwd  passwd-  pki  plymouth  pm  popt.d  postfix  ppp  prelink.conf.d  printcap  profile  profile.d  protocols  python
    

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

    [root@localhost ~]# useradd -u 5001 -d /tmp/tom -s /bin/zsh -G 5003 tom
    [root@localhost ~]# tail -1 /etc/passwd
    tom:x:5001:5001::/tmp/tom:/bin/zsh
    [root@localhost ~]# tail -2 /etc/group
    jack:x:5003:tom
    tom:x:5001:
    

    所参考的知识点如下

    • 文件管理类命令cp、mv、rm
    • 目录管理类命令mkdir、rmdir
    • bash命令行展开{}
    • 文件查看类命令
    • bash基本特性
    • globing文件名通配
    • 用户与组

    文件管理类命令

    基本命令:cp mv rm

    cp命令:copy
    NAME
           cp - copy files and directories
    
    SYNOPSIS
           cp [OPTION]... [-T] SOURCE DEST
           cp [OPTION]... SOURCE... DIRECTORY
           cp [OPTION]... -t DIRECTORY SOURCE...
    

    选项:
    -i:交互式复制,即覆盖之前提醒用户确认
    -f:强制覆盖目标文件
    -r, -R:递归复制目录
    -d:复制符号链接文件本身,而非其指向的源文件
    -a:-dR --preserve=all, archive,用于实现归档(可以理解成做备份)
    --preserv=
      mode:权限
      ownership:属主和属组
      timestamps: 时间戳
      context:安全标签
      xattr:扩展属性
      links:符号链接
      all:上述所有属性

    cp -i
    [root@localhost ~]# cp -i /tmp/abc /tmp/test
    cp: overwrite ‘/tmp/test/abc’? 
    

    mv命令:move

    先把文件复制到目标,再删除源文件

    NAME
           mv - move (rename) files
    
    SYNOPSIS
           mv [OPTION]... [-T] SOURCE DEST
           mv [OPTION]... SOURCE... DIRECTORY
           mv [OPTION]... -t DIRECTORY SOURCE...
    

    常用选项:
      -i:交互式
      -f:force


    rm命令:remove
    NAME
           rm - remove files or directories
    
    SYNOPSIS
           rm [OPTION]... FILE...
    

    常用选项:
      -i:interactive
      -f:force
      -r: recursive

    危险操作:rm -rf


    目录管理工具:

    mkdir
    NAME
           mkdir - make directories
    
    SYNOPSIS
           mkdir [OPTION]... DIRECTORY...
    
    DESCRIPTION
           Create the DIRECTORY(ies), if they do not already exist.
    
           -m, --mode=MODE
                  set file mode (as in chmod), not a=rwx - umask
    
           -p, --parents
                  如果基名的父目录不存在,则创建之
    
           -v, --verbose
                  打印出每个被创建的目录
    
    

    mkdir -pv

    [root@localhost ~]# mkdir -pv /tmp/x/y/z
    mkdir: created directory ‘/tmp/x’
    mkdir: created directory ‘/tmp/x/y’
    mkdir: created directory ‘/tmp/x/y/z’
    

    mkdir -pvm

    [root@localhost ~]# mkdir -pvm a=rwx  /tmp/x/y/z
    mkdir: created directory ‘/tmp/x’
    mkdir: created directory ‘/tmp/x/y’
    mkdir: created directory ‘/tmp/x/y/z’
    [root@localhost ~]# ll  -R /tmp/x
    /tmp/x:
    total 0
    drwxr-xr-x. 3 root root 15 Jan 28 02:58 y
    
    /tmp/x/y:
    total 0
    drwxrwxrwx. 2 root root 6 Jan 28 02:58 z
    
    /tmp/x/y/z:
    total 0
    

    rmdir
    NAME
           rmdir - remove empty directories
    
    SYNOPSIS
           rmdir [OPTION]... DIRECTORY...
    
    DESCRIPTION
           删除目录,如果他们是空的
    
           --ignore-fail-on-non-empty
    
                  忽略错误仅仅因为目录非空,但是不删除目录
    
           -p, --parents
                  删除目录和它的祖先; 
                  e.g., 'rmdir -p a/b/c' is similar to 'rmdir a/b/c a/b a'
    
           -v, --verbose
                 输出操作信息
    
    

    rmdir --ignore-fail-on-empty

    [root@localhost ~]# rmdir --ignore-fail-on-non-empty /tmp/x/y/z
    [root@localhost ~]# echo $?
    0
    [root@localhost ~]# ls -R /tmp/x
    /tmp/x:
    y
    
    /tmp/x/y:
    z
    
    /tmp/x/y/z:
    abc
    

    bash的基础特性之:命令行展开

    ~:自动展开为用户的家目录,或指定的用户的家目录;
    {}:可承载一个以逗号分隔的路径列表,并能够将其展开为多个路径;
    例如:/tmp/{a,b} 相当于 /tmp/a /tmp/b


    文件查看类命令:cat, tac, head, tail, more, less

    分屏查看命令:more和less

            more命令:
                more FILE
                    特点:翻屏至文件尾部后自动退出;
    
            less命令:
                less FILE
    
            head命令:
                查看文件的前n行;
                    head [options] FILE
                        -n #
                        -#
    
            tail命令:
                查看文件的后n行;
                    tail [options] FILE
                        -n #
                        -#
                        -f:查看文件尾部内容结束后不退出,跟随显示新增的行;
    

    stat命令

            stat命令:
                stat - display file or file system status
    
                stat FILE...
    
                文件:两类数据
                    元数据:metadata
                    数据: data
    
                时间戳:
                    access time:访问时间
                    modify time:数据修改时间
                    change time:元数据改变时间
    
    [root@localhost ~]# stat /tmp/abc 
      File: ‘/tmp/abc’
      Size: 9           Blocks: 8          IO Block: 4096   regular file
    Device: fd00h/64768d    Inode: 67160811    Links: 1
    Access: (0644/-rw-r--r--)  Uid: (    0/    root)   Gid: (    0/    root)
    Context: unconfined_u:object_r:user_tmp_t:s0
    Access: 2019-01-28 02:21:39.640754641 -0500
    Modify: 2019-01-28 02:21:16.776055973 -0500
    Change: 2019-01-28 02:21:16.776055973 -0500
     Birth: -
    
    

    touch命令--可用于修改文件时间戳

                touch - change file timestamps
    
                touch [OPTION]... FILE...
                    -c: 指定的文件路径不存在时不予创建;
                    -a: 仅修改access time;
                    -m:仅修改modify time;
                    -t STAMP
                        [[CC]YY]MMDDhhmm[.ss]
    

    bash的基础特性:命令的执行状态结果

        命令执行的状态结果:
            bash通过状态返回值来输出此结果:
                成功:0
                失败:1-255
    
            命令执行完成之后,其状态返回值保存于bash的特殊变量$?中;
    
        命令正常执行时,有的还回有命令返回值:
            根据命令及其功能不同,结果各不相同;
    
        引用命令的执行结果:
            $(COMMAND)
            或`COMMAND`
    

    bash的基础特性:引用

        强引用:''
        弱引用:""
        命令引用:``
    

    bash基础特性:快捷键

        Ctrl+a:跳转至命令行行首
        Ctrl+e:跳转至命令行行尾
    
        Ctrl+u:删除行首至光标所在处之间的所有字符;
        Ctrl+k:删除光标所在处至行尾的所有字符;
    
        Ctrl+l:清屏,相当于clear
    

    日期相关的命令:

    Linux:系统启动时从硬件读取日期和时间信息;读取完成以后,就不再与硬件相关联;

    date

    NAME
           date - print or set the system date and time
    
    SYNOPSIS
           date [OPTION]... [+FORMAT]
           date [-u|--utc|--universal] [MMDDhhmm[[CC]YY][.ss]]
    

    FORMAT:格式符
      %F 年月日
      %T 时分秒
      %Y 年
      %m 月
      %d 日
      %H 时
      %M 分
      %S 秒
      %s: 从1970年1月1号(unix元年)0点0分0秒到命令执行那一刻经过的秒数

    设定日期时间:date [MMDDhhmm[[CC]YY][.ss]]


    clock,hwclock

    NAME
           hwclock - query or set the hardware clock (RTC)
    
    SYNOPSIS
           hwclock [function] [option...]
    

    硬件时钟
    显示或设定硬件时钟
      -s, --hctosys:以硬件为准,把系统调整为与硬件时间相同
      -w, --systohc:以系统为准,把硬件时间调整为与系统时钟相同


    cal

    NAME
           cal - display a calendar
    
    SYNOPSIS
           cal [options] [[[day] month] year]
    

    globbing:文件名通配

    匹配模式 元字符
    * 任意长度的任意字符
    任意单个字符
    [] 指定范围内的任意单个字符
    [a-z], [A-Z], [0-9], [a-z0-9]
    [[:upper:]]:所有大写字母
    [[:lower:]]:所有小写字母
    [[:alpha:]]:所有字母
    [[:digit:]]:所有数字
    [[:alnum:]]:所有字母和数字
    [[:space:]]:所有空白字符
    [[:punct:]]:所有标点符号
    [^] 指定范围外的任意单个字符
    [^[:upper:]]
    [^0-9]
    [^[:alnum:]]

    用户与组

    用户标识、密码:
    • Authentication 认证
    • Authorization 授权
    • Auditing 审计
    组:用户组,用户容器

    用户类别:
    管理员
    系统用户
    登陆用户

    用户标识: UserID,UID

    16bits二进制数字:0-65535
        管理员: 0
        普通用户:1-65535
          系统用户:1-499(CentOS6),1-999(CentOS7)
          登录用户:500-60000(CentOS6),1000-60000(CentOS7)
      名称解析:名称转换
      Username <--> UID
      根据名称解析库进行 /etc/passwd
    

    组类别1:
    管理员组
    普通用户组
    系统组
    登录组

    组标识:GroupID,GID
        管理员组: 0 
        普通用户组:1-65535
           系统用户组:1-499(CentOS6), 1-999(CentOS7)
           登录用户组:500-60000(CentOS6), 1000-60000(CentOS7)
      名称解析:groupname <--> gid
      解析库:/etc/group
    

    组类别2:

    • 用户的基本组
    • 用户的附加组

    组类别3:

    • 私有组:组名同用户名,且只包含一个用户;
    • 公共组:组内包含了多个用户;

    /etc/passwd:用户的信息库

    name:password:UID:GID:GECOS:directory:shell
            name: 用户名
            password:可以是加密的密码,也可是占位符x;
            UID:
            GID:用户所属的主组的ID号;
            GECOS:注释信息
            directory:用户的家目录;
            shell:用户的默认shell,登录时默认shell程序;
    

    /etc/shadow:用户密码

     用户名:加密的密码:最近一次修改密码的时间:最短使用期限:最长使用期限:警告期段:过期期限:保留字段
    

    /etc/group:组的信息库

      group_name:password:GID:user_list
          user_list:该组的用户成员;以此组为附加组的用户的用户列表;
    

    相关命令:useradd, userdel, usermod, passwd, groupadd, groupdel, groupmod, gpasswd, chage, chsh, id, su


    groupadd命令:添加组

        groupadd [option] 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文件中;
    

    -M, --no-create-home
    Do not create the user's home directory, even if the system wide setting from /etc/login.defs (CREATE_HOME) is set to yes.

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

    相关文章

      网友评论

          本文标题:week_2_用户与文件管理基础

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