我正在编写一个 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) 所以我刚刚在我的笔记本电脑上安装了最新的 Kali Linux,它基于 Debian 7(oldstable)。然后我将整个东西升级到 Debian 8。
我一直想要 Wayland 而不是 X11,所以我安装了必要的软件包。然后创建了一个最小~./config/weston.ini配置。现在,从 Gnome 登录屏幕:
我可以启动到Gnome on Wayland或LXDE(除其他外)。前者的成功非常有限,后者 (LXDE) 几乎完美,尽管面板需要设置(我必须查找 freedesktop)。
无论如何,在 LXDE 中,GUI 的响应速度比在 oldstable 上更快,并且在运行 Windows 7 时可能也一样快。我很高兴。
但我想知道这是因为从 Debian 7 到 8 的所有库/模块升级还是因为使用 Wayland(如果我真的在使用 Wayland)。我浏览了 htop,发现了一个/usr/bin/Xorg正在运行且没有名为“wayland”的进程。那么我目前正在运行哪一个?
我的问题:
我正在编写一个 bash 脚本,我想在其中检查给定的服务是否正在运行。
我知道如何手动执行此操作,使用$ service [service_name] status.
但是(尤其是在转向 systemd 之后)会打印一大堆文本,解析起来有点麻烦。我假设有一个为脚本制作的命令,带有简单的输出或我可以检查的返回值。
但是谷歌搜索只会产生大量“哦,只是ps aux | grep -v grep | grep [service_name]”的结果。这不可能是最佳做法,是吗?如果该命令的另一个实例正在运行,但不是由 SysV init 脚本启动的呢?
还是我应该闭嘴,用一点 pgrep 弄脏我的手?
这个问题的灵感来自
我看到这些结构
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什么?
我在5GB存档上使用此命令
tar -zxvf archive.tar.gz /folder/in/archive
Run Code Online (Sandbox Code Playgroud)
这是正确的方法吗?似乎永远没有命令行输出......
我在 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)
当然,这不会产生正确的结果。
如何防止长字符串在终端中被截断?例如,如果我跑
journalctl -xn
有很多文字我无法阅读。我愿意使用其他程序/工具。
有没有办法为应用程序设置 gtk-application-prefer-dark-theme ?
这通常由应用程序在代码中设置。侏儒之眼和图腾等应用程序将其打开。我想作为用户打开它,基于每个应用程序。
对于 gnome-terminal,我通常在黑色背景配色方案上使用白色文本,并且具有深色窗口边框会改善整体外观。
我也想为 vlc 打开它。
有没有一种简单的方法来替换/评估文件中的环境变量?假设我有一个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_ID用INSTANCE_ID环境变量的值替换文件$SERVICE_NAME中的SERVICE_NAMEenv var的值。我不会先验地知道需要哪些环境变量(或者,如果有人向配置文件添加了新的环境变量,我不想更新脚本)。谢谢!
scripting shell-script text-processing environment-variables