小编Cbh*_*ihe的帖子

将默认编辑器更改为 vim _ sudo systemctl edit [unit-file] _

[4.13.12-1-ARCH 在 Xorg 上使用 gnome3 和 gdm]

我已经将我的 VISUAL 和 EDITOR env-vars 设置为vim. 同样,我确实SYSTEMD_EDITOR="vim"; export SYSTEMD_EDITOR 在我的 ~/.bashrc 中尝试过,但无济于事。

在 Arch (systemd) 中修改单元文件时

 $ sudo systemctl edit _unit_ 
Run Code Online (Sandbox Code Playgroud)

我发现自己盯着nano. 人生苦短,我vim无论如何都想要。我该怎么做呢 ?

vim editors systemd

41
推荐指数
3
解决办法
2万
查看次数

Udev 规则:ACTION=="add" 有效,但 ACTION=="remove" 无效!

我已经写文件90-usb.rules/etc/udev/rules.d/包含:

ACTION=="add", ATTR{idVendor}=="0bb4", ATTR{idProduct}=="2008", RUN+="/bin/mkdir /home/pandya/Desktop/testdir"
ACTION=="remove", ATTR{idVendor}=="0bb4", ATTR{idProduct}=="2008", RUN+="/bin/rmdir /home/pandya/Desktop/testdir"
Run Code Online (Sandbox Code Playgroud)

当我插入设备时 udevACTION=="add"通过RUN+="/bin/mkdir /home/pandya/Desktop/testdir"(工作正常)创建目录

但是当我拔下类似 udev 的设备时ACTION=="remove ,不会通过以下方式删除目录RUN+="/bin/rmdir /home/pandya/Desktop/testdir"

没有问题,/bin/rmdir因为我也检查过用另一个mkdir( RUN+="/bin/mkdir /home/pandya/Desktop/testdir2")替换它,但这也不起作用。

所以,我想知道为什么删除操作不起作用?我如何解决它?

udev trisquel

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

测试 shell 对数组的支持

是否有一种简洁的方法可以在命令行中测试本地类似 Bourne 的 shell 对数组的支持?

这总是可能的:

$ arr=(0 1 2 3);if [ "${arr[2]}" != 2 ];then echo "No array support";fi
Run Code Online (Sandbox Code Playgroud)

或测试$SHELL和外壳版本:

$ eval $(echo "$SHELL --version") | grep version
Run Code Online (Sandbox Code Playgroud)

然后阅读手册页,假设我可以访问它。(即使在那里,从写/bin/bash,我假设所有类似Bourne外壳承认的长选项--version,当减免KSH例如)。

我正在寻找一个简单的测试,它可以无人参与,并在脚本开始时甚至在调用它之前合并到使用部分中。

shell array shell-script

13
推荐指数
2
解决办法
1917
查看次数

如何将(十进制)变量(前导零)的值增加 +1?

我有一个名为 Build.number 的文件,内容值为012,我需要将其增加 +1。所以,我试过这个

BN=$($cat Build.number)
BN=$(($BN+1))
echo $BN >Build.number
Run Code Online (Sandbox Code Playgroud)

但在这里,当我期待013时,我得到了值 11 。谁能帮我?

bash shell-script arithmetic numeric-data

13
推荐指数
2
解决办法
2819
查看次数

在_进程替换_的上下文中理解 i/o 重定向

运行 GNU bash,版本 4.3.11(1)-release (x86_64-pc-linux-gnu)。

从有兴趣了解 I/O 处理和相关速度问题的用户的角度来看,我并不真正理解进程替换(ProcSub)。我使用 ProcSub 编写脚本,因此我对文件描述符 0、1、2 有一些了解,但仅此而已。我读过一些不错的帖子,例如[1]和其他。wikis,例如[2][3],后者说明:“进程替换将一个(或多个进程)的输出(FD 1 和/或 2)馈送到另一个进程的标准输入(FD 0)中”。通过最简单的定义和一个过程,它在操作上似乎与简单的未命名管道没有什么不同。

为了研究这一点,我tee从 i/o 的角度来看,这本身就很有趣。
tee允许将"stdin 输入到 stdout 以及作为参数给出的任何文件"。所以 :

$ for i in 1 2 3; do (( j=i+10 )); printf "%d\n" $j > file_$i; done
# so each file in file_{1,2,3} contains the numeral in its name + 10.
$ cat file_{1,2,3} | tee file_4
11
12
13
$ …
Run Code Online (Sandbox Code Playgroud)

bash pipe io-redirection process-substitution tee

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

如何防止从 awk **脚本**(而不是从 cli)打印到标准输出

[Archlinux 上的 GNU awk v4.2.1]

抑制awk从 cli 到 stdout 的默认打印操作很简单,并且在 UL 上有详细记录,例如此处。从脚本中执行此操作让我很头疼。这是玩具脚本:

#!/usr/bin/awk -f
BEGIN {FS=","} 
FNR > 1          # skip header
{   
    if ( $1 == $2 ) {
        if ( NR == 4 ) {
            printf("*** Print NR=4 ok. \n")
        } else {
            print > "/dev/null"  # print nothing
        }
    } else {
        printf("=== Fields 1 and 2 not equal (NR=%s). \n",NR)
    }
}
Run Code Online (Sandbox Code Playgroud)

和玩具数据:

col1 col2
1,3
2,2
aa,aa
3.01,-353.01
4.1,4.1
101,101
hello, …
Run Code Online (Sandbox Code Playgroud)

scripting awk stdout

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

如何用 ',' 分隔输出记录,同时避免 awk 中的尾随逗号

考虑以下awk语句及其输出:

$ awk -F "/" '/\/tcp/ {print $1}' input_file

10\n
20\n
Run Code Online (Sandbox Code Playgroud)

我想要的输出是:

10,20
Run Code Online (Sandbox Code Playgroud)

我尝试的是:

$ awk -F "/" 'BEGIN{ORS=","} /\/tcp/ {print $1}' input_file
10,20,
Run Code Online (Sandbox Code Playgroud)

如何去掉末尾的逗号?

awk text-formatting

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

在 Linux 中将 Shell 脚本作为 SystemD 服务运行

我尝试运行这些命令

$ nano /usr/bin/script.sh 
$ chmod +x /usr/bin/script.sh
$ cat /lib/systemd/system/shellscript.service 
[Unit]
Description=My Shell Script

[Service]
ExecStart=/usr/bin/script.sh

[Install]
WantedBy=multi-user.target

$ systemctl daemon-reload 
$ systemctl enable shellscript.service 
$ systemctl start shellscript.service 
Run Code Online (Sandbox Code Playgroud)

但在检查服务状态时,我得到:

$ systemctl status shellscript.service

shellscript.service - My Shell Script
     Loaded: loaded (/lib/systemd/system/shellscript.service; enabled; vendor preset: disabled)
     Active: failed (Result: exit-code) since Mon 2022-05-23 13:20:33 EEST; 14s ago
    Process: 1276 ExecStart=/usr/bin/script.sh (code=exited, status=1/FAILURE)    Main PID: 1276 (code=exited, status=1/FAILURE)
        CPU: 10ms
May 23 13:20:33 kali systemd[1]: Started My Shell Script. 
May …
Run Code Online (Sandbox Code Playgroud)

linux root shell-script systemd

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