Linux 命令
3790字约13分钟
2024-08-11
常用命令
技巧 | ||
---|---|---|
清除屏幕内容 | clear 命令 ctrl + l | |
搜索使用过的命令 | ctrl + r | |
Escape character is '^]' | ^ 对应键盘上的 ctrl | |
解除端口占用 | `netstat -alnp | |
文本操作 | ||
复制粘贴 | yy 复制一行 3y 复制三行 p 粘贴 | |
剪切 | dd 剪切当前行 d$ 剪切光标位置到行末尾 | |
撤销 | u 按一次撤销一次内容 | |
撤回撤销 | ctrl + r 撤回撤销的内容 | |
显示文件行号 | :set nu | |
跳转行数 | g 移动到文本的第一行 shift + g 或 G 移动到文本的最后一行 行号 + shrift + g 跳转到指定行号 | |
内容替换 | :s/old/new 将 old 字符替换为 new 字符,针对的是光标所在行进行替换 :%s/old/new/g 将整个文本匹配到的 old 字符都替换为 new 字符 | |
输出重定向 | echo 123 > a.txt 输入 123 内容到 a.txt,会清空文件原有内容在输入 echo 123 >> a.txt 追加内容 123 到 a.txt 文件中 | |
监听匹配内容 | `tail -f FileName | |
匹配内容输出到新文件 | grep '字符串' a.txt > b.txt 将 a.txt 中匹配的文本内容输出到 b.txt 中 curl -i URL > ./tmp.log 将 curl 命令执行结果内容输出 tmp.log 中 | |
目录操作 | ||
创建多层级目录 | mkdir -p /a/b/c/d 目录不存在直接创建 | |
复制目录 | cp -r /a /b 目录不存在直接创建 | |
内存 & 磁盘 | ||
查看系统内存 | free -h 以 G 为单位显示 free -m 以兆为单位显示 | |
查看系统磁盘 | df -h 查看每个根路径的分区大小 | |
查看文件大小(兆) | ll -lh 查看当前目录下文件的大小,单位为兆 |
目录介绍
目录 | 描述 |
---|---|
/ | 根目录 |
/root | root 用户的家目录 |
/home/${USER_NAME} | 普通用户的家目录 |
/etc | 配置文件目录 |
/bin | 命令目录 |
/sbin | 管理命令目录 |
/usr/bin | /usr/bin 系统预装的其他命令 |
帮助命令
命令 | 语法 | 栗子 |
---|---|---|
man | man <command> | man ls |
help | help <command> (内部命令查询帮助信息)<command> --help (外部命令查询帮助信息) | type <command> 查看命令是内部还是外部命令 help cd ls --help |
info | info [option] <command> | info ls |
目录文件操作
命令 | 描述 | 栗子 |
---|---|---|
pwd | 查看当前工作目录 | pwd |
cd | 更改当前的操作目录 | cd /path/... 按绝对路径更换操作目录 cd ./path/... 按相对路径更换操作目录 cd ../path/... 按相对路径更换操作目录 |
cd - | 回到上一次目录 | cd - |
ls | ls [选项]... [文件]... 查看目录下的文件 | ls 查看当前目录下的文件 ls /path 查看 path 路径下的文件 ls -l 长格式显示文件 ls -a 显示隐藏文件 ls -r 逆序显示 ls -t 按照时间顺序显示 ls -R 递归显示 |
mkdir | mkdir [选项]... 目录... 目录文件创建 | mkdir /a 绝对路径下创建 a 目录 mkdir a 相对路径下创建 a 目录 mkdir b c d 一下创建 b c d 三个目录 mkdir /a/b 在 a 目录下创建 b 目录 mkdir -p /a/b/c/d/e/f/g a b c d e f g 目录不存在的话都会创建 |
touch | touch [选项]... 文件... 创建文件 | touch filea 当前目录下创建文件 filea |
rm | rm [选项]... 文件... 删除目录文件 | rm a.txt 删除文件 rm -f a.txt 不进行确认删除文件 rm -r /a 删除目录 rm -rf /a 不进行确认删除目录 |
cp | cp [选项]... 源文件... 目录 复制目录文件 | cp -r a b 复制当前目录下的 a 目录为 b 目录 cp -v /filea /tmp 复制文件 filea 到 /tmp 目录下,-v 显示过程 cp -p /filea /tmp 保持原来文件的时间 cp -a /filea /tmp 保持文件所有的(用户、权限、时间等文件属性) |
mv | mv [选项]... 源文件... 目录 移动目录文件 | mv /a ./ 将根目录下的 a 目录文件复制到当前目录下 mv a b 将当前目录下的目录文件 a 改名为 b |
文本内容查看
命令 | 描述 | 栗子 |
---|---|---|
cat | cat [选项]... [文件]... 文本内容显示到终端 | cat fileA 显示 fileA 文件所有内容 |
head | head [选项]... [文件]... 文本开始内容显示到终端 | head fileA 显示文件开头内容,默认 10 行 head -5 fileA 显示开头 5 行内容 |
tail | tail [选项]... [文件]... 文本结尾内容显示到终端 | tail -f fileA 文件内容更新后,显示信息同步更新 tail fileA 显示文件结尾内容,默认 10 行 tail -5 fileA 显示文件结尾 5 行内容 |
wc | wc [选项]... [文件]... 统计文件内容信息 | wc -l fileA 统计文件内容行数 wc -w fileA 统计文件内容字数(字是指以空格、tab 、换行分隔的非零长度字符) |
more | more [选项] 文件... 分行显示 | more fileA 敲击空格显示下一页内容 |
less | less [选项] 文件... 浏览文件内容,支持翻页和搜索 | less fileA 敲击空格显示下一页内容 |
打包与解压缩
c
:创建归档x
:释放归档f
:指定归档文件名称,必须放在所有选项的最后v
:详细地列出处理的文件z
、j
、J
:调用.gz
、.bz2
、.xz
格式的工具进行处理t
:显示归档中的文件清单C
:指定释放路径
PS:压缩包以 tar.gz、tar.bz2 结尾,只是为了区分压缩采用的格式,.gz 表示采用 gzip 格式压缩的,.bz2 表示采用 bzip2 格式压缩的。gzip 压缩更快,bzip2 压缩率更高(文件更小)
命令 | 描述 | 栗子 |
---|---|---|
tar 选项 压缩包名 要压缩的文件 | 打包并压缩 | tar -zcvf package.tar.gz fileA fileB 将当前目录下的 fileA 、fileB 文件打包并压缩为 package.tar.gz tar -zcvf /tmp/package.tar.gz /root/config 将 /root/config 路径内容打包并压缩到 temp 目录下且包名叫 package.tar.gz |
tar 选项 包名 -C 目标位置 | 解压缩 | tar -zxvf package.tar.gz 将当前目录下 package.tar.gz 包解压缩,默认解压缩到当前目录 tar -zxvf /tmp/package.tar.gz -C /tmp/test 将 /tmp 目录下的 package.tar.gz 包解压缩到 /tmp/test 目录下 |
tar 选项 压缩包名 | 查看压缩包内容 | tar -tf package.tar.gz 查看当前目录下 package.tar.gz 包中的文件 |
vi/vim 多模式文本编辑器
正常模式(一般模式):输入
vi/vim
指令后默认进入的模式。在编辑模式和命令行模式下,可按ESC
进入正常模式编辑模式(插入模式):只能从正常模式下进入,比如
i
、a
、o
、O
等编辑指令。退出则按ESC
键回到正常模式命令行模式(末行模式):只能从正常模式下进入,输入冒号
:
,即可进入,输入指令回车则执行。退出则按ESC
键回到正常模式可视模式:只能从正常模式下进入,输入
v
、V
等指令,在可视化模式下,可以对一个文本块的整体进行操作
正常模式
命令 | 描述 |
---|---|
p | |
yy | |
y$ | 复制光标位置到行末尾内容 |
dd | |
d$(shift + 8) | 剪切光标位置到行末尾内容 |
u | |
ctrl + r | |
x | 删除单个字符(光标所在字符) |
r | 替换单个字符 |
行数 + shrift + g 、行数 + G | 光标移动到指定行数,比如 10 + shift + g 光标移动到第 10 行 |
gg | |
G 、shift + g | |
^(shift + 6) | 光标移动到当前行行首 |
$(shift + 4) | 光标移动到当前行行尾 |
编辑模式
命令 | 描述 |
---|---|
i | |
I | 进入后在光标行首位置 |
a | 进入后在光标的下一位 |
A | 进入后在光标行的末尾 |
o | 进入后在光标行的下一行,原有行会依次向下挪一行 |
O | 进入后在光标行的上一行,原有行会依次向下挪一行 |
h 、l 、j 、k | h 光标向左移动 l 光标向右移动 j 光标向下移动 k 光标向上移动 |
PS:如果使用图形化界面或者远程终端可以用上下左右方向键操作,如果通过字符终端对文本内容进行控制,使用方向键的话则会产生乱码
命令行模式
命令 | 描述 |
---|---|
:w | :w /root/a.txt 将文件 a.txt 保存到 /root 目录下 :w 保存在当前目录 |
:q | |
wq | |
:q! | |
:!<command> | 临时执行一条命令,按 enter 或其他键回来 :!ipconfig 查看 ip 配置 |
/字符串 | 查找字符串,输入字符串后回车光标就会指向第一个匹配字符串 按 n 指向下一个匹配的字符串位置 按 N 、shift + n 指向上一个匹配字符串位置 |
:s/old/new | |
:%s/old/new | 将整个文本每行第一个匹配的 old 字符替换为 new 字符 注意:只替换每一行匹配的第一个字符,其他不会替换 |
:%s/old/new/g | |
:3,5s/old/new/g | 将第三行到第五行匹配的 old 字符替换为 new 字符 |
:set nu | |
:set nonu | 不显示行号。退出后下次进入不显示行号,如果需要的话需要去修改 vim 配置文件,vim /etc/vimrc 在文件最后面加上 set nu 后保存退出即可 |
可视模式
命令 | 描述 | 操作 |
---|---|---|
v | 字符可视模式 | 上下左右移动光标选择内容,按 d 删除选中内容 |
V | 行可视模式 | 上下移动光标选择内容,按 d 删除选中内容 |
ctrl + v | 块可视模式 | 批量修改,上下移动光标时选择的是同一列的内容,然后按 shift + i 在光标处输入内容,然后再按两下 ESC 就批量添加内容了 |
用户 & 用户组
命令 | 描述 | 操作 |
---|---|---|
useradd | 建立用户账号 | useradd marui 创建 marui 这个用户,默认家目录是 /home/marui usermod -g groupOne marui 给已有用户添加组 useradd -g groupOne marui 创建用户并添加组PS :可以在一下文件中查看到用户,/etc/passwd (系统用户主要信息文件)/etc/shadow 存储系统用户密码信息文件,又称为“影子文件” |
userdel | 删除用户 | user marui 删除用户,用户家目录文件还存在,可以再执行 userdel -r marui 命令 userdel -r marui -r 选项,同时删除用户家目录文件 |
passwd | 修改用户密码 | passwd marui 输入命令后提示输入密码、确认密码 passwd 修改当前用户密码,直接输入密码 |
usermod | 修改用户属性 | usermod -d /usr/local marui 修改后用户 marui 家目录变为 /usr/local |
su | 切换用户 | su - USERENAME 使用 login shell 方式切换用户,- 的表示切换用户的同时,将运行环境也一起变更为 USERENAME 的运行环境 |
sudo | 以系统管理者的身份执行指令,经由 sudo 所执行的指令就好像是 root 亲自执行 | sudo shutdown -c 取消关机,输入命令后需要输入当前用户登录密码完成验证 |
exit | 退回到原来用户 | exit |
groupadd | 新建用户组 | groupadd groupOne 新建 groupOne 用户组 |
groupdel | 删除用户组 | groupdel groupOne 删除 groupOne 用户组 |
文件权限
命令 | 描述 | 操作 |
---|---|---|
chmod | 修改文件、目录权限 | |
数字表示法:4(100) + 2(010) + 1(001) = 7 (111) 拥有可读可写权限。 文件创建是 666 权限,但是会减去 umask 值 0022 (输入命令 umask 查看值),所以创建默认文件权限是 644 | chmod 777 /tmp/filename 设置 filename 文件的属主、属组、其他用户权限为 rwx | |
u 表示属主权限、g 属组权限、o 其他用户权限、a 表示三个 | chmod u+x /tmp/filename 表示属主权限增加 x chmod u-x /tmp/filename 表示属主权限减少 x chmod u=x /tmp/filename 表示属主权限只有 x chmod u=rwx /tmp/filename 表示设置属主权限为 rwx |
文件类型 | - | d | l | c | f | s | b |
---|---|---|---|---|---|---|---|
描述 | 普通文件 | 目录 | 符号链接 | 字符特殊文件 | 命名管道 | 套接字文件 | 块特殊文件 |
权限类型 | r | w | x | rx | wx |
---|---|---|---|---|---|
数字权限(二进制) | 4(100) | 2(010) | 1(001) | 5(101) | 3(011) |
文件 | 读 | 写 | 执行 | 可读可写 | 可写可执行 |
目录 | 进入目录 | 显示目录内的文件名 | 修改目录内的文件名 |
网络
网络故障排除
命令 | 描述 | 操作 |
---|---|---|
ping | 检测当前主机和目标主机是否畅通 | ping baidu.com 检测域名 ping 110.242.68.66 检测 ip |
traceroute | 追踪路由,追踪服务器每一跳的质量(辅助 ping 命令使用,当前主机与目标主机网络是畅通的,但是访问还是出现异常) | yum install -y traceroute 安装 traceroute traceroute baidu.com 检测域名 traceroute 110.242.68.66 检测ip |
mtr | 检测当前主机到目标主机中间是否有数据包丢失(辅助 ping 命令使用,当前主机与目标主机网络是畅通的,但是访问还是出现异常) | mtr baidu.com 检测域名 mtr 110.242.68.66 检测ip |
nslookup | 从 DNS 服务器查询域名、ip 或其他 DNS 记录信息 | nslookup baidu.com 查找百度域名对应的ip (最上面的 Server 和 Address 是本次查询的 DNS 服务器,默认端口是 53 ) |
telnet | 检测端口的连接状态(主机能连接但是服务仍然访问不了) | telnet 39.156.66.10 80 ip 和端口都能连接显示如下 Trying 39.156.66.10... Connected to 39.156.66.10. Escape character is '^]'. |
tcpdump | 一款强大的网络抓包工具,帮助分析、调试网络数据 | tcpdump host 39.156.66.10 截获所有 39.156.66.10 的主机收到的和发出的所有的数据包,也可以是域名 |
netstat | 用于统计网络套接字连接情况的工具,TCP 、UDP 、监听状态的套接字等都可以监听到 | netstat -a 展示全部连接 |