Created
December 30, 2011 03:05
-
-
Save wgzhao/1537548 to your computer and use it in GitHub Desktop.
Special Characters with shell
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#!/bin/bash | |
# Embedding Ctl-H in a string. | |
a="^H^H" # Two Ctl-H's -- backspaces | |
# ctl-V ctl-H, using vi/vim | |
echo "abcdef" # abcdef | |
echo | |
echo -n "abcdef$a " # abcd f | |
# Space at end ^ ^ Backspaces twice. | |
echo | |
echo -n "abcdef$a" # abcdef | |
# No space at end ^ Doesn't backspace (why?). | |
# Results may not be quite as expected. | |
echo; echo | |
# Constantin Hagemeier suggests trying: | |
# a=$'\010\010' | |
# a=$'\b\b' | |
# a=$'\x08\x08' | |
# But, this does not change the results. |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#!/bin/bash | |
# Thank you, Lee Maschmeyer, for this example. | |
read -n 1 -s -p \ | |
$'Control-M leaves cursor at beginning of this line. Press Enter. \x0d' | |
# Of course, '0d' is the hex equivalent of Control-M. | |
echo >&2 # The '-s' makes anything typed silent, | |
#+ so it is necessary to go to new line explicitly. | |
read -n 1 -s -p $'Control-J leaves cursor on next line. \x0a' | |
# '0a' is the hex equivalent of Control-J, linefeed. | |
echo >&2 | |
### | |
read -n 1 -s -p $'And Control-K\x0bgoes straight down.' | |
echo >&2 # Control-K is vertical tab. | |
# A better example of the effect of a vertical tab is: | |
var=$'\x0aThis is the bottom line\x0bThis is the top line\x0a' | |
echo "$var" | |
# This works the same way as the above example. However: | |
echo "$var" | col | |
# This causes the right end of the line to be higher than the left end. | |
# It also explains why we started and ended with a line feed -- | |
#+ to avoid a garbled screen. | |
# As Lee Maschmeyer explains: | |
# -------------------------- | |
# In the [first vertical tab example] . . . the vertical tab | |
#+ makes the printing go straight down without a carriage return. | |
# This is true only on devices, such as the Linux console, | |
#+ that can't go "backward." | |
# The real purpose of VT is to go straight UP, not down. | |
# It can be used to print superscripts on a printer. | |
# The col utility can be used to emulate the proper behavior of VT. | |
exit 0 |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment