第二周

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

文件系统操作命令-目录

  • ls查看文件或目录的工具

    用法:ls [选项]...[文件]...

    -l 出文件名之外,列出文件的类型、权限、所有者、所属组、文件大小、修改时间等详细信

    -a 显示所有以.开关的项目

    -A 列出除.及..以外的斜体项目

    -R 递归列出目录内容,若目录下有文件或子目录,则以下所有文件皆按序列出

    -n 类似-l,但列出UID及GID号

    -F 在列出的文件名后加一个符号,去区分文件类型;例如*代表可执行文件;/代表是目录;@代表链接文件;普通文件之后不加符号

  • 实例:

    [root@etcd01 opt]# ls -alF
    total 4415492
    drwxr-xr-x.  5 root root         88 Mar 19 01:41 ./
    dr-xr-xr-x. 20 root root       4096 Mar 13 20:49 ../
    -rw-r--r--   1 root root 4521459712 Dec  6 17:25 CentOS-7.4-x86_64-DVD-1708.iso
    drwx--x--x   4 root root         26 Feb 27 22:38 containerd/
    drwxr-xr-x   5 root root         36 Mar 13 11:17 etcd
    drwxr-xr-x   5 root root         36 Mar 19 01:41 kubernetes/
    

cd 更改目录,切换目录

  • 用法:cd 目标目录

    【选项】

    . 当前目录

    ..父目录

    cd .. 切换到父目录,切换到上一级目录

    cd 切换到当前用户家目录

    cd ~ 切换到当前用户家目录

    cd - 返回上一次所处的目录

    cd 类似于cd “test” 命令中的双引号(也可以是单引号);切换到名称带有空格的目录

  • 实例:

    [root@etcd01 ~]# cd /opt/
    [root@etcd01 opt]# cd kubernetes/
    [root@etcd01 kubernetes]# cd -
    /opt
    

pwd 显示当前所处的目录

  • 【选项】

    pwd -p 显示实际的工作目录,而非使用链接路径

    [root@etcd01 opt]# pwd -P
    /opt
    

mkdir1创建目录

  • 【选项】

    mkdir 只能在已存在的目录下创建目录

    mkdir -p 帮助你直接将所需的目录递归创建起来。(在一个不存在的上级目录里面创建目录)

rmdir 删除空目录

  • 【选项】

    rmdir 只能删除空目录

    rmdir -p 递归删除空目录

rm 删除文件或目录

  • 【选项】

    rm 只能删除文件

    rm -r 删除目录及目录下的项目(文件和目录)

    rm -f 不提示强制删除

  • 【实例1】

    rm -rf *

    强制删除所有文件,但是不包含隐藏文件。谨慎使用!!!!

  • 【实例2】

    同时删除多个文件或目录

    每个项目以空格隔开

    [root@etcd01 tmp]# rm -rf {a,b,c}
    

mv 移动文件或目录

  • mv 原文件路径 目标文件路径 移动

    【选项】

    -f 不提示并覆盖文件

    -n 不覆盖已存在文件

    -b 覆盖之前把原文件做备份,备份的文件在文件名之后有个~符号

    -u 只有原文件比覆盖的文件新的时候才可以覆盖文件;旧文件不能覆盖新文件

du 显示目录的磁盘使用情况

  • du查看目录或文件大小


    -a--all显示目录中个别文件的大小

    -b--bytes 显示目录或文件时,以byte为单位.

    -c--total 除了显示个别目录或文件的大小外,同时民显示所有目录或文件的总和

    -D--dereference-args 显示指定符号连接的源文件大小

    -h--human-readable 以K,M,G为单位,提高信息的可读性

    -H--si-h参数相同,但是K,M,G是以1000为换算单位

    -k--kilobytes以1024 bytes为单位

    -l--count-links 重复计算硬件连接的文件

    -L<符号连接>或--dereference<符号连接>显示选项中指定符号连接的源文件

    -m--megabytes 以1MB为单位

    -s--summarize仅显示总计

    -S--separate-dirs 显示个别目录的大小时,并不含其子目录的大小

    -x--one-file-xystem 以一开始处理时的文件系统为准,若遇上其它不同的文件系统目录则略过

    -X<文件>或--exclude-from=<文件>在<文件>指定目录或文件

    --exclude=<目录或文件>略过指定的目录或文件

    --max-depth=<目录层数> 超过指定层数的目录后,予以忽略。

    --help 显示帮助

    --version 显示版本信息

  • 实例


    [root@etcd01 kubernetes]# ls
    bin  cfg  ssl
    [root@etcd01 kubernetes]# du -h --exclude=bin
    16K     ./cfg
    16K     ./ssl
    

df查看所有已挂载磁盘使用情况

  • 实例

    [root@etcd01 kubernetes]# df -h
    Filesystem               Size  Used Avail Use% Mounted on
    /dev/mapper/centos-root   46G   29G   18G  62% /
    devtmpfs                 7.8G     0  7.8G   0% /dev
    tmpfs                    7.8G     0  7.8G   0% /dev/shm
    tmpfs                    7.8G  704M  7.1G   9% /run
    tmpfs                    7.8G     0  7.8G   0% /sys/fs/cgroup
    /dev/sda1                497M  158M  340M  32% /boot
    /dev/loop0               4.3G  4.3G     0 100% /mnt/cdrom
    tmpfs                    1.6G     0  1.6G   0% /run/user/0
    

    注解

    第一列: 文件系统对应的磁盘分区
    第二列:分区的总空间大小,含的数据块的数据
    第三列:已使用空间大小
    第四列:未使用空间大小
    第五列:用户空间使用的百分比
    第六列: 文件系统的挂载点
    

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

  • 实例

    [root@etcd03 /]# mkdir -pv /tmp/a{1/{a,b},2}
    mkdir: created directory ‘/tmp/a1’
    mkdir: created directory ‘/tmp/a1/a’
    mkdir: created directory ‘/tmp/a1/b’
    mkdir: created directory ‘/tmp/a2’
    [root@etcd03 /]# 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.文件的元数据信息有哪些,分别表示什么含义,如何查看?如何修改文件的时间戳信息。

  • 元数据信息:

    file:文件名;

    size:文件大小

    block:文件占了多少个数据块

    IO Block:文件所占数据块的块大小

    Device:硬件,既说明该文件在硬盘的那个柱面

    Inode:文件Inode号,文件的索引节点号

    links:链接

    Access:文件权限

    Uid:该文件所属的属主

    Gid:该文件所属的属组

    context:安全上下文

    Access(第二个):文件上一次的访问时间

    Modify:文件上一次修改的时间

    Change:文件上一次属性更改的时间

  • 查看文件元数据的方法

    stat命令:

stat [OPTION]... FILE...

[root@etcd03 ~]# stat /etc/issue
  File: ‘/etc/issue’
  Size: 23              Blocks: 8          IO Block: 4096   regular file
Device: fd01h/64769d    Inode: 67192987    Links: 1
Access: (0644/-rw-r--r--)  Uid: (    0/    root)   Gid: (    0/    root)
Access: 2019-04-08 09:42:19.438089565 +0800
Modify: 2017-08-30 23:53:07.000000000 +0800
Change: 2018-04-16 15:26:42.557988341 +0800
 Birth: -

修改文件的时间戳方法:

touch命令:用于改变文件时间戳,如果文件不存在则创建一个空文件

touch [OPTION]... FILE...  

-c:指定的文件路径不存在时不予创建:
-a:仅修改access time:
-m:仅修改modify time:
-t STAMP:
    [[CC]YY]MMDDhhmm[.ss] 年月日时分秒
    touch -m -t 200212010303.03

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

  • 实例

    [root@etcd03 tmp]# touch `date +%Y-%m-%d-%H-%M-%S`
    [root@etcd03 tmp]# ls
    2019-04-08-18-14-06 
    

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

  • 实例

    [root@etcd03 tmp]# mkdir mytest1
    [root@etcd03 tmp]# cp -rv /etc/p*[^0-9] mytest1/
    

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

  • 实例

    [root@etcd03 tmp]# groupadd jack
    [root@etcd03 tmp]# useradd -u 5001 -d /tmp/tom/ -s /bin/zsh -G jack tom
    [root@etcd03 tmp]# cat /etc/passwd grep tom
    [root@etcd03 tmp]# cat /etc/passwd |grep tom
    tom:x:5001:5001::/tmp/tom/:/bin/zsh
    [root@etcd03 tmp]# id tom
    uid=5001(tom) gid=5001(tom) groups=5001(tom),1003(jack)
    

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


useradd、userdel、usermod、passwd、groupadd、groupdel、groupmod、gpasswd、chage、chsh、id、su

  • useradd命令:创建用户

    useradd  [OPTION]  USER
    -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:创建系统用户;
    
  • userdel命令:删除用户

    userdel [OPTION] USER
        -r:删除用户时一并删除其家目录;
    
  • usermod命令:修改用户属性

    usermod [OPTION] USER
        -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:解锁用户的密码;
    
  • 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
    
  • groupadd命令:添加组

    groupadd [OPTION] group_name
    
        -g GID:指定GID;默认是上一个组的GID+1;
        -r: 创建系统组;
    
  • groupdel命令:删除组

    groupdel [OPTION] GROUP
    
  • groupmod命令:修改组属性

    groupmod [OPTION] GROUP
        -g GID:修改GID;
        -n new_name:修改组名;
    
  • gpasswd命令:管理组

    组密码文件:/etc/gshadow
    
    gpasswd [OPTION] group
        -a USERNAME:向组中添加用户
        -d USERNAME:从组中移除用户
    
  • chage命令:更改用户密码过期信息

    chage [OPTION] 登录名
    
        -d
        -E
        -W
        -m
        -M
    
  • id命令:显示用户和所属群组的实际与有效ID

    id [OPTION]... [USER]
        -u: 仅显示有效的UID;
        -g: 仅显示用户的基本组ID; 
        -G:仅显示用户所属的所有组的ID;
        -n: 显示名字而非ID;
    
  • su命令:切换用户

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