小编use*_*own的帖子

GNU 为某些 shell 查找并屏蔽 {} - 哪个?

GNU find 的手册页指出:

-exec command ;
    [...] The  string `{}'  is  replaced  by the current 
    file name being processed everywhere it occurs in the 
    arguments to the command, not just in arguments where 
    it is alone, as in some  versions  of  find.
    Both  of  these  constructions might need to be escaped 
    (with a `\') or quoted to protect them from expansion 
    by the shell. 
Run Code Online (Sandbox Code Playgroud)

那是从人到find(GNU findutils)4.4.2。

现在我用 bash 和 dash 测试了这个,两者都不需要{}被屏蔽。这是一个简单的测试:

find /etc -name "hosts" -exec …
Run Code Online (Sandbox Code Playgroud)

shell find xargs quoting

37
推荐指数
3
解决办法
3846
查看次数

如何在每个选项卡上使用不同的命令运行 xfce-terminal 并在命令返回后继续使用这些选项卡?

为了保持概览,我喜欢将多个命令始终以相同的顺序放置并一起自动启动(gradle、git、数据库、scala-REPL、jboss...)

-H (hold) 好像是终端终止后没有关闭的意思,但是我该如何随意终止这样的进程呢?一点也不?这样我就可以继续使用终端了。

我正在将 xubuntu 与 xfce4-terminal 和 bash 一起使用。是否有更好的 GUI 解决方案来启动多个命令,并能够在该窗口/选项卡中继续工作?

更新:如果您不知道这些命令:Jboss 和 gradle 不断产生输出,您不希望在同一个终端中混合使用。有时它们需要用 ^C 中断,然后重新启动。我不喜欢重新打开 xfce4-term 并导航到我需要操作的目录。

数据库和 scala-REPL 是交互式的,因此在后台启动它们是没有意义的。

我当前的启动脚本只是导航到所需的目录,并以正确的顺序打开所有选项卡以找到它们始终位于同一位置,并为其命名每个选项卡:

xfce4-terminal -T eclipse   --working-directory=/home/stefan/oximity -e "/opt/eclipse/eclipse" \
    --tab -T arandr --working-directory=/home/stefan/oximity -e "arandr /home/stefan/.screenlayout/oximity.sh" \
    --tab -T bash       --working-directory=/home/stefan/oximity \
    --tab -T gradle     --working-directory=/home/stefan/oximity/med \
    --tab -T git        --working-directory=/home/stefan/oximity/med \
    --tab -T mysql      --working-directory=/opt/mini/mysql \
    --tab -T jboss      --working-directory=/opt/mini/jboss \
    --tab -T jboss-log  --working-directory=/opt/mini/jboss/standalone/log \
    --tab -T scala-REPL --working-directory=/home/stefan/proj/mini/forum -e /opt/scala/bin/scala
Run Code Online (Sandbox Code Playgroud)

Eclipse 和 arandr …

xfce4-terminal

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

Bash:将多行输入拆分为数组

我有一个文件,其中包含多行字符串和 base64 编码数据,各行之间用逗号分隔。

例子:

1,meV9ivU4PqEKNpo5Q2u2U0h9owUn4Y8CF83TTjUNWTRQs7dEgVxnsMgf4lvg9kvxcIaM3yB4Ssim
z46M/C7YlovNUmrjOByhV1SCb/bGyv1yL7SYFnw1GHbYjdH0b6UZ7nQzJHU6VmwMo0V77vFNy6nx
rmJZ4KqW9EcjdV1plQmsVXSiZVi61+fNOHCMDmVtJ4q097geWxf4bT0/k/yRyRwi5Zr8BC64htVS
AdwOSo4PIk7xDLOzLywAYOCDQvD/zuErf1L0e8nHGz2LKdApHdEWB7Y2yM3iZyXuQ4sMx0+oX66+
FxwUulvHj+EpXtLJx5rmV7AUjr/GsNw/1aYAGPCfz0S+//Ic5pXX5rY1fZ96oFGw4a9vRiAmxe/w
ZOza6LtwuF+WUHjbIeWTUKKQGgFIM81dwVHHY7xdRnQhK5J0Zf3Xz0GzzZj5/2YFbI8q7lVkJ3ZQ
7Oqt0qdfk3aj+BQhOxmn1F55yACPBZoPUw6K8ExTHHGVGdCEiIDTu5qKHcUwK0hGAZA9Mun5KTO0
gPs9JxF8FJjkQBF7rEa6TP3pH5OwdkATH2uf+Zcmp1t6NbBymXVlsLzWZookVsaT1DNXf1I1H8Xz
8dnfh6Yl63jSr2PAhDrcOqJNM8Z9/XhBGxtlD1ela3nq6N1ErR1Gv1YZKNeNcL7O2Z3Vl2oyyDw=,U2FsdGVkX1/c8rTTO41zVT7gB+KL+n7KoNCgM3vfchOyuvBngdXDGjXTvXTK0jz6
Run Code Online (Sandbox Code Playgroud)

现在,我想将内容拆分为一个数组,以便每个多行字符串都是一个数组元素。

我尝试使用 IFS,但只读取第一行:

filecontent=$(cat myfile)
IFS=',' read -a myarray <<< "$filecontent"
Run Code Online (Sandbox Code Playgroud)

结果:

$myarray[0] = 1 
$myarray[1] = meV9ivU4PqEKNpo5Q2u2U0h9owUn4Y8CF83TTjUNWTRQs7dEgVxnsMgf4lvg9kvxcIaM3yB4Ssim
Run Code Online (Sandbox Code Playgroud)

预期的:

$myarray[0] = 1
$myarray[1] = meV9ivU4PqEKNpo5Q2u2U0h9owUn4Y8CF83TTjUNWTRQs7dEgVxnsMgf4lvg9kvxcIaM3yB4Ssim
z46M/C7YlovNUmrjOByhV1SCb/bGyv1yL7SYFnw1GHbYjdH0b6UZ7nQzJHU6VmwMo0V77vFNy6nx
rmJZ4KqW9EcjdV1plQmsVXSiZVi61+fNOHCMDmVtJ4q097geWxf4bT0/k/yRyRwi5Zr8BC64htVS
AdwOSo4PIk7xDLOzLywAYOCDQvD/zuErf1L0e8nHGz2LKdApHdEWB7Y2yM3iZyXuQ4sMx0+oX66+
FxwUulvHj+EpXtLJx5rmV7AUjr/GsNw/1aYAGPCfz0S+//Ic5pXX5rY1fZ96oFGw4a9vRiAmxe/w
ZOza6LtwuF+WUHjbIeWTUKKQGgFIM81dwVHHY7xdRnQhK5J0Zf3Xz0GzzZj5/2YFbI8q7lVkJ3ZQ
7Oqt0qdfk3aj+BQhOxmn1F55yACPBZoPUw6K8ExTHHGVGdCEiIDTu5qKHcUwK0hGAZA9Mun5KTO0
gPs9JxF8FJjkQBF7rEa6TP3pH5OwdkATH2uf+Zcmp1t6NbBymXVlsLzWZookVsaT1DNXf1I1H8Xz
8dnfh6Yl63jSr2PAhDrcOqJNM8Z9/XhBGxtlD1ela3nq6N1ErR1Gv1YZKNeNcL7O2Z3Vl2oyyDw=
$myarray[2] = U2FsdGVkX1/c8rTTO41zVT7gB+KL+n7KoNCgM3vfchOyuvBngdXDGjXTvXTK0jz6
Run Code Online (Sandbox Code Playgroud)

有人可以帮我吗?

bash array split

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

ls 在 strace 下的行为不同

我不知道如何调试这种情况:

1)我尝试执行:

ls /home/user
Run Code Online (Sandbox Code Playgroud)

2) ls 阻止并且不打印任何内容。我认为这是因为 /home/user 包含 /home/user/sshfs_files,这是一个 sshfs 挂载目录,但我的机器上的网络出现故障(网络再次启动,但我猜 SSH 连接已丢失)。

3) 因为我想确定挂载的目录是 sshfs 的原因,所以我在 strace 下尝试了相同的命令:

strace -o /tmp/log ls /home/user
Run Code Online (Sandbox Code Playgroud)

4) ls 确实有效!所以现在的情况是 ls 在 strace 下工作但它自己阻塞。

怎么可能?如何解释这种情况?如果 ls 没有在 strace 下阻塞,我如何查看它的阻塞位置?

谢谢!

networking sshfs strace

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

如何让网络管理员重复尝试连接 DSL 直到成功?

我正在使用 nm-applet 拨号 DSL pppoe 连接。由于我的本地网络中有大量用户,有时我必须尝试多次才能建立成功的连接。

我想知道有什么方法可以设置 nm-applet 或 network-manager 自动重复尝试直到连接成功。

我的系统是Gentoo,桌面环境是Gnome。

networkmanager ppp

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

如何清理用作缓存的 RAM 内存?

我的处理器正在使用我的 RAM 内存的很大一部分作为缓存,因此我想清理它;会不会有偏见?

cache terminal ram

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

如何像子程序一样调用其他 shell 脚本?

如何调用其他 shell 脚本并等待其完成?

我想传递输入参数并接收返回的结果代码。并继续运行其余的代码。

shell-script

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

字符串模式匹配 =~

我有问题要了解与字符串模式匹配=〜庆典

我编写了以下函数(不要惊慌 - 这只是试验,不是 md5sum 的安全方法):

md5 ()  { 
     [[ "$(md5sum $1)" =~ $2* ]] && echo fine || echo baarr; 
}
Run Code Online (Sandbox Code Playgroud)

并用一些输入对其进行了测试。这里有一些参考:

md5sum wp.laenderliste
b1eb0d822e8d841249e3d68eeb3068d3  wp.laenderliste
Run Code Online (Sandbox Code Playgroud)

如果控制和的源不包含文件名的两个空格,则不必要地难以比较。这就是观察的来源,但比解决该问题的多种方法更有趣的是我的观察:

我定义了一个控制变量,并用太短但匹配的字符串测试我的函数:

ok=b1eb0d822e8d841249e3d68eeb3068d3
for i in {29..32}; do md5 wp.laenderliste ${ok:1:$i} ;done 
fine
fine
fine
fine
Run Code Online (Sandbox Code Playgroud)

这是预期的并且很好,因为它是函数的目的,忽略丢失的“wp.laenderliste”的不匹配,因此甚至更长的不匹配。

现在,如果我添加不匹配的随机内容,我当然希望出现错误,并得到它们:

for i in {29..32}; do md5 wp.laenderliste ${ok:1:$i}GU ;done 
baarr
baarr
baarr
baarr
Run Code Online (Sandbox Code Playgroud)

正如预期的那样。但是当只有一个最后一个不匹配的字符时,看看会发生什么:

for i in {29..32}; do md5 wp.laenderliste ${ok:1:$i}G ;done 
fine
fine
fine
fine
Run Code Online (Sandbox Code Playgroud)

这是我,没有意识到这应该如何工作(select 坏了),还是在 …

bash string regular-expression

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

在 Linux 中安排 autoexec.bat 之类的命令的最干净方法是什么?

我想为我的 Linux 系统创建一个小脚本,它可以在 PC 启动时做一些简单的事情。脚本很可能是 Python,但也许我会求助于 C 或 shell。

问题是我是 Windows 开发人员,网上的教程看起来很可疑。

其中一些关闭所有文件描述符,一些不关闭,一些实现重启,强制重启,一些不。后来的那些似乎违反了规范。然后是整个 gid 事情,这让我感到困惑。

所以基本上,我不知道我可以将哪个脚本库用于稳定的守护进程,哪些是在我的机器上运行的,所以它是正确的类型。

然后我偶然发现了http://manpages.ubuntu.com/manpages/hardy/man1/daemon.1.html,这似乎是一个安全的创建守护进程的官方过程。但话又说回来,如果我理解正确的话,它是 init.d 中的脚本进行启动,而不是现有进程。

然后是“nice”,它应该用于长时间运行的任务,如果我做对了,可能还有其他一些问题。

所以我在这里迷路了。任何人都可以给我一些警告,不要给我一些警告,也许可以知道在哪里可以在线查找信息?

PS 我要调用的脚本必须调用进程,这是否意味着守护进程会为每个进程分叉?

linux startup daemon

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