我有文件~/.config/evince/accels
但它是空的。禁用愚蠢的默认键盘快捷键的语法是什么?
我可以“转储”当前的快捷方式,然后进行编辑吗?
我经常会因为意外按下某些键而失去页面上的位置。
我只是想保留PageDown
它,PageUp
以便我可以滚动页面。
我在 Debian 上使用 Evince 43
我有文件~/.config/evince/accels
但它是空的。禁用愚蠢的默认键盘快捷键的语法是什么?
我可以“转储”当前的快捷方式,然后进行编辑吗?
我经常会因为意外按下某些键而失去页面上的位置。
我只是想保留PageDown
它,PageUp
以便我可以滚动页面。
我在 Debian 上使用 Evince 43
我有一个初始化脚本,用于在我的服务器上启动 qbittorrent-nox。当我第一次启动服务器时,它运行良好,但如果我关闭 qbittorrent-nox 进程 ( service qbittorrent stop
),它将不会再次启动 ( service qbittorrent start
),并出现以下错误:
process already running.
我确定没有正在运行的进程,我查看了ps
。这是启动的确切命令:
start-stop-daemon --start --chdir '/home/testuser' --user 'testuser' --chuid 'testuser:testuser' --startas /usr/bin/env HOME="/home/testuser" /usr/bin/qbittorrent-nox
没有/run
与 qbittorrent 相关的文件。
更换笔记本电脑的主板后,在早期启动时出现以下错误:
ucsi_acpi USBC000:00: error -ENODEV: con1: failed to get usb role switch
ucsi_acpi USBC000:00: error -ENODEV: PPM init failed
据我所知,USB-C 端口工作正常。但我想了解这些错误的含义,以及如何消除它们。
这是否只是一些需要禁用/启用的 UEFI bios 设置?显然,在更换过程中,这些设置已重置为出厂默认设置。
我在 Debian 上使用fbpanel
。在配置文件中~/.config/fbpanel/default
,我有此部分定义“开始菜单”:
Plugin {
type = menu
config {
IconSize = 26
image = /usr/share/pixmaps/debian-logo.png
systemmenu {
}
separator {
}
item {
name = logout
icon = application-exit
action = killall -u testuser --quiet
}
}
}
我可以更改图标大小,但如何增加文本大小?文本太小了。
我也在使用openbox
,以防万一
我有自定义脚本的 zsh 补全,其中一个参数必须是 URL(即字符串),然后有几个可选参数: --AAA --BBB --CCC:
_arguments -S : \
'--AAA' \
'--BBB' \
'--CCC' \
'1: :'
然而,补全仅在提供 URL 参数后才起作用,即:
myscript URL --A<TAB>
这将自动完成--AAA
但是当我有:
myscript --A<TAB>
然后它会列出唯一匹配的选项 --AAA,但即使我这样做它也不会自动完成它--AA<TAB>
。我必须手动输入。
当我将完成脚本更改为:
_arguments -S : \
'--AAA' \
'--BBB' \
'--CCC'
参数的自动完成功能有效,但一旦我提供 URL,就不会完成其他选项。
那么我如何告诉 zsh 完成,我的脚本需要一个 URL(即一个字符串参数 - 我不希望 zsh 在当前位置开始完成文件名),并且可选参数可以在此 URL 之前或之后完成?
注意:我并不是想自动完成 URL。我只是想在这个 URL 字符串之前和之后完成工作。
当我使用 zsh 补全命令时umount
:
umount /mnt/t<TAB>
它完成了安装的文件系统/mnt/tmp
。
但是当我不小心按 Tab 太多次时,它会试图提供太多帮助,并建议其他安装点,这会导致无意义的完成,例如:
umount /mnt/tmp /
如何将卸载完成限制为仅一个安装点,以便其他选项卡不会添加任何其他参数?
我想我已经在以下位置找到了相关部分/usr/share/zsh/functions/Completion/Unix/_mount
:
# Completion for umount.
local excl='-V --version -h --help'
args=(
'(- *)'{-h,--help}'[show help]'
'(- *)'{-V,--version}'[show version]'
"($excl -v --verbose)"{-v,--verbose}'[verbose mode]'
"($excl -n --no-mtab)"{-n,--no-mtab}"[don't write /etc/mtab]"
"($excl)-r[remount read-only on failure]"
"($excl)-d[for loopback mount, free loop device]"
"($excl)-i[don't call /sbin/umount.<fs> helper]"
"($excl *)-a[unmount all file systems from /etc/mtab]"
"($excl)-t[specify file system type]:file system type:_file_systems"
"($excl *)-O[with -a, restrict filesystems by options]:file system option:->fsopt"
"($excl)-f[force unmount]"
"($excl)-l[lazy unmount]"
'*:dev or dir:->udevordir'
)
_arguments -C -s "$args[@]" && ret=0
我需要修改什么?
我的 zsh 脚本采用以下参数:
./script --connect server --foo 3 --bar 5 name
--foo
并--bar
采用整数,name
是唯一的非选项参数,并且--connect
应该从预定义的服务器列表中完成。我陷入了--connect
尝试定义服务器列表的部分。
_arguments -S : \
'--foo' \
'--bar' \
'--connect' \
'*:server:->servers'
_servers() {
local -a server_list
server_list=(
'server1'
'server2'
)
_describe -t server-names "server name" server_list
}
当我输入 时,它会提供选项-<TAB>
,但在 后它不会向我提供服务器--connect
。另外,我不知道如何合并该name
参数,这是非选项参数。
我还需要指定--foo
并--bar
需要一个整数
我有一个启动 3 个终端模拟器窗口的脚本:
#!/bin/sh
terminator --role='terminator-left' 2>/dev/null &
sleep 0.1
terminator --role='terminator-center' 2>/dev/null &
sleep 0.1
terminator --role='terminator-right' 2>/dev/null &
(我使用 --role 选项,以便我可以自动将窗口放置在不同的显示器上,在我的 openbox 配置文件中定义)
我在不同的虚拟桌面上多次启动此脚本。
如何在某种“进程组”中启动这 3 个终端,以便在其中任何一个进程终止时可以杀死所有剩余进程?
重要提示:我不想终止可能在脚本的不同实例中启动的所有终端(我不能只使用 pkill 或 pgrep 来终止与模式匹配的任何进程)
换句话说,假设我在虚拟桌面 1 和虚拟桌面 2 上启动脚本。
我现在在 2 个不同的虚拟桌面上有 3 个终端窗口。
当我退出虚拟桌面 1 上的一个终端时,我希望其余 2 个窗口自动终止,但不会影响在虚拟桌面 2 上运行的其他 3 个窗口的独立实例。
我所描述的可能吗?
我怎样才能做到这一点?
这是我的/etc/network/interfaces
文件:
auto bond0
iface bond0 inet manual
address 10.66.7.11/24
gateway 10.66.7.1
bond-mode 802.3ad
bond-slaves eth2 eth3
bond-miimon 100
bond-downdelay 200
bond-updelay 400
bond-lacp-rate 1
up ifconfig bond0 10.66.7.11/24 up
当我启动 bond0 接口时,它可以工作,但未设置默认网关
# route -n
Destination Gateway Genmask Flags Metric Ref Use Iface
10.66.7.0 0.0.0.0 255.255.255.0 U 0 0 0 bond0
我必须手动设置默认网关,然后一切正常:
route add default gw 10.66.7.1 bond0
#route -n
Destination Gateway Genmask Flags Metric Ref Use Iface
0.0.0.0 10.66.7.1 0.0.0.0 UG 0 0 0 bond0
10.66.7.0 0.0.0.0 255.255.255.0 U 0 0 0 bond0
当我在文件中定义默认网关时,为什么没有自动设置它/etc/network/interfaces
?
我在脚本中有很长的命令管道zsh
:
pv /dev/sda > sda.raw | sha256sum > sda.raw.sha256 | cut -c61-64 | read SHASUM
如何在if
语句内部检查所有命令是否成功退出?
我知道${pipestatus[@]}
,但它是一个数组。所以我必须单独检查每个元素。
是否有一些快捷方式可以检查${pipestatus[@]}
仅包含0
?
我发现了一些奇怪的行为:
为了进行测试,我设置了小型文件系统(10MB),以便它很快填满:
#!/bin/zsh
set -o pipefail
if pv /dev/zero > loop/file ; then
echo OK
else
echo FAIL
fi
正如预期的那样,我收到以下错误,并打印“FAIL”:
pv: write failed: No space left on device
但是,当我稍微更改 pv 命令时,它突然不会打印任何错误,并且 pv 命令似乎无限期地运行(即使设备上没有剩余空间)
#!/bin/zsh
set -o pipefail
if pv /dev/zero > loop/file | sha256sum ; then
echo OK
else
echo FAIL
fi
我需要linphone
在 Debian 12 上使用旧版本。
bookworm中的版本是4.4.10-3
,我实际上需要3.12.0
,它可以在Buster中找到。
在我的书虫构建机器上,我更改了源代码,并linphone-3.12.0
从巴斯特下载了源代码。然后我将源切换回 bookworm,并安装了所有必要的依赖项。
我取得了一些进展,现在我在编译过程中取得了更大的进步。然而,它最终失败了:
make[3]: Leaving directory '/mnt/src/deb/LINPHONE/linphone-3.12.0/obj-x86_64-linux-gnu'
[ 66%] Built target linphone-static
make[2]: Leaving directory '/mnt/src/deb/LINPHONE/linphone-3.12.0/obj-x86_64-linux-gnu'
make[1]: *** [Makefile:159: all] Error 2
make[1]: Leaving directory '/mnt/src/deb/LINPHONE/linphone-3.12.0/obj-x86_64-linux-gnu'
dh_auto_build: error: cd obj-x86_64-linux-gnu && make -j4 "INSTALL=install --strip-program=true" VERBOSE=1 returned exit code 2
make: *** [debian/rules:15: binary] Error 2
dpkg-buildpackage: error: fakeroot debian/rules binary subprocess returned exit status 2
我知道 Thunderbird UI 可以通过UserChrome.css
.
例如,可以轻松更改窗口栏的颜色:
menubar, toolbar, nav-bar, #TabsToolbar > *{
background-color: rgb(245,199,18) !important;
}
但是我在哪里可以找到我想要更改的元素的名称?
例如,在撰写窗口中,较新的 Thunderbird 为整个标题、标题本身和输入字段着色(一切都是浅灰色)。
然而,较旧的 Thunderbird 仅对标题进行着色,并让用户输入字段明显不同:
(忽略颜色主题的差异,即浅色与深色)。重点是标题(即 From、To)与用户输入的实际电子邮件地址之间的明显区别。
如何找到元素的名称,并使用更改颜色UserChrome.css
?
我正在Thunderbird 68.3
使用Debian Buster
在Thunderbird
,我可以去插件管理器,搜索扩展,点击Add to Thunderbird
安装。
但是我有多个 Thunderbird 配置文件,在每个配置文件中安装每个扩展都很乏味。
有没有办法下载扩展文件,将其解压缩到某个地方(大概在 /usr 中),以便所有客户端、所有用户、所有配置文件都可以看到它可用并使用它?
我在这里发现了类似的问题,但这似乎不再适用于较新版本的 Thunderbird。路径肯定是不同的。
我正在Thunderbird
68.2.2
使用Debian Buster
.
例如,这是一个我想全局安装的扩展:No Message Pane Sort
我已经尝试从附加组件管理器安装该扩展,并且它可以工作。所以它绝对兼容我的 Thunderbird 版本。
但是,当我尝试将文件解压缩到 中时/usr/share/xul-ext/nomessagepanesort/
,其他客户端(其他 Thunderbird 配置文件)看不到它。
我fbpanel
在openbox中使用。我有 3 台显示器:中间一台,每侧两台。
目前fbpanel
分布在所有 3 台显示器上。
我可以配置fbpanel
为仅出现在一台显示器(显示器 1)上吗?
我正在尝试在 Openbox 中设置“终端作为桌面墙纸”,如此处所述
Openbox可以设置<layer>below</layer>
,使窗口作为桌面背景运行,不会被状态栏显示,不受“最小化窗口”的影响。因此,我实际上没有将无用的图像显示为墙纸,而是有一个终端。
我作为后台运行的实际终端是terminator
,我刚刚创建了一个符号链接terminator-wallpaper-1a
和terminator-wallpaper-1b
,它们只是终结器二进制文件的符号链接。只有名字不同,我才能分辨出来。
我有双显示器设置,我想在每台显示器上都有终结者壁纸。
openbox 窗口属性由以下设置devilspie
:
(if
(matches (application_name) "terminator-wallpaper")
(begin
(wintype "desktop")
)
)
然后,我在我的 openbox 配置中有这个,这样每个壁纸都会转到相应的显示器/桌面:
<application name="terminator-wallpaper-1a">
<focus>yes</focus>
<layer>below</layer>
<desktop>1</desktop>
<position>
<y>0</y>
<x>0</x>
<monitor>1</monitor>
</position>
<skip_taskbar>yes</skip_taskbar>
<maximized>true</maximized>
</application>
<application name="terminator-wallpaper-1b">
<focus>yes</focus>
<layer>below</layer>
<desktop>1</desktop>
<position>
<y>0</y>
<x>0</x>
<monitor>2</monitor>
</position>
<skip_taskbar>yes</skip_taskbar>
<maximized>true</maximized>
</application>
最后,这就是我开始整个事情的方式:
devilspie &
terminator-wallpaper-1a -b &
terminator-wallpaper-1b -b &
xdotool set_desktop 0
xdotool search --class 'Terminator-wallpaper-1a' windowunmap --sync windowmap windowsize %1 1920 1180
xdotool search --class 'Terminator-wallpaper-1b' windowunmap --sync windowmap windowsize %1 1920 1180
一切都很好,当我最小化所有其他窗口时,我实际上看到了我的终结者壁纸。但实际上只有其中一个是可用的。即,专注或活跃。另一个我无法输入。即使我用鼠标单击,光标仍然处于非活动状态,因此窗口永远不会成为焦点。
我怎样才能解决这个问题 ?
在与用户@intika 进行详尽的故障排除后,我们发现了问题。将以下代码段添加到<mouse>
openbox 配置文件中的部分修复了该问题:
<context name="Desktop">
<mousebind button="Left" action="Press">
<action name="Focus"/>
<action name="Raise"/>
</mousebind>
</context>
我需要hdparm
在我的服务器上保护擦除 SSD 磁盘:
hdparm --user-master u --security-erase NULL /dev/sda
但磁盘目前被“冻结”,如报告hdparm
:
hdparm -I /dev/sda | grep frozen
所有说明都建议我应该让我的服务器休眠以解冻。但是我的内核没有编译挂起。
如何解冻 SSD?
使用时ls -lAhF
,第 3 列和第 4 列是用户和组所有权,即:
drwxrwxrwt 2 root root 60 Nov 15 15:50 .X11-unix/
srwxr-xr-x 1 marti marti 0 Nov 15 15:51 .menu-cached-:0-marti=
srwxr-xr-x 1 marti marti 0 Nov 15 15:51 .pcmanfm-socket--0-marti=
drwxr-xr-x 4 root root 80 Nov 15 15:50 dtach/
drwx------ 2 marti marti 40 Nov 16 17:36 mc-marti/
drwx------ 2 root root 40 Nov 16 20:25 mc-root/
我想在第 3 列和第 4 列中将关键字“root”涂成红色,以便我可以轻松地看到该文件归 root 所有。
因此,如果用户组不是 root 用户,一切看起来都和以前一样
如果用户是root,则第三列中的关键字“root”为红色。同样对于组根。
我怎么能那样做? 我使用'zsh'作为我的外壳。
我不认为ls
有可能配置它。但是我可以在其中使用一些别名/函数zsh
吗?
在/etc/pam.d/
,配置文件对于sshd
和login
有一些规则selinux
。当我不使用 selinux 时,我可以简单地禁用这些行吗?我想简化 pam 规则。
具体来说,这些行是:
session [success=ok ignore=ignore module_unknown=ignore default=bad] pam_selinux.so close
session [success=ok ignore=ignore module_unknown=ignore default=bad] pam_selinux.so open
我要求确定,因为我认为有时天真地注释行可能会干扰通过规则的 tte 流程。
完整sshd
配置如下:
# PAM configuration for the Secure Shell service
# Standard Un*x authentication.
@include common-auth
# Standard Un*x authorization.
@include common-account
# SELinux needs to be the first session rule. This ensures that any lingering context has been cleared.
# Without this it is possible that a module could execute code in the wrong domain.
session [success=ok ignore=ignore module_unknown=ignore default=bad] pam_selinux.so close
# Set the loginuid process attribute.
session required pam_loginuid.so
# Create a new session keyring.
session optional pam_keyinit.so force revoke
# Standard Un*x session setup and teardown.
@include common-session
# Print the status of the user's mailbox upon successful login.
session optional pam_mail.so standard noenv # [1]
# Set up user limits from /etc/security/limits.conf.
session required pam_limits.so
# Read environment variables from /etc/environment and
# /etc/security/pam_env.conf.
session required pam_env.so # [1]
# In Debian 4.0 (etch), locale-related environment variables were moved to
# /etc/default/locale, so read that as well.
session required pam_env.so user_readenv=1 envfile=/etc/default/locale
# SELinux needs to intervene at login time to ensure that the process starts
# in the proper default security context. Only sessions which are intended
# to run in the user's context should be run after this.
session [success=ok ignore=ignore module_unknown=ignore default=bad] pam_selinux.so open
# Standard Un*x password updating.
@include common-password
我的xterm
支持 uni-code。例如,它显示欧元符号:
echo -e '\xe2\x82\xac'
但它不显示一个特定的字符:
PL_BRANCH=$'\ue0a0'
echo $PL_BRANCH
该字符在另一个终端(终止符)中正确显示。我在两个终端(Inconsolata)中使用相同的字体。
可能是什么原因,我该如何解决?