command
module
Version:
v0.0.0-...-2c38880
Opens a new window with list of versions in this module.
Published: Nov 17, 2024
License: Apache-2.0
Opens a new window with license information.
Imports: 16
Opens a new window with list of imports.
Imported by: 0
Opens a new window with list of known importers.
README
¶
Meshell
How hard is it to write your own shell? I'm trying to find out!
Installing
Not sure you want to do that :) Anyway:
go install github.com/arnodel/meshell
Running
$ meshell gives you a repl
$ meshell script.sh runs a shell script. You can also do $ meshell <script.sh.
Features
-
cd builtin
-
exit builtin
-
shift builtin
- simple commands (
ls -a)
- pipelines (
ls | grep foo)
- and, or lists (
touch foo || echo ouch)
- command lists (
sleep 10; echo "Wake up!")
- redirects to files (
ls >my-files, echo onions >>shopping.txt, go build . 2> build_errors)
- redirect stdin (
cat <foo >bar)
- redirect to fd (
./myscript.sh 2>&1 >script_output.txt)
- command groups (
{echo "my files"; ls})
- subshells (
(a=12; echo $a))
- env variable substitutions (
echo $PATH)
- tilde expansion (
PATH=$PATH:~/bin) - hard to know what the rule is! (use $HOME for now)
- simple parameter substitution (
echo ${var})
- general parameter expansion (
echo ${PATH:stuff}) - that's a rabbit hole
- command substitution (
ls $(go env GOROOT))
- shell variables (
a=hello; echo "$a, $a!")
- functions with
return (function foo() {echo $2; return; echo $1}; foo hello there )
- local variables
- if then else
if cond; then echo foo; elif cond2; then echo bar; else exit; fi
- while loops
while [ $# -gt 0 ]; do echo $1; shift; done
- for loops
- export (
export a=10)
- arguments (
echo $1 ${2})
- arg list (
echo $@ ${@})
- arg count (
echo $# ${#})
- status code (
mycommand; echo $?)
- PID (
echo $$)
- expressions
[[ x = y ]]
- arithmetic
(( x = y+1 ))
- comments
echo no comment # Print "no comment"
- add more to the list
Documentation
¶
There is no documentation for this package.
Source Files
¶
Click to show internal directories.
Click to hide internal directories.