帮助命令

  • man帮助

    1. -- 查看ls命令帮助(第一章时的1可以省略, man ls)
    2. # man 1 ls

    共9个章节
    image.png

  • help帮助

shell(命令解释器)自带的命令称为内部命令, 其他称为外部命令

  1. -- 内部命令使用help帮助
  2. # help cd
  3. -- 外部命令使用help帮助
  4. # ls --help
  5. -- 区分内部命令还是外部命令
  6. # type cd
  • info帮助

info帮助比help更详细, 可以作为help的补充

  1. # info ls

文件管理

查看目录

/ 根目录
/root root用户的家目录

  1. -- 显示当前目录名称
  2. pwd
  3. -- 更改当前的操作目录
  4. cd
  5. -- 查看当前目录下的文件
  6. ls
  7. 常用参数:
  8. -l 长格式显示文件
  9. -a 显示隐藏文件
  10. -r 逆序显示
  11. -t 按照时间顺序显示
  12. -R 递归显示
  13. -h 便捷显示文件大小

ls -l命令详解
image.png

操作文件

  1. -- 创建目录
  2. # mkdir
  3. 常用参数:
  4. -p 创建多级目录
  5. -- 删除目录(只能删除空目录)
  6. # rmdir
  7. -- 删除非空目录
  8. # rm
  9. 常用参数:
  10. -r 表示目录
  11. -f 不进行提示删除目录
  12. -- 复制文件
  13. #cp [源目录,文件] [目标位置]
  14. 常用参数:
  15. -r 表示目录
  16. -v 显示复制过程
  17. -p 保留原有的最后修改时间
  18. -a 复制后的文件保留源文件的所有信息, 包括权限,创建用户,用户组,最后修改时间等
  19. -- 移动(重命名)文件
  20. # mv [源文件] [目标文件]
  21. 常用参数:
  22. 通配符 * 匹配所有(一个或多个)字符
  23. 通配符 ? 匹配单个字符
  24. 举例:
  25. # mv /filea /fileb 将filea重命名为fileb

查看文本

  1. -- 文本内容显示到终端
  2. # cat [文件名称]
  3. -- 查看文件开头
  4. # head [文件名称]
  5. 常用参数:
  6. -5 查看前5行, 默认10
  7. -- 查看文件结尾
  8. # tail [文件名称]
  9. 常用参数:
  10. -5 查看前5行, 默认10
  11. -f 文件内容更新后, 显示内容同步更新
  12. -- 统计文件内容信息
  13. # wc [文件名称]
  14. 常用参数:
  15. -l 统计一共多少行

打包和压缩

  1. -- tar命令
  2. # tar [打包后的文件名] [需打包文件]
  3. 常用参数:
  4. c 打包
  5. x 解包
  6. f 指定操作类型为文件
  7. 举例:打包文件以tar结尾
  8. # tar cf /etc/etc-backup.tar /etc
  9. -- 打包并压缩
  10. -- 压缩为gzip格式, gz结尾
  11. # tar czf /etc/etc-backup.tar.gz /etc
  12. -- 压缩为bzip2格式, bz2结尾, 相比gz的压缩比例更高
  13. # tar cjf /etc/etc-backup.tar.bz2 /etc
  14. -- 解压文件,-C指定解压到的位置
  15. tar xf /tmp/etc-backup.tar -C /root
  16. tar zxf /tmp/etc-backup.tar.gz -C /root
  17. tar jxf /tmp/etc-backup.tar.bz2 -C /root
  18. 补充:
  19. .tar.gz的缩写为.tgz
  20. .tar.bz2的缩写为.tbz2

VIM的四种模式

  • 正常模式(Normal-mode)
  • 插入模式(Insert-mode) ```shell — 正常模式进入插入模式

    i 进入当前光标所在的位置

    I 进入当前光标所在行的行首

    a 进入当前光标所在位置的下一个位置

    A 进入当前光标所在位置的行尾

    o 在光标所在行的下一行新建一行

    O 在光标所在行的上一行新建一行

— 正常模式进入可视模式

v

— 正常模式进入命令模式 ctrl+c

— 退出到正常模式 按esc键

— 对光标进行上下左右移动

hjkl按键

— 复制与粘贴

yy 复制整行

y$ 复制从光标位置到该行结尾的内容

3yy 复制3行

p 粘贴

— 剪切

dd 剪切整行

d$ 剪切从光标位置到该行结尾的内容

5dd 剪切5行

— 撤销

u

— 重做 ctrl+r

— 单个字符的删除

x

— 单个字符的替换

r 再输入新的字符

— 显示行数 :set nu

— 不显示行数 :set nonu

— 移动到指定行

11 shift+g 移动到11行行首

g 移动到第一行行首

G 移动到最后一行行首

^ 移动到当前行行首

$ 移动到当前行行尾

  1. - 命令模式(Command-mode)
  2. ```shell
  3. -- 保存并退出
  4. # :wq /root/a.txt
  5. -- 不保存退出
  6. # :q!
  7. -- 在vim中临时执行命令
  8. # :! 再输出命令
  9. -- 查找
  10. # /x 查找x
  11. # n 查找下一个匹配的x
  12. # shift+n 查找上一个匹配的x
  13. -- 替换(不带%默认只针对光标所在行进行替换, /g指全局替换)
  14. # :s%/old/new/g
  15. # :3,5s/old/new/g 在第三行和第5行之间替换

更改vim的配置文件

  1. -- 每次启动都显示行号
  2. # vim /etc/vimrc
  3. 在文末新建一行加上set nu
  • 可视模式(Visual-mode) ```shell — 进入可视模式

    v 单个字符

    V 以整行方式

    ctrl+v 以块的方式

— 批量插入 先ctrl+v以块的方式选中文本 再I在行首添加内容 再按两次esc完成块中包含的行的行首全部添加了内容

— 批量删除 以块方式选中内容再按d键

  1. ---
  2. <a name="DksFm"></a>
  3. ## 用户和权限管理
  4. <a name="B31ch"></a>
  5. ### 用户的增删改
  6. 新建一个用户后, 系统执行的步骤:
  7. - 创建了用户的家目录: /home/username
  8. - 在/etc/passwd文件中添加用户的一行记录
  9. - 在/etc/shadow中也会添加用户的一行记录
  10. - 若没有指定组, 则会创建一个与username同名的组, 组就相当于角色
  11. ```shell
  12. -- 新建用户
  13. # useradd username
  14. # useradd -g groupname username 指定用户组创建用户
  15. -- 验证系统已经存在的用户
  16. # id username
  17. -- 修改用户密码
  18. # passwd username
  19. -- 删除用户(-r用于删除用户的家目录)
  20. # userdel -r username
  21. -- 修改用户
  22. # usermod -d /home/w1 testuser 将testuser的家目录更改为/home/w1
  23. # usermod -g group1 testuser 将testuser的用户组改为group1
  24. -- 修改用户的生命周期
  25. # chage
  26. -- 创建与删除用户组
  27. # groupadd groupname
  28. # groupdel groupname
  29. -- 临时切换用户
  30. # su - username
  31. # id 进行验证当前的用户
  32. # exit 登出

su和sudo命令的区别

  • su 切换用户
  • sudo 以其他用户身份执行命令

利用sudo命令可以将某些命令授权给到普通用户操作, 普通用户不必知道root用户密码
演示:

  1. # shutdown -h 30 30分钟后关机(只有root用户有权限操作)
  2. # shutdown -c 取消(只有root用户有权限操作)
  3. 演示步骤:
  4. 1.root用户设置30分钟后关机
  5. 2.执行visudo, 在文件末尾添加
  6. testuser ALL=/sbin/shutdown -c
  7. 补充:
  8. - 如果是用户组, 则为%groupname
  9. - 如果仅允许字符终端, 则为localhost, ALL表示允许所有
  10. - 若找不到命令位置, 则:!which shutdown 寻找指令目录
  11. - 存在多个指令时使用,分隔
  12. 3.testuser用户取消关机
  13. # sudo /sbin/shutdown -c

root设置关机:
image.png
testuser取消关机:
image.png

用户和用户组的配置文件

  • passwd文件

vim /etc/passwd
image.png

  1. user1:x:1001:1001::/home/user1:/bin/bash
  2. 7个字段的释义:
  3. 1. user1代表用户名称, 新增一个用户就会新增一条记录
  4. 2. x代表需要密码登录, 删除x(此处为空)则不需要密码登录
  5. 3. 1001uid, 用户的唯一标识, 比如root用户为0
  6. 4. 1001gid, 用户的组id
  7. 5. 表示注释
  8. 6. /home/user1, 表示用户的家目录
  9. 7. /bin/bash, 表示用户登录的用户解释器, 若为/sbin/nologin, 则用户不能登录终端
  • shadow文件, 保存用户密码信息

vim /etc/shadow
image.png

  1. 字段释义
  2. 1. 用户名称
  3. 2. 用户加密后的密码
  • group文件, 保存用户组相关信息

vim /etc/group
image.png

  1. 字段释义:
  2. 1. 组名称
  3. 2. 是否需要密码验证
  4. 3. gid
  5. 4. 其他组设置(比如上图postfix用户既在其他的组中, 也属于mail组中)

文件与目录权限的表示方法

image.png

  1. 类型: 特别注意对于不同的类型, 权限的表示含义是不一样的
  2. - 普通文件
  3. d 目录文件
  4. b 块特殊文件
  5. c 字符特殊文件
  6. l 符号特殊文件
  7. f 命名管道
  8. s 套接字文件
  9. 权限:
  10. 3个, 当前用户对该文件的权限
  11. 中间3个, 当前用户组对该文件的权限
  12. 3个, 其他用户对该文件的权限
  13. 文件权限的表示方法:
  14. 1.字符权限的表示方法
  15. r
  16. w
  17. x 执行
  18. 2.数字权限的表示方法
  19. r=4
  20. w=2
  21. x=1
  22. 目录权限的表示方法:
  23. x 进入目录
  24. rx 显示目录内的文件名
  25. wx 修改目录内的文件名

image.png

文件权限的修改方法和数字表示方法

注意: 当属主与属组权限冲突时, 以属主权限为准
如下图, group1的可以操作bfile, 但是user1不能, 以user1为准, 因此user1写入失败, group1中的user2写入成功
image.png

  1. chmod 修改文件, 目录权限
  2. u 用户权限 g 用户组权限 o为其他用户权限 a 用户以及用户组权限
  3. +,-,= 易理解, 就是直接对权限的加减和赋值
  4. r4,w2,x1, 因此最大为7
  5. 例:
  6. - chmod u+x /tmp/testfile
  7. - chmod 755 /tmp/testfile (这个等同于 u=rwx,g=rx,o=rx)
  8. chown 更改属主, 属组
  9. - chown user1:group1 /test/bfile 更改bfile的属主和属组为user1gruop1
  10. chgrp 可以单独更改属组, 不常用
  11. 修改目录时:
  12. x代表进入目录的权限
  13. rx 可进入和查看目录中文件
  14. wx 可进入和删除目录中文件

image.png