Skip to content

Shell与Bash和Sh

牢记

  • Shell可以理解为所有命令的统称,例如 ll cd pwd
  • Sh就是你看到的黑窗口,他本质是一个进程一直在前台运行着
  • Bash是Sh的升级版,Bash与Sh更像是windows里面的cmd和powershell
一个命令回车那一刻
  • 大部分普通命令执行时候,都是在当前黑窗口下延伸执行,也就是当前的Bash下新开一个 子进程 ,命令运行完毕后子进程直接关闭死掉,回到了原Bash
  • source test.sh. test.sh本质是一样的。他们都是在当前bash进程下执行脚本,不开子进程,也不会运行完关闭死掉原bash。
  • exec <命令> 执行的命令程序则不会再开子进程,而是直接替换当前 bash进程,当命令结束后,黑窗口也就直接关闭了。 可以用 exec ls 测试

常用命令大合集

一、文件与目录操作命令(高频)

命令 语法 常用选项/用法 功能说明 示例
ls ls [选项] [目录/文件] -l:长格式显示(别名ll);-a:显示所有文件(含隐藏);-h:人性化显示大小;-d:只显示目录本身 列出目录内容 ls -l、ls -ah /home、ll -d /etc
cd cd [目录路径] cd ~:切换到家目录;cd ..:切换到上一级;cd .:当前目录;cd -:上一次目录;cd /:根目录 切换工作目录 cd /usr/local
pwd pwd [选项] -P:显示真实物理路径(忽略符号链接) 显示当前工作目录路径 pwd -P
mkdir mkdir [选项] 目录名 -p:递归创建多级目录 创建目录 mkdir test、mkdir -p /data/logs
touch touch [选项] 文件名 -d "时间":修改时间戳 创建空文件或修改时间戳 touch file.txt、touch -d "2024-01-01 12:00" file.txt
cp cp [选项] 源 目标 -r/R:递归复制目录;-p:保留属性;-f:强制覆盖;-v:显示过程 复制文件/目录 cp file.txt /tmp/、cp -r /home/test /data/
mv mv [选项] 源 目标 -f:强制覆盖;-v:显示过程 移动/重命名文件/目录 mv file.txt file_new.txt、mv /tmp/file.txt /home/
rm rm [选项] 文件/目录 -r/R:递归删除目录;-f:强制删除;-v:显示过程 删除文件/目录(无法直接恢复) rm file.txt、rm -rf /tmp/test(慎用)
cat cat [选项] 文件名 -n:显示行号;-b:只给非空行显行号 查看短文件内容 cat /etc/hosts、cat -n file.txt
more more 文件名 空格:下一页;Enter:下一行;q:退出 分页查看长文件内容 more /var/log/messages
less less 文件名 ↑/↓:上下滚行;PageUp/PageDown:翻页;/关键词:向下搜索;q:退出 分页查看长文件(功能更强) less /etc/profile
tail tail [选项] 文件名 -n 数字:显示末尾n行;-f:实时监控 查看文件末尾内容(日志监控常用) tail /var/log/nginx/access.log、tail -f /var/log/messages

二、系统管理命令

命令 语法 常用选项/用法 功能说明 示例
top top [选项] P:按CPU排序;M:按内存排序;k:终止进程;q:退出 实时监控系统资源(CPU、内存、进程) top
ps ps [选项] ps aux:查看所有进程;ps -ef:查看完整进程信息 查看系统进程快照 ps aux
kill kill [信号量] PID 15(默认):正常终止;9:强制终止;1:重启进程 通过PID终止进程 kill 1234、kill -9 1234(慎用)
killall killall [选项] 进程名 -9:强制终止所有同名进程 通过进程名终止进程 killall -9 nginx
free free [选项] -h:人性化显示大小 查看系统内存使用情况 free -h
df df [选项] -h:人性化显示;-T:显示文件系统类型 查看磁盘分区使用情况 df -hT
du du [选项] 目录/文件 -h:人性化显示;-s:只显示总大小;-c:汇总总大小 查看目录/文件占用磁盘空间 du -sh /home、du -hc /tmp/*

三、用户与权限管理命令

命令 语法 常用选项/用法 功能说明 示例
useradd useradd [选项] 用户名 -m:自动创建家目录;-s:指定登录shell;-g:指定主组;-G:指定附加组 创建新用户 useradd -m -s /bin/bash -g work test
passwd passwd [用户名] root可改任意用户密码;普通用户只改自身密码 设置/修改用户密码 passwd test(root)、passwd(普通用户)
userdel userdel [选项] 用户名 -r:删除用户同时删除家目录 删除用户 userdel -r test
groupadd groupadd 组名 - 创建用户组 groupadd work
chmod chmod [选项] 权限 目标 -R:递归修改权限;数字方式(如755);符号方式(如u+rwx) 修改文件/目录权限(r=4,w=2,x=1) chmod 755 file.sh、chmod -R 777 /data(慎用)
chown chown [选项] 所有者:所属组 目标 -R:递归修改 修改文件/目录的所有者和所属组 chown test:work file.txt、chown -R test:work /home/test

四、网络管理命令

命令 语法 常用选项/用法 功能说明 示例
ifconfig ifconfig [网络接口名] - 查看/配置网络接口(旧版) ifconfig、ifconfig eth0
ip ip 子命令 ip addr:查看IP;ip link:查看链路状态;ip route:查看路由表 查看/配置网络接口(新版,推荐) ip addr show eth0
ping ping [选项] 目标IP/域名 -c 数字:指定ping次数 测试网络连通性 ping www.baidu.com、ping -c 4 192.168.1.1
netstat netstat [选项] netstat -anpt:显示所有TCP连接及进程 查看网络连接状态(旧版) netstat -anpt
ss ss [选项] ss -anpt:功能同netstat -anpt(效率更高) 查看网络连接状态(新版,替代netstat) ss -anpt
nmtui nmtui 交互操作:
1. 上下键选择选项;
2. Enter确认;
3. ESC退出
图形化交互配置网络(CentOS7+,nmcli的可视化版) nmtui(打开配置界面)、nmtui edit eth0(编辑eth0网卡)
nmcli nmcli [子命令] 常用子命令:
- device:查看/管理网卡设备;
- connection:查看/管理网络连接;
- general:查看网络通用信息;
常用操作:nmcli c show(查看连接)、nmcli c up/down 连接名(启用/禁用连接)
命令行配置NetworkManager网络(CentOS7+主流) nmcli device status(查看网卡状态)、nmcli connection show(查看所有网络连接

五、其他常用命令

命令 语法 常用选项/用法 功能说明 示例
sudo sudo [选项] 命令 - 以其他用户身份执行命令(默认root) sudo ls /root
find find 路径 [选项] 条件 -name "文件名":按名查找;-type f/d:按类型;-size ±大小:按大小;-mtime ±天数:按修改时间 查找文件/目录 find /home -name "*.txt"、find /tmp -size +50M -type f
grep grep [选项] "关键词" 目标 -i:忽略大小写;-n:显行号;-v:反向匹配;-r:递归搜索 文本搜索/过滤内容 grep "error" /var/log/messages、ps aux
tar 压缩:tar [选项] 压缩包 源;解压:tar [选项] 压缩包 -C 目录 z:gzip格式;j:bzip2格式;x:解压;c:创建;v:显示过程;f:指定压缩包 压缩/解压文件 tar -zcvf test.tar.gz /home/test、tar -zxvf test.tar.gz -C /tmp
date date [选项] [格式] date "+%Y-%m-%d %H:%M:%S":指定格式;-s "时间":设置系统时间 查看/设置系统时间 date "+%Y-%m-%d %H:%M:%S"、date -s "2024-05-20 14:30:00"(root)

六、系统日志查看命令

命令 语法 常用选项/用法 功能说明 示例
journalctl journalctl [选项] -u 服务名:查看指定服务日志;-f:实时监控;--since/--until:按时间筛选;-n 数字:显示最近n行 查看systemd系统日志(CentOS7+) journalctl -u nginx、journalctl -f、journalctl --since "1 hour ago"
dmesg dmesg [选项] -h:人性化显示;-T:显示人类可读时间戳 查看内核启动/硬件相关日志 dmesg -T
last last [选项] -n 数字:显示最近n条记录;lastlog:查看所有用户最后登录时间 查看用户登录历史日志 last -n 10、lastlog
grep grep [选项] "关键词" 日志文件 -i:忽略大小写;-n:显行号;-E:正则匹配 过滤日志中指定内容 grep -in "error" /var/log/messages、grep -E "warn
cat/less/tail 同文件操作命令 复用cat/less/tail用法 查看各类日志文件 less /var/log/secure(安全日志)、tail -f /var/log/cron(定时任务日志)

温馨提示

  1. 核心日志路径参考:/var/log/messages(系统通用日志)、/var/log/secure(安全/登录日志)、/var/log/cron(定时任务日志)
  2. 所有命令可通过“命令 --help”查看详细用法(如ls --help)
  3. 复杂命令可通过man手册查看完整文档(如man ls,按q退出)
全速前进中...