👱
师父,这招数打出去(输出)直接就飘散在空中(屏幕)了,能不能把它收进盒子里(文件)?还有,能不能把别人的内力(脚本)吸过来给我用?
👳
当然可以。把输出收进文件叫重定向(Redirection),把别人的脚本拿来用叫文件包含(Include)。这可是高深的内功心法!
📦 隔空取物 (输入输出重定向)
默认情况下,命令的结果是显示在屏幕上的。我们可以改变它的流向。
➡️ 输出重定向 (存盘)
- command > file:把结果写进文件。注意:会覆盖原来的内容!(化骨绵掌,旧的都没了)
- command >> file:把结果追加到文件末尾。(接骨术,接着后面写)
例子:echo "韦小宝到此一游" >> wall.txt
⬅️ 输入重定向 (读书)
- command < file:让命令从文件里读内容,而不是从键盘读。
例子:wc -l < wall.txt (统计墙上有几行字)
🗑️ 垃圾桶 (/dev/null)
有个神奇的黑洞叫 /dev/null。任何东西扔进去都会消失。如果你不想看某个命令的输出,就把它扔进去。
command > /dev/null
🧛♂️ 吸星大法 (文件包含)
有时候,你想在一个脚本里用另一个脚本里定义的函数或变量。这就需要“吸”过来。
用法很简单,用点号 . 或者 source 命令。
# 假设有个 kungfu.sh 里面定义了 fight 函数
# 在 main.sh 里:
. ./kungfu.sh # 注意点号后面有空格!
# 或者
source ./kungfu.sh
fight # 现在可以直接用别人的招式了!
# 在 main.sh 里:
. ./kungfu.sh # 注意点号后面有空格!
# 或者
source ./kungfu.sh
fight # 现在可以直接用别人的招式了!
🖐️ 动手时刻:韦爵爷的记账本
- 编写通用配置
config.sh:currency="银两" rate=100 - 编写主程序
account.sh:#!/bin/bash # 1. 吸取配置 source ./config.sh echo "当前汇率:1 $currency = $rate 文钱" # 2. 记账(重定向) echo "收入:500 $currency" >> ledger.txt echo "支出:200 $currency" >> ledger.txt echo "记账完毕!账本内容如下:" cat ledger.txt - 运行:
bash account.sh