tmpCreate a temporary file and write to it
tmp creates a temporary file, writes the contents of
stdin to it then returns its filename to stdout.
You can optionally specify a file extension, for example if the
temporary file needs to be read by open or an editor which
uses extensions to define syntax highlighting.
<stdin> -> tmp [ file-extension ] -> <stdout>
» out "Hello, world!" -> set tmp
» out $tmp
/var/folders/3t/267q_b0j27d29bnf6pf7m7vm0000gn/T/murex838290600/8ec6936c1ac1c347bf85675eab4a0877-13893
» open $tmp
Hello, world!
The temporary file name is a base64 encoded md5 hash of the time plus Murex function ID with Murex process ID appended:
package io
import (
"crypto/md5"
"encoding/hex"
"io"
"os"
"strconv"
"time"
"github.com/lmorg/murex/lang"
"github.com/lmorg/murex/lang/types"
"github.com/lmorg/murex/utils/consts"
)
func init() {
lang.DefineMethod("tmp", cmdTempFile, types.Any, types.String)
}
func cmdTempFile(p *lang.Process) error {
p.Stdout.SetDataType(types.String)
ext, _ := p.Parameters.String(0)
if ext != "" {
ext = "." + ext
}
fileId := time.Now().String() + ":" + strconv.Itoa(int(p.Id))
h := md5.New()
_, err := h.Write([]byte(fileId))
if err != nil {
return err
}
name := consts.TempDir + hex.EncodeToString(h.Sum(nil)) + "-" + strconv.Itoa(os.Getpid()) + ext
file, err := os.Create(name)
if err != nil {
return err
}
defer file.Close()
_, err = io.Copy(file, p.Stdin)
if err != nil {
return err
}
_, err = p.Stdout.Write([]byte(name))
return err
}This should should provide enough distance to run tmp in
parallel….should you ever want to.
tmp files are also located inside a unique per-process
Murex temp directory which itself is located in the appropriate temp
directory for the host OS (eg $TMPDIR on macOS).
tmppipe: Manage Murex named pipesopen: Open
a file with a preferred handler>>: Writes stdin to disk - appending contents if
file already exists>: Writes stdin to disk - overwriting contents if
file already existsThis document was generated from builtins/core/io/tmp_doc.yaml.
This site's content is rebuilt automatically from murex's source code after each merge to the master branch. Downloadable murex binaries are also built with the website.
Last built on Fri Oct 24 08:59:31 UTC 2025 against commit e59ab49e59ab49e1628d8546d2ad8ce5eb1150445f6a940.
Current version is 7.1.4143 (unknown) which has been verified against tests cases.