小编phk*_*phk的帖子

如何为软件包列表运行命令?

我试图按照这个解释在 Debian 测试上安装 Gnome 3 。然而,这不起作用,让我没有任何图形用户界面。

目前我试图解决这个问题,我意识到有一长串标记为手动安装的软件包。我存储了一个(以换行符分隔的)包列表——在我看来——应该被标记为自动安装(几乎所有的)。

现在我想竞选apt-mark auto这个名单。

我怎么做?

PS:如果有人告诉我这不是一个好主意(如果不是),我也会很感激。

shell debian package-management

5
推荐指数
1
解决办法
234
查看次数

是什么阻止了 Wayland 在 Linux 中推翻 X?

每个人都同意 Wayland 比 X11 更适合您常用的桌面。为什么每个主要发行版都使用 X?是错误,应用程序兼容性差(甚至是问题吗?)还是其他什么?

linux desktop x11 wayland freedesktop

5
推荐指数
1
解决办法
2425
查看次数

如何一起使用'convert'和'xargs'?

我需要将一堆.rgb文件转换为.pngs(每个文件应保留其原始名称)。

我想了解如何转换第一个文件,然后将命令包装在“for”循环中。

这是我到目前为止:

find . -name "*.rgb" | sort | sed -n \1\p | xargs convert zzzzz.png
Run Code Online (Sandbox Code Playgroud)

但这不起作用。

我怎样才能让convert命令识别第二个参数zzzzz.png

linux bash image-manipulation

4
推荐指数
1
解决办法
1735
查看次数

Bash 无法正确计算提示长度

我在这个问题上搜索了很多,发现了一些相关的问题,比如这个:终端提示没有正确包装

我的问题是 bash 没有正确计算提示的长度,当我执行诸如ctrl-r?滚动历史记录之类的事情时,这会把它搞砸。这基本上就是它的外观(没有颜色)。

? name@machine ~

01:09 $
Run Code Online (Sandbox Code Playgroud)

例如,当我使用向上箭头滚动浏览以前的命令时,某些字符会卡在提示中:

? name@machine ~

01:09 $m
Run Code Online (Sandbox Code Playgroud)

有时我也会遇到其他奇怪的行为,比如一些提示被覆盖(当我重新加载它时它会消失)。我的提示是这样的:

GIT_PROMPT_START_USER="\n_LAST_COMMAND_INDICATOR_ \[$Magenta\]\u\[$Orange\]@\[$White\]\h \[$Yellow\]\[$PathShort\]\[$ResetColor\]"

GIT_PROMPT_END_USER="\n\[$Blue\]$Time12a\[$ResetColor\] $ "
Run Code Online (Sandbox Code Playgroud)

我使用的东西叫做git-bash-prompt:> https://github.com/magicmonty/bash-git-prompt >。

我认为搞砸的是时间变量,它在另一个文件中定义:

Time12a="\$(date +%H:%M)"
Run Code Online (Sandbox Code Playgroud)

我已经尝试了\[$Time12a\]$Time12ain GIT_PROMPT_END_USER,但它们似乎都不起作用。我的猜测是 bash 计算错误,因为$Time12a表示 5 个字符 (hh:mm)。

bash 是如何计算这个长度的?是否可以明确设置 bash 的长度?答案非常感谢!

bash prompt

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

Bash 正则表达式测试不起作用

echo "Enter username"
read $WORD

if [[ "$WORD" =~ ^(Dale|Paul|Ray)$ ]]; then
    echo "$WORD is valid"
else
    echo "$WORD is invalid"
fi
Run Code Online (Sandbox Code Playgroud)

bash

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

像“comm -3”这样的简单的逐行比较,但看起来像“diff -y”

我正在寻找一些东西,它为我提供了comm -3两个排序输出的输出(逐行比较,只有来自任一侧的附加/缺失行),但它看起来更像是来自 的输出diff -y,例如它使用整个宽度。

file1

bar/a
bar/feugiat
bar/libero
bar/mauris
bar/scelerisque
bar/urna
foo/blandit
foo/elementum
foo/feugiat
foo/laoreet
foo/luctus
foo/non
foo/pellentesque
foo/pulvinar
foo/rutrum
foo/sed
foo/ut
foo/vivamus
Run Code Online (Sandbox Code Playgroud)

file2

bar/a
bar/molestie
bar/quam
bar/risus
bar/tristique
foo/blandit
foo/elementum
foo/feugiat
foo/ligula
foo/massa
foo/mauris
foo/metus
foo/pellentesque
foo/pulvinar
foo/ut
Run Code Online (Sandbox Code Playgroud)

输出comm -3 file1 file2

bar/feugiat
bar/libero
bar/mauris
        bar/molestie
        bar/quam
        bar/risus
bar/scelerisque
        bar/tristique
bar/urna
foo/laoreet
        foo/ligula
foo/luctus
        foo/massa
        foo/mauris
        foo/metus
foo/non
foo/rutrum
foo/sed
foo/vivamus
Run Code Online (Sandbox Code Playgroud)

diff -y --suppress-common-lines file1 file2(GNU) 的输出,它取决于屏幕宽度:

bar/feugiat                                                   | bar/molestie …
Run Code Online (Sandbox Code Playgroud)

diff file-comparison comm text-formatting

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

用于计算路径中文件类型(包括子文件夹)的 Bash 脚本

我想使用该file工具快速了解目录(包括其所有子目录)中的不同文件类型,例如,告诉我哪种文件类型是那里最常见的文件类型。

它应该作为常用 shell 语言或脚本工具(如bashawk.

可能的好东西:

  • 很棒的表演
  • 处理任何文件名或类型
  • POSIX 兼容性

(最后两点实际上是相互排斥的)

bash find file-types

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

我想使用在 SSH 会话中声明的变量在我的 shell 脚本中本地使用

每当我尝试使用在我的 SSH 会话中声明的变量时,它都会给我空白输出。这是我尝试执行的代码:

ssh -T host <<\HERE
export usage1=$(df -h |grep /nas/infa|sed s/%//g| awk '{printf("%d\n",$4)}');
echo $usage1
HERE
echo $usage1
Run Code Online (Sandbox Code Playgroud)

我能够在 SSH 会话中获得所需的输出,但是在 SSH 之外调用相同的变量时,它给我空白。

scripting ssh shell-script variable

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

find 没有将多个斜杠合并为一个的任何原因?

是否真的find不应该进行最简单的路径统一/简化操作,例如将多个连续的斜杠合并在一起(相当于原始形式)?

例如输出find .///是:

.///
.///somefile
[…]
Run Code Online (Sandbox Code Playgroud)

(测试find来自 GNU 和busybox

如果是这样,那是为什么?有没有我遗漏的合理用例?也许对于有人正在搜索find内部脚本的输出的情况?

顺便说一句,同样有趣的是 GNU 的 find for find ./// -maxdepth 0 -printf '%h\n'(的输出%h应该是“文件名的前导目录(除了最后一个元素和它之前的斜杠之外的所有目录)”):(.//只是少了一个/

slash standard find compatibility filenames

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

远程进程完成的通知(但没有电子邮件)

我正在使用 OpenSSH 连接到 Linux 服务器,在那里我有一个tmux会话,我在其中执行某些需要很长时间的编译工作。现在,一旦某个需要很长时间的命令最终完成,我想立即在我的 Linux 客户端(我正在连接的计算机)上收到通知。

在本地,我知道如何使用弹出窗口、播放某些内容…… (1)、(2)通过运行某个命令来获得通知。现在我需要远程做同样的事情。一个完美的解决方案是某种反馈渠道,ssh但我不知道任何此类功能。

并且请不要使用(3) 中建议的基于电子邮件的解决方案。我已经收到太多的工作电子邮件,我正在尝试减少电子邮件的数量,只是为了确认而不是为了阅读、存储、转发或回复(为此,我什至创建了一个单独的电子邮件帐户,我不要收到实时通知)。


  1. https://superuser.com/questions/345447/how-can-i-trigger-a-notification-when-a-job-process-ends
  2. https://askubuntu.com/questions/277215/make-a-sound-once-process-is-complete
  3. 运行过程完成时发出警报

ssh openssh notifications

0
推荐指数
1
解决办法
1745
查看次数