Linux基础命令(二)

一 数据流定向

理解:将某条命令执行后本应该在屏幕中中显示的数据(信息)传输到其他地方(文件或设备中--->打印机)

应用:通常需要将某些数据保存下来(日志等--->自动化脚本)

首先了解两个概念:标准输出(standard output)和标准错误输出(standard error output)

标准输出:命令执行完所回传的正确信息

标准错误输出:命令执行失败后所回传的错误信息

测试:find /etc/ -name passwd(备注:由于权限问题会产生一些错误的信息)

错误之一:find: ‘/etc/pki/CA/private’: Permission denied(权限问题)

实验现象:执行一条命令后,不管是正确还是错误的信息,默认都是输出到屏幕中,屏幕中的信息是混乱

需求:通过某些机制将正确和错误的数据分开,这里用得到了数据流重定向功能,如下所示:

(1)标准输入(stdin)---------->代码0--->传送特殊字符<或者<<------>(方向:键盘--->屏幕)

(2)标准输出(stdout)-------->代码1--->传送特殊字符>或者>>------>(方向:屏幕--->文件(设备中))

(3)标准错误输出(stderr)-->代码2---->传送特殊字符2>或2>>----->(同上)

说明:默认的文件描述符是输出,所以1不用写,且1> 和 > 是同样的东西

语法:命令 特殊字符 文件(设备)

文件默认的创建方式(>的方式):(1)若文件不存在则创建文件(2)文件存在则清空文件内容,将数据写入(通俗解释:覆盖了原文件)

需求1:将数据累加到文件中,而不是将原来的数据删除(覆盖),使用两个大于号(>>),将数据累加到最后面

需求2:将正确和错误的信息分别保存到不同的文件中

测试:[kiosk@foundation10 hehe]$ find /etc/ -name passwd >> right 2>> error

现象:数据分门别类的管理,屏幕中没有信息输出!

注意:数字和传送符号是连在一起的且要与文件名有空格

需求3:将正确和错误的信息都写入同一个文件中(特殊语法)

测试(建议):[kiosk@foundation10 hehe]$ find /etc/ -name passwd > total 2>&1

另外一种:[kiosk@foundation10 hehe]$ find /usr -name passwd &> total1            ##重定向所有输出

测试说明:如果是root用户操作,可能没有错误的信息(不涉及权限的问题)

解释:2>&1 表示 stderr(文件描述为2) 重定向到stdout(文件描述符为1),也就是标准错误信息发送到与标准输出信息的相同位置

理解:欺骗(将错误的包装成正确的)

说到这差不多了:了解一个比较厉害的东西(垃圾桶黑洞设备)

需求4:我知道错误信息会发生,要将错误信息忽略掉而不存储

设备黑洞/dev/null

特点:可以任何导向这个设备的信息

测试:[kiosk@foundation10 hehe]$ find /usr -name passwd 2>  /dev/null

---------------------------------

区别:cat > 文件名cat 文件名

cat > 文件:没有此文件则主动创建一个文件,然后可以键入需要输出的内容,如果输入完毕,可以按"ctrl+d"来离开

另一个作用:将文件内容清空

cat 文件:没有此文件,则报错

----------------------------------

标准输入(stanard input--->stdin):<与<<

应用场景:将原本由键盘输入的数据改成由文件内容来代替,即用stdin替代键盘的输入

需求1:用stdin替代键盘的输入来创建文件

前提:hello文件已存在,和mmp文件已存在

1:cat >hello < mmp

2:ll mmp

<<作用:结束输入

需求2:将cat的信息输出到hello中,且当键盘输入over(结束标志位)时,该次输入就结束

测试:[kiosk@foundation10 hehe]$ cat > hello  <<  "over"

特点:利用<<右侧的控制符,终止一行的输入,不必输入"ctrl+d",对写程序很有帮助!

注意空格

-------------------------------------

管道:管道的作用是将前一条命令的输出变成管道后命令的输入

理解上:管道暂时存储正确的输出信息

管道命令:“ | ”的界定符

需求1:以一种便捷的方式(用户体验好---类似于kiddle阅读器)来显示/etc下文件

测试:ls -al /etc | less

执行逻辑:less会去读取ls命令输出后的内容(作为less命令的读取的输入内容)

特点:仅能处理由前一个命令传来的正确消息(standard output),对于stardarderror没有直接的处理能力(错误输出无法通过管道)

思考默认系统中错误的输出是无法通过管道的,错误的输出也要通过管道

需求2:统计find /etc/ -name passwd命令输出的行数

测试:find /etc/ -name passwd 2>&1 | wc -l(普通用户)

-----------------------------------------

需求3:需要屏幕中显示信息以及文件中保存相应的信息(内容与屏幕输入一致)

知识点:双重重定向---> tee

特点:除了屏幕中输出,且指定位置的文件中也有一份

需求4:复制date命令的输出到file中,并统计输出行数

测试:date | tee file | wc -l  

过程:将date命令的输出存一份到file中,然后统计输出信息的行数,显示的是(两类)

二 vim 程序编辑器

(1)概念

vim定位:是程序开发的一项很好的工具,是一个"程序开发者工具",而不单是"文字处理软件"

相对文字处理软件增加的功能:颜色或者底线显示一些特殊的信息(用得到),支持正则表达式的查找架构,多文件编辑,块复制等

vim是程序编辑器的理由(举例):vim去编辑一个C程序语言的文件或者 shell script,vim会依据文件的扩展名或者文件内的开头信息判断文件的内容而自动调用该程序的语法判断式,再以颜色来显示程序代码一般信息。

(2)vim的模式

模式分类:一般模式、编辑模式(Insert模式)、命令行模式、可试化模式()

逻辑:vim 文件名---->一般模式---->I进入编辑模式---->ESC---->回到一般模式---->输入:---->进入命令行模式--->保存退出:wq

说明:上述流畅的执行是建立在对文件操作有相应权限前提

补充:如果文件不存在,则会创建文件(区别 cat)

各模式下可以进行的操作

###1)一般模式(两种条件下进入):vim 文件 或者 编辑后 esc

操作:左右移动光标、复制文件数据、粘贴、删除字符或者行

注意:无法编辑文件的内容

(1)vim一般模式下字符的管理

0.光标的移动(常用)

常用(四个方向键),键盘字符排列在一起(h-->左,j-->下,k-->上,l-->右)

需求1:要移动指定的行号,使光标移动到指定的位置(行号--向下)

测试:向下移动指定的行数------>30j或者30(朝下的箭头)

需求2:移动到光标的所在的最前面的字符和最后面的字符

参考系:光标

面:0或者home键

面:$或者end

需求3:移动到文件的第一行/最后一行、移动到文件的第n行(配合 ":set使用")

参考系:文件

文件第一行(首字符前面):gg

文件的最后一行(首字符前面):G

移动到文件的第n行:n(数字)G

----------------------------

1.字符的复制和粘贴(从当前光标阴影开始)

相关说明:y:copy---->l:letter---->w:word

y1l           ##复制一个字母(默认1不写)
y3l           ##复制3个字母
y1w         ##复制一个单词
y3w         ##复制3个单词
y1y          ##复制一行(默认1不写)--->常用
y3y          ##复制3行
p             ##复制完成后按“P”粘贴(注意:粘贴是在当前光标前(P)后(p)面粘贴的!!!)

执行逻辑(细节):复制---->从当前光标处(阴影)开始复制n个字母(字符)---->粘贴:在当前光标之后粘贴

单词的标示空格

试出来的:p6p------>操作(光标选中的粘贴,然后又粘贴了6个)

--------------------------

2.字符的删除

坐标:以光标为单位

d:delete

dl         ##删除一个字母d3l
d3l       ##删除3个字母
dw       ##删除一个单词
d3w     ##删除3个单词
d3d     ##删除3

dd       ##删除光标所在一整行

ndd     ##删除光标所在的向下n行(从当前光标所在行开始)

3.字符的剪切

c:cut

cl                 ##剪切一个字母
c3l               ##剪切3个字母
cw               ##剪切一个单词
c3w             ##剪切3个单词
cc                ##剪切一行
c3c              ##剪切3行

注意:剪切过后会进入到插入模式(左下角的标示),在执行粘贴动作时一定要Esc退出插入模式,再p粘贴!

通俗的理解:剪切过后会由一般模式进入插入模式,必须退出插入模式

小知识点:如果上一条命令执行错了需要回退怎么办键入"u"即可,注意不是ctrl+z

-------------------------------

###2)编辑(插入--替换)模式(一种情况进入):输入{I、i、等}

标示:左下方出现INSERT或者REPLACE的标示

1.其它进入插入模式的情况
i          ##光标所在位置插入
I          ##光标所在行行首(常用)
a         ##光标所在字符的下一个位置
A         ##光标所在行行尾
o         ##光标所在行下一行(相当于换行)
O        ##光标所在行上一行
s         ##删除光标所在字符插入(了解)
S        ##删除光标所在行插入(了解)

补充:剪切后也会进入插入模式

此模式特点:可以在文件中输入字符

2.进入替换模式

r:只会替换光标所在的那一个字符一次R:会一直替换光标所在的文字,直到Esc为止!

------------------

###3)命令行模式

进入:输入"{/?}"三种任何一个按钮,可以将光标移动到最下面一行(命令执行行)

功能:查找数据、读取、保存、大量替换、离开vim、显示行号、设置一些信息等

(1)在vim的命令模式下配置vim的工作方式
:set nu                      ##行号添加
:set nonu                  ##取消行号(临时,一般不需要)
:set mouse=a          ##添加鼠标选择
:set cursorline         ##行线显示

说明:以上设定都是临时的

需求1永久设定方式(修改vim配置文件)

vim /etc/vimrc        

具体操作:进入文件后转化到编辑模式,在此文件最后加入以上参数(行号的添加、鼠标的添加、行线的显示)

注意:默认是不是即时生效,必须让其把配置文件重新加载到内存中才会生效

再执行:source /etc/vimrc

思考:如何设置制表符呢?

(2)vim命令模式下关键字搜索(查找)

一般模式下键如:/关键字

(3)在linux下的vim中替换

搜索方向:n--->向下匹配;N--->向上匹配

(4)批量替换字符

替换命令的格式是:[range]s(search)/pattern/string/[c(confirm),e(不显示error),g(globe:将做整行替换),i(ignore:忽略大小写)]

:%s/原有字符/替换后字符              ##替换每一行中出现的第一个原有字符   等价的方式---->:[1,$]s/原有字符/替换后字符
:%s/原有字符/替换后字符/gc         ##替换所有,并且用用户交互(替换前需要用户确认--confirm)
:1,5s/原有字符/替换后字符/g         ##替换1-5行(区间替换)--->与替换命令模式最匹配

(5)移动光标

数字(移动到指定的行------>常与":set nu结合使用")

###4)vim异常退出

特点:在vim异常退出时,系统中会在所编辑的文件目录中生成.file.swp并且vim再次编辑此文件时会出现相应提示

此模式下的相关命令:

按 "o"    open(只读---多人编辑的时候,只是查看内容而不编辑内容)
按 "e"    edit(正常打开文件,不载入暂存文件)
按 "r"    recover(加载暂存文件,用来救回之前未保存的工作注意:救回来之后保存文件后还得自行手动删除暂存文件,否则一直提示警告信息)
按 "d"    delete .swap file(确定暂存文件无用,那么打开文件之前会先将暂存文件删除)--->常用(可能不知道暂存文件是怎么来的!)
按 "q"    quit(离开vim)

思考:何为异常退出

###5)vim的可视化模式(VISUAL BLOCK)

进入:在命令模式下按“ctrl+v”---->进入到可视模式

功能:在可视模式下可以区域()选择字符等操作

说明:主要看光标经过的地方(反白表示选中)

相应的按键:v(字符选择)、V(行选择)、ctrl+v(块选择)、y(复制,粘贴的时候也是以这个模式粘贴,在当前光标之后)、d(直接就删除)

思考:选择了以后,可以做的事情?

(1)可视模式下批量“添加”字符
*>> ctrl+v 选中要加入字符所在列(非字符)--->光标就会反白--->y(复制)--->进入一般模式
*>> 按“I”进入插入模式,写入要加入的字符(粘贴p)
注意:别人讲的步骤(???)!!!

用处:在排列整齐的文本文件中复制/删除块

###6)vim的分屏功能

前提是 vim file1 file2 。。。------>编辑多个文件(多窗口)
ctrl+w s                         ###上下分屏
ctrl+w v                         ###左右分屏
ctrl+w 松手 c(q)          ###关闭"光标"所在屏幕(针对分屏)
ctrl+w 上下(kjhl)左右  ###光标移动到指定屏幕(了解)
:sp file2                        ##同时编辑当前文件和file2

-------------------------------------------

####7)vim的退出模式(常用)
:q          ##当用vim打开文件但没有对字符作任何操作时可直接退出(否则会给与提示)
:q!         ##当用vim打开文件并对字符作操作,放弃所有操作退出(用在当前配置文件错误,但是又不知道如何修改,类似于重置)
:wq       ##正常保存退出
:wq!      ##权限不够的时候,强行保存退出,对超级用户及文件所有人生效!

####8)vim手册
学习vim的命令的文档(自带):vimtutor   
:q                                     ##退出vimtutor

知识点:查看文件和文件夹的大小----> db -sh

Linux下查看文件和文件夹大小 删除日志

猜你喜欢

转载自blog.csdn.net/wzj_110/article/details/81264149