是否有一个sed
todo就地编辑的调用,没有可在Linux和Mac上运行的备份?虽然BSD sed
随OS X似乎需要sed -i '' …
,在GNU sed
Linux的发行版通常都与解释的报价为空,输入文件名(而不是备份扩展),并且需要sed -i …
替代.
是否有任何命令行语法适用于这两种风格,所以我可以在两个系统上使用相同的脚本?
有没有办法find
执行我在shell中定义的函数?例如:
dosomething () {
echo "doing something with $1"
}
find . -exec dosomething {} \;
Run Code Online (Sandbox Code Playgroud)
结果是:
find: dosomething: No such file or directory
Run Code Online (Sandbox Code Playgroud)
有没有办法让find
的-exec
看dosomething
?
我有兴趣验证是否为ARM或Intel构建了一个给定的iPhone静态库.
它比任何事物都更具好奇心.是否有某种Mac OS X或BSD特定工具来执行此操作?这篇文章在Linux中给出了一个例子.
我对Sed一无所知但是需要这个命令(在Ubuntu上运行正常)才能在Mac OSX上运行:
sed -i "/ $domain .*#drupalpro/d" /etc/hosts
Run Code Online (Sandbox Code Playgroud)
我越来越:
sed: 1: "/etc/hosts": extra characters at the end of h command
Run Code Online (Sandbox Code Playgroud) 网页上散布着各种描述POSIX AIO设施的页面,其中包含不同的细节.它们都不是最近的.目前还不清楚他们究竟在描述什么.例如,Linux内核异步I/O支持的"官方"(?)网站说套接字不起作用,但我的Ubuntu 8.04.1工作站上的"aio.h"手册页似乎都暗示它适用于任意文件描述符.然后还有另一个项目似乎在图书馆层工作,文档更少.
我想知道:
<aio.h>
似乎有希望?我可以使用的其他多路复用机制非常好,但随处可见的信息碎片让我很好奇.
对我来说,英特尔语法更容易阅读.如果我只是通过汇编森林来专注于英特尔语法,我会错过什么吗?有什么理由我想转换到AT&T(除了能够阅读其他人的AT&T组装)?我的第一个线索是gdb默认使用AT&T.
如果这很重要,我的重点只是任何关系汇编和语法可能有Linux/BSD和C语言.
Ping默认返回此值:
64 bytes from 203.173.50.132: icmp_seq=0 ttl=244 time=57.746 ms
Run Code Online (Sandbox Code Playgroud)
有什么方法可以让它添加时间戳吗?
例如,
Mon 21 May 2012 15:15:37 EST | 64 bytes from 203.173.50.132: icmp_seq=0 ttl=244 time=57.746 ms
Run Code Online (Sandbox Code Playgroud)
我在OS X v10.7(Lion)上似乎有一些BSD版本的ping.
目前,我已经实现了一个单链表,如下所示:
struct PeerNode {
struct Peer* cargo;
struct PeerNode* next;
};
Run Code Online (Sandbox Code Playgroud)
...我有一个包含几个链接列表的结构,如下所示:
struct Torrent {
...
struct PeerNode* peer_list;
struct PeerNode* unchoked_peers;
...
}
Run Code Online (Sandbox Code Playgroud)
我想通过使用提供的宏来替换它sys/queue.h
.我知道我可以用这样的代码替换我的代码:
struct Torrent {
...
LIST_ENTRY(PeerNode, Peer) peer_list;
struct PeerNode* unchoked_peers;
...
}
Run Code Online (Sandbox Code Playgroud)
然后,通过查看man queue
,我相信我会通过这样做来初始化列表:
LIST_INIT(&peer_list);
LIST_INIT(unchoked_peers);
Run Code Online (Sandbox Code Playgroud)
但是,我不明白如何LIST_ENTRY
使用列表的因素.从man
页面上,它说:"宏LIST_ENTRY
声明了一个连接列表中元素的结构,"但我真的不明白这意味着什么.
为什么我要声明一个结构来连接列表中的元素?不应该通过指针将每个节点连接到下一个节点,就像我的初始链表实现一样?如何用我提供的实现替换我的链表sys/queue.h
?如何在列表中插入元素?
我想知道如何使用单个sed
语句进行多重查找/替换Mac OSX
.我能够做到这一点, Ubuntu
但由于其BSD
性质OSX
,命令必须略有改变.
所以,给定一个包含字符串的文件:
"Red Blue Red Blue Black Blue Red Blue Red"
Run Code Online (Sandbox Code Playgroud)
我想运行一个导致输出的sed语句:
"Green Yellow Green Yellow Black Yellow Green Yellow Green"
Run Code Online (Sandbox Code Playgroud)
我的两个sed声明有资格 find
color1="Green"
color2="Yellow"
find . -type f -exec sed -i '' s/Red/$color1/g {} \;
find . -type f -exec sed -i '' s/Blue/$color2/g {} \;
Run Code Online (Sandbox Code Playgroud)
我已经尝试了几种分号和斜线的组合,并查看了Apple的开发人员页面上的sed,但由于缺少示例,我无法将它拼凑在一起.
我正在寻找替代方法来获取命令行参数argc
并argv
提供给进程,而无需直接访问传入的变量main()
.
我想使一类是独立的main()
,这样argc
并argv
没有明确地传递给使用它们的代码.
编辑:有些澄清似乎是有序的.我有这门课.
class Application
{
int const argc_;
char const** const argv_;
public:
explicit Application(int, char const*[]);
};
Application::Application(int const argc, char const* argv[]) :
argc_(argc),
argv_(argv)
{
}
Run Code Online (Sandbox Code Playgroud)
但我想一个默认的构造Application::Application()
,有一些(最有可能)的C代码,拉动argc
和argv
从某处.