在Mac OS 10.10.3中,我通过input以下命令安装了gnu-sed: brew install gnu-sed –default-names 当我再次input时,我收到消息: gnu-sed-4.2.2已经安装好了 但是,即使重新启动系统并重新启动terminal后,我仍然无法使用sed的GNU版本。 例如: echo a | sed 's_A_X_i' 返回:replace命令'i'中的坏标志 我应该怎么做才能使GNU版本工作? 这里是我的$ PATHvariables的path。 /Users/WN/-myUnix /opt/local/bin /opt/local/sbin /usr/bin /bin /usr/sbin /sbin /usr/local/bin /Applications/calibre.app/Contents/MacOS /opt/ImageMagick/bin /usr/texbin 对不起,如果我的问题似乎很明显,但我自己学习shell脚本,并不太了解如何安装UNIX程序。 任何帮助,在我的Mac上使用GNU兼容命令(在这种情况下sed,但很快我会需要其他人),而不会造成损坏或不必要的混乱,将不胜感激。
我很难理解你为什么需要asprintf。 它在说明书中说 函数asprintf()和vasprintf()类似于sprintf(3)和vsprintf(3),除了它们分配一个足够大的string来保存包括终止空字节的输出,并且通过第一个参数返回一个指向它的指针。 这个指针应该被传递给free(3),当不再需要的时候释放分配的存储。 所以这里是我想要了解的例子: asprintf(&buffer, "/bin/echo %s is cool", getenv("USER")); 如果缓冲区分配一个足够大的string与说char * =(string)有什么区别,
在我的makefile中,我想检查一个库的存在并给出一个信息错误信息。 我创build了一个条件,当文件没有find时应该退出make过程: 9: ifeq ($(${JSONLIBPATH}),) 10: JSONLIBPATH = ${ALTJSONLIBDIR}/${LIBJSON} 11: endif 12: ifeq ($(${JSONLIBPATH}),) 13: $(error JSON library is not found. Please install libjson before building) 14: endif 我的makefile卡在第13行: Makefile:13: *** commands commence before first target. Stop. 在第13行后,我的makefile有它的目标。 我试图把这个条件块放入一个目标(例如,一个名为isJSONLibraryInstalled的目标),但是这不能正确执行。 在处理目标之前,我将如何检查文件的存在并处理错误情况? 道歉,如果这是一个愚蠢的问题。
我有一个makefile(为Linux上的gmake开发),我试图移植到OSX,但它似乎像sed不想合作。 我所做的是使用GCC自动生成依赖文件,然后使用sed稍微调整它们。 makefile的相关部分: $(OBJ_DIR)/%.d: $(SRC_DIR)/%.cpp $(CPPC) -MM -MD $< -o $@ sed -i 's|\(.*\)\.o:|$(OBJ_DIR)/\1.o $(OBJ_DIR)/\1.d $(TEST_OBJ_DIR)/\1_utest.o:|' $@ 虽然在GNU / Linux下运行时没有问题,但是在尝试在OSX上构build时遇到以下错误: sed: 1: "test/obj/equipmentConta …": undefined label 'est/obj/equipmentContainer_utest.d' sed: 1: "test/obj/dice_utest.d": undefined label 'est/obj/dice_utest.d' sed: 1: "test/obj/color-string_u …": undefined label 'est/obj/color-string_utest.d' 看起来sed正在砍掉一个angular色,但我看不到解决scheme。
当我执行screen -ls ,我看到以下内容。 我怎样才能杀死所有分离的会话? 有以下屏幕: 84918.ttys002.ros-mbp (Detached) 84944.ttys008.ros-mbp (Detached) 84970.ttys013.ros-mbp (Attached) 84998.ttys002.ros-mbp (Detached) 85024.ttys002.ros-mbp (Detached) /var/folders/86/062qtcyx2rxbnmn8mtpkyghs0r0r_z/T/.screen中的5个套接字。
默认情况下,当你在GNU Screen中创build一个新窗口时,它将从调用屏幕的目录开始。 我想在当前窗口的当前工作目录中的GNU屏幕上开始一个新窗口。怎么做? 谢谢!
我想要从make文件中通过-r和-R选项到GNU make来禁用内置规则和variables。 其他解决scheme,让我这样做隐式和透明地也是受欢迎的。 我发现使用MAKEFLAGS 几个参考 ,并有类似的问题。
什么命令来匹配Emacs中的括号(相当于Vim中的%命令)?
从wiki 可执行文件和可链接的格式 : 段包含文件的运行时执行所必需的信息,而段包含用于链接和重定位的重要数据。 整个文件中的任何字节最多只能由一个部分所有,并且可以有不属于任何部分的孤立字节。 但是细分市场和细分市场有什么区别? 在可执行的ELF文件中,段是否包含一个或多个段?
我有一个目录包含几个文件,其中一些名称中有空格: Test workspace/ Another directory/ file1.ext file2.ext demo 2012-03-23.odp 我在这个目录上使用GNU的$(wildcard)命令,然后使用$(foreach)遍历结果,打印出所有内容。 代码如下: FOO := $(wildcard *) $(info FOO = $(FOO)) $(foreach PLACE,$(FOO),$(info PLACE = $(PLACE))) 以下是我期望看到的内容: Test workspace Another directory file1.ext file2.ext demo 2012-03-23.odp 这是我实际得到的: Test workspace Another directory file1.ext file2.ext demo 2012-03-23.odp 后者显然对我没有用处。 $(wildcard)的文档说明它返回一个“空格分隔的名称列表”,但是完全不能确认这个引发的巨大问题。 $(foreach)的文档也没有。 可以解决这个问题吗? 如果是这样,怎么样? 重命名每个文件和目录以删除空格不是一个选项。