有没有办法检测是否有声音正在播放(使用 bash 脚本)?
(我在Ubuntu 11.10上使用pulseaudio。)
我计划在指示器中使用它来直观地提醒我静音打开时正在播放声音。
我正在寻找的不是如何在 bash 中为另一个程序添加自动完成功能,而是一种将 bash 中发生的事情的结果转换为字符串的方法,基本上:
autocomplete "/etc/apa"
Run Code Online (Sandbox Code Playgroud)
会回来
/etc/apache2/
Run Code Online (Sandbox Code Playgroud)
所以我可以在我的脚本中使用它。
非常感谢任何帮助,因为我能找到的只是如何使用“完整”的 bash 函数,它做了一些不同的事情;)
干杯,拉斐尔
这似乎是一个通用实用程序,我想知道是否已经存在任何东西。我试图在脚本运行后将带时间戳的日志文件放在目录中,但需要先确保子目录(以及链中的任何目录)存在。
例如,如果完整的相对路径是./2014/Backups/Logfiles,我想检查是否2014不存在,创建它,如果Backups不存在,创建它,如果Logfiles不存在,创建它....
到目前为止,我已经得到了这样的东西(但这只是一步):LOGFILE_DIRECTORY="./2014/Backups/Logfiles"
if [ ! -d "$LOGFILE_DIRECTORY" ]; then
mkdir "$LOGFILE_DIRECTORY" >> $LOGFILE 2>&1
fi
Run Code Online (Sandbox Code Playgroud)
if [ ! -d "$LOGFILE_DIRECTORY" ]; then
mkdir -p "$LOGFILE_DIRECTORY" >> $LOGFILE 2>&1
fi
Run Code Online (Sandbox Code Playgroud) 有一个 bash 脚本将对引用 sqlite 数据库的文件执行“一些魔法”\xe2\x84\xa2,并且在执行“一些魔法”\xe2\x84\xa2 后,应该更新数据库。这是简化的代码
\n\nsqlite3 database.db "select NUMBER from table WHERE STATUS = \'N\'" | while read line; do\n SELECTION=$(echo $line | awk -F\'|\' \'{ print $1 }\')\n [some magic]\xe2\x84\xa2\n sqlite3 database.db "update table SET STATUS=\'Y\' WHERE NUMBER=\'$SELECTION\'"\ndone\nRun Code Online (Sandbox Code Playgroud)\n\n一切正常,sqlite 数据库将被逐行读取,我可以对引用的文件执行“一些魔法”\xe2\x84\xa2,但我可以\xc2\xb4t 更新数据库中的行 - I\xc2\xb4ve出现错误:
\n\n\n\n\n错误:数据库已锁定
\n
有人知道我如何在读取数据库时更新数据库吗?或者还有其他解决方案可以让我做到这一点吗?
\n我正在尝试在我的 bash 脚本中使用jq 解析器,但我对它的工作方式感到困惑,有人可以解释一下我做错了什么吗?
这是来自外部服务的原始文件,我需要从中获取value:
root@test ~ # cat test.json
{"sensors":[{"id":34585,"value":-3.06,"time":1457031003}]}
Run Code Online (Sandbox Code Playgroud)
尝试将其发送至jq:
root@test ~ # cat narod.json | jq
{
"sensors": [
{
"id": 34585,
"value": -3.06,
"time": 1457031003
}
]
}
Run Code Online (Sandbox Code Playgroud)
试图获得sensors:
root@test ~ # cat narod.json | jq '.sensors'
[
{
"id": 34585,
"value": -3.06,
"time": 1457031003
}
]
Run Code Online (Sandbox Code Playgroud)
试图value从sensors:
root@test ~ # cat narod.json | jq '.sensors.value'
jq: error (at <stdin>:0): Cannot index array with …Run Code Online (Sandbox Code Playgroud) 我有一个脚本,我试图从 Linux 移植到 Darwin/OS X。Linux 版本目前依赖于 watch 命令,默认情况下它似乎没有安装在 Darwin/OS X 上。什么是原生替代品?
我正在使用“while read”循环浏览文本文件。我从每一行读取三个变量 - 两个文件名和一个十进制数。我知道这适用于普通设置(循环、读取行、回显行、提取变量,仅此而已),因为我已经在输入文件上对其进行了测试。
但是,一旦我添加了例程的内容,我就会得到一个奇怪的结果 - 这是对 ffmpeg 的调用以合并由文件名表示的音频和视频流。连续的“读取”操作会忽略行中的前导字符。我在这里读到在“while read”循环中调用“read”输入可能会导致问题,并想知道 ffmpeg 调用是否正在做一些混淆 bash 的事情,但这似乎不太可能而且很奇怪!注意:我不太了解 ffmpeg 调用 - 我是从另一个问题的答案中得到的。
任何帮助,将不胜感激!
第一个“读取”按预期工作(并且 ffmpeg 命令完成):
LINE 1
vidsNeedingSound/448£generic@06_10_16-09_30_47.mp4 soundToAdd/448£generic@06_10_16-12_11_54.wav 6.988354
V: vidsNeedingSound/448£generic@06_10_16-09_30_47.mp4 A: soundToAdd/448£generic@06_10_16-12_11_54.wav D: 6.988354
Run Code Online (Sandbox Code Playgroud)
第二个“读取”从行首丢失 36 个字符(并且 ffmpeg 命令失败,因为由变量 V 表示的文件不指向文件,该文件取行的第一项):
LINE 2
6-09_30_47.mp4 soundToAdd/452£generic@06_10_16-12_11_54.wav 9.64663
V: 6-09_30_47.mp4 A: soundToAdd/452...
Run Code Online (Sandbox Code Playgroud)
第三个“读取”按预期工作(并且 ffmpeg 命令完成):
LINE 3
vidsNeedingSound/452£left@06_10_16-09_30_47.mp4 soundToAdd/452£left@06_10_16-12_11_54.wav 9.862118
V: vidsNeedingSound/452£left@06_10_16-09_30_47.mp4 A: soundToAdd/452...
Run Code Online (Sandbox Code Playgroud)
第四个“读取”从行首丢失 37 个字符(比最后一个失败多一个)(并且 ffmpeg 命令失败):
LINE 4
09_30_47.mp4 soundToAdd/452£right@06_10_16-12_11_54.wav 9.431392
V: 09_30_47.mp4 A: soundToAdd/452....
Run Code Online (Sandbox Code Playgroud)
这就是模式。如果之前没有成功调用 ffmpeg,则“读取”按预期工作。在每次连续成功的 ffmpeg …
我可以通过 cygwin 运行 Windows 命令,并将参数传递给它吗?
具体来说,我想要一个运行 Robocopy 的 bash 脚本,但问题很普遍。
Robocopy 比 rsync 更适合我的需求,但批处理脚本是反复无常的。PowerShell 看起来很有趣,但如果可能的话,我宁愿不学习一门新语言,而且 bash 非常方便。
我找不到任何关于它的提及。
谢谢
由于应用程序限制,我有两个用户需要使用相同的登录名。
这些用户对 shell 提示应该是什么样子有很大的不同意见。其中一位甚至坚持要修改色觉。这导致了 .bashrc PS1 争议。我已经给了他们脚本来设置他们自己的偏好,但是......让我们说这很复杂。
幸运的是,它们都从具有已知 IP 地址的位置连接。有没有一种方法可以将用户的远程 IP 地址合并到一个条件中,从而为他们提供他们想要的东西,而无需任何额外的步骤?他们通过 ssh 连接。
如何"arn:aws:iam::xxxxxxx:role/3"在下面添加一行,"arn:aws:iam::xxxxxxx:role/2"在"arn:aws:iam::xxxxxxx:role/2",之后添加一个逗号。
前:
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Principal": {
"Service": "ec2.amazonaws.com"
},
"Action": "sts:AssumeRole"
},
{
"Effect": "Allow",
"Principal": {
"AWS": [
"arn:aws:iam::xxxxxxx:role/1",
"arn:aws:iam::xxxxxxx:role/2"
]
},
"Action": "sts:AssumeRole"
}
]
}
Run Code Online (Sandbox Code Playgroud)
后
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Principal": {
"Service": "ec2.amazonaws.com"
},
"Action": "sts:AssumeRole"
},
{
"Effect": "Allow",
"Principal": {
"AWS": [
"arn:aws:iam::xxxxxxx:role/1",
"arn:aws:iam::xxxxxxx:role/2",
"arn:aws:iam::xxxxxxx:role/3"
]
},
"Action": "sts:AssumeRole"
}
]
}
Run Code Online (Sandbox Code Playgroud) bash-scripting ×10
bash ×4
script ×2
audio ×1
autocomplete ×1
batch-file ×1
bsd ×1
command-line ×1
cygwin ×1
ffmpeg ×1
linux ×1
macos ×1
perl ×1
sed ×1
shell-script ×1
sqlite ×1
ubuntu-11.10 ×1
windows ×1