我正在编写一个bash脚本,需要知道哪个桌面环境(XFCE、Unity、KDE、LXDE、Mate、Cinnamon、GNOME2、GNOME3...)正在运行。
我怎样才能获得这些信息?
我问这个问题是因为,虽然互联网上有很多答案表明这who -a是一个选项,但没有人解释如何阅读输出。如果您可以提供一个指向解释这一点的在线网站的链接,那同样是一个很棒的答案。这是我想破译的一个例子:
[bo@hostname ~]$ who -a
Jun 17 03:47 590 id=si term=0 exit=0
system boot Jun 17 03:47
run-level 3 Jun 17 03:47 last=S
Jun 17 03:48 4424 id=l3 term=0 exit=0
LOGIN tty1 Jun 17 03:48 5503 id=1
LOGIN tty2 Jun 17 03:48 5504 id=2
LOGIN tty3 Jun 17 03:48 5505 id=3
LOGIN tty4 Jun 17 03:48 5506 id=4
LOGIN tty5 Jun 17 03:48 5507 id=5
LOGIN tty6 Jun 17 03:48 5508 id=6
pts/0 Oct 19 16:27 15250 …Run Code Online (Sandbox Code Playgroud) sed在实际运行之前,有什么方法可以运行试用递归搜索并替换 using吗?我只想在实际进行搜索和替换之前打印出结果。类似于呼应的结果,
grep -rl term1 . |xargs sed -i -e 's/term1/term2/'
Run Code Online (Sandbox Code Playgroud) 下面的awk命令删除所有重复的行,如下所述:
awk '!seen[$0]++'
Run Code Online (Sandbox Code Playgroud)
如果文本包含空行,则将删除除一个空行之外的所有内容。
如何在删除所有非空重复行的同时保留所有空行,仅使用awk?还请附上简要说明。
我不理解 vim 中的下划线动作,至少在 yank (y) 的上下文中不理解。我的备忘单上写着:
"soft" bol down
Run Code Online (Sandbox Code Playgroud)
我不明白。如果我单独使用动作,它的意思似乎是一样的^:转到行上的第一个非空白处。
但是,如果我使用 with 的动作,y它会猛拉整条线(如yy或Y)。另一方面,y^不会拉出整行,而只会拉到第一个非空白字符,排他性 - 正如您所期望的那样。
那么,下划线_运动到底应该做什么?
我想创建一个alias重定向标准输出和标准错误gedit来/dev/null,同时发送命令到后台。
这有效:
$ alias gedit='gedit $1 > /dev/null 2>&1'
$ gedit file.txt &
Run Code Online (Sandbox Code Playgroud)
但是,将后台指令添加&到alias字符串无法正常工作,因为它会立即被解释:
$ alias gedit='gedit $1 > /dev/null 2>&1 &'
[1]+ Done gedit > /dev/null 2>&1
Run Code Online (Sandbox Code Playgroud)
我应该如何将此&后台指令添加到alias命令中?
在 XFCE 4.10 中,我可以使用xfdesktop --reload.
我想知道如何为尽可能多的其他桌面环境(Unity、KDE、LXDE、Mate、Cinnamon、GNOME2、GNOME3...)做同样的事情。
考虑以下bash 命令行上的GNU shell 参数扩展,其解释如下:
$ a='hello world example'
$ echo ${a//+( )/_}
hello_world_example
Run Code Online (Sandbox Code Playgroud)
然而,同样的参数扩展在 bash 脚本中不再起作用。
# !/usr/bin/env bash
a='hello world example'
echo "${a//+( )/_}"
Run Code Online (Sandbox Code Playgroud)
它导致未更改的字符串:
hello world example
Run Code Online (Sandbox Code Playgroud)
我已经从一个更简单的参数扩展中了解到命令" "后面的双引号echo是必需的,尽管我不知道为什么。
但是,要让这个特定的参数扩展在 bash 脚本中工作,还需要做些什么?为什么?