Linux 基础
执行命令的步骤:对于内置命令来说,首先识别命令、bash 直接执行后退出,在命令行上输出结果;对于非内置命令,首先识别命令、创建子进程、bash(作为所有进程的父进程)等待子进程退出。
执行脚本的步骤:对于内置命令来说,控制台 bash、父进程、等待子进程退出(当所有子进程运行时,作为父进程的 bash 会自动回退到后台);对于其他,控制台 fork 出子进程然后 exec 进程程序替换,顺序读取命令行上的参数,子进程执行命令,它的父进程等待子进程的退出。
# 和 $:前者为超级用户权限
/ 和 ~:根目录和用户家目录
快捷操作:高亮选中复制,鼠标中键粘贴。上下键历史命令,Ctrl + r 查找历史命令。Ctrl + l 清屏。结束终端进程 exit 或 Ctrl + d。Ctrl-Alt-F1 到 F6 打开虚拟终端。
链接:软链接 ln -s,硬链接 ln。不能对目录创建硬链接,不能对不同的文件系统创建硬链接,不能对不存在的文件创建硬链接;遍历操作会忽略目录的软链接。
文件操作:mkdir、cp、mv、rm
帮助操作:type、which、help、man、apropos、whatis、info
设置别名:alias 和 unalias
通配符:
重定向:> 覆盖,>>追加,2> 错误信息重定向,2>&1 将标准错误输出重定向到标准输出(a > b.txt 2>&1),&> 输出和错误均重定向。
cat、command1 | command2、sort、uniq、wc、grep、tee
扩展
波浪号扩展:结果是目录名。
路径名扩展:
echo *s
echo /usr/*/share
算术扩展:通过扩展 $(()) 来执行算术运算。
花括号扩展:让bash生成任意字符串的一种扩展功能。
echo Front-{A,B,C}-Back
echo Number_{5..1}
mkdir {2007..2009}-{01..12}
命令替换:子命令先运行,最后获取这个子命令的标准输出用来重组命令行。
echo $(ls)
ls -l $(which cp)
参数扩展:基本形式是 ${parameter}。
双引号:阻止分词,参数扩展、算术扩展和命令替换仍然发生在双引号内。
ls -l "two words.txt"
echo "$USER $((2+2)) $(cal)"
单引号:抑制所有扩展。