Linux命令基础知识
vim
- i – 切换到输入模式,在光标当前位置开始输入文本。
- x – 删除当前光标所在处的字符。
- : – 切换到底线命令模式,以在最底一行输入命令。
- a – 进入插入模式,在光标下一个位置开始输入文本。
- o:在当前行的下方插入一个新行,并进入插入模式。
- O – 在当前行的上方插入一个新行,并进入插入模式。
- dd – 剪切当前行。
- yy – 复制当前行。
- p(小写) – 粘贴剪贴板内容到光标下方。
- P(大写)-- 粘贴剪贴板内容到光标上方。
- u – 撤销上一次操作。
- Ctrl + r – 重做上一次撤销的操作。
- :w – 保存文件。
- :q – 退出 Vim 编辑器。
- :q! – 强制退出Vim 编辑器,不保存修改。
- 字符按键以及Shift组合,输入字符
- ENTER,回车键,换行
- BACK SPACE,退格键,删除光标前一个字符
- DEL,删除键,删除光标后一个字符
- 方向键,在文本中移动光标
- HOME/END,移动光标到行首/行尾
- Page Up/Page Down,上/下翻页
- Insert,切换光标为输入/替换模式,光标将变成竖线/下划线
- ESC,退出输入模式,切换到命令模式
:w
:保存文件。:q
:退出 Vim 编辑器。:wq
:保存文件并退出 Vim 编辑器。:q!
:强制退出Vim编辑器,不保存修改。- s/old/new/ 将当前行中第一个出现的
old
替换为new
- s/old/new/g 替换当前行中所有匹配的内容
- :%s/old/new/g 替换文件中所有匹配的内容
- :1,10s/old/new/g 指定行范围进行替换,例如替换第 1 行到第 10 行
- 0 移动到行首
- $ 移动到行尾
- gg 文件首
- G 文件尾
mkdir
mkdir指令用于创建目录 基本语法:mkdir [选项] 要创建的目录
常用选项-p :创建多级目录
应用实例
案例1:创建一个目录 /home/dog
mkdir /home/dog
案例2:创建多级目录 /home/animal/tiger
mkdir-p /home/animal/tiger
remdir
基本语法
rmdir [选项] 要删除的空目录
应用实例 案例:删除一个目录 /home/dog
使用细节
rmdir 删除的是空目录,如果目录下有内容时无法删除的。
提示:如果需要删除非空目录,需要使用 rm-rf 要删除的目录
比如: rm-rf/home/animal
touch
touch 指令创建空文件
group
groupadd
创建一个GID的用户组
groupadd -g 1001 mygroup
创建一个系统组
groupadd -r myservicegroup
cp
cp 指令 拷贝文件到指定目录
基本语法
cp [选项] source dest
常用选项
-r :递归复制整个文件夹
案例1: 将 /home/hello.txt 拷贝到 /home/bbb 目录下
cp hello.txt /home/bbb
案例2: 递归复制整个文件夹,举例, 比如将 /home/bbb 整个目录, 拷贝到 /opt
cp-r /home/bbb /opt
强制覆盖不提示的方法:\cp ,\cp-r/home/bbb/opt
rm
rm 指令移除文件或目录
-r
-f
mv
mv 移动文件与目录或重命名
重命名
mv oldNameFile newNameFile
移动文件
mv/temp/movefile /targetFolder
cat
查看
cat > newfile.txt 创建一个新文件
输入内容后,按 Ctrl+D
结束输入,内容会被保存到 newfile.txt
文件中。
20250210210511675.png&pos_id=img-qC6gPuFt-1739620948340)
echo
echo 输出内容到控制台
head
head 用于显示文件的开头部分内容,默认情况下head指令显示文件的前10行内容
tail
tail 用于输出文件中尾部的内容,默认情况下tail指令显示文件的前10行内容
tail -n 数字 显示最后数字行
实时跟踪文件更新
tail -f /var/log/syslog
> 指令 和 >> 指令
> 输出重定向和 >> 追加
-
ls-l >文件 (功能描述:列表的内容写入文件a.txt中(覆盖写))
-
ls-al >>文件 (功能描述:列表的内容追加到文件aa.txt的末尾)
-
cat 文件1> 文件2 (功能描述:将文件1的内容覆盖到文件2)
-
echo “内容”>> 文件 (追加)
案例1: 将 /home 目录下的文件列表 写入到 /home/info.txt 中, 覆盖写入
ls-l /home > /home/info.txt [如果 info.txt 没有,则会创建]
案例2: 将当前日历信息 追加到 /home/mycal 文件中 指令为: cal>>/home/mycal
history
查看已经执行过历史命令,也可以执行历史指令
!+ 行数
date
-
date (功能描述:显示当前时间)
-
date +%Y(功能描述:显示当前年份)
-
date +%m(功能描述:显示当前月份)
-
date +%d (功能描述:显示当前是哪一天)
-
date “+%Y-%m-%d %H:%M:%S”(功能描述:显示年月日时分秒)
cal
查看日历
find
find 指令将从指定目录向下递归地遍历其各个子目录,将满足条件的文件或者目录显示在终端。
案例1: 按文件名:根据名称查找/home 目录下的hello.txt文件
find /home-name hello.txt
案例2:按拥有者:查找/opt目录下,用户名称为 nobody的文件
find /opt-user nobody
案例3:查找整个linux系统下大于200M的文件(+n 大于-n小于 n等于, 单位有 k,M,G)
find /-size +200M
-
按文件名搜索
-
-name
:根据文件名搜索。bash复制
find /path/to/search -name "*.txt"
示例:查找
/home/user
目录下所有以.txt
结尾的文件。bash复制
find /home/user -name "*.txt"
-
-
按文件类型搜索
-
-type
:根据文件类型搜索。f
:普通文件d
:目录l
:符号链接
bash复制
find /path/to/search -type d
示例:查找
/home/user
目录下所有目录。bash复制
find /home/user -type d
-
-
按修改时间搜索
-
-mtime
:根据文件的修改时间搜索。bash复制
find /path/to/search -mtime +N
示例:查找
/home/user
目录下修改时间超过 7 天的文件。bash复制
find /home/user -mtime +7
-
-
按文件大小搜索
-
-size
:根据文件大小搜索。bash复制
find /path/to/search -size +Nk
示例:查找
/home/user
目录下大于 1MB 的文件。bash复制
find /home/user -size +1M
-
-
按权限搜索
-
-perm
:根据文件权限搜索。bash复制
find /path/to/search -perm 755
示例:查找
/home/user
目录下权限为755
的文件。bash复制
find /home/user -perm 755
-
-
限制搜索深度
-
-maxdepth
:限制搜索的最大深度。bash复制
find /path/to/search -maxdepth N
示例:查找
/home/user
目录下当前目录和子目录中的.txt
文件。bash复制
find /home/user -maxdepth 2 -name "*.txt"
-
locate
locate 指令可以快速定位文件路径。
grep 和 管道符号 |
grep
grep [选项] 模式 [文件…]
-
-i
:忽略大小写。 -
-v
:反向匹配,显示不匹配的行。 -
-n
:显示匹配行的行号。 -
-r
或-R
:递归搜索目录中的所有文件。 -
-w
:仅匹配完整的单词。 -
-E
:使用扩展正则表达式。 -
-o
:仅显示匹配的部分,而不是整行 -
常见选项
-
-i
:忽略大小写bash复制
grep -i "pattern" file.txt
示例:在
file.txt
中搜索包含 “pattern” 的行,不区分大小写。 -
-v
:反向匹配,显示不包含指定模式的行bash复制
grep -v "error" log.txt
示例:从
log.txt
中筛选出不包含 “error” 的行。 -
-w
:匹配整个单词bash复制
grep -w "apple" file.txt
示例:只匹配完整的单词 “apple”,而不是 “pineapple” 或 “apples”。
-
-r
或-R
:递归搜索目录bash复制
grep -r "pattern" /path/to/directory
示例:在
/path/to/directory
目录及其子目录中递归搜索包含 “pattern” 的文件。 -
-n
:显示匹配行的行号bash复制
grep -n "pattern" file.txt
示例:在
file.txt
中搜索 “pattern”,并显示匹配行的行号。 -
-c
:统计匹配行的数量bash复制
grep -c "pattern" file.txt
示例:统计
file.txt
中包含 “pattern” 的行数。 -
-o
:只输出匹配的部分bash复制
grep -o "pattern" file.txt
示例:只输出
file.txt
中匹配 “pattern” 的部分,而不是整行。 -
-E
:使用扩展正则表达式bash复制
grep -E "pattern1|pattern2" file.txt
示例:使用扩展正则表达式匹配 “pattern1” 或 “pattern2”。
-
-l
:只列出包含匹配内容的文件名bash复制
grep -l "pattern" file1.txt file2.txt
-
grep “hello” file.txt 查找 file.txt
中包含字符串 “hello” 的所有行
grep -n “hello” file.txt 显示行号
使用正则表达式
grep -E “^start.*end$” file.txt
使用扩展正则表达式匹配以 “start” 开头、以 “end” 结尾的行
正则表达式的使用
正则表达式是一种强大的模式匹配语言。它可以用来描述字符组合的模式,这些模式可以用来搜索、替换文本等。在grep中使用正则表达式可以大大提高搜索的灵活性和准确性。
一些常用的正则表达式符号包括:
^:匹配行的开始
$:匹配行的结束
.:匹配任意单个字符
[]:匹配括号内的任意字符
|:逻辑“或”操作****
:匹配前面的字符零次或多次
+:匹配前面的字符一次或多次
{}*:匹配前面的字符指定次
通道
command1 | command2
将 ls
的输出传递给 grep
ls -l | grep “file”
列出当前目录中的文件,并通过 grep
筛选出包含 “file” 的行
组合多个 grep
命令
cat file.txt | grep “hello” | grep -v “world”
先筛选出包含 “hello” 的行,再排除包含 “world” 的行
将 ps
的输出传递给 grep
ps aux | grep “nginx”
grep 过滤查找 , 管道符,“|”,表示将前一个命令的处理结果输出传递给后面的命令处理。
grep是一种强大的文本搜索工具,它能使用正则表达式搜索文本,并把匹配的行打印出来。
格式 grep [选项] “搜索内容” 文件名
权限
ls-l 中显示的内容如下:
-rwxrw-r-- 1 root root 1213 Feb 2 09:39 abc
0-9 位说明
第0位确定文件类型(d,-,l,c,b)
l 是链接,相当于windows的快捷方式
d 是目录,相当于windows的文件夹
c 是字符设备文件,鼠标,键盘
b 是块设备,比如硬盘
第1-3位确定所有者(该文件的所有者)拥有该文件的权限。—User 第4-6位确定所属组(同用户组的)拥有该文件的权限,—Group
第7-9位确定其他用户拥有该文件的权限—Othe
rwx
可用数字表示为:r=4,w=2,x=1 因此rwx=4+2+1=7, 数字可以进行组合
文件
-
[r]代表可读(read): 可以读取,查看 限,才能删除该文件.
-
[w]代表可写(write): 可以修改,但是不代表可以删除该文件,删除一个文件的前提条件是对该文件所在的目录有写权
-
[x]代表可执行(execute):可以被执行
目录
-
[r]代表可读(read): 可以读取,ls查看目录内容
-
[w]代表可写(write): 可以修改, 对目录内创建+删除+重命名目录
-
[x]代表可执行(execute):可以进入该目录
chmod
通过chmod指令,可以修改文件或者目录的权限
+ - =
421
chown
修改文件所有者
chown newowner 文件/目录 改变所有者
chown newowner:newgroup 文件/目录 改变所有者和所在组
-R 如果是目录 则使其下所有子文件或目录递归生
docker
Docker 网络
创建 Docker 网络
docker volume create my-data-volume
my-data-volume
是自定义的卷名称
查看 Docker 网络
docker network ls
删除指定网络
docker network rm my-network
创建容器卷、查看容器卷
创建 Docker 卷
docker volume create my-data-volume
my-data-volume
是自定义的卷名称
查看 Docker 卷
docker volume ls
查看卷的详细信息
docker volume inspect my-data-volume
删除 Docker 卷
docker volume rm my-data-volume
删除所有未使用的卷
docker volume prune
如果你需要同时删除一个网络和一个卷,可以将命令组合在一起
docker network rm my-network && docker volume rm my-data-volume
启动容器
启动 MySQL 容器
docker run --name mysql-container
–network my-network
-v my-data-volume:/var/lib/mysql
-e MYSQL_ROOT_PASSWORD=your_root_password
-p 3306:3306
–restart=always
-d mysql:latest
启动 Nginx 容器
docker run --name nginx-container
–network my-network
-v /your/local/nginx/html:/usr/share/nginx/html
-v /your/local/nginx/conf:/etc/nginx/conf.d
-p 80:80
–restart=always
-d nginx:latest
参数说明
--network my-network
:将容器连接到指定的自定义网络。-v my-data-volume:/var/lib/mysql
:将 Docker 卷my-data-volume
挂载到 MySQL 容器的/var/lib/mysql
目录。-v /your/local/nginx/html:/usr/share/nginx/html
:将本地目录挂载到 Nginx 容器的静态文件目录。-p 3306:3306
和-p 80:80
:将容器端口映射到宿主机端口。--restart=always
:设置重启策略。-d
:后台运行容器。
重启策略
--restart=always
:无论容器退出状态如何,Docker 都会自动重启容器。- 其他重启策略选项:
no
:容器不会自动重启。on-failure
:仅在容器退出状态非 0 时自动重启。unless-stopped
:容器会自动重启,除非手动停止或 Docker 本身被停止。always
:无论退出状态如何,容器都会自动重启
查看所有正在运行的容器
docker ps
这个命令会列出当前正在运行的所有容器,包括容器的名称、ID、镜像、端口映射等信息
docker ps -a
添加 -a
参数可以显示所有容器,无论它们是否正在运行
停止一个正在运行的容器
docker stop <容器名称或ID>
停止所有正在运行的容器
docker stop $(docker ps -q)
docker ps -q 会列出所有正在运行的容器的 ID,
docker stop` 会停止这些容器。
启动一个已停止的容器
docker start <容器名称或ID>
重启容器
docker restart <容器名称或ID>
查看容器运行日志,查看容器具体信息(inspect)
查看容器运行日志
docker logs mysql-container
docker logs nginx-container
查看容器具体信息(inspect)
docker inspect mysql-container
docker inspect nginx-container