Please enable JavaScript.
Coggle requires JavaScript to display documents.
Shell (shell expansion (大括号展开(Brace Expansion){...}, 波浪号展开(Tilde…
Shell
Readline
curl -L
http://hengyunabc.github.io/bash_completion_install.sh
| sh
bind -f ~/.inputrc
.inputrc
"\e[A": history-search-backward
"\e[B": history-search-forward
set show-all-if-ambiguous on
set completion-ignore-case on
bind
bind -l ##查看已经绑定的快捷键
bind -x '"\C-x\C-l":ls -al'
bind -v ##查看当前绑定的按键配置及其对应的功能
bind -l ##查看Readline中可以使用的函数名称
bind -V | grep map
变量作用域scope
全局变量global variable:默认
环境变量environment variable: export
局部变量local variable: local
命令解释
IFS(space, tab, enter);enter=[CR, IFS, NL(New Line), FF(Form Feed), Null, ...]
CR(是指carriage return, 回车, \r, ASCII码为13); LF(是指linefeed,换行,\n,ASCII码为10)
特殊字符
& quoting
引号
hard quote:单引号将剥夺其中的所有字符的特殊含义:
echo 'He said, "How'\''s tricks?"' == echo "He said, "\"How\''s tricks?"'
soft quote:双引号中的$参数替换 和
命令替换是例外 ($,",
,\)
O'Reilly: 双引号会确切处理其中的转义字符和变量、算术、命令替换
echo "She replied, \"Movin' along \" \n"
反引号 `(命令替换): echo `ls` == echo $(ls)
括号
(()),是代表算数扩展; [],感觉作用就是用来比较的。比如放在if语句里面,while语句里面,等等; [[... ]]条件判断结构, 而不是[ ... ]
A,()只是对一串命令重新开一个子shell进行执行; B,{}对一串命令在当前shell执行
C,()和{}都是把一串的命令放在括号里面,并且命令之间用;号隔开
D,()最后一个命令可以不用分号; E,{}最后一个命令要用分号
F,{}的第一个命令和左括号之间必须要有一个空格; G,()里的各命令不必和括号有空格
H,()和{}中括号里面的某个命令的重定向只影响该命令,但括号外的重定向则影响到括号里的所有命令
控制
&& 在前一个命令执行结束时,若返回值为 true,继续执行下一个命令
|| 在前一个命令执行结束时,若返回值为 false,继续执行下一个命令
; 在前一个命令执行结束时,而忽略其返回值,继续执行下一个命令
escape: \ (反斜杠),只有在紧接在 escape(跳脱字符) 之后的单一 meta 才被关闭;
https://wiki.jikexueyuan.com/project/13-questions-of-shell/double-single.html
关键点就是:区分出 shell meta 与 command meta
shell命令的
charactor
meta: 对shell来说,具有特定功能的特殊保留元字符
literal:也就是普通的纯文字,对shell来说没特殊功能;
shell分词
通配符(wildcards/ globbing patterns)
https://learnku.com/server/wikis/36621
shell expansion
大括号展开(Brace Expansion){...}
波浪号展开(Tilde Expansion) ~
参数展开(Shell Parameter Expansion)${...}
命令替换(Command Substitution) $(...) 或
...
数学计算(Arithmetic Expansion) $((..))
进程替换(Process Substitution) <(...) 或 >(...)
单词分割(Word Splitting)IFS
文件名展开(Filename Expansion)* ? [..] 外壳文件名模式匹配
引号去除(Quote Removal)
输入>解析>扩展>运行
http://www.jeepxie.net/article/885290.html
《Linux命令行与Shell脚本编程大全》
《linux shell脚本攻略》
https://wangdoc.com/bash/
CSH
syntax
!/bin/csh -f
>> -f Fast start. Reads neither the .cshrc file, nor the .login file. (if a login shell) upon startup.
.inputrc
"\e[A": history-search-backward
"\e[B": history-search-forward
set show-all-if-ambiguous on
set completion-ignore-case on
bind
bind -l ##查看已经绑定的快捷键
bind -x '"\C-x\C-l":ls -al'
bind -v ##查看当前绑定的按键配置及其对应的功能
bind -l ##查看Readline中可以使用的函数名称
bind -V | grep map