Linux文件管理及用户管理

1. 文件管理基本命令

1. 绝对路径和相对路径

在学习Linux文件管理基本命令之前,需要先了解一下Linux目录结构,可以参考我的另外一篇博客:Linux文件目录结构

然后需要知道的就是绝对路径和相对路径:

绝对路径:

以正斜杠开始
完整的文件的位置路径
可用于任何想指定一个文件名的时候

例如:/home/zhangsan

相对路径:

不以斜线开始
指定相对于当前工作目录或某目录的位置
可以作为一个简短的形式指定一个文件名

例如:home/shangsan

1. pwd 显示当前工作目录

用法:

pwd [OPTION]...

常用选项:

-P 显示真实物理路径
-L 显示链接路径(默认)

示例:

1、显示当前工作路径

[root@centos7 ~]#pwd 
/root

2. cd 切换目录

用法:

cd [OPTION] 目录

常用选项:

-P 切换到真实物理路径
~ 切换到家目录
- 切换到上一次所在的目录

示例:

1、切换到/root/data

cd /root/data

2、切换到当前用户的家目录(例如,当前用户是zhangsan)

cd /home/zhangsan 

另外一种方式

cd ~

3. ls 显示目录内容

用法:

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

常用选项:

-a 包含隐藏文件
-l  显示额外的信息
-R  目录递归通过
-ld  目录和符号链接信息
-1  文件分行显示
–S  按从大到小排序
–t  按mtime排序
–u  配合-t选项,显示并按atime从新到旧排序
–U  按目录存放顺序显示
–X  按文件后缀排序

示例:

1、显示当前工作目录下的文件

ls

2、显示/目录下的文件

ls /

3、显示/root下所有文件的详细信息

ls -al

4、显示/root目录的详细信息

ls -ld /root

4. touch 创建空文件和刷新时间

用法:

touch [OPTION]... FILE...

常用选项:

-a  仅改变 atime和ctime
-m  仅改变 mtime和ctime
-t  指定atime和mtime的时间戳,格式:[[CC]YY]MMDDhhmm[.ss]
-c  如果文件不存在,则不予创建

示例:

1、创建test.txt文件

touch test.txt

5. cp 复制文件和目录

用法:

cp [OPTION]... [-T] SOURCE DEST
cp [OPTION]... SOURCE... DIRECTORY
cp [OPTION]... -t DIRECTORY SOURCE...

常用选项:

-p 复制文件时保持源文件的所有者、权限信息及时间属性
-d 如果复制的源文件是符号链接,那么仅复制符号链接本身,而且保留符号链接所指向的目标文件或目录
-r 递归复制目录,即复制目录上的所有层级的子目录及文件
-a 等同于上面的p、d、r这3个选项功能的总和
-i 如果文件存在,则提示是否覆盖原有文件
-f 强制,如果文件存在,直接覆盖原有文件,不会提示

示例:

1、复制/etc/fstab到/data目录下

cp /etc/fstab /data

2、复制/etc/fstab到/data目录下并改名为fstab.bak

cp /etc/fstab /data/fstab.bak

3、复制/etc到/tmp目录下

cp -r /etc /tmp

4、复制/etc到/tmp目录下并保留原有的文件权限及时间属性

cp -a /etc /tmp

6. mv 移动文件和目录

用法:

mv [OPTION]... [-T] SOURCE DEST
mv [OPTION]... SOURCE... DIRECTORY
mv [OPTION]... -t DIRECTORY SOURCE...

常用选项:

-i 如果文件存在,则提示是否覆盖原有文件
-f 强制,如果文件存在,直接覆盖原有文件,不会提示
-b 目标存在,覆盖前先备份

示例:

1、移动/root/haha.txt到/tmp下

mv /root/haha.txt /tmp

2、移动/root/haha.txt到/tmp下并改名为xixi.txt

mv /root/haha.txt /tmp/xixi.txt

7. rm 删除文件和目录

用法:

rm [OPTION]... FILE...

常用选项:

-i 删除前提示是否真的要删除(安全)
-f 强制删除
-r 递归删除,主要用来删除目录

示例:

1、删除/tmp/xixi.txt

rm /tmp/xixi.txt

注意:
rm是一条危险的命令,慎用,最好不用。
rm -rf非常危险,容易引发生产环境“血案”

8. mkdir 创建目录

用法:

mkdir [OPTION]... DIRECTORY...

常用选项:

-p 当父目录不存在时,可以自动创建父目录
-v 显示详细信息
-m 创建目录时直接指定权限

示例:

1、创建目录/backup

mkdir /backup

2、在/backup目录下创建a目录,在a目录下创建b(一步到位)

mkdir -p /backup/a/b

9. rmdir 删除空目录

用法:

rmdir [OPTION]... DIRECTORY...

常用选项:

-p 递归删除父空目录
-v 显示详细信息

示例:

1、删除/backup

rmdir -p /backup/a/b

10. basename 显示基名

用法:

basename NAME [SUFFIX]
basename OPTION... NAME...

示例:

1、显示/etc/sysconfig/network的基名

basename /etc/sysconfig/network

11. dirname 显示文件的目录名

2、显示/etc/sysconfig/network的目录名

dirname /etc/sysconfig/network

12. tree 显示目录树

用法:

tree [option] DIRECTORY

常用选项:

-d 只显示目录
-L 指定显示的层级数目

示例:

1、显示/root目录树

tree /root

2、显示/root目录树,显示2级

tree -L 2 /root

注意:
如果提示:

bash: tree: command not found...

需要安装tree包

yum -y install tree

13. file 查看文件类型

用法:

file [OPTION] FILE...

常用选项:

-b 列出文件辨识结果时,不显示文件名称
-f filelist 列出文件filelist中文件名的文件类型
-F 使用指定分隔符号替换输出文件名后默认的“ :”分隔符
-L 查看对应软链接对应文件的文件类型

示例:

1、显示/usr/bin/ls文件类型

file /usr/bin/ls

2. {}命令行展开功能

示例:

1、在/tmp目录下创建user01-user10目录

[root@centos7 ~]#mkdir /tmp/user{01..10}
[root@centos7 ~]#ls a
user01  user02  user03  user04  user05  user06  user07  user08  user09  user10

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

[root@centos7 ~]#mkdir -p /tmp/a{1/{a,b},2}
[root@centos7 ~]#tree /tmp
/tmp
├── a1
│   ├── a
│   └── b
└── a2

4 directories, 0 files

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

[root@centos7 ~]#mkdir /tmp/{x,q}_{y,z}
[root@centos7 ~]#ls /tmp     
q_y  q_z  x_y  x_z

3. 文件元数据

文件有两类数据:元数据(文件的属性)和文件内容

元数据主要有以下信息:

File:文件名
Size:文件大小
Blocks:当前文件所占用的块大小
IO Block:每个块的大小
File Type:文件类型
Device:使用的设备
Inode:索引号
Links:链接数
Access:文件权限
Uid:文件属主ID
Gid:文件属组ID
Access:访问时间,读取文件内容就会刷新一次
Modify:修改时间,文件内容发生变化就会刷新一次
Change:改变时间,文件元数据发生变化就会刷新一次,例如:更改了权限

stat命令可以查看文件的元数据

[root@centos7 ~]#stat test
  File: ‘test’
  Size: 50              Blocks: 0          IO Block: 4096   directory
Device: 802h/2050d      Inode: 36346598    Links: 6
Access: (0755/drwxr-xr-x)  Uid: (    0/    root)   Gid: (    0/    root)
Access: 2019-10-12 17:24:35.159201016 +0800
Modify: 2019-10-12 17:24:32.936200864 +0800
Change: 2019-10-12 17:24:32.936200864 +0800
 Birth: -

修改文件的时间戳

可以使用前面介绍的touch命令修改文件的时间戳

示例:

修改文件的访问时间

[root@centos7 ~]#touch -a 201910011800 test
[root@centos7 ~]#stat test
  File: ‘test’
  Size: 50              Blocks: 0          IO Block: 4096   directory
Device: 802h/2050d      Inode: 36346598    Links: 6
Access: (0755/drwxr-xr-x)  Uid: (    0/    root)   Gid: (    0/    root)
Access: 2019-10-12 18:00:44.965349260 +0800
Modify: 2019-10-12 17:24:32.936200864 +0800
Change: 2019-10-12 18:00:44.965349260 +0800
 Birth: -

注意:可以观察到文件的改变时间也发生变化了,因为修改了文件的时间戳,也修改了文件的元数据,所以当然会变化。

4. 命令替换

命令替换主要有$()和``

示例:

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

touch /tmp/tfile-`date +%F-%H-%M-%S`

ls /tmp/
tfile-2019-10-12-18-35-27

也可以使用$()

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

ls /tmp
tfile-2019-10-12-18-36-34 

5. 通配符

* 匹配零个或多个字符
? 匹配任何单个字符
~ 当前用户家目录
~zhangsan 用户zhangsan家目录
~+ 当前工作目录
~- 前一个工作目录
[0-9] 匹配数字范围
[a-z] 字母
[A-Z] 字母
[abc] 匹配列表中的任何的一个字符
[^abc] 匹配列表中的所有字符以外的字符

预定义的字符类

[:digit:] 任意数字,相当于0-9
[:lower:] 任意小写字母
[:upper:] 任意大写字母
[:alpha:] 任意大小写字母
[:alnum:] 任意数字或字母
[:blank:] 水平空白字符
[:space:] 水平或垂直空白字符
[:punct:] 标点符号
[:print:] 可打印字符
[:cntrl:] 控制(非打印)字符
[:graph:] 图形字符
[:xdigit:] 十六进制字符

示例:

1、查看/root目录下以a开头的文件或目录

ls /root/a*

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

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

4. 用户管理基本命令

4.1 useradd 创建用户

用法:

useradd [options] LOGIN

常用选项:

-u 指定用户的uid
-o 配合-u 选项,不检查UID的唯一性
-g 指明用户所属基本组,可为组名,也可以GID
-c 用户的注释信息
-d 以指定的路径(不存在)为家目录
-s 指明用户的默认shell程序
-G 为用户指明附加组,组须事先存在
-N 不创建私用组做主组,使用users组做主组
-r 创建系统用户 CentOS 6: ID<500,CentOS 7: ID<1000
-m 创建家目录,用于系统用户
-M 不创建家目录,用于非系统用户

示例:

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

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

4.2 usermod 修改用户

用法:

usermod [options] LOGIN

常用选项:

-u 新UID
-g 新主组
-G 新附加组,原来的附加组将会被覆盖;若保留原有,则要同时使用-a选项
-s 新的默认SHELL
-c 新的注释信息
-d 新家目录不会自动创建;若要创建新家目录并移动原家数据,同时使用-m选项
-l 新的名字
-L lock指定用户,在/etc/shadow 密码栏的增加 !
-U unlock指定用户,将 /etc/shadow 密码栏的 !拿掉
-e YYYY-MM-DD: 指明用户账号过期日期
-f 设定非活动期限

示例:

1、更改tom用户的uid为2000,主组为root组

usermod -u 2000 -g root tom

4.3 userdel 删除用户

用法:

userdel [options] LOGIN

常用选项:

-r 删除用户家目录

示例:

1、删除用户tom并删除家目录

userdel -r tom

4.4 passwd 设置用户口令

用法:

passwd LOGIN

1、为用户zhangsan设置口令

passwd zhangsan

**注意:**如果passwd后面没有加用户,更改的是当前登录用户密码。

4.5 id 显示用户相关的ID信息

用法:

id [OPTION]... [USER]

常用选项:

-u 显示UID
-g 显示GID
-G 显示用户所属的组的ID
-n 显示名称,需配合ugG使用

示例:

1、显示当前登录用户的id信息

id 

2、显示用户zhangsan的id信息

id zhangsan

4.6 su 切换用户

用法:

su [options...] [-] [user [args...]]

切换用户的方式:

su UserName:非登录式切换,即不会读取目标用户的配置文件,不改变当前工作目录
su - UserName:登录式切换,会读取目标用户的配置文件,切换至家目录,完全切换

注意:
root su切换其他用户无须密码;非root用户切换时需要密码

常用选项:

-c 直接以某个用户的身份执行某条命令
-l 相当于su - UserName

示例:

1、以zhangsan的身份执行ls /命令

su - zhangsan -c "ls /"

2、切换到用户zhangsan

su - zhangsan
  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值