草庐IT

xargs: cd: No such file or dirctory

imzzq 2023-10-16 原文

前几天在写一个任务, 需要找到一个特定名字的路径并cd进去, 就在shell脚本中写了类似以下的命令:
xxxx | xargs cd
结果运行报错:

例子

要明白此处为什么会报错就需要清楚xargs的执行原理.
xargs是个可执行文件, 通过which 可以查到它的本体在哪:

image.png

在执行echo "xxx" | xargs command 命令时, xargs会调用c语言库函数execve()并将command和参数xxx作为其函数参数.
execve的输入参数是一个可执行文件的路径以及针对该可执行文件的输入参数
因此xargs要先查找到command可执行文件的路径,并和参数xxx一起传入execve, 因此command必须是个可执行文件命令..

然而, cd并不是一个可执行文件命令:

image.png

可以看到cd的类型是shell的内置命令, 使用which找不到它的路径.

真相大白

解决办法:
换一种办法, 不要直接传参数到cd.
先存到一个变量中, 如
Dir="/home"
然后cd进去
cd $Dir
即可

有关xargs: cd: No such file or dirctory的更多相关文章

  1. ruby - "__rvm_do_with_env_before"和 "__rvm_after_cd"执行 "cd"时 - 2

    我最近卸载了RVM(我认为主要是)。当我在终端中“cd”时,我得到:Adams-MacBook-Pro%cd__rvm_do_with_env_before:source:5:nosuchfileordirectory:/Users/adam/.rvm/scripts/initialize__rvm_after_cd:source:5:nosuchfileordirectory:/Users/adam/.rvm/scripts/hook我该如何解决这个问题?我猜是因为我没有完全卸载RVM。rvmimplode之后我还剩下哪些步骤要做谢谢 最佳答案

  2. 轻量级CI/CD自动构建平台Gitea+Drone保姆级实践教程 - 2

    目录1、关于Gitea1.1gitea特性1.2快速安装1.2.1环境依赖1.2.2安装gitea1.2.3启动1.2.4访问1.2.5创建一个测试仓库2关于Drone2.1CI/CD工具对比2.2快速安装2.2.1环境依赖2.2.2安装Dorne2.3启动drone2.4访问drone2.5使用pipeline2.6编写一个完整的pipeline2.6.1编写一个完整的pipeline文件,并部署springboot应用到docker中2.6.2触发构建2.7其他3资源消耗对比3.1在使用gitea+drone构建时服务器的负载,看上起没任何压力3.2这是我安装gitlab后服务器的情况,云

  3. javascript - jQuery 可以在分发为 "website"的 CD 上运行吗? - 2

    可悲的是,我必须制作一个可以放在CD上的网站(可以说是网站)。我的问题是,我可以使用JavaScript和jQuery吗?一些获得CD的人可能在WinXP上安装了IE6。谢谢。 最佳答案 是的。jQuery明确支持IE6,IE6支持JavaScript(它必须支持,否则jQuery无法支持它)尽管它有一些错误。 关于javascript-jQuery可以在分发为"website"的CD上运行吗?,我们在StackOverflow上找到一个类似的问题: http

  4. docker - ci/cd中断go get测试 - 2

    我正在尝试预构建docker映像,以便我的ci/cd管道运行得更快,并且go出现了问题我曾尝试过重置缓存和更改环境变量,但是没有人为我工作Fetchinghttps://git.dar.kz/forte-market/domain?go-get=1Fetchinghttps://gopkg.in/olivere/elastic.v5?go-get=1go:findinggithub.com/sirupsen/logrusv1.4.2go:findinggithub.com/modern-go/reflect2v1.0.1go:findinggithub.com/xanzy/go-git

  5. Linux cd 命令使用介绍 - 2

    文章目录1.命令格式2.命令功能3.常用范例示例1:进入系统根目录cd/2:使用cd命令进入当前用户主目录3:跳转到指定目录4:返回进入此目录之前所在的目录5:把上个命令的参数作为cd参数Linuxcd命令是Linux中最基本的命令语句,同时也是常用的命令,其他的命令语句要进行操作,都是建立在使用cd命令上的。因此先要学好cd命令的使用方法技巧。本文示例是在windows上cygwin中执行的。1.命令格式cd[目录名]2.命令功能切换当前目录至dirName3.常用范例示例1:进入系统根目录cd/执行和输出:Administrator@2013-0329-1017~$cd/Administr

  6. go - CI/CD 构建因 go -ldflags 而失败 - 2

    Docker镜像:golang:1.12.1。本地Go版本:go1.10.4linux/amd64。我的bash脚本中有这样的命令:GOOS=linuxGOARCH=amd64gobuild-ldflags'-s-w-Xmain.Version=$(gitdescribe--tags)'-o./path/to/binary./main.go&&现在CI/CD在此命令上失败,但一个月前使用相同的Docker镜像一切正常。是-ldflags被弃用了还是什么?控制台输出:#command-line-argumentsusage:link[options]main.o...//skipped-

  7. windows - GetSaveFileName() 不返回 XP 上 CD 刻录暂存区的路径 - 2

    我有一个功能,可以将文件保存到用户指定的位置。我正在使用GetSaveFileName()来显示另存为对话框。然后我使用它返回的路径将文件写出到该位置。我注意到当用户在XP机器上选择CD-RW驱动器时它不起作用。同样的过程在Vista和Windows7上也能正常工作。我做了以下观察:GetSaveFileName()返回的路径返回在Win7/Vista上选择CD刻录机根文件夹(在我的例子中是F:)时临时暂存区的路径。在XP上,选择CD刻录机根文件夹只会返回F:\作为路径。但是,如果我使用“另存为”对话框创建子文件夹并将文件保存在此文件夹中(例如F:\folder),则路径为临时文件夹的

  8. windows - 如何使用 Dragon NaturallySpeaking 的高级脚本弹出 CD-ROM 驱动器? - 2

    有没有办法用DragonNaturallySpeaking的高级脚本弹出光驱? 最佳答案 您可以使用WindowsMultimediaAPI(alsoknownasWinMM):'FromLarryAllen'https://www.knowbrainer.com/forums/forum/messageview.cfm?catid=12&threadid=12153&highlight_key=y&keyword1=eject'http://archive.is/Y2ouS'TestedwithDragonNaturallySpe

  9. c - 来自不同 cd 的不同可执行文件总是运行相同的代码 - 2

    我刻录了25张cd-rom,其中包含一个名为“Data.exe”的c可执行文件。所有cd都具有相同的CD名称和相同的可执行文件名称,但可执行文件版本不同。这是代码:CD0system("C:\\_folder\\_folder.exe0");CD1system("C:\\_folder\\_folder.exe1");.....等等......CD24system("C:\\_folder\\_folder.exe24");“C:\_folder\_folder.exe”代码是printf(argv[1]);只是为了检查CD是否被正确刻录。(所有这一切背后的核心思想是让cd识别自己并将

  10. windows - 在 Windows .bat 文件中使用 cd 没有效果 - 2

    我想在所有项目的路径中运行gitpull,所以我写了一个bat文件。@echooffsetlocalenabledelayedexpansionsetdir=%1if"%dir%"==""(setdir=%~dp0)for/D/R"%dir%"%%iin(*)do(ifexist%%i\.git(cd/d%%iremnoeffectecho%cd%remgitpull))pause但是似乎cdinforloop没有任何效果,我不知道为什么。有人可以帮我解决这个问题吗?在此处输入代码 最佳答案 有效果。但是,在批处理文件中,当到达一个

随机推荐