Linux文件管理类和用户管理基础命令

1.Linux上基础文件管理类命令

1.1 cd [/PATH/]

cd:切换回家目录
     注意:bash中,~表示家目录
cd ~:切换回自己的家目录
cd ~USERNAME:切换至指定用户的家目录
cd -:在上一次所在目录与当前目录之间来回切换
        相关的环境变量
            $PWD:当前工作目录
            $OLDPWD:上一次的工作目录

1.2 ls: list,列出指定目录下的内容

      ls [OPTION]... [FILE]...

复制代码
-a:显示所有文件,包括隐藏文件
-A:显示除.和..之外的所有文件
-l: --long,长格式列表,即显示文件的详细属性信息:
         -rwxrwxrwx 1 sysrls sysrls 368640 May 23  2018 Yw_Thrpay_Khqy.dmp
    -:文件类型:-,d,b,c,l,s,p
    rwxrwxrwx: 文件属主/属主/其他组的权限
    1:数字表示文件被硬链接的次数
    sysrls:文件属主
    sysrls:文件属组
    368640:数字表示文件的大小,单位是字节
    May 23  2018:文件最后一次被修改的时间
    
-h:--human-readable:对文件大小单位换算:换算会结果可能会非精确值    
-d:查看目录自身而非其内部的文件列表
-r:reverse,逆序显示
-R:recursive,递归显示
复制代码

1.3 cat: concatencate

      文件文本查看工具
           cat [OPTION]... [FILE]...
        -n: 给现实的文本行编号
        -E:显示行结束符

1.4 tac: concatencate

           tac [OPTION]... [FILE]...
        -n: 给现实的文本行编号
        -E:显示行结束符

1.5 file:查看文件内容类型

      file [FILE]...

1.6 echo:回显

 echo [SHORT-OPTION]... [STRING]...
        -n:不进行转行
        -e:让转义符生效
          \n:换行  \t:制表符
        STRING可以使用引号,单引号和双引号均可用
          单引号:强引用,变量引用不执行替换
          双引号:弱引用,变量引用会执行替换

1.7文件管理类命令

文件管理工具:cp, mv, rm
    cp命令:copy
        源文件:目标文件
        
        单源复制:cp [OPTION]... [-T] SOURCE DEST
            如果DEST不存在,则事先创建次文件,并复制源文件的数据流至DEST文件
            如果DEST存在:
                如果DEST是非目录文件,则覆盖目标文件
                如果DEST是目录文件:创建一个同名文件,复制
                
                                
        
        多源复制:cp [OPTION]... SOURCE...DIRECTORY
                  cp [OPTION]... -t DIRECTORY SOURCE...
            如果DEST不存在,错误
            如果DEST存在:
                如果DEST是非目录文件,错误
                如果DEST是目录文件:分别复制每个文件至目标目录,并保持原名
                  
            常有选项: 
                -i:交互式复制,即覆盖之前提醒用户确认
                -f:强制覆盖目标文件
                -r:递归复制目录
                -d:复制符号链接文件本身,而非其指向的源文件
                -a:
                --preserve
                    mode: 
                    ownership:
                    timestamps:
                    context:
                    xattr:
                    links:
                    all:
    mv命令:move
        mv [OPTION]... [-T] SOURCE DEST
        mv [OPTION]... SOURCE...DIRECTORY
        mv [OPTION]... -t DIRECTORY SOURCE...
        
        常用选项:
            -i: interactive
            -f: force
    rm命令:remove
        rm [OPTION] ... FILE...
        
        常用选项:
            -i: interactive
            -f: force
            -r: recursive

2.示例:创建/tmp/a1,/tmp/a2,/tmp/a1/a,/tmp/a1/b,在/tmp目录下创建目录

~]# mkdir -p /tmp/a{1/{a,b},2}
~]#/tmp
├── a1
│   ├── a
│   └── b
├── a2
~]# mkdir /tmp/{x,q}_{y,z}

3.文件的元数据信息

  文件的数据分两种:

    •   一种元数据,既属性数据:metadata

    •   一种就是数据本身:data

3.1元数据含义

[root@cnl20115353 tmp]# file mgrcli.log 
mgrcli.log: Non-ISO extended-ASCII text, with LF, NEL line terminators
[root@cnl20115353 tmp]# stat mgrcli.log 
  File: ‘mgrcli.log’
  Size: 61013           Blocks: 120        IO Block: 4096   regular file
Device: fd03h/64771d    Inode: 67          Links: 1
Access: (0640/-rw-r-----)  Uid: (50428/    ibps)   Gid: (50428/    ibps)
Context: unconfined_u:object_r:user_tmp_t:s0
Access: 2019-09-08 18:42:55.154195939 +0800
Modify: 2019-09-08 09:57:17.813663950 +0800
Change: 2019-09-08 09:57:17.813663950 +0800

  文件时间戳

    atime:访问时间(access time),指的是文件最后被读取的时间,可以使用touch命令更改为当前时间;

    ctime:变更时间(change time),指的是文件本身最后被变更的时间,变更动作可以使chmod、chgrp、mv等等;

    mtime:修改时间(modify time),指的是文件内容最后被修改的时间,修改动作可以使echo重定向、vi等等;

  可用touch修改元数据中文件时间

[root@cnl20115353 tmp]# touch -a test.txt 修改访问时间
[root@cnl20115353 tmp]# stat test.txt 
  File: ‘test.txt’
  Size: 2               Blocks: 8          IO Block: 4096   regular file
Device: fd03h/64771d    Inode: 72          Links: 1
Access: (0640/-rw-r-----)  Uid: (    0/    root)   Gid: (    0/    root)
Context: unconfined_u:object_r:user_tmp_t:s0
Access: 2019-09-08 19:04:36.912410109 +0800
Modify: 2019-09-08 19:01:00.323046965 +0800
Change: 2019-09-08 19:04:36.912410109 +0800
 Birth: -
[root@cnl20115353 tmp]# touch -m test.txt 改变修改时间
[root@cnl20115353 tmp]# stat test.txt 
  File: ‘test.txt’
  Size: 2               Blocks: 8          IO Block: 4096   regular file
Device: fd03h/64771d    Inode: 72          Links: 1
Access: (0640/-rw-r-----)  Uid: (    0/    root)   Gid: (    0/    root)
Context: unconfined_u:object_r:user_tmp_t:s0
Access: 2019-09-08 19:04:36.912410109 +0800
Modify: 2019-09-08 19:05:07.920748864 +0800
Change: 2019-09-08 19:05:07.920748864 +0800
 Birth: -
[root@cnl20115353 tmp]# date
Sun Sep  8 19:05:57 HKT 2019
[root@cnl20115353 tmp]# touch 201909081906.30 test.txt 自定义改变时间戳
[root@cnl20115353 tmp]# stat test.txt 
  File: ‘test.txt’
  Size: 2               Blocks: 8          IO Block: 4096   regular file
Device: fd03h/64771d    Inode: 72          Links: 1
Access: (0640/-rw-r-----)  Uid: (    0/    root)   Gid: (    0/    root)
Context: unconfined_u:object_r:user_tmp_t:s0
Access: 2019-09-08 19:06:24.221580886 +0800
Modify: 2019-09-08 19:06:24.221580886 +0800
Change: 2019-09-08 19:06:24.221580886 +0800
 Birth: -
[root@cnl20115353 tmp]# 

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

touch tfile-$(date +%F-%H-%M-%S)

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

cp -r /etc/p*[^0-9] /tmp/mytest1/

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

useradd -u 5002 -g tom -G jack -d /tmp/tom -s /bin/zsh tom

7.常用的用户以及文件管理命令

Linux用户和组管理

    安全上下文:
        进程以其发起者的身份运行
            进行对文件的访问权限,取决于发起此进程的用户的权限

    为了能够让那些后台进行或服务类进程以非管理员的身份进行,通常需要为此创建多个普通用户:这些用户从不登录系统

    groupadd命令:添加组
        group [OPTION] group_name
            -g GID:指定GID:默认是上一个组的GID+1
            -r:创建系统组

    groupmod命令:修改组属性
        groupmod
            -g GID:修改组ID
            -n newname:修改组名

    groupdel命令:删除组

    useradd命令:添加用户
        -u UID:指定UID
        -g GID:指定基本组ID,次组必须存在
        -G group1,group2:添加用户的附加组
        -c comment:用户描述
        -d:创建新用户并指定其家目录,通过复制/etc/skel此目录并重命名实现:指定的家目录路径如果事先存在,则不会为用户复制环境配置文件
        -s:指定用户默认shell,可用的shell--/etc/shells
        -r:创建系统用户
        
        注意:创建用户时的诸多默认设定配置文件为/etc/login.defs

        -D:创建用户时默认的配置列表
        -D 选项: 修改默认选项的值:

            修改的结果保存于/etc/default/useradd文件中;

    usermod命令:修改用户属性
        -u:修改UID
        -g:修改用户所属的基本组:
        -G:修改用户所属的附加组,如果已有则覆盖原有的
        -a:与-G一起使用,用于为用户追加新的附加组
        -c comment:修改注释信息
        -d HOME_DIR:修改用户家目录
        -m:只能与-d选项一同使用,用于将原来的目录移动到新的家目录
        -l NEW_LOGIN:修改用户名
        -s:修改用户默认shell

        -l: 锁定用户密码,即在用户原来的密码字符串之前添加!
        -U:解锁用户的密码

    userdel命令:删除用户

        userdel[option] user
            -r:删除用户时一并删除其家目录 

    passwd命令:
        (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命令:

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

    newgrp命令:临时切换指定的组为基本组

    chage命令:更改用户密码过期信息
        -d:
        -E:
        -W:
        -m:
        -M:

    id命令:显示用户真的和有效的用户信息
        id [OPTION]...USER
            -u:仅显示用户有效UID
            -g:仅显示用户的基本组ID
            -G:仅显示用户所属的附加组ID
            -n:显示名字而非ID

    su命令:switch user
        登录式切换:读取用户的配置文件来进行重新初始化
            su - USERNAME
        非登录式切换:不会读取用户的配置文件进行初始化
            su USERNAME

        注意:管理员可无密码切换至其它任何用户

        -c 'COMMAND':仅以指定用户的身份运行此处指定的命令

 

posted @ 2019-09-08 20:12  兜儿~  阅读(399)  评论(0编辑  收藏  举报