返回

Bash 中如何自动捕捉上一个命令的输出:终极指南

Linux

如何自动捕捉 Bash 中上一个命令的输出

前言

在 Bash 中操作命令行时,经常需要获取上一个命令的输出或参数。本文将探讨如何使用 Bash 中的特殊变量来实现这一点,从而简化你的脚本和交互式会话。

捕捉上一个命令的输出

使用 $(...) 语法

最常用的方法是使用 $(...) 语法。这将执行括号内的命令并捕获其输出。例如:

output=$(find . -name foo.txt)

现在,output 变量将包含 find 命令的输出,即所有以 foo.txt 命名的文件路径。

使用 last_command 变量

last_command 特殊变量存储了上一个命令的完整输出。你可以将其存储在其他变量中:

mv "$last_command" /some/new/location

获取上一个命令的最后一个参数

使用 $_ 特殊变量可以获取上一个命令的最后一个参数:

ls /tmp
cd "$_"

现在,$_ 将包含 /tmp 目录的路径。

示例

考虑以下示例脚本:

# 查找 foo.txt 文件并将其路径存储在变量中
file=$(find . -name foo.txt)

# 将文件移动到新位置
mv "$file" /some/new/location

# 显示文件的新位置
echo "$file 已移动到 /some/new/location"

注意事项

  • 这些变量仅在当前会话中可用。
  • 如果上一个命令以非零状态退出(表示失败),则 last_command 将为空。
  • 变量的行为可能因 Bash 版本而异。

结论

Bash 中的这些特殊变量提供了强大而方便的方法来访问上一个命令的输出和参数。这对于自动化任务、简化脚本和提高交互式会话效率非常有用。

常见问题解答

  1. 如何将上一个命令的输出存储在变量中并供以后使用?

    可以使用 last_command 变量存储上一个命令的输出,然后将其赋值给另一个变量。

  2. 如何获取上一个命令的最后一个参数?

    可以使用 $_ 特殊变量获取上一个命令的最后一个参数。

  3. 为什么我无法访问 last_command 变量?

    确保上一个命令没有以非零状态退出。

  4. 这些变量在哪些 Bash 版本中可用?

    $_last_command 变量在 Bash 的所有版本中都可用。

  5. 除了上述方法之外,还有其他获取上一个命令输出的方法吗?

    还有其他方法,例如使用 history 命令或解析 $HISTFILE。但是,它们通常不如 $(...) 语法或 last_command 变量那么方便。