Bash 里的转义序列】的更多相关文章

在 Bash 里,一共有五个地方支持反斜杠开头的转义序列,包括两个内部命令 echo 和 printf 的参数里,字符串语法 $'...' 里,还有四个提示符变量 PS1-PS4 里,以及在 Readline 配置文件里(用来自定义键盘快捷键).其中后两者不在本文的讨论范围内,我们只看看前三个命令/语法在对某些转义序列解释上的差异. 1. \?,\',\" $'...' 会把反斜杠去掉,只分别输出问号,单引号,双引号这三个字符串本身,而 echo -e 会原样输出(保留反斜杠),也就是不把这三个…
echo -e "#include <stdio.h>\nint main()\n{\n printf(\"hello world\\\n\");\n return 0;\n}" > h.c; gcc h.c; ./a.out h.c里的内容 #include <stdio.h> int main() { printf("hello world\n"); ; } 终端输出内容 hello world…
直接使用wget是可以的,然而在shell脚本里却不行,后来发现原来是换行符的问题,编辑器默认的是\r\n,一不留神,自己把自己坑了…
1. Shell简介 Shell本身是一个用C语言编写的程序,它是用户使用Unix/Linux的桥梁,用户的大部分工作都是通过Shell完成的.Shell既是一种命令语言,又是一种程序设计语言.作为命令语言,它交互式地解释和执行用户输入的命令:作为程序设计语言,它定义了各种变量和参数,并提供了许多在高级语言中才具有的控制结构,包括循环和分支. 它虽然不是Unix/Linux系统内核的一部分,但它调用了系统核心的大部分功能来执行程序.建立文件并以并行的方式协调各个程序的运行.因此,对于用户来说,s…
先来复习上节重定向的用法: 1.快速清空文件 cat demo.txt < /dev/null 注:linux中有一个经典名言[一切皆文件],/dev/null可以认为是一个特殊的空文件,更形象点,可以理解为科幻片中的黑洞,任何信息重向定输出到它后,便有去无回,当然黑洞里也没有信息能出来. 综合来讲,上面的意思就是利用<将黑洞做为demo.txt的标准输入,黑洞里没任何内容,任何文件里的内容被它吞噬了,自然也没就没东西能剩下了,所以最终就是demo.txt被黑洞洗空了. /dev/null 还…
Git Bash+ConEmu可以模拟Linux强大的命令行.不过在结合Scala和Play时,需要注意如下事项: 1. Scala的安装在64位操作系统下,默认会放在“C:\Program Files (x86)\”.更改此目录使其安装在没有空格和没有括号的目录下. 2. chmod a+x scala,使此脚本具有执行权限. 3. 安装完Play2后,因为路径原因会出现“Could not find configuration file ../framework/sbt/sbt.boot.p…
在 Bash 中,有两个内置命令用来控制 Bash 的各种可配置行为的开关(打开或关闭),这些开关称之为选项(option).其中一个命令是 set,set 命令有三种功能:显示所有的变量和函数:修改 Bash 的位置参数:控制 Bash 的第一套选项.可见 set 命令完全违背了“一个命令只干一件事”的 UNIX 哲学.另外一个命令是 shopt,从名字(shell options 的缩写)就可以看出,它的功能是控制 Bash 的另一套选项.那么问题就来了,为啥要用两套选项? 在回答为什么之前…
昨天有个人在 bug-bash 上问:为什么 [ --help 没有输出帮助信息.有人回答他了,原因是 coreutils 提供的 [ 命令才接受 --help 选项,Bash 自己的 [ 命令不接受任何选项.当你在 Bash 里执行 [ --help 时,当然优先执行的是内部命令 [,而不是外部命令 [,执行 /usr/bin/[ --help(在我的 Mac 上是在 /bin/[)才能获得他想要的帮助信息. 其实除了 [,还有一些其它外部命令也会和 Bash 提供的内部命令同名,下面列举一下…
在 Bash 里,可以通过 export 命令查看当前 Shell 进程的环境变量,这些环境变量一些是 Bash 自己创建的,还有一些是 Bash 从父进程继承来的,然而需要注意的是,父进程传给 Bash 的环境变量不一定是我们想象的那样. 在 C 语言层面,环境变量是存放在一个名为 environ 的全局变量里的,这个变量的值是一个字符串的数组,像这样: {"foo=1", "bar=2"} 在父子孙一辈辈进程中传递的就是这么个数组,我们嘴里说的环境变量的原貌其实…
SHLVL 环境变量代表 Shell 嵌套执行的深度. $ echo $SHLVL 1 $ bash $ echo $SHLVL 2 $ bash $ echo $SHLVL 3 在 Bash 里,这个值的范围是 [0, 1000],0 是怎么来的呢?是在上次的 SHLVL 值为负数的时候: $ SHLVL=-1 $ bash $ echo $SHLVL 0 当 SHLVL 的值超过 1000 时,会自动重置到 1. $ SHLVL=1000 $ bash bash: warning: shel…