링크 ux 셸 전의 자
6196 단어 Linux
echo, sed 와 연결 할 때:
새 줄
\r
리 턴
\t
수평 을 나타 내 는 탭 문자
\v
수직 을 나타 내 는 탭 문자
\b
표시
\a
경고
\0xx
ASCII 코드 가 8 진 0xx 로 표 시 된 문자 로 번역 되 었 습 니 다.
예 5 - 2. 전의 문자
1 #!/bin/bash
2 # escaped.sh: 转义字符
3
4 echo; echo
5
6 echo "\v\v\v\v" # 打印出 \v\v\v\v literally.
7 # 用带着选项-e的'echo'会打印出转义字符串.
8 echo "============="
9 echo "VERTICAL TABS"
10 echo -e "\v\v\v\v" # 打印四个垂直的制表符.
11 echo "=============="
12
13 echo "QUOTATION MARK"
14 echo -e "\042" # 打印出字符" (引号, 它的八进制ASCII码为42).
15 echo "=============="
16
17 # 当使用像$'\X'的结构时,-e选项是多余的.
18 echo; echo "NEWLINE AND BEEP"
19 echo $'
' # 新行.
20 echo $'\a' # 警告 (蜂鸣).
21
22 echo "==============="
23 echo "QUOTATION MARKS"
24 # 版本2开始Bash已经允许使用$'
nn'结构了.
25 # 注意在这里,'
nn'表示一个八进制的值.
26 echo $'\t \042 \t' # Quote (") framed by tabs.
27
28 # 使用$'\xhhh'结构也可以使用十六进制数来转义.
29 echo $'\t \x22 \t' # Quote (") framed by tabs.
30 # 多谢Greg Keraunen指出这个..
31 # 早期的Bash版本允许用'\x022'.(译者注,现在不行了)
32 echo "==============="
33 echo
34
35
36 # 用ASCII码值把字符赋给变量.
37 # ----------------------------------------
38 quote=$'\042' # 引号"被赋给变量quote了.
39 echo "$quote This is a quoted string, $quote and this lies outside the quotes."
40
41 echo
42
43 # 用连串的ASCII码把一串字符赋给变量..
44 triple_underline=$'\137\137\137' # 137是字符'_'的ASCII码.
45 echo "$triple_underline UNDERLINE $triple_underline"
46
47 echo
48
49 ABC=$'\101\102\103\010' # 101, 102, 103分别是A, B, C字符的八进制ASCII码.
50 echo $ABC
51
52 echo; echo
53
54 escape=$'\033' # 033是ESC的ASCII码的八进制值
55 echo "\"escape\" echoes as $escape"
56 # 不可见的输出.
57
58 echo; echo
59
60 exit 0
확장 구조 $'의 또 다른 예 xample 34 - 1 참조
\"
따옴표
1 echo "Hello" # Hello
2 echo "\"Hello\", he said." # "Hello", he said.
\$
달러 문자 ($) 의 뜻 을 표시 합 니 다.
1 echo "\$variable01" # 输出是$variable01
\\
역 슬 래 쉬
1 echo "\\" # 输出是\
2
3 # 然而 . . .
4
5 echo "\" # 在命令行,这句将会打印SP2变量值(译者注:变量SP2是输入未完成提示符),并要求你继续输入..
6 # 在脚本文件里, 这句会出错.
역 슬 래 쉬 의 역할 은 자기 전의 인지, 인용 되 거나 명령 교체 구조 나 here document 에 나타 나 는 지 를 봐 야 한다.
1 # 简单的转义和引用
2 echo \z # z
3 echo \\z # \z
4 echo '\z' # \z
5 echo '\\z' # \\z
6 echo "\z" # \z
7 echo "\\z" # \z
8
9 # 命令替换
10 echo `echo \z` # z
11 echo `echo \\z` # z
12 echo `echo \\\z` # \z
13 echo `echo \\\\z` # \z
14 echo `echo \\\\\\z` # \z
15 echo `echo \\\\\\\z` # \\z
16 echo `echo "\z"` # \z
17 echo `echo "\\z"` # \z
18
19 # Here document
20 cat <
하나의 문자열 이 변 수 를 부여 할 때 그 구성 부분 은 전 의 될 수 있 지만, 하나의 전의 문자 (\) 는 변 수 를 부여 할 수 없습니다.
1 variable=\
2 echo "$variable"
3 # 不能工作 - 给出一个错误信息:
4 # test.sh: : command not found
5 # 单独一个转义字符是不能正确地赋给变量的.
6 #
7 # 那上面语句究竟发生了什么呢?实际上转义符"\"转义了新行符,
8 #+ 产生的作用如同 variable=echo "$variable"
9 #+ 而这是无效的变量赋值
10
11 variable=\
12 23skidoo
13 echo "$variable" # 23skidoo
14 # 这样就能工作,因为第二行的变量赋值是有效的
15 #
16
17 variable=\
18 # \^ 转义后面的空格(译者注:粗心的读者一定要注意上面最后的空格)
19 echo "$variable" # 空格
20
21 variable=\\
22 echo "$variable" # \
23
24 variable=\\\
25 echo "$variable"
26 # 不能工作 - 产生一个错误:
27 # test.sh: \: command not found
28 #
29 # 第一个\转义第二个\,结果只剩单独的第三个\字符,
30 #+ 这样又会发生上面的情况.
31
32 variable=\\\\
33 echo "$variable" # \\
34 # 第二和第四个\字符被转义.
35 # 这样不会出错了.
하나의 빈 칸 을 바 꾸 면 하나의 문자열 매개 변수 가 여러 명령 행 매개 변수 로 분할 되 는 것 을 방지 할 수 있 습 니 다.
1 file_list="/bin/cat /bin/gzip /bin/more /usr/bin/less /usr/bin/emacs-20.7"
2 # 文件列表作为参数传递给命令.
3
4 # 再加两个参数给命令ls,一同列出文件信息.
5 ls -l /usr/X11R6/bin/xsetroot /sbin/dump $file_list
6
7 echo "-------------------------------------------------------------------------"
8
9 # 如果我们转义上面的一对空格会发生什么?
10 ls -l /usr/X11R6/bin/xsetroot\ /sbin/dump\ $file_list
11 # 出错: 开头的三个文件名被连成一个文件名并传递给了命令'ls -l'
12 # 因为两个转义字符禁止了空格分割参数的作用。
전의 부도 여러 줄 의 명령 을 쓰 는 수단 을 제공 했다.일반적으로, 각 단독 줄 마다 다른 명령 이 있 고, 한 줄 의 끝 에 있 는 전의 부 호 는 새 줄 부 호 를 바 꾸 고, 명령 서열 은 다음 줄 에서 계속된다.
1 (cd /source/directory && tar cf - . ) | \
2 (cd /dest/directory && tar xpvf -)
3 # 把Alan Cox目录树全部复制到另外一个目录里,
4 # 但分为两行可以增加可读性.
5
6 # 你也可以用下面的命令达到一样的效果:
7 tar cf - -C /source/directory . |
8 tar xpvf - -C /dest/directory
9 # 看看下面的注释.
10 # (多谢,Stéphane Chazelas.)
스 크 립 트 줄 이 하나의 파이프 라인 으로 "|"줄 끝 을 끝내 면, 뒤에 필요 하지 않 은 전의 부호 "\"를 하나 더 붙 일 수 있 습 니 다.그러나 좋 은 프로 그래 밍 습관 은 전의 자 '\' 를 붙 이 는 것 이 좋 습 니 다.
1 echo "foo
2 bar"
3 #foo
4 #bar
5
6 echo
7
8 echo 'foo
9 bar' # 没什么不同.
10 #foo
11 #bar
12
13 echo
14
15 echo foo\
16 bar # 新行符被转义.
17 #foobar
18
19 echo
20
21 echo "foo\
22 bar" # 还是一样,字符\在弱引用中还是被解释为转义字符
23 #foobar
24
25 echo
26
27 echo 'foo\
28 bar' # 由于转义符"\"在强引用符里,所以只能解释为字面上的意思
29 #foo\
30 #bar
31
32 # 由Stéphane Chazelas提示写成的例子.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
바이너리 파일cat 또는tail, 터미널 디코딩 시 처리 방법cat으로 바이너리 파일을 보려고 할 때 코드가 엉망이 되어 식은땀이 났다. 웹에서 스크롤된 정보의 처리 방법과alias의 설정을 요약합니다. reset 명령을 사용하여 터미널을 재설정합니다.이렇게 하면 고치지 못하...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.