clisp では、次のコードが機能します。
(defun hit-history () (shell "tail ssqHitNum.txt"))
ただし、Clozure CL では、このshell
関数はサポートされていません。
clisp では、次のコードが機能します。
(defun hit-history () (shell "tail ssqHitNum.txt"))
ただし、Clozure CL では、このshell
関数はサポートされていません。
いいえ、標準的な方法はありませんが、重要な実装にこの機能を提供するライブラリがあります。たとえば、Quicklispで利用可能なtrivial-shellがあります。これはを提供しますshell-command
。(実際にはテストしていませんが、CLikiで推奨されているライブラリの1つです。)外部プログラムもあります。更新:Ehvinceがコメントと彼自身の答えで指摘しているように、最近は劣ったシェルが好まれているようです。
また、読み取り時の条件を使用して、さまざまな実装でそれぞれの機能を使用してこれを行うこともできます。
CCLにはccl:run-program
、たとえば次のものがあります。
CL-USER> (run-program "whoami" '() :output *standard-output*)
foobar
#<EXTERNAL-PROCESS (whoami)[NIL] (EXITED : 0) #xC695EA6>
はい、ASDFの一部である UIOP を使用して、最新のすべての実装に含める必要があります。
uiop:run-program
uiop:launch-program
たとえば
(uiop:run-program (list "firefox" "http:url") :output t)
また
(defparameter *shell* (uiop:launch-program "bash" :input :stream :output :stream))
入力を送信し、出力を読み取ることができます。
ここで詳しく説明されています: https://lispcookbook.github.io/cl-cookbook/os.html#running-external-programs
trivial-shell
は非推奨であり、ポータブルuiopの(同期) を内部的に使用する Inferior -shellに置き換えられているため、そのまま使用できます。run-program
(defun dot->png (fname thunk)
(with-open-file (*standard-output*
fname
:direction :output
:if-exists :superseded)
(funcall thunk))
(ccl:run-program "dot" (list "-Tpng -O" fname))
)
Lisp p123の土地を研究するとき、ccl(clozure)で成功を実行します
以下は、common lisp 内から wget を呼び出す例を示しています。
https://diasp.eu/posts/1742240
コードは次のとおりです。
(sb-ext:run-program "/usr/bin/wget" '("-O" "<path-to-output-file>" "<url-link>") :output *standard-output*)