标签: bash

在 bash 脚本运行时阻止 Mac 进入睡眠状态,然后在完成后让它像往常一样进入睡眠状态

我让我的 Mac 在夜间醒来并运行 rsync 来备份它。这是通过节能器 > 计划配置的。

然而,它似乎在完成任何事情之前会重新进入睡眠状态,所以我需要在 rsync 运行的 bash 脚本的执行过程中停止它进入睡眠状态。

我认为最好的方法(如果可能的话)是发出一个命令,在 rsyncs 之前将睡眠超时设置为“从不”或很长的超时,然后在完成后恢复正常。有没有更好的解决方案来做到这一点?

mac sleep bash rsync

14
推荐指数
3
解决办法
1万
查看次数

在未登录的情况下让 bash 脚本在远程终端上运行?

我有一个需要几个小时才能运行的 bash 脚本。在它运行时,我想做其他事情,这可能涉及注销或断开互联网连接(我的脚本在各种计算机上运行网络测试)。

我知道有一个命令可以让我从远程终端运行我的测试并在终端运行时注销。有谁知道这个命令是什么?

remote-desktop ssh bash process

14
推荐指数
1
解决办法
2985
查看次数

仅当某些目录中的文件被修改时才执行 git pre-commit 钩子

我正在尝试为 git pre-commit 钩子创建一个 bash 脚本。每当进行提交时,我想检查某个目录中的文件是否是暂存文件的一部分,如果是,则运行命令(Grunt 任务)。到目前为止,我一切正常,除了只有在修改某些文件时才运行。我正在努力让它发挥作用:

SRC_PATTERN="site/assets/js/"
if [ grep --quiet $SRC_PATTERN `git diff --cached --name-only` ]
then
  echo "none"
  exit 0
fi
Run Code Online (Sandbox Code Playgroud)

不幸的是,这给了我错误。

bash git

14
推荐指数
3
解决办法
1万
查看次数

如何在bash中将ASCII字符转换为整数?

我正在解析 ntpq 输出以通过控制台实用程序将其内容传递到我们的数据库。第一个元素是一个包含远程状态的单字符子字符串。它可以是“*”、“+”、“o”、“#”等。我最好把它作为数字放到数据库中,这样存储过程就可以很容易地保存它,但我不知道,如何将字符转换为 bash 中的 ASCII 表示。

bash

14
推荐指数
1
解决办法
2万
查看次数

如何在 Mac OS X 下以毫秒为单位获取 Bash 执行时间?

我已经检查过这个,但是提供的解决方案对我不起作用。

使用 date 我可以获得以秒为单位的执行时间:

T="$(date +%s)"
#some work here
T="$(($(date +%s)-T))"
echo "execution time (secs) ${T}"
Run Code Online (Sandbox Code Playgroud)

但是,当我尝试这样做时:

T="$(date +%s%N)"
#some work here
T="$(($(date +%s%N)-T))"
Run Code Online (Sandbox Code Playgroud)

将 %N(如上)添加到日期以获得纳秒精度我得到以下错误:-bash: 1369320760N: value too great for base (error token is "1369320760N")

有谁知道如何在 Mac OS X 下使用 bash 测量以毫秒为单位的执行时间?

unix bash macos

14
推荐指数
4
解决办法
3万
查看次数

(*\:2) 中的星号、反斜线、冒号和两个是什么意思?

以下ls命令是什么意思?

ls -l *\:2,*T
Run Code Online (Sandbox Code Playgroud)
  • ls = 列表
  • -l = 长(列表)
  • *T可能意味着T最后

但是那个*\:2和逗号呢?

bash expansion

14
推荐指数
3
解决办法
3743
查看次数

通过 curl 获取响应正文并显示 HTTP 代码

我有返回 JSON(响应正文)的端点。我需要通过 curl 响应主体并对其进行处理(例如使用 jq)。有用:

response=$(curl -s https://swapi.co/api/people/1/?format=json)
name=$(echo $response tmpFile | jq '.name') # irrelevant command, but I need here response body
echo "name:"$name
Run Code Online (Sandbox Code Playgroud)

但我还需要显示 HTTP 代码(以显示请求是否成功):

curl -s -w "%{http_code}\n" -o /dev/null https://swapi.co/api/people/1/?format=json
Run Code Online (Sandbox Code Playgroud)

如何将响应主体设置为变量并同时显示 HTTP 代码(一个请求)?


我找到了解决方案女巫临时文件:

touch tmpFile
curl -s -w "%{http_code}\n" -o tmpFile https://swapi.co/api/people/1/?format=json
name=$(cat tmpFile | jq '.name') # irrelevant command, but I need here only body response
echo "name: "$name
rm tmpFile
Run Code Online (Sandbox Code Playgroud)

不创建文件怎么办?

我尝试使用命名管道(但它仍然需要在磁盘上创建文件...):

mkfifo tmpFifo
curl -s -w "%{http_code}\n" -o tmpFifo https://swapi.co/api/people/1/?format=json
name=$(cat …
Run Code Online (Sandbox Code Playgroud)

bash curl pipe

14
推荐指数
2
解决办法
8万
查看次数

`>>` 在终端命令中是什么意思?

我刚刚遇到了下面给出的命令-

$ echo 'eval "$(jenv init -)"' >> ~/.bash_profile
Run Code Online (Sandbox Code Playgroud)

据我所知,它可能用于提交 .bash_profile 中的更改,但它究竟用于什么?

terminal bash command-line .bash-profile

14
推荐指数
3
解决办法
1万
查看次数

是否可以在 iterm2 中使用 vim 键绑定?

我想w用于下一个单词和b上一个单词。如果我能做得更多,我会更快乐。

如果这很重要,我会使用 bash。

terminal bash vim iterm2 macos

14
推荐指数
1
解决办法
7195
查看次数

如何用sed递归替换字符?

是否可以在不再次迭代相同序列的情况下递归替换出现的字符序列?

通过sed在以下场景中执行 a ,我可以获得提到的输出。

$ echo XX | sed -e 's/XX/XoX/g'
XoX  
$ echo XXX | sed -e 's/XX/XoX/g'
XoXX  
$ echo XXXX | sed -e 's/XX/XoX/g'
XoXXoX  
Run Code Online (Sandbox Code Playgroud)

但是,我希望输出遵循以下行为。

输入:

XX
XXX
XXXX
Run Code Online (Sandbox Code Playgroud)

预期输出:

XoX
XoXoX
XoXoXoX
Run Code Online (Sandbox Code Playgroud)

是否可以单独使用 sed 实现预期的行为?

linux bash regex sed

14
推荐指数
3
解决办法
2428
查看次数

标签 统计

bash ×10

macos ×2

terminal ×2

.bash-profile ×1

command-line ×1

curl ×1

expansion ×1

git ×1

iterm2 ×1

linux ×1

mac ×1

pipe ×1

process ×1

regex ×1

remote-desktop ×1

rsync ×1

sed ×1

sleep ×1

ssh ×1

unix ×1

vim ×1