小编l0b*_*0b0的帖子

: 和 true 和有什么不一样?

bash

$ type :
: is a shell builtin
$ type true
true is a shell builtin
Run Code Online (Sandbox Code Playgroud)

看起来它们是相同的,但它们没有给出相同的系统跟踪:

$ strace :
strace: :: command not found
$ strace true
execve("/bin/true", ["true"], [/* 82 vars */]) = 0
[snip]
exit_group(0)                           = ?
Run Code Online (Sandbox Code Playgroud)

我尝试比较strace bash -c : 2>:.txtand strace bash -c true 2>true.txt,但除了内存位置之外找不到它们之间的任何差异。

dash

$ type :
: is a special shell builtin
$ type true
true is a shell builtin
Run Code Online (Sandbox Code Playgroud)

好的,所以它们不一样。help :并且 …

bash dash

16
推荐指数
3
解决办法
2068
查看次数

How to tell which keyboard was used to press a key?

我经常在安装了多个键盘的配对站上工作。我可以使用setxkbmapwith-device <ID>来设置特定键盘的布局(使用来自xinputID),但通常我在使用哪个键盘并不明显。最好避免反复尝试两种键盘,因此我想编写一个快速工具来获取setxkbmap. 我希望有一个典型的用例,如下所示:

$ setxkbmap -device "$(get-keyboard-id)" -layout gb
Press Enter to detect keyboard ID
Run Code Online (Sandbox Code Playgroud)

哪个界面在 Linux 上提供此信息?理想情况下,它应该在没有 X 的情况下工作,但这不是必需的(似乎没有很多工具可以在没有 X 的情况下支持这一点)。


迄今为止的发现:

  • Linux必须知道我正在输入哪个键盘才能同时支持多个键盘的不同布局。
  • xinput? 列表.c ? list_xi2? XIQueryDevice提供可由setxkbmap.
  • showkey并且xev不要打印键盘 ID。
  • xinput list-props $ID显示发送键盘事件的位置。但是,使用另一个答案中的代码似乎该设备不会打印任何内容来识别键盘。
  • 一种几乎可能的解决方案是xinput --test <ID> &针对每个键盘 ID运行并查看哪个首先返回某些内容。问题在于找出哪些“键盘”实际上是键盘:

    $ xinput | grep keyboard
    ? Virtual core keyboard                         id=3    [master keyboard …
    Run Code Online (Sandbox Code Playgroud)

xorg keyboard x11

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

为什么桌面锁定在一段时间后停止工作?

xautolock显然正在运行

$ ps wafux | grep [x]autolock
user   21410  0.0  0.0  20124  2628 ?        S    Nov05   0:04 xautolock -time 10 -notify 30 -notifier notify-send --urgency low --expire-time=10000 -- 'Locking screen in 30 seconds' -locker slock
Run Code Online (Sandbox Code Playgroud)

但是,当我尝试锁定它时

$ xautolock -locknow
Could not locate a running xautolock.
Run Code Online (Sandbox Code Playgroud)

如果我启动另一个xautolock它的工作原理:

$ xautolock -time 10 -notify 30 -notifier "notify-send --urgency low --expire-time=10000 -- 'Locking screen in 30 seconds'" -locker slock&
[2] 18828
$ ps wafux | grep [x]autolock
user …
Run Code Online (Sandbox Code Playgroud)

arch-linux xorg awesome xautolock

16
推荐指数
1
解决办法
4223
查看次数

如何从 Audible 播放 AAX 有声读物?

我在 Audible 买了一些有声读物。默认的 .aa 文件在 VLC 中播放良好,但质量很差 - 在任何演讲中都会有持续的背景嗡嗡声。他们增强质量的音频文件在 VLC 中打开,显示卷首、章节编号和进度指示器,但没有声音。是否有可能解决这个问题(Linux 和开源软件是我关心的两个参数)?

最新的 VLC (2.2.4) 显示 .aax 文件的以下编解码器信息:

  • 流 0
    • 类型:音频
    • 编解码器:MPEG AAC 音频 (aavd)
    • 英语语言
    • 采样率:44100Hz
    • 每个样本的位数:16
    • 比特率:1411 kb/s
  • 流 1
    • 类型:字幕
    • 编解码器:tx3g
    • 英语语言

arch-linux vlc drm

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

`highlight` 命令

是否有一个命令可用于在将整个字符串传递给 stdout 的同时轻松突出显示(使用颜色、粗体文本或倒置的背景/前景)标准输入中的特定字符串?我正在考虑构建它,但如果它已经存在,我宁愿使用它。一些理想的功能:

  1. 单独的高亮字符串以不同的方式以自动方式突出显示。例如,第一个字符串将以红色突出显示,第二个以绿色突出显示,第三个以蓝色突出显示,无需手动配置
  2. 检测颜色支持并回退到粗体/反转/其他可用的突出显示方法。
  3. 允许匹配正则表达式和文字字符串。
  4. 如果匹配项重叠,最好做一些聪明的事情,例如“foobar”和“barbar”。
  5. 除了添加颜色代码之外,stdin 和 stdout 之间没有任何修改。

shell colors highlighting text-processing

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

如何将字符串完成输出到标准输出?

一些的git命令有很多选择,而且常常是通过他们的一个我需要寻找有用的-我只是在寻找它控制选项TAB的宽度git-gui,但也有大约200完成为git config。一个明显的解决方法是将所有补全复制到编辑器中并搜索它们,但我宁愿这样做

[something] | grep tab
Run Code Online (Sandbox Code Playgroud)

没有maninfo页面compgenhelp compgen甚至没有解释它自己的选项,并且没有自动完成 for compgen(讽刺的是如何?)。

PS:compgen -A不起作用。

PPS:这不是一个问题git-gui-标签宽度问题解决方案在别处。

PPPS:这与自动完成命令无关,仅与命令参数有关

bash autocomplete compgen

15
推荐指数
1
解决办法
1342
查看次数

如何在 Awesome WM 中修复 Java 应用程序鼠标指针偏移?

如何在 Awesome WM v3.5.2 到 3.5.5(到目前为止)中重现:

  1. 安装 OpenJDK 或 Oracle Java 7。两者均已观察到此错误。
  2. 使用默认配置启动一个新的 Awesome WM 会话。
  3. 启动jEditPyCharm。两者均已观察到此错误。
    • 四处移动鼠标指针,观察鼠标悬停在代码、项目文件或菜单上的变化。这应该正常工作。
    • 文件菜单上单击并释放,进入其中一个子菜单,观察鼠标指针正下方的项目是如何一直聚焦的。
  4. 重复按Mod4+Space直到激活浮动布局(应用程序将几乎全屏显示)在同一标签中打开另一个应用程序。

在这一点上,我希望鼠标的行为与“普通”应用程序一样。相反,我观察到以下几点:

  • 当使用鼠标单击和导航菜单时,鼠标指针和聚焦的菜单项将彼此垂直偏移,看起来与状态栏的高度相同的像素量。
  • 当像以前一样悬停在杂项上时,光标图标将被设置为鼠标指针在屏幕上的更高位置。例如,将鼠标悬停在文本的顶行上,您将不会看到文本光标。

就好像有些东西没有检测到窗口坐标发生了变化。

当您在同一标签中打开另一个应用程序时,会发生类似但更烦人的错误- 鼠标行为就好像窗口根本没有移动一样。

当您切换另一个已打开应用程序的标签时- “虚拟鼠标桌面”将移至主屏幕的左上角

由于在 OpenJDK 和 Oracle Java 中都观察到了这些错误,在不同的 Java 应用程序中,该错误似乎很可能在 Awesome WM 中。

相关问题文章。我试过_JAVA_AWT_WM_NONREPARENTINGwmname修复,但没有去。

java awesome

15
推荐指数
1
解决办法
2915
查看次数

如何使用组合键创建小写 pi(“?”)?

我很确定我曾经能够使用Composepi(如fsymbols.com 所述)创建小写的 pi 字符,但它不再有效。我的组合键适用于其他字符(例如Composeaa“å”),那么有什么问题呢?

我没有/usr/share/X11/locale/en_GB.utf8/Compose(或~/.XCompose),这是应该安装/生成的东西吗?有一个/usr/share/X11/locale/en_US.utf8/Compose; 将它符号链接到 from/usr/share/X11/locale/en_GB.utf8/Compose来解决这个问题就足够了吗?

$ locale
LANG=en_GB.utf8
LC_CTYPE="en_GB.utf8"
LC_NUMERIC="en_GB.utf8"
LC_TIME="en_GB.utf8"
LC_COLLATE="en_GB.utf8"
LC_MONETARY="en_GB.utf8"
LC_MESSAGES="en_GB.utf8"
LC_PAPER="en_GB.utf8"
LC_NAME="en_GB.utf8"
LC_ADDRESS="en_GB.utf8"
LC_TELEPHONE="en_GB.utf8"
LC_MEASUREMENT="en_GB.utf8"
LC_IDENTIFICATION="en_GB.utf8"
LC_ALL=
Run Code Online (Sandbox Code Playgroud)

分拆问题

arch-linux x11 keyboard-layout compose-key

15
推荐指数
3
解决办法
7460
查看次数

Bash 不再更改目录

我的 bash shell 将不再使用 cd 更改目录。我早些时候在工作时注意到它,发现我打开的任何新 shell(终端或 xterm 等)都会卡在主目录中并且无法退出(已经打开的终端继续正常工作)。

[~]$ pwd
/home/sys/dave
[~]$ cd /
[~]$ cd Documents/
[~]$ pwd
/home/sys/dave
[~]$ type cd
cd is a shell builtin
[~]$ alias
alias l.='ls -d .* --color=auto'
alias ll='ls -l --color=auto'
alias ls='ls --color=auto'
alias vi='vim'
alias which='alias | /usr/bin/which --tty-only --read-alias --show-dot --show-tilde'
Run Code Online (Sandbox Code Playgroud)

我认为一定是我没有时间处理一些奇怪的事情,例如内存不足的处理程序(检查过 cd 没有别名并使用内置版本)。

所以我(是的,我知道)重新启动了机器。

全新启动,完全一样的问题。

另一方面,CSH 工作正常,所以在上面的代码片段之后立即:

[~]$ csh
[~]$ cd /
[/]$ pwd
/
[/]$ cd ~/Documents/
[~/Documents]$ pwd
/home/sys/dave/Documents
[~/Documents]$ 
Run Code Online (Sandbox Code Playgroud)

在过去的几天里,我没有安装任何新的东西或执行任何更新,直到今天晚上它都运行良好。

非常感谢想法/帮助/帮助!

** 更新 ** …

linux bash

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

如何在底部有提示的情况下启动 XTerm?

启动 XTerm 时,提示从终端的第一行开始。运行命令时,提示会向下移动,直到到达底部,然后它就停留在那里(甚至Shift-Page Down或者鼠标可以改变它)。而不是让终端生命周期的开始是“特殊的” ,提示应该总是在终端的底部。请注意,我有一个多行提示

当然,它应该像以前一样工作(可调整大小,可滚动,输出中没有不必要的换行符,并且没有输出神秘消失),所以PROMPT_COMMAND='echo;echo;...'或类似的不是一个选项。理想情况下,解决方案不应该是特定于 shell 的。

编辑:目前的解决方案,在简单的情况下工作时,有几个问题:

  • 这是Bash 特定的。理想的解决方案应该可以移植到其他 shell。
  • 如果其他进程修改失败PS1。一个例子是的virtualenv,这增加了(virtualenv)开始PS1,然后总是消失只是倍以上。
  • Ctrl-l现在删除历史的最后一页。

除了分叉 XTerm 之外,有没有办法避免这些问题?

bash terminal xterm

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