1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67
|
package shellescape_test
import (
"fmt"
"strings"
"github.com/alessio/shellescape"
)
func ExampleQuote() {
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)
}
// Output:
// unsafe: /bin/ls -lh myfile; rm -rf /
// safe: /bin/ls -lh 'myfile; rm -rf /'
// unsafe[0] = /bin/ls
// unsafe[1] = -lh
// unsafe[2] = myfile;
// unsafe[3] = rm
// unsafe[4] = -rf
// unsafe[5] = /
// safe[0] = /bin/ls
// safe[1] = -lh
// safe[2] = 'myfile;
// safe[3] = rm
// safe[4] = -rf
// safe[5] = /'
}
func ExampleQuoteCommand() {
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)
// Output:
// unsafe: /usr/bin/ls -lh filename with space
// safe: /usr/bin/ls -lh 'filename with space'
}
func ExampleStripUnsafe() {
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))
// Output:
// safe: "printable!" #$%^characters '' 12321312"
// unsafe: these runes shall be removed:
}
|