标签: bash

禁用 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万
查看次数

Unix shell 变量中“导出”的范围是什么?

我通过以下方式设置了一些环境变量:

MY_VAR='helloworld'
export MY_VAR
Run Code Online (Sandbox Code Playgroud)

然后我通过切换到另一个用户

su SOME_OTHER_USER
Run Code Online (Sandbox Code Playgroud)

我回应了 MY_VAR 变量..我看到了它的价值!

1)请您解释一下这个问题。据我了解,当我通过 export 命令导出变量时,它不是“全局”导出,它只是一个用户本地变量。为什么我看到了?

2)最初我有一个猜测:可能是,当我切换到另一个用户时,我启动了我的 bash 进程的一些子进程,这就是为什么我可以看到我的变量,因为导出的变量被传递给当前 shell 的任何子进程。但是命令ps ---pid <my bash's pid which I got with echo $$>在输出中只显示相同的 pid。所以看起来这意味着没有与我的 bash 进程相关的子进程,并且 su 没有启动任何进程。我对吗?(顺便说一句,我不会以这种方式看到一个“孩子”,即使我用 bash 命令启动另一个 bash,我也不知道为什么)

3) 最后,谁能看到我以这种方式导出的变量?鉴于我从我的操作系统 GUI 启动了一些其他进程 - 我即将看到它吗?看起来没有,因为如果我启动另一个终端,我在那里看不到它。那么我导出的变量的范围和生命周期是多少?

我使用 Debian Wheezy。我在 Root 用户下从 RootTerminal 运行我的命令。

linux unix bash shell environment-variables

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

替换正在运行的 Linux 根文件系统

我正在尝试提出一种 bash 脚本化方法来替换正在运行的 PC 上的根文件系统。该系统使用带有 ext4 rootfs 和交换分区的 MBR 分区磁盘,不幸的是它不使用 LVM / BTRFS 或任何类似的有用的东西。它使用 grub / kernel & initrd / systemd 运行最小的 Debian 发行版。

没有对所讨论的 PC 进行物理访问 - 它正在运行一些自助服务终端软件,可以使用专有工具将包含二进制文件和更新 shell 脚本的 tarball 推送到 PC。我的计划是使用这个更新系统来尝试替换rootfs。

我的想法基本上可以归结为以下几点:

  • 将 initrd 替换为自定义版本,该版本不会将 switch_root 切换到真正的 rootfs 而是替换它(可能使用 dd 写入新映像),然后重新启动到新系统

  • (不知何故!)从实时系统 switch_root 到某种临时文件系统,然后执行上述 dd 并重新启动

  • 如上所述,但是将 init 进程设置为一个新的临时 fs 并执行上述操作或类似操作...

我不熟悉pivot_root 和switch_root 功能,并且目前正在玩-我确定以前已经这样做过,但我已经搜索过但没有找到解决方案!

linux debian bash filesystems partitioning

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

bash 中的 cd &lt;nonexistent_directory&gt; 导致 cd 到不同的目录?

好的,所以我已经使用 Linux 18 年了,从来没有见过或听说过这样的事情:

starting-forth$ ls
ch01/  ch02/  ch04/  ch05/  ch06/  text/
starting-forth$ cd ch07  # A directory I thought I might exist, but didn't
ch04
ch04$
Run Code Online (Sandbox Code Playgroud)

哇?!好的,只是为了确保:

ch04$ pwd
/home/m/learn/forth/starting-forth/ch04
Run Code Online (Sandbox Code Playgroud)

我的 shell 是 bash,在虚拟终端 [LilyTerm,确切地说],在 XFCE 会话中,在 Manjaro Linux 上。我认为我没有进行任何奇怪的自定义,并且整个系统相当新(2014 年 10 月在新笔记本电脑上首次安装)。

那么,任何人都知道是什么导致了这种情况?

更新:我之前没有想到的一个事实(尽管我不知道为什么会如此)是这发生在 Git 工作目录中。

更新 2:显然,只要存在名称相同的现有目录,除了最后一个字符(或两个字符?),作为我尝试 cd 到的不存在目录时,就会发生这种行为。例如:

[tmp]$ mkdir dxx17903
[tmp]$ cd dxx17907
dxx17903
[tmp]$ cd dxx179035
dxx17903
[dxx17903]$ cd ..
[tmp]$ cd dxx179005
bash: cd: dxx179005: No such file or directory
[tmp]$ …
Run Code Online (Sandbox Code Playgroud)

linux bash

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