工具
Linux 语法速查
几秒内查到 chmod、find、tar、管道等日常 Linux 写法。
搜命令名或想做的事,复制示例贴到终端。按 / 聚焦搜索框。
显示 66 条
Shell 语法
|
command1 | command2
把上一条命令的输出交给下一条。
ps aux | grep nginx在进程列表里过滤
cat access.log | grep 404 | wc -l统计匹配行数
ls -lt | head按修改时间倒序
>
command > file command >> file
把输出写入文件。> 覆盖,>> 追加。
echo hello > out.txt覆盖写入
echo more >> out.txt追加写入
ls > files.txt保存文件列表
2>
command 2> file command > file 2>&1
把错误输出存下来,或和正常输出合并。
make 2> errors.txt只保存错误
cmd > all.log 2>&1正常和错误写到一起
cmd &> all.log同上,短写法
&& ||
cmd1 && cmd2 cmd1 || cmd2
上一条成功才执行 &&,失败才执行 ||。
mkdir -p dist && cp app dist/建目录成功才复制
grep -q ready status.txt || echo missing找不到就提示
test -f .env && echo found判断文件是否存在
$VAR
export NAME=value echo $NAME
读取和设置环境变量。
export PATH="$PATH:/opt/bin"把目录加进 PATH
echo $HOME打印家目录
printenv PATH打印 PATH
quotes
'literal' "expand $VAR"
单引号原样保留;双引号里的 $VAR 仍会展开。
echo 'keep $HOME as text'不展开变量
echo "user is $USER"展开 $USER
grep "error 500" app.log带空格的关键字
*
* ? [abc] **
用通配符一次匹配多个文件名。
ls *.log所有 .log
rm file-?.txt单字符通配
cp src/*.{js,ts} dist/js 或 ts
tee
command | tee file
一边在屏幕上看输出,一边写入文件。
make | tee build.log边看边存
echo ok | tee -a notes.txt追加到文件
history
history !! !n Ctrl+R
重跑以前敲过的命令。
history 20最近 20 条
!!重跑上一条
!123重跑第 123 条
alias
alias name='command'
给常用命令起短名字。
alias ll='ls -lah'll 等于 ls -lah
alias列出别名
unalias ll删除别名
echo
echo [text]
打印文本,常配合重定向使用。
echo hello打印文字
echo -n no-newline不换行
printf "%s\n" "$HOME"printf 写法
文件目录
ls
ls [options] [path]
列出目录里的文件。
ls只显示名字
ls -lah详细、含隐藏、可读大小
ls -lt最新的在前
cd
cd [path]
切换当前目录。
cd回家目录
cd /var/log进入路径
cd ..上一级
cd -上一次所在目录
pwd
pwd
显示当前路径。
pwd我在哪
mkdir
mkdir [-p] dir
创建目录。-p 会连同上级一起建。
mkdir logs建一个目录
mkdir -p src/app/utils连同上级一起建
rm
rm [-r] [-f] path
删除文件或目录,无法撤销。
rm file.txt删文件
rm -r old-dir/删目录
rm -rf tmp/强制、不询问危险
cp
cp [-r] src dest
复制文件或目录。
cp a.txt b.txt复制文件
cp -r src/ backup/复制目录
cp -p file.txt backup.txt保留时间戳
mv
mv src dest
移动或重命名。
mv old.txt new.txt改名
mv file.txt /tmp/挪到别的目录
find
find <path> [expression]
按名称、时间、类型或大小找文件。
find . -name "*.log"按文件名
find /var -mtime -7最近 7 天改过
find . -type f -size +100M大于 100MB
find . -name "*.tmp" -delete删掉匹配项危险
touch
touch file
新建空文件,或更新时间戳。
touch notes.txt建一个空文件
touch a.txt b.txt一次建多个
ln
ln -s target link
创建指向另一路径的软链接。
ln -s /opt/app/bin/tool ./tool创建软链接
ls -l tool确认链接指向
查看
cat
cat file
一次性打印整个文件。
cat README.md打印文件
cat a.txt b.txt两个文件拼在一起
cat > notes.txt键盘输入写入(Ctrl+D 结束)
less
less file
分页查看。q 退出,/ 搜索。
less /var/log/syslog打开日志
dmesg | less分页看命令输出
head
head [-n N] file
看文件开头几行。
head file.txt前 10 行
head -n 20 file.txt前 20 行
tail
tail [-n N] [-f] file
看末尾几行。-f 跟踪不断增长的日志。
tail file.txt后 10 行
tail -n 50 file.txt后 50 行
tail -f /var/log/nginx/access.log跟踪实时日志
wc
wc [-l] [-w] [-c] file
统计行数、词数或字符数。
wc -l file.txt行数
wc file.txt行、词、字节
diff
diff file1 file2
比较两个文件的差异。
diff a.txt b.txt基本对比
diff -u old.txt new.txtunified 格式
date
date [+format]
显示日期、时间或 Unix 时间戳。
date本地日期时间
date +%Y-%m-%d年月日
date +%sUnix 秒
文本
grep
grep [options] pattern [file]
找出包含某段文字的行。
grep error app.log在一个文件里搜
grep -i error app.log忽略大小写
grep -n -r "TODO" src/递归并显示行号
grep -v debug app.log反过来:不含该词的行
sed
sed 's/old/new/g' file
替换文件或管道里的文本。
sed 's/foo/bar/g' file.txt只打印替换结果
sed -i 's/foo/bar/g' file.txt直接改文件
sed '/^#/d' file.txt删掉注释行
awk
awk '{print $N}' file
取出某几列,或做简单合计。
awk '{print $1}' file.txt第一列
awk -F, '{print $1,$3}' data.csvCSV 的第 1、3 列
awk '{sum+=$1} END {print sum}' nums.txt对一列求和
cut
cut -d SEP -f N file
按分隔符取出某一列。
cut -d',' -f1 data.csvCSV 第一列
cut -d: -f1 /etc/passwdpasswd 里的用户名
cut -c1-10 file.txt前 10 个字符
sort
sort [options] file
排序。-n 按数字排。
sort file.txt按字母
sort -n nums.txt按数字
sort -r file.txt倒序
uniq
sort file | uniq
去掉重复行。需要先 sort。
sort file.txt | uniq去重
sort file.txt | uniq -c统计出现次数
sort file.txt | uniq -d只看重复行
xargs
command | xargs [command]
把名单变成另一条命令的参数。
find . -name "*.log" | xargs grep error在找到的文件里 grep
cat urls.txt | xargs curl -O逐个下载 URL
find . -name "*.tmp" | xargs rm删除找到的文件
进程
ps
ps [options]
查看进程和 PID。
ps aux全部进程
ps aux | grep node按名字找
ps -ef --forest进程树
top
top htop
实时看 CPU 和内存。q 退出。
top交互监控
top -p 1234只看一个 PID
htop如果装了 htop
kill
kill [-SIGNAL] PID
按 PID 结束进程。先不要用 -9。
kill 1234正常结束 SIGTERM
kill -15 1234和默认一样
kill -9 1234强制结束危险
pkill
pkill name killall name
按进程名结束,不用记 PID。
pkill nginx按名字
killall nodekillall 写法
pgrep -a node先看匹配到谁
jobs
jobs bg fg command &
放到后台跑,或再拉回前台。
sleep 60 &放到后台
jobs列出任务
fg %1拉回前台
bg %1后台继续跑
nohup
nohup command &
断开终端后命令继续跑。
nohup ./server &退出后还跑
nohup npm start > app.log 2>&1 &输出写到日志
free
free -h
看内存和 swap。uptime 看负载。
free -h可读的内存数字
uptime运行时间和负载
uname
uname [-a] [-r] [-m]
看内核和架构。
uname -a全部内核信息
uname -r内核版本
lscpuCPU 信息
watch
watch [-n N] command
每隔几秒重复执行同一条命令。
watch -n 1 df -h每秒刷新
watch -n 2 'ps aux | grep nginx'盯着过滤后的进程
网络
ip
ip addr ip route
看网卡地址和路由。用来替代 ifconfig。
ip addr地址
ip route路由
ip link网卡
ping
ping [-c N] host
测试主机是否通。
ping 8.8.8.8直到 Ctrl+C
ping -c 4 example.com只 ping 4 次
ss
ss -tuln
看监听端口。用来替代 netstat。
ss -tuln正在监听的端口
ss -tulnp带上进程名
ss -tuln | grep :80过滤 80 端口
curl
curl [options] URL
发 HTTP 请求,适合调接口和下载。
curl https://example.comGET 响应体
curl -I https://example.com只看响应头
curl -X POST -H 'Content-Type: application/json' -d '{"ok":true}' https://api.example.com发 JSON POST
curl -o file.tgz https://example.com/file.tgz保存到文件
wget
wget URL
下载文件。
wget https://example.com/file.tgz下载
wget -c https://example.com/file.tgz断点续传
scp
scp src user@host:dest
通过 SSH 拷文件。
scp file.txt user@host:/tmp/本地 → 远程
scp user@host:/var/log/app.log .远程 → 本地
scp -r dist/ user@host:/var/www/拷目录
rsync
rsync -avz src dest
同步目录,只传有变化的部分。
rsync -avz ./src/ user@host:/opt/app/同步到服务器
rsync -avz --progress src/ dest/显示进度
rsync -avz --delete src/ dest/目标多余的也删掉
ssh
ssh user@host
登录远程机器。
ssh user@192.168.1.10密码或密钥登录
ssh -i ~/.ssh/id_ed25519 user@host指定私钥
ssh user@host -p 2222指定端口
lsof
lsof -i :port
看哪个进程占用了某个端口。
lsof -i :3000谁占用 3000
lsof -i TCP:80TCP 80
lsof -p 1234某 PID 打开的文件
压缩磁盘
tar
tar -c|x -z -f archive.tar.gz [path]
打包或解开 .tar.gz。z=gzip,c=创建,x=解开,f=文件名。
tar -czf backup.tar.gz src/打成 .tar.gz
tar -xzf backup.tar.gz解到当前目录
tar -tzf backup.tar.gz只看里面有什么
tar -xzf backup.tar.gz -C /tmp/解到指定目录
gzip
gzip file gunzip file.gz
压缩或解开单个文件。
gzip file.txt得到 file.txt.gz
gunzip file.txt.gz还原文件
gzip -k file.txt保留原文件
zip
zip archive.zip files unzip archive.zip
创建或解开 .zip。
zip backup.zip a.txt b.txt压缩若干文件
zip -r backup.zip src/压缩目录
unzip backup.zip解到当前目录
unzip -l backup.zip只看内容
df
df -h
按分区看磁盘剩余空间。
df -h所有分区
df -h .当前目录所在盘
du
du -h [path]
看哪些目录占空间。
du -sh .这个目录合计
du -h --max-depth=1只看下一级
du -h | sort -hr | head从大到小
权限
chmod
chmod MODE file
改权限。755=rwxr-xr-x,644=rw-r--r--。
chmod 755 script.sh属主可读写执行,其他人可执行(脚本/目录)
chmod +x script.sh加上可执行
chmod 644 file.txt属主读写,其他人只读(普通文件)
chmod -R 755 dir/递归
chmod 777 file谁都能写,尽量别用危险
chown
chown user:group file
改文件所有者和组。
chown www-data:www-data app.sock单个文件
chown -R deploy:deploy /var/www/递归
sudo
sudo command su - user
用 root 跑一条命令,或切换用户。
sudo apt update用 root 跑一条
sudo -u www-data command用另一个用户跑
su -切到 root shell
sudo visudo安全编辑 sudoers
whoami
whoami id groups
看当前用户和所在组。
whoami用户名
idUID 和组
groups组名
who谁登录着
包管理
apt
apt update apt install pkg
Debian / Ubuntu 安装软件。
sudo apt update刷新软件列表
sudo apt install curl安装
apt search nginx搜索
sudo apt remove curl卸载
apt show curl看包信息
dnf
dnf install pkg yum install pkg
Fedora / RHEL / CentOS 安装软件。
sudo dnf install curlFedora/RHEL 安装
sudo dnf update更新
dnf search nginx搜索
sudo yum install curl旧的 yum 写法
服务
systemctl
systemctl start|stop|status|enable name
启动、停止或设置开机自启。
systemctl status nginx在不在跑
sudo systemctl start nginx现在启动
sudo systemctl restart nginx重启
sudo systemctl enable nginx开机自启
systemctl --failed失败的服务
journalctl
journalctl -u name [-f]
看服务日志。
journalctl -u nginx这个服务的日志
journalctl -u nginx -f实时跟踪
journalctl -p err -n 50最近的错误
dmesg | tail内核信息
使用说明
输入命令名,或你想做的事(解压、权限、杀进程)。也可以用分类筛选。复制示例后贴到终端。按 / 跳到搜索框。
常见问题
- 这是完整手册吗?
- 不是。每条命令只保留语法骨架和几条可复制示例。需要全部参数时再用 man 或 --help。
- 中文和英文都能搜吗?
- 可以。试试 find、chmod、解压、管道、杀进程。命令名、示例和提示里的词都能匹配。
- 会在服务器上执行命令吗?
- 不会。本页只帮你查语法,不会执行或上传任何内容。