标签: bsd

没有给我正确的替代操作与Mac换行 - GNU sed和BSD/OSX sed之间的差异

我正在使用这个参考:sed help:匹配和替换文字"\n"(不是换行符)

我有一个文件"test1.txt",其中包含一个字符串hello \ngoodbye

我使用此命令搜索并用实际的换行符替换"\n":

sed -i '' 's/\\n/\n/g' test1.txt
Run Code Online (Sandbox Code Playgroud)

但结果是:hellongoodbye.它只是将"\n"替换为"n"而不是实际的新行.这与/ t相同,它将留下"t"而不是选项卡.

''是针对MAC中未定义的错误:http://mpdaugherty.wordpress.com/2010/05/27/difference-with-sed-in-place-editing-on-mac-os-x-vs-linux /

更新:

我已经尝试了@ hek2mgl建议的两个命令:

sed -i 's/\\n/\n/g' test.txt
# Or:
sed -i'' 's/\\n/\n/g' test.txt
Run Code Online (Sandbox Code Playgroud)

虽然它们可能适用于Linux,但使用MAC OS时出现以下错误:

sed: 1: "test1.txt": undefined label 'est1.txt'
Run Code Online (Sandbox Code Playgroud)

不知道为什么我不能让这个工作.提前致谢.

macos bsd gnu sed

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

如何保证指定文件是来自PHP的BSD/Linux上的设备?

在处理从中/dev/urandom生成随机字节的项目时,建议我检查以确保它/dev/urandom不仅仅是一个文件.

最直接的方式似乎是这样的:

/**
 * Is the given file a device?
 * 
 * @param string|resource $file
 * @return boolean
 */
function is_device($file)
{
    if (is_resource($file)) {
        $stat = fstat($file);            
    } elseif (is_readable($file) && !is_link($file)) {
        $stat = stat($file);
    } else {
        return false;
    }
    return $stat['rdev'] !== 0;
}
Run Code Online (Sandbox Code Playgroud)

我的问题是双重的:

  1. 这是检查此文件是设备的最佳方法吗?
  2. 是否存在此$stat['rdev'] !== 0检查失败的情况?

重要提示:我需要的解决方案必须是PHP,而不依赖于任何PECL扩展或自定义C代码.该项目是PHP 7的纯PHP 5填充random_bytes()random_int()函数,可以由Composer安装在任何其他人的PHP 5项目中.

php linux filesystems file-io bsd

14
推荐指数
1
解决办法
194
查看次数

1024个CPU的内核调度

Azul Systems有一个支持数千个高速缓存一致CPU的设备.我希望能够深入了解操作系统需要进行哪些更改才能安排数千个同时运行的线程.

multithreading bsd kernel linux-kernel

13
推荐指数
4
解决办法
1442
查看次数

GPL和BSD内核中的专有模块

由于Linux内核是GPL而不是LGPL,我认为将专有代码链接到它是违法的.该行业如何规避这一点?我希望GPL许可证会强制任何开发人员在GPL驱动程序和/或内核模块下发布.

也许我很困惑,实现一个新模块并没有真正链接内核代码??? 公司如何处理这个问题?也许链接相反(从内核到他们的二进制文件)?

另一方面,有BSD内核.您可以自由链接受保护的IP.你能在BSD内核中实现更好的驱动程序设计吗?在为GPL内核实现驱动程序时是否有任何设计限制?

bsd licensing kernel gpl driver

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

在OS X上使用/ dev/autofs_nowait的风险和回报

整个的CoreFoundation框架源,POSIX文件系统API调用(例如open(),stat(),等人...)被包裹在一个成语其中在描述符/dev/autofs_nowait获取-与open(…, 0)- POSIX的呼叫才制成; 之后描述符是close()在范围退出之前的'd'.

  • 这样做有什么好处?有什么风险?

  • 获取/dev/autofs_nowait描述符是否会对任何如此包装的open()调用(例如O_NONBLOCK)的标记产生影响,或者是否受其影响?

  • /dev 在我的机器上,运行OS X 10.10.5还有其他"autofs"条目:

    dev目录列表

    ......没有一个man页面可用.如果这些类似文件的设备可以提供这方面的好处,我将有兴趣了解它们的用途,因为它可能属于它.



附录:我在这个问题上找不到多少内容; 2011年Google Plus帖子声称:

[t]他的文件是一个特殊设备,由内核中的autofs文件系统实现监控.打开时,autofs文件系统不会在autofs文件系统上的任何I/O操作上阻止该进程.

我不太清楚这意味着什么(他们专门讨论了如何launchd工作,FWIW)但我自己很好奇,所以我编写了一个快速的上下文管理器-Y RAII结构试用它 - 非目标性的分析显示了POSIX的测试调用完成速度更快但在一般哈希标记内; 在我获得更多关于它如何工作的背景之后,我将用更精细的梳子来研究这种策略.

bsd asynchronous vfs core-foundation xnu

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

有没有小的Unix或BSD发行版?

我想知道是否有任何小型BSD或unix版本.我见过的最小的Linux版本看起来不错,就是partedmagic(约70MB).免费的BSD需要像4张CD,可能更多.

unix linux bsd

10
推荐指数
1
解决办法
8790
查看次数

您将如何构建数据库文件系统(DBFS)?

数据库文件系统是一个文件系统,它是一个数据库而不是一个层次结构.最初的想法不是太复杂,但我想我会问是否有人想过他们会怎么做这样的事情?一个简单的计划可能会错过的问题是什么?我对实现的第一个猜测是类似于Linux平台的文件系统(可能在现有的文件系统上),但我真的不知道如何启动它.这是一个过去的想法,我怀疑我是否会继续,但我希望至少满足我的好奇心.

database linux filesystems bsd operating-system

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

一个进程锁定了多少内存

使用getrlimit(RLIMIT_MEMLOCK),可以获得进程可以分配的允许的锁定内存量(mlock()或mlockall()).

但是如何检索当前锁定的内存量?

例如,getrusage()没有返回任何信息.

在Linux下,可以读取/ proc/self/status并从VmLck开始的行中提取锁定内存量.

是否有一种可移植的方法来检索可在Linux,*BSD和其他POSIX兼容系统上运行的锁定内存量?

c unix linux bsd posix

10
推荐指数
1
解决办法
4064
查看次数

什么是相当于BSD的'tail -n100'的Solaris?

我已经看了一千次,我总是忘记它,所以,这里是永恒的:

Solaris有一些尴尬的语法tail.

我该如何做相当于BSD的?tail -nN

我想要的是尾部输入的最后N行.

unix bsd solaris tail

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

OS X上的grep -f会产生段错误

如果你有一台Mac,试试这个:

echo 'abcd*' > grepfile
echo 'abc$' >> grepfile
echo '^abc' >> grepfile
echo "fojeiwuroiuwet\nljfajsljkfabcdddjlfkajlkj\nabcaaa\nzzzabc\n" | grep -f grepfile
Run Code Online (Sandbox Code Playgroud)

这是版本:

$ grep --v
grep (BSD grep) 2.5.1-FreeBSD
Run Code Online (Sandbox Code Playgroud)

这是一台机器(2012年风味的rMBP),它与Apple的软件更新保持同步,所以我在10.8.4.

我验证了grep从源代码编译的GNU 没有遇到这个问题.实际上它是版本2.14,它是2.5.1之前的许多版本.

但是,如果没有一些非常低效的循环为每个正则表达式分配grep,那么如何才能实现针对一系列正则表达式测试某些输入的任务呢?

编辑:我采取的解决方法类似于:while read REGEX; do [[ ... =~ $REGEX ]] ... done < regexfile.

问题:这是这个版本的grep的已知错误吗?我们如何设置我们的系统,以便它们可以正常使用正则表达式grep文件?

更新:看起来有些人报告它工作正常(即使使用这个特殊的FreeBSD 2.5.1 grep).我可以采取哪些步骤来找出它可能使用的.so/.dylib?有人可以做shasum /usr/bin/grep并告诉我它是否适合你?(我不确定这是否会提供更多信息,但我所追求的是我的计算机配置是否被搞砸了,或者这是否是这个版本软件存在的实际问题.)

$ shasum /usr/bin/grep
eac59389d09642decbb8551e2c975f795934bfbf  /usr/bin/grep
Run Code Online (Sandbox Code Playgroud)

这是更多信息:

$ codesign -dvvv /usr/bin/grep
Executable=/usr/bin/grep
Identifier=com.apple.zgrep
Format=Mach-O thin (x86_64)
CodeDirectory v=20100 size=224 flags=0x0(none) hashes=6+2 location=embedded
Hash type=sha1 size=20
CDHash=93b823c000188f8737653d8333c90a6db9361d70 …
Run Code Online (Sandbox Code Playgroud)

macos grep bsd freebsd segmentation-fault

8
推荐指数
1
解决办法
799
查看次数