# 切换目录到 /export/ 且 清空内容 cd /export/ && rm -rf /export/* && tree # 新增目录 且 切换目录 且 新增文件 mkdir -p /export/aaa/bbb/ccc/ddd/eee/ touch /export/aaa/bbb/ccc/ddd/eee/abc.txt touch /export/aaa/123.txt touch /export/aaa/312.txt # 查看 /export 目录中的内容 tree /export
find
命令 在特定目录下(包含它的后代目录) 搜索 符合条件的文件1
的文件.txt
为扩展名的文件1
开头的文件序号 | 命令格式 | 作用 |
---|---|---|
01 | find [路径] -name ‘*.txt’ | 查找指定路径下扩展名是 .txt的文件, 包括子目录 |
# ===================实现目标============================ # 方式一: 指定全目录 find /export/ -name 'abc.txt' # 方式二: 当前目录 find . -name 'abc.txt' # 方式三: 当前目录 可以 省略 不写 find -name 'abc.txt'
1
的文件# =================实现目录=============== find /export/ -name "*1*"
.txt
为扩展名的文件find /export/ -name "*.txt"
1
开头的文件find /export -name "1*"
find [path] -name "*1*"
完成根据名称搜索文件# 清空指定目录内容 cd /export/ && rm -rf * # 创建测试文件 touch 1.txt 2.txt 3.txt # 创建有内容的测试目录 mkdir -p /export/aaa/ touch /export/aaa/4.txt /export/aaa/5.txt # 查看结果 tree /export
jar : java rar java项目的压缩包
war : web rar web项目的压缩包
2.1 第一步: 打包 和 解包
**2.2 第二步: 打包压缩 和 解包解压缩 **
类似将 冬天的衣服 放到 袋
打包之后的大文件 需要以 .tar
结尾.
tar
打包命令格式
# 将 一系列文件 打包成 一个大文件 tar -cvf 打包名.tar 被打包的目录 tar -cvf 打包名.tar 被打包的文件1 被打包的文件2 被打包的文件3
tar
选项说明
命令 | 英文 | 含义 |
---|---|---|
c | create | 生成档案文件, 创建打包文件 |
v | verbosely(啰嗦的) | 像 ‘唐僧’ 一样报告进度 |
f | file | 指定档案的文件名称, f后面一定是 .tar 文件, 所以必须放到左后 |
练习1: 将1.txt、2.txt、3.txt 打包成 123.tar文件 练习2: 将有内容的aaa目录 打包成 aaa.tar 文件
[root@node01 export]# tar -cvf 123.tar 1.txt 2.txt 3.txt 1.txt 2.txt 3.txt [root@node01 export]# ll total 16 -rw-r--r--. 1 root root 10240 Jul 31 06:04 123.tar -rw-r--r--. 1 root root 0 Jul 31 06:03 1.txt -rw-r--r--. 1 root root 0 Jul 31 06:03 2.txt -rw-r--r--. 1 root root 0 Jul 31 06:03 3.txt drwxr-xr-x. 2 root root 4096 Jul 31 06:03 aaa [root@node01 export]# tar -cvf aaa.tar aaa/ aaa/ aaa/4.txt aaa/5.txt [root@node01 export]# ll total 28 -rw-r--r--. 1 root root 10240 Jul 31 06:04 123.tar -rw-r--r--. 1 root root 0 Jul 31 06:03 1.txt -rw-r--r--. 1 root root 0 Jul 31 06:03 2.txt -rw-r--r--. 1 root root 0 Jul 31 06:03 3.txt drwxr-xr-x. 2 root root 4096 Jul 31 06:03 aaa -rw-r--r--. 1 root root 10240 Jul 31 06:04 aaa.tar [root@node01 export]# rm -rf *.txt aaa [root@node01 export]# ll total 24 -rw-r--r--. 1 root root 10240 Jul 31 06:04 123.tar -rw-r--r--. 1 root root 10240 Jul 31 06:04 aaa.tar [root@node01 export]# [root@node01 export]# tree . ├── 123.tar └── aaa.tar
tar
解包命令格式
# 将一个打包后的 分解成 一系列小文件, 分解位置为 当前目录 tar -xvf 打包名.tar # 将一个打包后的 分解成 一系列小文件, 分解位置为 指定目录 tar -xvf 打包名.tar -C 解包路径位置
命令 | 英文 | 含义 |
---|---|---|
x | extract (提取) | 解包 |
C (大写C) | directory (目录) | 默认保存到当前目录, 通过-C 更改解压目录, 注意: 解压目录必须存在 |
练习1: 将 123.tar 解压到 当前目录中 练习2: 将 aaa.tar 解包到 /export/test/a1/b1/c1/ 目录中
[root@node01 export]# ll total 24 -rw-r--r--. 1 root root 10240 Jul 31 06:04 123.tar -rw-r--r--. 1 root root 10240 Jul 31 06:04 aaa.tar [root@node01 export]# tar -xvf 123.tar 1.txt 2.txt 3.txt [root@node01 export]# ll total 24 -rw-r--r--. 1 root root 10240 Jul 31 06:04 123.tar -rw-r--r--. 1 root root 0 Jul 31 06:03 1.txt -rw-r--r--. 1 root root 0 Jul 31 06:03 2.txt -rw-r--r--. 1 root root 0 Jul 31 06:03 3.txt -rw-r--r--. 1 root root 10240 Jul 31 06:04 aaa.tar [root@node01 export]# mkdir -p /export/test/a1/b1/c1 [root@node01 export]# tree . ├── 123.tar ├── 1.txt ├── 2.txt ├── 3.txt ├── aaa.tar └── test └── a1 └── b1 └── c1 4 directories, 5 files [root@node01 export]# tar -xvf aaa.tar -C /export/test/a1/b1/c1 aaa/ aaa/4.txt aaa/5.txt [root@node01 export]# tree . ├── 123.tar ├── 1.txt ├── 2.txt ├── 3.txt ├── aaa.tar └── test └── a1 └── b1 └── c1 └── aaa ├── 4.txt └── 5.txt
打包: tar -cvf 打包之后的文件名.tar 被打包的目录或文件名 解包: tar -xvf 打包之后的文件名.tar [ -C 指定解包位置 ]
准备工作
# 清空指定目录内容 cd /export/ && rm -rf * # 创建测试文件 touch 1.txt 2.txt 3.txt # 创建有内容的测试目录 mkdir -p /export/aaa/ touch /export/aaa/4.txt /export/aaa/5.txt # 查看结果 tree /export
打包 和 压缩 是两件事
类似与 先将冬天衣服放到压缩袋, 再抽取里面的空气
在 Linux
中, 最常用的压缩文件格式是 xxx.tar.gz
在 tar
命令中有一个选项 -z
可以调用 gzip
, 从而可以方便的实现压缩和解压缩的功能
命令格式如下
# 压缩文件 tar -zcvf 打包压缩文件名.tar.gz 被压缩的文件/目录 # 解压缩文件(记忆敲门: 至孝潍坊) tar -zxvf 打包文件.tar.gz # 解压缩到指定路径 tar -zxvf 打包文件.tar.gz -C 目录路径
tar
的选项说明
命令 | 英文 | 含义 |
---|---|---|
z | gzip | 使用gzip压缩和解压缩 |
j | bzip2 | 使用bzip2压缩和解压缩 |
需求1: 将1.txt、2.txt、3.txt 打包压缩成 123.tar.gz文件(gzip压缩格式) 需求2: 将有内容的aaa目录 打包成 aaa.tar.gz 文件(gzip压缩格式) 需求3: 将 123.tar.gz 解压到 当前目录中(gzip压缩格式) 需求4: 将 aaa.tar.gz 解包到 /export/bbb 目录中(gzip压缩格式)
需求1和需求2答案
[root@node01 export]# tree . ├── 1.txt ├── 2.txt ├── 3.txt └── aaa ├── 4.txt └── 5.txt 1 directory, 5 files [root@node01 export]# tar -zcvf 123.tar.gz 1.txt 2.txt 3.txt 1.txt 2.txt 3.txt [root@node01 export]# tar -zcvf aaa.tar.gz aaa/ aaa/ aaa/4.txt aaa/5.txt [root@node01 export]# ll total 12 -rw-r--r--. 1 root root 122 Jul 31 06:11 123.tar.gz -rw-r--r--. 1 root root 0 Jul 31 06:10 1.txt -rw-r--r--. 1 root root 0 Jul 31 06:10 2.txt -rw-r--r--. 1 root root 0 Jul 31 06:10 3.txt drwxr-xr-x. 2 root root 4096 Jul 31 06:10 aaa -rw-r--r--. 1 root root 142 Jul 31 06:11 aaa.tar.gz
清空无用内容
[root@node01 export]# tree . ├── 123.tar.gz ├── 1.txt ├── 2.txt ├── 3.txt ├── aaa │ ├── 4.txt │ └── 5.txt └── aaa.tar.gz 1 directory, 7 files [root@node01 export]# rm -rf *.txt aaa/ [root@node01 export]# tree . ├── 123.tar.gz └── aaa.tar.gz
需求3和需求4 答案
[root@node01 export]# tree . ├── 123.tar.gz ├── 1.txt ├── 2.txt ├── 3.txt └── aaa.tar.gz 0 directories, 5 files [root@node01 export]# mkdir -p /export/bbb [root@node01 export]# tar -zxvf aaa.tar.gz -C /export/bbb/ aaa/ aaa/4.txt aaa/5.txt [root@node01 export]# tree . ├── 123.tar.gz ├── 1.txt ├── 2.txt ├── 3.txt ├── aaa.tar.gz └── bbb └── aaa ├── 4.txt └── 5.txt
打包压缩: tar -zcvf 打包之后的文件名.tar.gz 被打包压缩的目录或文件名 解包解压缩: tar -zxvf 打包之后的文件名.tar.gz [ -C 指定解包位置 ]
准备工作
# 清空指定目录内容 cd /export/ && rm -rf * # 创建测试文件 touch 1.txt 2.txt 3.txt # 创建有内容的测试目录 mkdir -p /export/aaa/ touch /export/aaa/4.txt /export/aaa/5.txt # 查看结果 tree /export
bzip
是压缩的第二种方式Linux
中, bzip2 压缩文件格式是 xxx.tar.bz2
tar
命令中有一个选项 -j 可以调用 bzip2
, 从而可以方便的实现压缩和解压缩的功能命令格式如下
# 压缩文件 tar -jcvf 打包压缩文件名.tar.bz2 被压缩的文件/目录 # 解压缩文件 (绩效潍坊) tar -jxvf 打包文件.tar.bz2 # 解压缩到指定路径 tar -jxvf 打包文件.tar.bz2 -C 目录路径
tar
的选项说明
命令 | 英文 | 含义 |
---|---|---|
z | gzip | 使用gzip压缩和解压缩 |
j | bzip2 | 使用bzip2压缩和解压缩 |
练习1: 将1.txt、2.txt、3.txt 打包压缩成 123.tar.bz2文件(bzip2压缩格式) 练习2: 将有内容的aaa目录 打包成 aaa.tar.bz2 文件(bzip2压缩格式) 练习3: 将 123.tar.bz2 解压到 当前目录中(bzip2压缩格式) 练习4: 将 aaa.tar.bz2 解压到 /export/bbb 目录中(bzip2压缩格式)
需求1和需求2答案
[root@node01 export]# tar -jcvf 123.tar.bz2 1.txt 2.txt 3.txt 1.txt 2.txt 3.txt [root@node01 export]# tar -jcvf aaa.tar.bz2 aaa/ aaa/ aaa/4.txt aaa/5.txt [root@node01 export]# tree . ├── 123.tar.bz2 ├── 1.txt ├── 2.txt ├── 3.txt ├── aaa │ ├── 4.txt │ └── 5.txt └── aaa.tar.bz2
清空内容
[root@node01 export]# rm -rf *.txt [root@node01 export]# rm -rf aaa/ [root@node01 export]# tree . ├── 123.tar.bz2 └── aaa.tar.bz2
需求3和需求4答案
[root@node01 export]# tar -jxvf 123.tar.bz2 1.txt 2.txt 3.txt [root@node01 export]# mkdir -p /export/bbb [root@node01 export]# tar -jxvf aaa.tar.bz2 -C /export/bbb/ aaa/ aaa/4.txt aaa/5.txt [root@node01 export]# tree . ├── 123.tar.bz2 ├── 1.txt ├── 2.txt ├── 3.txt ├── aaa.tar.bz2 └── bbb └── aaa ├── 4.txt └── 5.txt
打包压缩: tar -jcvf 打包之后的文件名.tar.bz2 被打包压缩的目录或文件名 解包解压缩: tar -jxvf 打包之后的文件名.tar.bz2 [ -C 指定解包位置 ]
关机
halt
重启
reboot
在工作中, 要对 服务器上的 文件进行 简单 的修改, 可以使用 ssh 登录到远程服务器上, 并且使用 vi编辑器 进行简单的编辑即可
需要修改的文件包括
在没有图形界面的环境下, 要编辑文件, vi是最佳选择
每一个使用linux的程序员,都应该或多或少的学习一些vi的常用命令
vi是 visual interface
的简称, 是linux中最经典的文本编辑器
vi 的核心设计思想
vi的特点
vi编辑器在 系统管理 服务器管理 编辑文件时, 其功能永远不是图形界面的编辑器能比拟的
vim = vi improved
viM 是从vi发展出来的文本编辑器, 支持代码补全、编译 及 错误跳转等方便编程的功能提别丰富, 在程序员中被广泛使用, 被称为编辑器之神
vim 文件名
1 vim 没有的文件名 2 编辑内容 2.1 编写类 2.2 输出一行语句 2.3 复制粘贴 2.2内容 19次 2.4 保存且退出 3 查看
注意: 本节重点是 打开 和 新建文件, 其他命令后面会一一讲解
[root@node01 export]# cd /export/ && rm -rf * [root@node01 export]# vim Hello.java
public class Hello { public static void main(String[] args) { System.out.println("Hello World!"); // 1 将光标移动到上一行, 按 yy // 2 按 ESC 键 退出编辑模式 // 3 按 19p System.out.println("Hello World!"); System.out.println("Hello World!"); System.out.println("Hello World!"); System.out.println("Hello World!"); System.out.println("Hello World!"); System.out.println("Hello World!"); System.out.println("Hello World!"); System.out.println("Hello World!"); System.out.println("Hello World!"); System.out.println("Hello World!"); System.out.println("Hello World!"); System.out.println("Hello World!"); System.out.println("Hello World!"); System.out.println("Hello World!"); System.out.println("Hello World!"); System.out.println("Hello World!"); System.out.println("Hello World!"); System.out.println("Hello World!"); System.out.println("Hello World!"); // 1 按 ESC 退出编辑模式 // 2 按 : 进入莫行模式 // 3 输入 wq(write quit)保存且退出 按回车键执行 } }
vim 文件名 +行数
[root@node01 export]# vim Hello.java +10
提示: 按下键盘时, 注意关闭输入法
工作模式切换
命令 | 英文 | 功能 |
---|---|---|
w | write | 保存 |
q | quit | 退出,如果没有保存,不允许退出 |
q! | quit | 强行退出,不保存退出 |
wq | write & quit | 保存且退出(莫行模式) |
x | 保存并退出(莫行模式) | |
ZZ | 保存并退出(命令模式) |
要熟练使用vi, 首先应该学会怎么在 命令模式下 快速移动光标
编辑操作命令 能够和移动命令一起使用
命令 | 功能 | 手指 |
---|---|---|
h | 向左 | 食指 |
j | 向下 | 食指 |
k | 向上 | 中指 |
l | 向右 | 无名指 |
命令 | 英文 | 功能 |
---|---|---|
w | word | 向后移动一个单词 |
b | back | 向前移动一个单词 |
0 | 行首 | |
^ | 行首, 第一个不是空白字符的位置 | |
$ | 行尾 |
命令 | 英文 | 功能 |
---|---|---|
gg | go | 文件顶部 |
G | go | 文件末尾 |
数字gg | go | 移动到 数字 对应行数 |
数字G | go | 移动到 数字 对应行数 |
: 数字 | 移动到数字对应的 行数 |
命令 | 英文 | 功能 |
---|---|---|
Ctrl + b | back | 向上翻页 |
Ctrl + f | forward | 向下翻页 |
H | Head | 屏幕顶部 |
M | Middle | 屏幕中间 |
L | Low | 屏幕底部 |
vim中使用 空行 来区分段落
程序开发时, 通常 一段功能相关的代码会写在一起 – 之间没有空行
命令 | 功能 |
---|---|
{ | 上一段 |
} | 下一段 |
在程序世界中, **()、[]、{}**使用率很高, 而且 都是成对出现的.
命令 | 功能 |
---|---|
% | 括号匹配及切换 |
命令 | 英文 | 功能 |
---|---|---|
mx | mark | 添加编辑x, x是a~z 或者 A~Z的任意一个字母 |
'x | 直接定位到标记x所在的位置 |
命令 | 模式 | 功能 |
---|---|---|
v | 可视模式 | 从光标位置开始按照正常模式选择文本 |
V | 可视化模式 | 选中光标经过的完整行 |
Ctrl + v | 可是块模式 | 垂直方向选中文本 |
在学习编辑命令之前,先要知道怎样撤销之前一次 错误的 编辑操作
命令 | 英文 | 功能 |
---|---|---|
u | undo | 撤销上次的命令(ctrl + z) |
Ctrl + r | uredo | 10dd恢复撤销的命令 |
命令 | 英文 | 功能 |
---|---|---|
x | cut | 删除光标所在的字符,或者选中的文字 |
d(移动命令) | delete | 删除移动命令对应的内容 |
dd | delete | 删除光标所在行, 可以ndd删除多行 |
D | delete | 删除至行尾 |
提示: 如果使用 可视模式 已经选中了一段文本, 那么无论使用 d 还是 x, 都可以删除选中文本
删除命令可以和移动命令连用, 以下是常见的组合命令(扩展):
命令 | 作用 |
---|---|
dw | 从光标位置删除到单词末尾 |
d0 | 从光标位置删除到一行的起始位置 |
d} | 从光标位置删除到段落末尾 |
ndd | 从光标位置向下连续删除 n 行 |
d’a | 从光标所在行 删除到 标记a 之间的所有代码 |
命令 | 英文 | 功能 |
---|---|---|
y(复制命令) | copy | 复制 |
yy | copy | 复制一行,可以nyy复制多行 |
d(剪切命令) | delete | 剪切 |
dd(剪切) | delete | 剪切一行, 可以 ndd 剪切n行 |
p | paste | 粘贴 |
提示:
注意
Ctrl + C
复制的内容, 不能再 vi
中通过 p
命令粘贴命令 | 英文 | 功能 | 工作模式 |
---|---|---|---|
r | replace | 替换当前字符 | 命令模式 |
R | replace | 替换当前行光标后的字符 | 替换模式 |
R
命令可以进入 替换模式, 替换完成后, 按下ESC
, 按下 ESC
可以回到 命令模式命令 | 功能 |
---|---|
>> | 向右增加缩进 |
<< | 向左减少缩进 |
. | 重复上次命令 |
>
或者 <
在程序中, 缩进 通常用来表示代码的归属关系
常规查找
命令 | 功能 |
---|---|
/str | 查找str |
查找到指定内容之后, 使用 Next
查找下一个出现的位置
n
: 查找下一个N
: 查找上一个如果不想看到高亮显示, 可以随便查找一个文件中不存在的内容即可
单词快速匹配
命令 | 功能 |
---|---|
* | 向后查找当前光标所在单词 |
# | 向前查找当前光标所在单词 |
vi
中查找和替换命令需要在 末行模式 下执行:%s///g
一次向 替换文件中的 所有出现的旧文本
命令格式如下
:%s/旧文本/新文本/g
:s/旧文本/新文本/g
c confirm 确认
如果把末尾的 g
改成 gc
在替换的时候, 会有提示! 推荐使用
命令格式如下
:%s/旧文本/新文本/gc
y
- yes
替换n
- no
不替换a
- all
替换所有q
-quit
退出替换l
- last
最后一个, 并把光标移动到行首^E
向下滚屏^Y
向上滚屏i
进入编辑模式 外, 还提供了一下命令同样可以进入编辑模式命令 | 英文 | 功能 | 常用 |
---|---|---|---|
i | insert | 在当前字符前插入文本 | 常用 |
I | insert | 在行首插入文本 | 较常用 |
a | append | 在当前字符后添加文本 | |
A | append | 在行末添加文本 | 较常用 |
o | 在当前行后面插入一空行 | 常用 | |
O | 在当前行前面插入一空行 | 常用 |
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-8nFJDMw3-1625739829146)(assets/1558543477231.png)]
**********
连续10个星号要实现这个效果可以在 命令模式 下:
10
, 表示要重复10次i
进入 编辑模式*
也就是重复的文字ESC
返回 命令模式, 返回之后 vi
就会把 第 2、3
两步的操作重复 10
次提示: 正常开发时, 在 进入编辑模式之前,不要按数字
在java中, 要给代码增加注释, 可以在代码
前增加一个
//
要实现这个效果可以在 命令模式 下
^
来到行首Ctrl + v
进入 可视化 模式j
向下连续选中要添加的代码行I
进入编辑模式 , 并在 行首插入, 注意: 一定要使用 I//
也就是 注释符号ESC
返回到 命令::模式, 返回之后 vi
会在之前选中的每一行代码 前 插入 //
命令 | 英文 | 功能 |
---|---|---|
:w 文件 | 另存为 | |
:w | write | 保存(ctrl + s) |
:q | quit | 退出, 如果没有保存,不允许退出 |
:q! | quit | 强行退出, 不保存退出 |
:wq | write & quit | 保存并退出 |
:x | 保存并退出 |
在实际开发中, 可以使用 w
命令 阶段性的备份代码
用户 是Linux系统工作中重要的一环, 用户管理包括 用户 与 组 管理
在Linux系统中, 不论是由本级或是远程登录系统, 每个系统都必须拥有一个账号, 并且对于不同的系统资源拥有不同的使用权限
对 文件 / 目录 的权限包括:
序号 | 权限 | 英文 | 缩写 | 数字序号 |
---|---|---|---|---|
01 | 读 | read | r | 4 |
02 | 写 | write | w | 2 |
03 | 执行 | execute | x | 1 |
04 | 无权限 | - | 0 |
ls -l
可以查看文件夹下文件的详细信息, 从左到右 依次是:
d
表示目录本质: 给 同一类型用户 分配权限
序号 | 命令 | 作用 |
---|---|---|
01 | groupadd 组名 | 添加组 |
02 | groupdel 组名 | 删除组 |
03 | cat /etc/group | 确认组信息 |
04 | chgrp 组名 文件/目录名 | 修改文件/目录的所属组 |
提示:
- 组信息保存在
/etc/group
文件中/etc
目录是专门用来保存 系统配置信息 的目录
chgrp : change group
演练目标
aaa
目录dev
组aaa
目录的组修改为 dev
[root@node01 export]# mkdir -p aaa/ [root@node01 export]# ll total 4 drwxr-xr-x. 2 root root 4096 Jul 31 06:48 aaa [root@node01 export]# chgrp dev aaa/ [root@node01 export]# ll total 4 drwxr-xr-x. 2 root dev 4096 Jul 31 06:48 aaa
命令 | 作用 | 说明 |
---|---|---|
useradd -m -g 组 新建用户名 | 添加新用户 | -m 自动建立用户家目录 -g 指定用户所在的组, 否则会建立一个和同名的组 |
passwd 用户名 | 设置用户密码 | 如果是普通用户, 直接用 passwd可以修改自己的账号密码 |
userdel -r 用户名 | 删除用户 | -r 选项会自动删除用户家目录 |
cat /etc/passwd | grep 用户名 | 确认用户信息 | 新建用户后,用户信息会保存在 /etc/passwd 文件夹中 |
提示:
- 创建用时, 如果忘记添加
-m
选项指定新用户的家目录 – 最简单的方式就是删除用户,重新创建- 创建用户时, 默认会创建一个和用户名同名的组名
- 用户信息保存在 /etc/passwd 文件中
/etc/passwd
文件存放的是用户的信息, 由6个分好组成的7个信息, 分别是
需求
1 创建用户 zhangsan, 指定归属于 dev 组 2 设置用户 zhangsan 的密码 3 查看配置文件中是否增加用户 zhangsan 观察 zhangsan 的家目录是否创建 4 删除 zhangsan 用户
[root@node01 export]# useradd -m -g dev zhangsan [root@node01 export]# passwd zhangsan Changing password for user zhangsan. New password: BAD PASSWORD: it is too simplistic/systematic BAD PASSWORD: is too simple Retype new password: passwd: all authentication tokens updated successfully. [root@node01 export]# cat /etc/passwd | grep zhangsan zhangsan:x:500:500::/home/zhangsan:/bin/bash [root@node01 export]# tree /home /home └── zhangsan [root@node01 export]# userdel -r zhangsan [root@node01 export]# cat /etc/passwd | grep zhangsan [root@node01 export]# tree /home /home
序号 | 命令 | 作用 |
---|---|---|
01 | id [用户名] | 查看用户UID 和 GID 信息 |
02 | who | 查看当前所有登录的用户列表 |
03 | whoami | 查看当前登录用户的账户名 |
[root@node01 ~]# useradd -m -g dev lisi [root@node01 ~]# passwd lisi Changing password for user lisi. New password: BAD PASSWORD: it is too simplistic/systematic BAD PASSWORD: is too simple Retype new password: passwd: all authentication tokens updated successfully. [root@node01 ~]# id lisi uid=500(lisi) gid=500(dev) groups=500(dev) [root@node01 ~]# who root pts/0 2019-07-31 07:02 (192.168.100.2) [root@node01 ~]# whoami root
su
切换用户序号 | 命令 | 作用 | 说明 |
---|---|---|---|
01 | su - 用户名 | 切换用户, 并且企划目录 | - 可以切换到用户家目录, 否则保持位置不变 |
02 | exit | 退出当前登录用户 |
su
不接用户名, 可以切换到 root
, 但是不推荐使用, 因为不安全exit
示意图如下:[lisi@node01 ~]$ whoami lisi [lisi@node01 ~]$ su - root Password: [root@node01 ~]# whoami root [root@node01 ~]# exit logout [lisi@node01 ~]$ whoami lisi
su -u root
可以切换到 root用户, 但是 存在严重的 安全隐患linux系统中的 root
账号通常 用于系统的维护和管理, 对操作系统的所有资源 具有访问权限
如果不小心使用 rm -rf ... ...
, 就可能将系统搞瘫痪
在大多数版本的linux中, 都不推荐 直接只用 root 账号登录系统
sudo
命令用来以其他身份来执行命令, 预设的身份为 root
用户使用 sudo
时, 必须先输入密码, 之后5分钟的有效期限, 超过期限则必须重新输入密码
提示: 若其未经授权的用户企图使用 sudo, 则会发出警告邮件给管理员
vim /etc/sudoers
# 默认存在: root用户 具备所有的权限 root ALL=(ALL) ALL # 授予 lisi 用户 所有的权限 lisi ALL=(ALL) ALL
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-xl6xTuKx-1625739829158)(day02.assets/1564499316459.png)]
lisi
登录, 操作管理员命令# 不切换root用户, 也可以完成 添加用户的功能 sudo useradd -m -g dev zhaoliu
[lisi@node01 ~]$ sudo useradd -m -g dev zhaoliu We trust you have received the usual lecture from the local System Administrator. It usually boils down to these three things: #1) Respect the privacy of others. #2) Think before you type. #3) With great power comes great responsibility. [sudo] password for lisi: [lisi@node01 ~]$ sudo cat /etc/passwd | grep zhaoliu zhaoliu:x:501:500::/home/zhaoliu:/bin/bash
准备工作: 使用root用户操作
# 清空目录中的内容 rm -rf /export/* # 创建测试目录 mkdir -p /export/aaa/ # 创建测试文件 touch /export/aaa/01.txt /export/aaa/02.txt # 查看指定目录内容 tree /export
序号 | 命令 | 作用 |
---|---|---|
01 | chmod | 修改权限 |
chmod
可以修改 用户/组 对 文件/目录 的权限
命令格式如下:
chmod +/- rwx 文件名|目录名
提示: 已上方式会一次向修改
拥有者
/组
权限
# 1. 使用 root 删除目录的可读 可写 可执行权限 # 2. 使用 其他用户如 lisi 无法切换到 这个目录 # 3. 使用 root 增加目录的执行权限, 再次 使用 lisi 切换到目录试试
答案:# 1. 使用 root 删除目录的可读 可写 可执行权限
[root@node01 export]# ll total 4 drwxr-xr-x. 2 root root 4096 Jul 31 07:10 aaa [root@node01 export]# chmod -rwx aaa/ [root@node01 export]# ll total 4 d---------. 2 root root 4096 Jul 31 07:10 aaa
需求2答案: 使用 其他用户如 lisi 无法切换到 这个目录
[lisi@node01 ~]$ cd /export/ [lisi@node01 export]$ ll total 4 d---------. 2 root root 4096 Jul 31 07:10 aaa [lisi@node01 export]$ cd aaa/ -bash: cd: aaa/: Permission denied
需求3答案: 使用 root 增加目录的执行权限, 再次 使用 lisi 切换到目录试试
[root@node01 export]# chmod +x aaa/ [root@node01 export]# ll total 4 d--x--x--x. 2 root root 4096 Jul 31 07:10 aaa
[lisi@node01 export]$ cd aaa/ [lisi@node01 aaa]$ pwd /export/aaa
u
表示所属用户 / g
表示所属组 / o
表示其他)chmod -R u=rwx,g=rx,o=rwx 文件|目录
序号 | 权限 | 英文 | 缩写 | 数字序号 |
---|---|---|---|---|
01 | 读 | read | r | 4 |
02 | 写 | write | w | 2 |
03 | 执行 | execute | x | 1 |
04 | 无权限 | - | 0 |
# 1 使用root用户给 所属用户分配 可读、可写、可执行 权限, 所属组 分配 可读、可执行 权限, 其他人 分配 可读、可执行 权限
[root@node01 export]# chmod u=rwx,g=rx,o=rx aaa/ [root@node01 export]# ll total 4 drwxr-xr-x. 2 root root 4096 Jul 31 07:10 aaa
chmod -R 755 文件|目录
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-QqqcpBdz-1625739829160)(assets/1558487247085.png)]
常用数字组合有( u
表示用户 / g
表示组 / o
表示其他)
777
===> u=rwx, g=rwx, o=rwx
755
===> u=rwx, g=rx, o=rx
644
===> u=rw, g=r, o=r
# 1 使用root用户给 所属用户分配 可读、可写、可执行 权限, 所属组 分配 可读、可执行 权限, 其他人 分配 可读、可执行 权限
[root@node01 export]# chmod 755 bbb/ [root@node01 export]# ll total 8 drwxr-xr-x. 2 root root 4096 Jul 31 07:10 aaa drwxr-xr-x. 3 root root 4096 Jul 31 07:19 bbb
date
cal
df
du
ps
top
kill
命令 | 作用 |
---|---|
date | 查看系统时间(默认) |
date +"%Y-%m-%d %H:%M:%S" | 查看系统时间(指定格式) |
date -s “时间字符串” | 设置系统时间 |
# 显示时间 date # 按照指定格式显示时间 date +"%Y-%m-%d %H:%M:%S"
date -s "时间字符串"
[root@node01 export]# date Wed Jul 31 07:20:31 CST 2019 [root@node01 export]# date +"%Y-%m-%d %H:%M:%S" 2019-07-31 07:20:49 [root@node01 export]# date -s '2019-07-31 20:21:49' Wed Jul 31 20:21:49 CST 2019 [root@node01 export]# date +"%Y-%m-%d %H:%M:%S" 2019-07-31 20:21:52
序号 | 命令 | 作用 |
---|---|---|
01 | cal | 查看当前月的日历 |
02 | cal -y | 查看当前年的日历 |
03 | cal 2020 | 查看2020年的日历 |
04 | cal 10 2020 | 查看2020年10月的日历 |
序号 | 命令 | 作用 |
---|---|---|
01 | df -h | disk free 显示磁盘剩余空间 |
02 | du -h [目录名] | disk usage 显示目录下的目录大小 |
03 | free -h | 查看内存使用率 |
参数 | 含义 |
---|---|
-h | 以人性化的方式显示文件的大小 |
序号 | 命令 | 作用 |
---|---|---|
01 | ps aux | process status 查看进程的详细情况 |
02 | top | 动态显示运行中进程并且排序 |
03 | kill [-9] 进程代号 | 终止指定代号的进程 -9 表示强行终止 |
04 | ps -ef | process status 查看进程的详细情况 |
ps
默认只会显示当前用户通过终端启动的应用程序
ps -ef与ps aux是一样的意思, 显示所有在运行的进程, 一个是用标准格式输出, 一个是用bsd的格式输出. 标准格式: USER , PID , %CPU , %MEM , VSZ , RSS , TTY , STAT , START , TIME , COMMAND bsd格式: UID , PID , PPID , C , STIME , TTY , TIME , CMD
ps
选项说明功能
选项 | 含义 |
---|---|
a | 显示终端上的所有进程,包括其他用户的进程 |
u | 显示进程的详细状态 |
x | 显示没有控制终端的进程 |
提示: 使用
kill
命令时, 最好只终止由当前用户开启的进程, 而不要终止root
身份开启的进程, 否则可能导致系统崩溃
要退出 top
可以直接输入 q