tmp
Create 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() {
"tmp", cmdTempFile, types.Any, types.String)
lang.DefineMethod(
}
func cmdTempFile(p *lang.Process) error {
p.Stdout.SetDataType(types.String)
0)
ext, _ := p.Parameters.String(if ext != "" {
"." + ext
ext =
}
":" + strconv.Itoa(int(p.Id))
fileId := time.Now().String() +
h := md5.New()byte(fileId))
_, err := h.Write([]if err != nil {
return err
}
nil)) + "-" + strconv.Itoa(os.Getpid()) + ext
name := consts.TempDir + hex.EncodeToString(h.Sum(
file, err := os.Create(name)if err != nil {
return err
}
defer file.Close()
_, err = io.Copy(file, p.Stdin)if err != nil {
return err
}
byte(name))
_, err = p.Stdout.Write([]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).
>>
(append file): Writes STDIN to disk - appending contents if file already exists>
(truncate file): Writes STDIN to disk - overwriting contents if file already existsopen
: Open a file with a preferred handlerpipe
: Manage murex named pipesThis 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 Mon Feb 13 09:18:06 UTC 2023 against commit f339958f33995895c1d997efcdbb8408d2c8d45f8b5f934.
Current version is which has been verified against 13950 tests cases.