linux基础知识

文件类型

http://www.techrepublic.com/article/unix-permissions-made-easy/

命令行小技巧

ls npm bin 命令行同样支持模板字符串

shell 脚本知识——重定向符号

内置的文件描述符如下

1 => stdout
2 => stderr
0 => stdin

文件描述符 0 通常是标准输入(STDIN),1 是标准输出(STDOUT),2 是标准错误输出(STDERR)。>&1 中的&表示文件描述符,如果没有&则表示一个叫做1的普通文件(regular file)

cmd > file
把cmd命令的输出重定向到文件file中。如果file已经存在,则清空原有文件。
如: echo "hello world" > index.html 将字符串写入到该文件中

cmd >> file
把cmd命令的输出以追加的方式重定向到文件file中,如果file已经存在,则把信息加在原有文件後面。

cmd < file
使cmd命令从file读入

cmd << tag
将开始标记 tag 和结束标记 tag 之间的内容作为输入。(所以一般会在内容末尾增加一个结束标记定界符 delimiter,比如 EOF)
注意:结尾的 delimiter 一定要顶格写,前面不能有任何字符,后面也不能有任何字符,包括空格和 tab 缩进。

参考:非常系统清晰的重定向文档

多行文件的输入

#!/bin/sh
(
cat < /tmp/b

管道 pipeline

所以每一个进程的输出 stdout 被直接作为下一个进程的输入stdin

"pipeline" VS "and operator"

mkdir test | cd test 会报错 cd: no such file or directory: test,就是因为 mkdir 是异步操作。管道传递的是上个命令的输出结果,这个输出结果是同步执行的,但是 cd 命令执行的时候文件夹实际上并没有创建。此时正确的就是利用 and operator:mkdir test && cd test
git diff index.html|cat 这样就是可以的,看到上个命令的输出结果并打印到终端上。

subshell 的概念

(https://unix.stackexchange.com/questions/323085/what-is-the-difference-between-and-in-bash-script)
另外,在(cd ~ && pwd)是命令组,会开启一个 subshell 顺序执行cd~在 subshell 中进行。而cd ~ && pwd则直接在本 shell 中进行,会真正转到相应位置。
而用了管道之后(cd ~ | pwd),除了命令组的影响,还会多开启一个 subshell 来运行 cd~

小括号,中括号,大括号

单小括号

命令替换:(cmd) 等同于 `cmd`

还有各种双括号的玩法:http://blog.csdn.net/tttyd/article/details/11742241

字符串截取

http://www.cnblogs.com/wangbin/archive/2011/10/11/2207179.html

你可能感兴趣的:(linux基础知识)