・Shell,是连接用户和kernel的一个壳,将用户指令传递/翻译给kernel,分为:
・1,CLI命令行界面(如:Linux) ,对于CentOS:CLI就是Bash,在CentOS打开的终端terminal,,
・2,GUI图形用户界面(如:windows,MAC),对于CentOS:GUI就是GNOME,
・Linux支持shell保存在/etc/shells,B家族包括sh/ksh/bash/psh/zsh,C家族包括csh/tcsh,
・提示符有:$(普通用户),#(根用户),
・切换用户:在$下输入su -即可切换为root用户,exit退出,参数”-”是切换工作目录和环境变量,建议加,
・命令一般由三部分组成:命令,选项,参数,
・命令补全使用Tab可以简化命令输入,自动补全命令/文件名,但无法补全参数,1次不可以连续2次试试,
・Bash作业管理:
・添加后台进程如firefox &,
・ctrl+z暂停某个进程,ctrl+c中止进程,
・jobs查看后台进程,-l显示工作的PID,
・bg(background)让后台进程继续运行,有交互的命令后台不会运行,如top,后台没法交互,运行没意义,
・fg(frontground)把后台拿到前台,
・shell脚本执行方式:
・0,写一个脚本如vim hello.sh,
・1,chmod 755 hello.sh赋予执行权限,./hello.sh运行,(推荐用)
・2,通过bash调用:bash hello.sh,无须赋予权限,
・shell历史命令:history [选项] [历史命令保存文件],
・默认保存1000条,通过/etc/profile修改historysize=1000,
・选项:-c,清零历史命令,
-w,把缓存中的历史命令写入历史命令保存文件~/.bash_history,
・其他调用方式:(了解)
・使用上下箭头调用,
・使用!!重复执行上一条命令,
・使用!n重复第n条命令,
・使用!-n重复第n条之前的命令,
・使用!字串重复执行最后一条以该字串开头的命令,
・ctr+r更强大,在历史命令内匹配字符(记住),
・别名alias:
・定义别名alias copy=’cp’,如有参数或空格,需要双引号,但重启会消失,
・永久保存别名:/root/.bashrc内编辑保存,对应家目录下,
・查看已存在别名alias,
・unalias copy,删除别名,
・命令执行顺序:1,绝对/相对路径2,别名3,bash内部命令4,按照$PATH环境顺序查找,
・Bash快捷键:
・ctrl+c结束进程,
・ctrl+u清除/剪切光标前的字符,ctrl+y粘贴,
・ctrl+l清屏,命令clear也可以,
・输入输出重定向:
・Linux中,几乎所有命令的返回数据都是纯文本的,而纯文本形式的数据又是绝大多数命令的输入格式,这就让多命令协作称为可能,多命令协作就是通过管道和重定向完成的,
・命令行shell的数据流有以下定义:
・STDIN标准输入(键盘),0,
・STDOUT标准输出(终端),1,
・STDERR标准错误输出(终端),2,
・命令通过STDIN接收参数或数据,通过STDOUT输出结果或通过STDERR输出错误提示,
・命令>文件,将命令结果保存到文件,
・命令>>文件,将命令结果追加保存到文件结尾,
・命令2>文件,将标准错误保存到文件,
・命令2>&1文件,将标准错误+命令结果保存到文件,
・2>/dev/null,将错误丢弃,
・管道“|”,将第一个命令的输出结果作为后一个命令的标准输入,
・多命令执行顺序,连接符:
;使多个命令依次运行,不管执行对错,
&&前面命令执行成功,后面的才可执行,
||前面命令执行不成功,后面的才可执行,
・通配符: *匹配任意0或多个字符,
?匹配任意单个字符
[]匹配括号内任意一个字符
[-]匹配括号中任意一个字符范围,0-9,a-z,A-Z等,
[^]逻辑非,标识匹配不是括号中的一个字符,
・其他特殊符号:
‘’单引号,之间的所有特殊符号都没有,失去特殊含义,’hello world!’,
“”双引号,之间的特殊符号没有特殊含义,但$ ` \例外,分别为:调用变量的值,引用命令,转义符,
``反引号,之间内容是系统命令,在bash中先执行,`ls`,
$()和反引号作用一样,推荐,$(ls),
#在shell中,#代表注释,
$用于调用变量的值,引用方式$name,
\转义符,\之后的特殊字符失去特殊含义,变为普通字符,