标签: bash

如何通过 scrot 在很棒的 wm 中截取屏幕截图(使用选择)

尝试:

awful.util.spawn("scrot -s")
awful.util.spawn("urxvt -e \"scrot -s\"")
os.execute("scrot -s")
Run Code Online (Sandbox Code Playgroud)

以及所有可能的组合,甚至与sleep.
也试过守护进程。
没有任何作用 =( PS 所有命令都在键绑定中,如果我替换scrot -sscrot,则所有命令都有效,除了选择区域。

linux bash awesome-wm lua

6
推荐指数
1
解决办法
8038
查看次数

如何使用 ZSH 从命令中排除文件?

鉴于此目录内容:

one.file
two.file
three.file
Run Code Online (Sandbox Code Playgroud)

在 bash 中,当我输入时

rm *.file !(two)
Run Code Online (Sandbox Code Playgroud)

只有one.filethree.file被删除。我怎样才能在 ZSH 中做到这一点?

bash zsh globbing

6
推荐指数
1
解决办法
4641
查看次数

在 bash 中,我如何定义“命令范围”变量?

我正在阅读有关 bash 架构的本书,其中一位 bash 维护者说:

shell 函数调用有不同的变量作用域,命令前面的赋值语句设置的变量有不同的临时作用域。例如,当这些赋值语句位于 shell 内置的命令之前时,shell 必须跟踪解析变量引用的正确顺序,并且链接的作用域允许 bash 这样做。

我无法弄清楚如何做到这一点。这会打印出一个空白的换行符:

foo="bar" echo $foo
Run Code Online (Sandbox Code Playgroud)

这会打印出“bar”,但该foo变量在命令完成后仍被定义,所以我不认为它是“命令范围”:

foo="bar"; echo $foo
Run Code Online (Sandbox Code Playgroud)

如何定义具有命令范围的变量?

linux bash

6
推荐指数
2
解决办法
1780
查看次数

禁用 numlock,保留鼠标按键绑定

我无法禁用 Numlock 键(使键什么也不做,以便小键盘数字始终有效),同时将额外的鼠标按钮(在我的鼠标侧面)映射到快捷方式以执行自定义操作。

我使用 Arch Linux 和 Xfce,登录管理器是 LightDM。

我使用这个代码,放在一个 bash 文件中,在启动时禁用我的 numlock:

xmodmap -e "keycode 77 = NoSymbol"
Run Code Online (Sandbox Code Playgroud)

我的主目录中有一个 .xbindkeysrc 文件,其中包含:

"xdotool key ctrl+w"
 b:8 + Release

"xdotool key ctrl+d"
 b:9 + Release
Run Code Online (Sandbox Code Playgroud)

(关闭标签和书签)

如果我在启动时启用“禁用 Numlock”代码,.xbindkeysrc 文件将不再有效。这似乎与与numlockx onxmodmap 命令(在它之前)在同一个 bash 文件中的命令有关。我该如何解决?

添加

"NoCommand"
 c:77
Run Code Online (Sandbox Code Playgroud)

to .xbindkeysrc 也没有预期的效果。将 c 更改为 m,因为理论上 Numlock 是一个修饰键,无济于事。使用 Num_Lock 而不是 c:77 也不起作用。

linux bash xmodmap numlock xdotools

6
推荐指数
2
解决办法
2718
查看次数

有没有办法在 bash 上通过管道传递参数?

有没有办法在bash上通过管道传递参数?

就像是:

echo value1 value2 | mkdir -p ./$1/$2
Run Code Online (Sandbox Code Playgroud)

上面的行将创建目录 ./value1/value2

如果这是不可能的,我会接受建议。

任何帮助表示赞赏。

bash bash-scripting

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

为什么 root cron 作业脚本需要“sudo”才能正常运行?

我正在我的 Raspberry Pi 上运行这个简单的脚本来自动更新,这样我就可以忘记它了。它还保留一个日志,说明更新是否成功。脚本是update.sh:

#!/bin/bash
echo "Update starts on: $(date)" >> /home/pi/update.log
 if apt-get update && apt-get upgrade -y; then
    echo "update successful $(date)"  >> /home/pi/update.log
 else
    echo "Couldn't update $(date)" >> /home/pi/update.log
 fi
Run Code Online (Sandbox Code Playgroud)

我通过使用将此脚本添加到根 crontabsudo crontab -e并将 cronjob 设置为每天早上 6 点运行

0 6 * * * /home/pi/update.sh
Run Code Online (Sandbox Code Playgroud)

我知道它在某种程度上有效,因为sudo ./update.sh在 shell 中运行手动运行命令并在日志中留下“成功”条目。另一方面,当从 crontab 运行时,我总是得到“无法更新”条目。万一重要,“update.sh”脚本是由“pi”用户创建的,我从未更改过权限,除了给它执行权限。

我读了另一个关于同一问题的问题,那个人通过sudo在命令前面放了一个来解决它。他承认这很奇怪,因为它已经被 root 执行了,但说它有效。我尝试添加sudo并验证它现在确实有效。

有谁知道为什么会这样?sudo如果它已经是root,为什么还需要它?

linux bash shell cron raspberry-pi

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

Bash 有可执行文件的缓存吗?

我只是在我的 Ubuntu 14.10 计算机上编写 C++ 程序。由于它是一个客户端/服务器程序,我打开了三个终端模拟器:一个用于编写代码和编译,一个用于客户端测试,最后一个用于服务器测试。过了一会儿,我以为我的代码中有错误。我花了一个多小时来跟踪它,结果发现退出目录并再次进入它解决了整个问题。准确地说,这些是我执行的命令:

some_directory$ ./client
some_directory$ cd ..
$ cd some_directory
some_directory$ ./client
Run Code Online (Sandbox Code Playgroud)

没有改变任何东西——也没有重新编译——两次运行给出了不同的结果。我唯一能想到的是某种可以存储旧版本文件的缓存,但我从未听说过这样的功能。有没有解释,如何解决(让它自动刷新,不退出目录)?

linux bash cache

6
推荐指数
1
解决办法
2054
查看次数

有没有办法默认启用 minicom linewrap

我在 Cisco 路由器串行终端上工作时使用 minicom ......默认情况下,我在我的以下设置中使用这些设置~/.minirc.dfl

pu port             /dev/ttyUSB0
pu baudrate         9600
pu bits             8
pu parity           N
pu stopbits         1
pu rtscts           No
pu xonxoff          No
pu minit
pu mreset
pu mhangup
Run Code Online (Sandbox Code Playgroud)

有趣的是 minicom 默认为linewrap off,我还没有找到在~/.minirc.dfl. 当我尝试过显而易见的事情时:

pu linewrap         Yes
Run Code Online (Sandbox Code Playgroud)

minicom 咆哮着说**Line 9 of the personal config is unparsable

除了像 bash 这样的别名alias minicom="minicom -w",有没有办法默认 minicom 来自动换行?我想设置这个~/.minirc.dfl

linux terminal bash

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

'ss -s' 的输出是什么意思?

我在理解 Linux ss(套接字统计)命令的输出时遇到问题。我无法理解输出的含义ss -s

例如:

[root@dls2304-1 ~]# ss -s
Total: 973 (kernel 996)
TCP:   600 (estab 280, closed 73, orphaned 0, synrecv 0, timewait 0/0), ports 333

Transport Total     IP        IPv6
*         996       -         -
RAW       1         1         0
UDP       157       128       29
TCP       527       512       15
INET      685       641       44
FRAG      0         0         0
Run Code Online (Sandbox Code Playgroud)

我的问题:

什么Total: 973 (kernel 996)意思?什么是Total什么kernel?为什么Total好像比 小kernel

在行中TCP: 600 (estab 280, closed 73, …

networking linux bash iproute2

6
推荐指数
1
解决办法
4321
查看次数

如何运行 bash 脚本并在 Conky 中显示任何输出?

我想在Conky 中运行的 Bash 脚本是一个循环,所以只需要运行一次。这是一个监控脚本,以防我的 VoIP 路由器出现故障。

${execi 3600 /home/justin/pingvoip}
Run Code Online (Sandbox Code Playgroud)

Conky 不想从上面的代码开始。

script conky bash

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