学习中心/工程实践/Linux/Linux 1:终端里把命令接起来
· Linux · 1 · 终端
Linux 1:终端里把命令接起来
走动只是开头。管道、重定向、退出码、PATH。这块过关,终端是手。

你面对的是 shell,不是整台 Linux
Linux 是操作系统。你敲进去的是 shell,常见是 bash。这一块走完,终端就该是手,不是黑盒子:知道自己在哪,能把命令接起来,失败了知道为什么。
- 在哪pwd / ls / cd
- 接| && ||
- 重定向> 2>
- 看失败echo $?
1. 打开、在哪、走动
本机打开 Terminal。远程先看 SSH 那一篇。提示符末尾 $ 是普通用户,# 是 root。这篇用普通用户。
- 看当前目录的完整路径
pwd - 看含隐藏项。名字以 . 开头的是隐藏文件
ls -la - 进走进去
cd /tmp - 回回到上一次所在的目录
cd - - 上上一级。~ 是家目录,迷路就 cd ~
cd ..
/ 是整台机器的根。路径写绝对的(从 / 起)不容易迷路。Tab 补全路径,少打错字。pwd 和 ls 不删东西。
2. 历史、帮助、这条命令是谁
- 看最近敲过的。上下箭头也能翻
history | tail -n 20 - 看是系统命令、函数,还是别名
type ls - 看手册。空格翻页,q 退出。没有 man 就 ls --help
man ls
Ctrl+R 按关键字搜历史。不要把带密码的命令写进命令行,历史文件会留下。
3. 变量和 PATH
- 看家目录。echo $USER 是当前用户
echo $HOME - 看shell 按这个顺序找可执行文件
echo $PATH - 看实际会跑哪一个。没有就 which: not found
which python3
命令找不到,多半是没装,或 PATH 里没有那个目录。临时加:export PATH="$HOME/bin:$PATH"。写进 ~/.bashrc 才长期有效。改完要 source ~/.bashrc,或新开一个终端。
4. 把命令接起来
- 接左边的输出,变成右边的输入
ls /var/log | grep syslog - 接左边成功才跑右边
cd /tmp && ls - 接左边失败才跑右边
cd /no/such || echo fail - 看上一条的退出码。0 成功,非 0 失败
false; echo $?
管道是数据往下流。&& / || 是按成败决定下一步。脚本里看 $?,比「好像没报错」可靠。
5. 重定向
- 写标准输出写进文件。原文件会被盖掉
ls /tmp > /tmp/list.txt - 写追加,不盖掉
date >> /tmp/list.txt - 写标准错误单独留下
ls /no/such 2> /tmp/err.txt - 丢正常和错误都丢掉。排查时不要用
ls /no/such >/dev/null 2>&1
1 是标准输出,2 是标准错误。程序「没出字」不等于成功,错误可能在 2 里。
6. 引号和通配
- 看当前目录下名字以 .txt 结尾的。匹配不到会原样传给命令
ls *.txt - 看双引号里变量会展开
echo "home is $HOME" - 看单引号里原样留下
echo 'home is $HOME'
路径有空格,必须加引号。rm *.log 之前先 ls *.log 看会命中谁。通配是 shell 做的,不是 rm 做的。
7. 中断、挂起、后台
- 停跑起来后 Ctrl+C 中断。这是 SIGINT
sleep 30 - 看Ctrl+Z 会挂起当前前台任务。jobs 列出
jobs - 回把挂起的任务拉回前台
fg
关掉终端,前台和没交代的后台都会没。要长期跑,用 systemd(服务那一篇),不要靠 & 和 nohup 过日子。
这块过关:能走动,能把两条命令接成一条,失败先看 $? 和 2>。下一篇才碰复制和删除。