说,我有两个返回一些文本的命令。例如:
$ ./c1
/usr/bin/foo
/usr/bin/bar
/usr/bin/baz
$ ./c2
/usr/bin/foo
/usr/bin/qux
/usr/bin/buzz
/usr/bin/bar
Run Code Online (Sandbox Code Playgroud)
我想删除重复的行;即输出将是(顺序不重要):
/usr/bin/baz
/usr/bin/qux
/usr/bin/buzz
Run Code Online (Sandbox Code Playgroud)
我该怎么做呢?
chroot jails 似乎只是一个不同的世界,与实际文件系统没有交互。因此,整个环境必须在 chroot 中复制,这意味着在其中完整安装系统。
但是,有没有办法让 chroot jail 拥有对主文件系统的读访问权限?此外,我还希望 chroot 能够选择自己的文件。例如,如果其中/usr/bin/wget存在,那么它应该优先于系统的/usr/bin/wget.
(我实际上正在寻找行为类似于Sandboxie 的东西。)
以上可行吗?
我试图在包含一些非 ASCII Unicode 字符的目录中查找文件。我事先不知道我必须找到的确切字符。
从概念上讲,这应该是一项简单的任务 - 找到与 regex 匹配的所有文件[^\0-\x7f]。但是,我无法想出可以真正做到这一点的东西。
我能想到的最接近的事情是:
find . -type f -exec grep -Plv '[\0-\x7f]' {} \;
Run Code Online (Sandbox Code Playgroud)
由于空行匹配,最终列出了大多数普通文本文件。
该-e开关不与组合允许的-P,所以我不能用-e '[\0-\x7f]' -e '^$',和正则表达式转换成[\0-\x7f]|^$将显然是错误的,因为现在它的“或”。
有没有另一种方法来搜索这样的字符?
有没有办法使用shell脚本创建目标不存在的符号链接?
从阅读中man 1 ln,我看不到这样做的选项;甚至-f检查目标是否存在。
有没有办法实现我正在寻找的东西?
Shell 脚本通常必须依赖于可能未安装在用户计算机上的工具。为了规避这个问题,许多脚本有多个回退。
IMO 做这样的事情只会导致复杂的代码,并且找到一大块脚本只是为了兼容性原因并不少见。
为什么不能将依赖项仅包含在脚本中?脚本可以包含这些程序(作为附加的压缩部分,就像makeself那样),并在运行时简单地使用它们?
澄清一下,当然这不适用于wget和curl; 在这种情况下,每个的代码将是最少的。我说的是涉及到图形用户界面的脚本,并有大量的代码来支持这样的程序(zenity/ yad/xdialog等),其中涉及完全不同的语法。
是否有原因未完成上述操作?
shell-script ×3
chroot ×1
dependencies ×1
duplicate ×1
grep ×1
ln ×1
security ×1
shell ×1
symlink ×1
text ×1