小编don*_*sti的帖子

如何将多行附加到文件

我正在编写一个 bash 脚本来查找不存在的文件,然后创建它并将其附加到它:

Host localhost
    ForwardAgent yes
Run Code Online (Sandbox Code Playgroud)

所以"line then new line 'tab' then text"我认为它是一种敏感的格式。我知道你可以这样做:

cat temp.txt >> data.txt
Run Code Online (Sandbox Code Playgroud)

但它看起来很奇怪,因为它有两行。有没有办法以这种格式附加它:

echo "hello" >> greetings.txt
Run Code Online (Sandbox Code Playgroud)

shell io-redirection text-processing

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

如何知道使用的是 Wayland 还是 X11

所以我刚刚在我的笔记本电脑上安装了最新的 Kali Linux,它基于 Debian 7(oldstable)。然后我将整个东西升级到 Debian 8。

我一直想要 Wayland 而不是 X11,所以我安装了必要的软件包。然后创建了一个最小~./config/weston.ini配置。现在,从 Gnome 登录屏幕:登录画面

我可以启动到Gnome on WaylandLXDE(除其他外)。前者的成功非常有限,后者 (LXDE) 几乎完美,尽管面板需要设置(我必须查找 freedesktop)。

无论如何,在 LXDE 中,GUI 的响应速度比在 oldstable 上更快,并且在运行 Windows 7 时可能也一样快。我很高兴。

但我想知道这是因为从 Debian 7 到 8 的所有库/模块升级还是因为使用 Wayland(如果我真的在使用 Wayland)。我浏览了 htop,发现了一个/usr/bin/Xorg正在运行且没有名为“wayland”的进程。那么我目前正在运行哪一个?

linux x11 wayland

272
推荐指数
9
解决办法
29万
查看次数

用 mv 合并文件夹?

如果我使用mv将名为“文件夹”的文件夹移动到已经包含“文件夹”的目录,它们会合并还是会被替换?

directory rename

195
推荐指数
8
解决办法
26万
查看次数

测试服务是否在脚本中运行的“正确”方法

我的问题:

我正在编写一个 bash 脚本,我想在其中检查给定的服务是否正在运行。

我知道如何手动执行此操作,使用$ service [service_name] status.

但是(尤其是在转向 systemd 之后)会打印一大堆文本,解析起来有点麻烦。我假设有一个为脚本制作的命令,带有简单的输出或我可以检查的返回值。

但是谷歌搜索只会产生大量“哦,只是ps aux | grep -v grep | grep [service_name]”的结果。这不可能是最佳做法,是吗?如果该命令的另一个实例正在运行,但不是由 SysV init 脚本启动的呢?

还是我应该闭嘴,用一点 pgrep 弄脏我的手?

shell-script systemd

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

为什么循环查找的输出是不好的做法?

这个问题的灵感来自

为什么使用 shell 循环处理文本被认为是不好的做法?

我看到这些结构

for file in `find . -type f -name ...`; do smth with ${file}; done
Run Code Online (Sandbox Code Playgroud)

for dir in $(find . -type d -name ...); do smth with ${dir}; done
Run Code Online (Sandbox Code Playgroud)

几乎每天都在这里使用,即使有些人花时间对这些帖子发表评论,解释为什么应该避免这种东西......
看到此类帖子的数量(以及有时这些评论被简单地忽略的事实)我想我还不如问一个问题:

为什么循环find的输出是不好的做法,为 返回的每个文件名/路径运行一个或多个命令的正确方法是find什么?

find filenames files for

193
推荐指数
4
解决办法
3万
查看次数

如何从大型 tar.gz 存档中提取单个文件夹?

我在5GB存档上使用此命令

tar -zxvf archive.tar.gz /folder/in/archive
Run Code Online (Sandbox Code Playgroud)

这是正确的方法吗?似乎永远没有命令行输出......

shell tar gzip

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

如何在shell中转义引号?

我在 bash 中转义字符时遇到问题。我想在不同用户下运行命令时转义单引号和双引号。出于这个问题的目的,假设我想在屏幕上回显以下内容:

'single quote phrase' "double quote phrase"
Run Code Online (Sandbox Code Playgroud)

如果我还需要切换到其他用户,我该如何转义所有特殊字符:

sudo su USER -c "echo \"'single quote phrase' \"double quote phrase\"\""
Run Code Online (Sandbox Code Playgroud)

当然,这不会产生正确的结果。

shell quoting escape-characters

113
推荐指数
4
解决办法
31万
查看次数

journalctl:如何防止文本在终端中被截断

如何防止长字符串在终端中被截断?例如,如果我跑

journalctl -xn

有很多文字我无法阅读。我愿意使用其他程序/工具。

terminal systemd

99
推荐指数
4
解决办法
9万
查看次数

GTK - 在每个应用程序的基础上启用/设置深色主题

有没有办法为应用程序设置 gtk-application-prefer-dark-theme ?

这通常由应用程序在代码中设置。侏儒之眼和图腾等应用程序将其打开。我想作为用户打开它,基于每个应用程序。

对于 gnome-terminal,我通常在黑色背景配色方案上使用白色文本,并且具有深色窗口边框会改善整体外观。

我也想为 vlc 打开它。

gnome gtk gtk3

78
推荐指数
3
解决办法
9万
查看次数

用它们的实际值替换文件中的环境变量?

有没有一种简单的方法来替换/评估文件中的环境变量?假设我有一个config.xml包含以下内容的文件:

<property>
    <name>instanceId</name>
    <value>$INSTANCE_ID</value>
</property>
<property>
    <name>rootPath</name>
    <value>/services/$SERVICE_NAME</value>
</property>
Run Code Online (Sandbox Code Playgroud)

...等等。我想$INSTANCE_IDINSTANCE_ID环境变量的值替换文件$SERVICE_NAME中的SERVICE_NAMEenv var的值。我不会先验地知道需要哪些环境变量(或者,如果有人向配置文件添加了新的环境变量,我不想更新脚本)。谢谢!

scripting shell-script text-processing environment-variables

77
推荐指数
3
解决办法
10万
查看次数