繁体   English   中英

如何使用Clojure在命令行中更改目录?

[英]How do I change directory in command line with Clojure?

我正在寻找的是Windows命令行中的这种命令行交互:

C:\temp1>clj some_script.clj
C:\temp2>

some_script.clj包含以下内容:

(cd "c:\\temp2")

所以问题是 - 我如何实现功能cd? 已经尝试过clojure.java.shell,但它看起来不像我需要的lib。 这可能是一个简单的问题,问题可能是我不能流利使用Java?!

你不能用Java做到这一点,所以你不能在Clojure中做到这一点。 请参阅使用Java更改当前工作目录?

clojure可以做到这一点。 您只需要更改名为*sh-dir*的动态全局变量。 在您的repl中运行以下代码:

 (use '[clojure.java.sh])
 (sh "ls")
    => {:exit 0, :out "LICENSE\nREADME.md\nauto_deploy.iml\ndoc\nproject.clj\nresources\nsrc\ntarget\ntest\n", :err ""}

    (binding [*sh-dir* "c:/"] (sh "ls"))
{:exit 0,
 :out "$360Section
       $GetCurrent
       $Recycle.Bin
       Boot
       Documents and Settings
       ImbaMallLog.txt
       Intel
       MSOCache
       OEMSY
       PerfLogs
       Program Files
       Program Files (x86)
       ProgramData
       Python27
       Recovery
       System Volume Information
       Users
       Windows
       apache-ant-1.9.3
       bootmgr
       hiberfil.sys
       inetpub
       pagefile.sys
       ",
 :err ""}

有关详细信息,请参阅doc。 你可以使用(alter-var-root #'clojure.java.shell/*sh-dir* (constantly "the-cd-path"))来不断改变它。 感谢isaac告诉我这件事。 希望这可以帮助。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM