在Shell中,“$“和“&“的作用
发布日期:2021-05-26 00:37:19 浏览次数:21 分类:精选文章

本文共 1023 字,大约阅读时间需要 3 分钟。

使用命令运行与输出处理

了解如何在Linux终端中高效管理程序运行与输出

1. 后台运行程序

当你希望程序在后台运行时,可以使用&符号将输出和错误都重定向到同一个文件或管道中。例如:

java -jar yourapp.jar 1 > output.log 2>&1

运行后,你可以通过以下命令查看进程状态:

ps aux | grep java

或者检查进程树(可以在不同终端窗口中找到这个进程):

btm -p PID

如果需要将进程唤醒到前台,可以使用fg命令:

fg PID

2. 标准错误输出

在Linux中,标准错误输出与标准输出是分开处理的。你可以将它们分别重定向。例如,查看目录中的文件:

find /AAA/BBBB/CCC -type f

如果你希望将搜索结果排序并列出详细信息,可以链式管道传递:

find /AAA/BBBB/CCC -type f | sort | xargs ls -lpd > /path/to/file.txt 2>&1

2>&1 表示将标准错误输出也重定向到指定文件中。

常见的重定向方式:

  • &1 : 将标准输出重定向到指定文件或管道。
  • &2 : 将错误信息重定向到指定文件或管道。
  • & amp;1 : 重定向标准输出和错误信息。

3. 条件执行命令

在编写脚本或进行终端操作时,可能需要根据条件执行不同的命令。这可以通过逻辑符号&&&和&||实现:

  • &&& :只要前一个命令执行成功,才会执行后面的命令。这个命令的执行顺序优先于||。
  • &|| :只要前一个命令执行失败,才会执行后面的命令。

例如,你可以创建一个无限循环,在每秒钟执行一次特定命令:

while true; do second=$(date +%S); [ $second -ne "00" ] && (echo $second; sleep 1;) || (echo "waiting:$second"; sleep 1;) done

或者,你可以检查特定条件并执行相应的操作。

如果需要在命令中使用背景任务(&),可以在命令末尾添加&符号:

命令名称 &

注意:请确保在终端窗口中正确关闭所有背景任务,避免资源泄漏。

常见错误

在终端中,输入某些命令可能会导致你无法找到启动的shell。例如:

./test.sh 2>&1 1>&/dev/null &

此类方式可能导致你无法管理这些进程,因为它们可能运行在不同的终端内。

上一篇:bat处理中的管道[|]
下一篇:写邮件时的注意事项

发表评论

最新留言

网站不错 人气很旺了 加油
[***.192.178.218]2025年05月01日 21时55分44秒

关于作者

    喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!

推荐文章