这里写目录标题
目录及文件
编辑文件
vi
命令用于编辑文件
- 语法格式:
vi 文件名
vi/vim 共分为三种模式,分别是命令模式、输入模式、底线命令模式
# 在home目录中创建test01目录
cd home/
mkdir test01
# 在test01目录中创建test01.txt文本
cd test01
touch test01.txt
# 在test01.txt编写:hello world 退出并保存文件
vi test01.txt
i
hello world
Esc
:wq
查看或合并文件内容
cat
命令表示查看或合并文件内容
- 语法格式:
cat 文件名称
cat 文件名称1 文件名称2
# 查看test01.txt 文件中的内容
cat test01.txt
输出重定向命令 >
Linux允许将命令执行结果重定向到一个文件中,在终端中显示的内容保存到指定文件中
ls > test02.txt
# 如果test02.txt文件不存在则创建,如果存在则被覆盖掉
输出重定向命令 >>
>> 输出重定向的内容则会追加到文件的尾部
统计文件
wc
命令用于统计文件中字节数、字符数、行数等
- 语法格式:
wc -选项 文件名称
-c 文件的字节数
-l 文件的行数
-w 统计字数
拷贝文件
cp
命令用于复制文件或目录
- 语法格式
cp - 选项 源文件路径 新文件路径
-a 表示保持文件的原有属性
-f 覆盖已经存在的目标文件而不提示
-i 交互式复制,在覆盖目标文件之前给出提示要求用户确认
-r 若给出源文件是目录文件,需要递归进行复制
-v 显示拷贝进度
cp - 选项 源文件路径 新文件路径
-a 表示保持文件的原有属性
-f 覆盖已经存在的目标文件而不提示
-i 交互式复制,在覆盖目标文件之前给出提示要求用户确认
-r 若给出源文件是目录文件,需要递归进行复制
-v 显示拷贝进度
移动文件
mv
命令用于移动文件或目录,也可以给文件或目录重命名
- 语法格式
mv -选项 源文件路径 新文件路径
-f 禁止有交互式操作,如果有覆盖情况也不会给提示
-i 确实交互方式操作,询问是否需要覆盖
-v 显示移动速度
# 将hoem下的test目录移动到home下的dev目录中
cd /home
mv test dev
# 将hoem下的test目录移动到home下的dev目录中
cd /home
mv test dev
练习Demo01
# 在root目录下,进行如下操作
# 创建一个目录,名称为tsd2308
# 在tsd2308目录中,创建两个目录分别是qa、dev
# 在tsd2398目录中,创建一个test1目录,且test1目录中包含test2,test2目录中包含test3
# 在qa目录下,创建qa01.txt、qa02.txt
# 编辑qa01.txt文件,将 i am qa写入文件中,并退出
# 将2020年日历追加到qa02.txt文件中
# 将qa02.txt文件拷贝到dev目录下
# 在dev目录下,修改qa02.txt文件名,修改为dev02.txt
归档管理
解压缩文件
tar
命令用于压缩文件以及解压文件
tar -选项 打包文件名 文件
-c 建立新的压缩文件
-z 通过gzip压缩文件
-v 显示操作过程
-f 指定压缩文件
# 将tsd2308目录中qa目录进行压缩,压缩为qa.tar.gz
tar -czvf qa.tar.gz qa
tar -czvf tsd2308.tar.gz qa test1 dev
tar -选项 压缩包文件名
-x 从压缩的文件中提取文件
-z 通过gzip格式
-v 显示操作过程
-f 指定压缩文件
# 将tsd2308压缩包移动到test1目录下进行解压缩
# 将qa压缩包移动到dev目录下进行解压缩
查看文件
which
命令在环境变量设置的目录里查找符合条件的文件
- 语法格式
which -选项 文件名
-n<文件名长度> 指定文件名长度,指定的长度必须大于或等于所有文件中最长的文件名
-p<文件名长度> 与-n参数相同,文件名长度包含文件的路径
-w 指定输出时栏位的宽度
-v 显示版本信息
# 查看bash的绝对路径
which bash
whereis只能查询二进制文件、说明文档、源文件等
which只能查询可执行文件
查看环境变量
env
命令查看所有环境变量
练习Demo02
# 在home目录中创建testing目录
cd /home
mkdir testing
# 在testing目录中分别创建 test1 与 test2
mkdir test1 test2
# 在test1目录中 创建 t1.sql t2.sql t3.sql
cd test1
touch t1.sql t2,sql t3,sql
# 在test1目录中 将文件t1.sql t2.sql t3.sql 变成一个名为Linux_sql.tar.gz的压缩包
tar -czvf Linux_sql.tar.gz t1.sql t2.sql t3.sql
# 将压缩包解压到test2目录中
mv Linux_sql.tar.gz /home/testing/test2
cd ..
cd test2
tar -xzvf Linux_sql.tar.gz
# 删除 test2目录中t3.sql
rm -rf t3.sql
管道符 |
管道符 左边写入内容,右边读取内容
可以通过管道符将两个命令连接起来,左边命令的输出会作为管道符右边命令的输入
# 在home目录中创建一个 test01.txt文本
# 查询当前系统时间并将查询结果存入 test01.txt 文本中,并查看test01.txt文本中内容
date > test01.txt
cat test01.txt
# 查询ip信息查看开头两行内容
ifconfig | head -2
查看文件内容命令
cat
表示从第一行开始显示文件内容
nl
表示显示时输出行号
more
表示一页一页显示文件内容
less
与 more
类似,可以往前翻页
head
表示看开头几行
tail
表示看结尾几行
文本搜索
grep
用于过滤/搜索特定字符
- 语法格式
grep -选项 '搜索内容' 文件名
-v 显示不包含匹配文本的所有行
-n 显示匹配行 和 行号
-i 忽略大小写
# 请搜索端口号是3306的服务是那个
netstat -ant | grep 3306
# 查询ssh协议
netstat -anp | grep ssh
# 查询有关ssh的进程
ps -ef | grep ssh
Linux组管理
添加组
groupadd
命令用于添加组
- 语法格式
groupadd 组名称
# 添加一个testing组
groupadd testing
查看组信息
cat /etc/group
命令用于查看组信息
testing:x:1001
# testing 组名
# x 口令
# 1001 组编号
- 0为root组编号
- 1~999为系统组编号
- 1000~?为普通组编号
删除组
groupdel
命令用于删除组
- 语法格式
groupdel 组名称
# 删除testing 组
groupdel testing
用户管理
添加用户
useradd
命令用于添加用户
- 语法格式
useradd -选项 组名 用户名称
-g 指定用户所属的群组
# 添加qa01用户
useradd qa01
# 添加qa02用户并分配到testing组
useradd -g testing qa02
设置密码
passwd
命令用于设置用户的密码
- 语法格式
passwd -选项 用户名称
-d 清空密码命令
退出登录账户
exit
命令退出登录账户
- 如果是图形界面,退出到当前终端
- 如果是使用SSH远程登录,退出登录账户
- 如果是切换后登录的用户,退出返回到上一个登录账户
# 创建一个test组
# 在组中添加用户qa01、qa02
# 分别为两个用户设置密码
# 切换qa01用户登录
# 切换到qa02用户登录
# 退出登录状态
- root切换到任何用户 不需要密码
- 任何其他用户相互之间切换需要填写密码
查看登录用户
who
命令用户查看当前所有登录系统的用户信息
服务器IP:
- 查找自己所在的终端信息:whoami
- 查看当前谁在使用该主机:who
查看用户信息
cat /etc/passwd
命令用于查看用户信息
qa01:x:1000:1002::/home/qa01:/bin/bash
qa01 用户名
x 密码(口令)
1000 用户标识号(用户id)
1002 组标识号(组id)
/home/qa01 表示用户的主目录
/bin/bash 命令解释程序
删除用户
userdel
命令用于删除用户
- 语法格式
userdel -选项 用户名称
-r 删除用户目录以及目录中所有文件
练习Demo03
# 添加两个组,组名分别为boy、girl
# 查看组信息,获取组编号
# 添加三个用户,用户名分别为t01、t02、t03
# t01属于boy组、t02属于girl组
# 为三位用户设置密码
# 查询三位用户信息 获取他们的组id与用户id
# 删除t03用户
修改用户所属的组
usermod
命令用于修改用户所属的组
- 语法格式
usermod -选项 用户组 用户名
-g 修改用户所属的组
# 将用户to2 改到boy组
usermod -g boy to2