上次课程内容回顾:
Touch:修改时间戳,可创建文件;
Nano文本编辑的工作;
Cat,tac:显示文件内容;
Head,tail:文件开始或结束的内容;
More,less:全屏查看,但是是分屏显示;
Cp,mv:复制,移动,双参数;
Vi编辑器:文本编辑类的工具,模式化编辑器,
十五:使用vim编辑器编辑多个文件:
1.vim FILE1 FILE2 FILE 3 ...
: next来查看或编辑下一个文档的内容;
:prev:查看或编辑前一个文档的内容;
:first:查看或编辑第一个文档的内容;
:last:查看或编辑最后一个文档的内容;
2.Vim -o|O FILE1 FILE2 FILE 3 ... (:qa)
- o:水平分屏显示多个文件;
- O:垂直分屏显示多个文件;
Ctrl + w , 按 →↑...
#Ctrl + w,跳过数字的等等
Ctrl + w,s:将一个文件水平分屏显示;
Ctrl + w,v:将一个文件垂直分屏显示;
:qa:一次性退出所有;
:wa:保存所有;
十六:将其他文件中的内容填充至当前文件中
:r /PATH/TO/SOMEFILE
十七:跟shell交互
:! COMMAND
十八:部分另存为
:w /PATH/TO/SOMEFILE
:m,nw /PATH/TO/SOMEFILE
:m,+nw /PATH/TO/SOMEFILE
:.,$w /PATH/TO/SOMEFILE
.:当前光标所在行
Debian
Ubuntu ss -tnl
*22才可远程连接
SHELL:
操作接口,为用户提供简答易用的操作界面。
BELL实验室开发的最早的shell:Bourne SHELL--> sh
Bill Joy:C SHELL-->Csh --> tcsh
David Korn:Korn SHELL--> ksh
GNU:Bourne Again SHELL--> bash(linux的默认标准)
Zsh:一种强大的shell
默认系统中所支持的shells
Cat /etc/shells
Bash特性:
一.命令的别名:(自定义命令)
alias cp=‘cp -i‘
alias egrep=‘egrep --color=auto‘
alias fgrep=‘fgrep --color=auto‘
alias grep=‘grep --color=auto‘
alias l.=‘ls -d .* --color=auto‘
alias ll=‘ls -l --color=auto‘
alias ls=‘ls --color=auto‘
alias mv=‘mv -i‘
alias rm=‘rm -i‘
alias which=‘alias | /usr/bin/which --tty-only --read-alias --show-dot --show-tilde‘
Alias这个命令基于用来定义和显示命令的别名。
但是使用alias命令定义的别名,其生命周期仅限于当前shell的生存周期;
对于每个用户来说,都有一个私有的bash配置文件,用于保存别名;
~/.bashrc
注意;alias命令的效果仅限于当前shell的生命期;
如果修改.bashrc配置文件,其中保存的别名并不会立即生效,只有在重新加载该文件内容之后,才会生效,且永久生效。
为了能够保证我们设置的别名有效,通常两种操作都要做;
撤销别名:unalias [别名名称]
二,命令历史:
BASH进程会帮助用户去保存用户曾经执行过的命令,以方便用户重复执行某个命令;
通过bash提供的历史命令文件来持久保存此前执行过的命令,每个用户都有期自己私有的历史文件;
登陆shell的时候,bash会自动读取~/.bash_history文件中所记录的所有命令;
History;
-c清空历史缓冲区中的历史命令。
-d 偏移量删除特定历史命令条目。
-a将当前绘画的历史行追加到历史文件中
-n从历史文件中读取所有未被读取的行
-r读取历史文件并将内容追加到历史列表中
中
-w将当前历史写入到历史文件中
并追加到历史列表中
-p对每一个 ARG 参数展开历史并显示结果
而不存储到历史列表中
-s以单条记录追加 ARG 到历史列表中
重复执行前一个命令的方法:
1.使用上方向键,回车执行
2.ctrl+p
3.!-1(之间没空格)
4. 或!!执行上一次的命令
重复执行历史缓冲区中的命令:
!NUMBER:重复执行历史命令中编号为NUM的命令,
!STRING:从历史缓冲区中查找最近一次执行过的以“STRING”开头的命令;
!?STRING:从历史缓冲区中查找最近一次执行过的包含“STRING”的命令;
!-#执行倒数第几个的命令
Ctrl+r:在历史缓冲区中进行搜索,回车执行即可;
重复使用历史命令中的一部分:
!$:表示最后一条命令中的最后一个参数
ESC, .
Ait +.不松手
!^:表示上一个命令中的第一个位置的参数
!:NUMBER:表示最后一次命令中第NUMBER个位置的参数;
!NUMBER:NUMBER:表示在历史缓冲区第”“个命令的第NUMBER个参数;
与历史相关的bash变量:
HISTSIZE:echo $HISTSIZE
HISTFILESIZE:
HISTTIMEFORMAT:
HISTTIMEFORMAT=”%F %T”
HISTCONTROL:
Ignoredups:忽略连续且相同的命令的历史缓存;
Ignorespace:忽略以空白字符开头的命令;
Ignoreboth:以上两个功能都启用;
三:快捷键
C-->ctrl
M-->alt
E-->esc
Del-->backspace
C+l:清屏
Ctrl+a:光标跳转至命令行的行首
Ctrl+e:光标跳转至命令行的末尾
Ctrl+k:删除光标所在位置至行尾的命令行信息;
Ctrl+u:,,,,,,,,行首
Ctrl+C:取消当前命令的运行
四:命令补全机制:
两个方面的理解:
命令本身字符串的补全
参数的补全
SHELL命令的执行过程:
1.SHELL会根据用户键输入“ENTER”来判断用户的输入结束
2.SHELL会将收集的命令信息,根据空白字符来分段(token),第一个分段被理解为命令字段;
3.判断第一个字段是内部命令还是外部命令,如果是内部命令,则直接运行;如果是外部命令,通过PATH变量所指示的路径信息,去查找相关的位置,以确定是否存在同名文件,有则执行,没有便报错;
4.判断选项和参数是否正确;
使用tab键可以完成命令补全:
如果给出的字符串不能作为唯一标识,则bash不予补全;再次敲击TAB键,bash会给出参考列表;如果参考列表中参考内容过多,bash会显示是否显示该列表;
根据提供的参数路径进行补全,但是如果参数没有任何的提示信息,则默认从工作目录中进行查找;
五:SHELL的命令行展开特性:
~:bash会自动将其展开为当前登陆用户的家目录;
~”STRING”:bash会自动将其展开为以“字符串”为用户名的家目录;
~+:调用SHELL变量“PWD”的值;
~—:调用SHELL变量“OLDPWD”的值;
{}:大括号展开,在花括号中可以填充以“,”分隔的路径列表,bash会将其展开为多个独立的路径;
六:命令的执行结果
任何一个linux命令都有两种执行结果:
其一:命令的正常输出结果;
跟用户需求相关的返回内容,
``:反向单引号,反引号
$():标准的命令引用格式
Wc:统计一个文件中有的行数,字数,及字节数
-c:只显示字节数;
-l:只显示行数;
-w:只显示字数
其二:命令的执行状态返回值;
跟命令执行成功与否相关的返回内容;
保存在bash的一个特殊变量中:echo $?
0:命令执行成功,
1,2,127:bash内置状态的返回值;
1:表示小问题
2:表示严重问题
127:表示命令本身出现问题;
3~126,128~255:用户自定义的状态信息;
七:引用功能:
‘’:强引用
凡是被单引号引用的内容,bash一律将其视为普通字符,即便其本身有特殊功能,
和作用也是如此。但单引号本身是个例外;
“”:弱引用
被双引号引用的内容中,有些特殊字符仍然会保留其特殊含义,比如说$,\,’’
八:转义功能:
\:bash中定义的转义字符;只能使其后一个字符失去意义;
九:Globbing:文件名通配,简称glob;
元字符:
*:匹配任意长度的任意字符,某些特殊位置的”.”字符不能被匹配;
?:匹配任意单个字符;
[]:匹配指定范围内的任意单个字符,必须且只有一个字符被匹配;
[a-z]a,A,b,B,,,,,,,,,,,,y,Y,z
字符集:
[:lower:]:所有小写字母
[ [:lower:]]:通配任意单个小写字母; [:uper:]:所有大写字母
[:alpha:]:所有小写大写字母;
[:digit:]:表示所有的十进制数字
[:alnum:]:表示所有的大小写字母和十进制数字;
[:space:]:表示空白字符;
[:punct:]:表示所有的标点符号;
^:在[]里取反之意,除了指定的字符集;
回顾:
快捷键,命令补全,命令引用,引用,命令行展开功能,转义字符,通配符;
十:输入输出重定向
在使用计算机的时候,实现某种功能的主体是:程序
程序=指令 + 数据
数据:文件, IO
可以用于输出的设备:文件
键盘文件,文件系统中的常规文件,网卡设备,声卡设备等;
可用于输出的设备:文件
显示器,文件系统中的常规文件,网卡设备,声卡设备等;
每一种程序都有三种形式的数据流:
输入数据流:为程序获取数据的数据流;默认的输入数据流来源就是键盘;
输出的数据流:将程序所处理的数据结果展示给用户的数据流;默认的输出数据流的终点是显示器;
错误数据流:将程序无法处理或处理过程中出现问题的结果展示给用户的数据流;默认的错误输出数据流的终点是显示器;
从键盘实现的输入数据流称为标准输入;
到显示器上的输出数据流称为标准输出;
到显示器上的错误数据流称为标准错误输出,称为标准错误;
文件描述符:File Descriptor,FD
0:标准输入,stdin
1 : 标准输出,stdout
2:标准错误,stderr
IO(输入)重定向:采用非标准设备文件实现的IO操作;
简单来说不是从键盘设备完成数据输入就可以称为输入重定向或重定向输入;
不是到显示器设备完成正确数据流输出就可以称为输出重定向或重定向输出;
不是到显示器设备完成错误数据流输出就可以称为输出重定向或重定向错误;
输出重定向:
>:覆盖输出重定向
~]# set -c //开启防误覆盖开关
在次开关开启后,可以使用“>|”符号继续覆盖重定向;
~]# set +c //关闭防误覆盖开关
>> :追加输出重定向
错误重定向:
2>:覆盖错误重定向
2>>:追加错误重定向
合并标准输入和标准输出的重定向:
1)&>,&>> and
2)COMMAND >|>> /PATH/TO/SOMEFILE 2>&1
Ls /tmp/a.txt &> /dev/null
||
Ls /tmp/a.txt > /dev/null 2>&1
输入重定向:
<:唯一的输入重定向的符号,
<<:Here Document(此处文档)
<<<:Here String(此处字符串)
十一:管道
|:COMMAND1 | COMMAND2 | COMMAND3 | ......
tee:T
所有的用于管道连接的命令,都应该是能够用标准输出数据流的命令;
Echo “1,2,3”
Echo “1,2,3”| tr ‘,’ ‘\n’
换行功能
本文出自 “fuboyuan” 博客,谢绝转载!
原文地址:http://fuboyuan.blog.51cto.com/12653875/1910132