
在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 &
此类方式可能导致你无法管理这些进程,因为它们可能运行在不同的终端内。
发表评论
最新留言
网站不错 人气很旺了 加油
[***.192.178.218]2025年05月01日 21时55分44秒
关于作者

喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!
推荐文章
$route 和 $router详解、区别、示例代码
2023-01-25
$scope angular在controller之外调用
2023-01-25
&和&&的区别
2023-01-25
064:vue+openlayers根据坐标来显示点、线段、圆形、多边形
2023-01-25
(ios实战)单个ViewControl适配不同ios版本xib文件实现
2023-01-25
(Leetcode-字符串-2) 字符串运算
2023-01-25
(type interface {}) to type string
2023-01-25
(五)java多线程之Lock类
2023-01-25
(十一) 构建dubbo分布式平台-dubbo简介
2023-01-25
asp.net MVC 强类型视图表单Ajax提交的注意事项
2023-01-25
canvas设置文字阴影
2023-01-26
Centos 5.3 ADSL拨号组建中小型企业网络
2023-01-26
Centos 5.8 安装后不能使用ifconfig
2023-01-26