我有两个 Ubuntu-x86_64 系统。一个是 10.04 版,另一个是 12.04 版,lib 目录的结构有所不同。这并不让我感到惊讶,但我很好奇是否有人知道为什么。有什么好的理由吗?
10.04
2.6.32-38-server #83-Ubuntu SMP Wed Jan 4 11:26:59 UTC 2012 x86_64 GNU/Linux
/usr/lib
/usr/lib32
/usr/lib64
Run Code Online (Sandbox Code Playgroud)
12.04
3.2.0-23-generic #36-Ubuntu SMP Tue Apr 10 20:39:51 UTC 2012 x86_64 GNU/Linux
/usr/lib
/usr/lib/x86_64-linux-gnu
Run Code Online (Sandbox Code Playgroud) 在 POSIX Shell 中对变量进行 pre/post 递增时,这两个示例之间有什么区别。它们看起来会产生相同的结果,但它们的使用方式会不同吗?你什么时候更喜欢一个?
X=$((X+1))
: $((X=X+1))
Run Code Online (Sandbox Code Playgroud) 我有一个 sed 替换命令,我希望它与 BSDsed
和 GNU兼容sed
。扩展正则表达式不是问题,因为在这种情况下我不需要它们。我的主要问题是两个sed
s 解释替换字符串中的字符转义序列的方式不同。我的替换字符串包含制表符和换行符,为了便于维护,我希望它们在命令字符串中可见,但是,BSDsed
不解释转义序列,而 GNUsed
可以。指示sed
在 BSD 上解释这些转义序列的适当方法是什么?以下两个片段概括了我的问题:
GNU sed
echo ABC | sed 's/B/\n\tB\n'
Run Code Online (Sandbox Code Playgroud)
收益率
A
B
C
Run Code Online (Sandbox Code Playgroud)
BSD sed
echo ABC | sed 's/B\n\tB\n'
Run Code Online (Sandbox Code Playgroud)
产量
AntBnC
Run Code Online (Sandbox Code Playgroud)
显然,\n
并且\t
不会被 BSD 解释为转义序列sed
现在,我的问题。根据 BSDsed
联机帮助页:
要在替换字符串中指定换行符,请在其前面加上反斜杠。
这是否意味着我需要在文字换行符之前加上反斜杠?指示sed
解释\n
替换文本中的转义序列的适当方法是什么?
可能的重复:
使目录中的所有新文件可供组访问
我有一个目录,其中存储了协作文件/目录。假设目录abc
归所有者所有,root
组是project-abc
. 我希望此目录具有以下内容:
project-abc
允许组内成员更改此目录的内容。abc
必须为成员或组设置读写权限abc
abc
这对于静态目录来说很简单,但是该目录的内容预计会经常更改。我产生预期结果的最佳方法是什么?
是否有内置的 GNU Linux 来获取共享库的文件名列表?我考虑过解析ldconfig -p
. 但是,我不确定从系统到系统的输出的一致性。
我已经知道我可以使用,find
但鉴于链接器/加载器具有库和位置的缓存,以某种方式使用它似乎更有效。此外,链接器/加载器搜索的路径是我唯一关心的路径——即由ldconfig
.
有一个 bash 脚本可以打印一些日志并允许一些参数。该脚本将日志打印到 STDOUT。假设脚本的名称是AAA.sh
我也想使脚本日志打印到STDOUT
和file
。这可以通过tee
.
$ AAA.sh -a -b --c=d | tee 2012-07-03-080000.log
Run Code Online (Sandbox Code Playgroud)
但是我的团队经常忘记将输出通过管道传输到tee
. 我们应该将日志保存到文件中。所以我想用tee
.
我想做的是
$ WrapAAAwithTee.sh -a -b --c=d
Run Code Online (Sandbox Code Playgroud)
然后 AAAwithTee.sh 应该将日志打印到 STDOUT 和日志文件。
我怎样才能包装 AAA.sh?