package shellescape

Import Path
	github.com/alessio/shellescape (on go.dev)

Dependency Relation
	imports 3 packages, and imported by one package

Involved Source Files Package shellescape provides the shellescape.Quote to escape arbitrary strings for a safe use as command line arguments in the most common POSIX shells. The original Python package which this work was inspired by can be found at https://pypi.python.org/pypi/shellescape.
Code Examples package main import ( "fmt" "strings" "github.com/alessio/shellescape" ) func main() { filename := "myfile; rm -rf /" prog := "/bin/ls -lh" unsafe := strings.Join([]string{prog, filename}, " ") safe := strings.Join([]string{prog, shellescape.Quote(filename)}, " ") fmt.Println("unsafe:", unsafe) fmt.Println("safe:", safe) for i, part := range strings.Split(unsafe, " ") { fmt.Printf("unsafe[%d] = %s\n", i, part) } for i, part := range strings.Split(safe, " ") { fmt.Printf("safe[%d] = %s\n", i, part) } } package main import ( "fmt" "strings" "github.com/alessio/shellescape" ) func main() { filename := "filename with space" prog := "/usr/bin/ls" args := "-lh" unsafe := strings.Join([]string{prog, args, filename}, " ") safe := strings.Join([]string{prog, shellescape.QuoteCommand([]string{args, filename})}, " ") fmt.Println("unsafe:", unsafe) fmt.Println("safe:", safe) } package main import ( "fmt" "github.com/alessio/shellescape" ) func main() { safeString := `"printable!" #$%^characters '' 12321312"` unsafeString := "these runes shall be removed: \u0000\u0081\u001f" fmt.Println("safe:", shellescape.StripUnsafe(safeString)) fmt.Println("unsafe:", shellescape.StripUnsafe(unsafeString)) }
Package-Level Functions (total 3)
Quote returns a shell-escaped version of the string s. The returned value is a string that can safely be used as one token in a shell command line.
QuoteCommand returns a shell-escaped version of the slice of strings. The returned value is a string that can safely be used as shell command arguments.
StripUnsafe remove non-printable runes, e.g. control characters in a string that is meant for consumption by terminals that support control characters.