.Net程序员学习Linux(二)

本次知识点:递归命令符,wc命令,文档编辑器 vi的简单使用,文本常用操作命令,find查询文件命令,grep匹配文本中对应的关键字

递归命令符

递归对于程序猿来说不默认,经常用于级联关系,一层套一层直达最后一层,在linux的命令中,例如 ls rm mv等等都可以递归,   只需要在后面加上-R 即可进行递归操作

计算文件行数,字节数的wc命令

wc命令用来打印文件的文本行数、单词数、字节数等.

[[email protected] etc]# wc krb5.conf      ----->统计出该文件中的 行数 单词数 字节数

得到的结果是 22  47 449 krb5.conf

[[email protected] etc]# wc -l  krb5.conf      ------>加上-l则是数行数,加上-c则是字节数

可以利用wc来统计一下目录中有多少个文件

[[email protected] etc]# ls | wc – l  ------->计算出当前目录下的文件数
216

-------------------------------利用wc统计------------------------------------

[[email protected] ~]# ls -R  directory2/directory3 | less
directory2/directory3:
de123
er
ew
ewfds
qwes
qyv
tytr
[[email protected] ~]# ls -R  directory2/directory3 | wc -l
8

利用wc统计,会把当前的文件目录也统计进去

递归复制目录

[[email protected] ~]# cp -R directory2 cydirectory2   ---->把directory2 里面文件复制到cydirectory2中(我一直以为连directory2也包含在其中,其实只是里面的文件而已)

普通的复制会根据当前运行的用户来创建权限,如果是需要想保持权限的不变,则需要加上 –p ,则拥有者是不会变化的

文档编辑器 vi

vi N多称之为编辑器之神,要打开一个文件并编辑它,则只需要驶入 vi file1 则可以进入到该文件进行编辑

vi有两种状态, 命令状态   与    编辑状态    ,刚进入的时候是命令状态.

由命令状态进入编辑状态 则 按 i  看到左下方变成 insert 则进入了编辑状态,还有 a A  i I o O s S都可以进入编辑状态,但是每种命令都带有其特定的操作模式,对于我这种初学者,就记住其中 一种就可以了,其余的之后再慢慢了解吧

由编辑状态进入命令状态 则是按 esc 按钮,看到左下方的 insert消失了,则是进入了命令行状态

---------------------选择又命令模式进入编辑模式的几种不同的方式--------------------------------

a:从光标所在之处的后面插入新的字符,插入时,插入处后面的字符会随着新增字符往后移动。

A:从光标所在行的最后处开始加入新的字符。

i:从光标所在之处的前面插入新的字符,插入时,插入处后面的字符会随着新增字符往后移动。

I:从光标所在行的第一个非空字符前面开始加入新的字符。

o:在光标所在行的下面新增一个空行,并进入插入状态。

O:在光标所在行的上面新增一个空行,并进入插入状态。

s:删除光标所在之处的字符,并进入插入状态。

S:删除光标所在的行,并进入插入状态。

--------------------------------在命令模式删除字符----------------------------------------------------

x:删除当前光标的字符

dd:删除当前光标正行

----------------------------------在命令行中恢复--------------------------------------------

u:相当于平时window下的Ctrl +z  撤销

ctrl+r:相当于 window 的ctry +y   恢复

-------------------------------替换字-----------------------------------------

R:进入替代状态,替换多个字符,直至按 Esc 键退出替换,左下方会出现 replace

--------------------保存,退出-------------------

:w   ---------->如果是旧文件,保存为当前目录则直接按回车,,如果是另存为 则加上 新的文件名

还有各种各样的快捷方式

:q ----------->退出当前vi模式,如果是改变则保存不了,可以使用 q! 强行退出,不保存

:wq --------->先保存再退出

--------------------------搜索文本-------------------------

/:进入搜索模式,输入需要搜索的字符 , 然后搜索成功的就会变色了,点击n可以搜索下一个, N就是上移

?:进入搜索模式,不过是往上搜

f:点击f后,再按一个字符,则把光标移动到最近当前光标的所输入的那个字符

部分本文操作的命令

使用管道命令符 | ,即可

more / less 命令

但是如果一个文件里面的嵌套的文件好多,那么如果运行 ls –R 那么屏幕就会不断闪动,打印出文件夹中的信息,我们人类肯定看不完啊,所以可以把其输出的放到一个容器中,这个容器为more 或者less ,more是不能为往上翻的,只能下翻,但是less则可以上翻或者下翻,命令:ls –R|less

如果在一开始没有放到容器中,那么可以使用Ctrl+c停止打印.

使用 less -N则可以连行数也一并输出

tee 多重传送

根目录下的dev的文件是对应管理所有硬件设备的,如鼠标,打印机等

[[email protected] ~]# cat install.log | tee  /dev/1p0 --------->使用tee命令,则可以是打印的同时,把文件的内容输出大打印机设备(假设dev/1p0)对于打印设备

pr 格式化输出

pr命令可处理其他命令产生的输出的格式

-<数字>:表示分栏,分成数字的栏数

-W:每行字符数,缺省是72。

-l:每页的行数,缺省为66。

-h <字符串>:用指定的字符串代替文件名称作为题头

[[email protected] ~]# cat install.log | pr -2 -h"aaaa" –l20  ------->分2栏, 标题为aaaa 每页20行

head和tail输出头/尾 指定行数

有时候我们只关心文本的头尾的部分,那么可以指定打印这些头与尾则可以使用命令head或者tail

[[email protected] ~]# tail -20 install.log    ---->输出 install.log文件的尾20行

[[email protected] ~]#  head -20 install.log   ---->输出 install.log文件的头20行

把内容另存为到另一个文件中,

[[email protected] ~]#  head -20 install.log > newfile   ---->把头20行另存为newfile的文件中

[[email protected] ~]# tail -20 install.log >> newfile      ----->把尾20行添加到newfile文件的尾部

注意:>是重定向输出到指定文件,如果文件中有内容,则里面的内容将被覆盖,>>则是添加到文件的尾端

diff比较两个文件的不同

[[email protected] ~]# diff install.log newfile    --->比较这两个文件的不同

------------------------------------打印的信息--------------------------------------

1c1
< Installing libgcc-4.4.7-16.el6.x86_64
---
> qqqqqqqqqqqqqqqqnstalling libgcc-4.4.7-16.el6.x86_64

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

1c1表示   install.log文件中的第一行 与 newfile的第一行 进行了修改了操作,

a、d和c分别表示新增、删除和修改

cmp逐个字符比较(不限于文本文件)

具体用法百度一下(我这里就偷懒不测试了....)

find查找文件

find命令的组成: find 搜索的初始目录 搜索的方式(条件)  [执行的操作]

搜索的初始目录:表示从什么目录开始进行搜索,如果有多个目录可以用空格分开或者使用通配符

-name 通过名字搜索,可以使用通配符进行模式操作 ,要用双引号括着

-iname 忽略大小写

-tpye 根据文件类型删除 f:一般文件  d:目录文件  c:字符设备文件  l:符号链接

-link<数量> :根据文件链接数进行检索

-size<数目>kmg  :根据文件的大小来筛选,需要写上单位

-user <拥有者账号名称>根据文件的拥有者进行检索。

以上这些都是常用的检索方式,当然还有很多,可以搜一搜,配合逻辑运算符可以产生更多的检索条件

逻辑:如果有多个条件则在筛选条件中使用\(     \)    \)转义字符       其中

and  与

-o代表or

! 代表非

执行操作:

–print 在屏幕中输出

-exec <命令> \;:执行<命令>,如果命令中要使用检索出的文件名称的话,用符号“{}”来代替,系统会在发现“{}”的地方,将检索出来的文件名称传递给该命令。结尾固定为\;

?[[email protected] ~]# find / -name "*.bak" -exec rm {} \;    --->找出 .bak后缀的文件,并删除

[[email protected] ~]# find / \( -name "a*" -o -name "*a" \) -print  --->包含或者的操作

grep寻找文件中包含某关键字的文件

grep "<关键字>" 目录    ---->可以使用正则 进行配对

这周主要是一些文本的处理,例如vi的使用,以及文件的一些操作.

时间: 2024-08-10 17:18:58

.Net程序员学习Linux(二)的相关文章

Net程序员学习Linux

Net程序员学习Linux 本次知识点:Linux系统的多终端切换,linux下的用户,linux远程访问工具使用,linux下重要的目录,命令的组成,通配符,linux的路径问题,文件操作的综合运用 为什么学习linux? 1.很多人都说.net程序员只会在Windows的环境下进行工作,压根就不懂Linux的使用,也不懂Linux的命令,只会用鼠标,只会在图形界面下工作.其实刚开始听,心里挺不爽的,作为一个.net程序员,我所熟悉的当然是在windows下工作,因为我们压根不需要在linux

.Net程序员学习Linux(一)

本次知识点:Linux系统的多终端切换,linux下的用户,linux远程访问工具使用,linux下重要的目录,命令的组成,通配符,linux的路径问题,文件操作的综合运用 为什么学习linux? 1.很多人都说.net程序员只会在Windows的环境下进行工作,压根就不懂Linux的使用,也不懂Linux的命令,只会用鼠标,只会在图形界面下工作.其实刚开始听,心里挺不爽的,作为一个.net程序员,我所熟悉的当然是在windows下工作,因为我们压根不需要在linux环境使用编码工具,而且很多p

.Net程序员学习Linux最简单的方法(转载)

有很多关于Linux的书籍.博客.大多数都会比较“粗暴“的将一大堆的命令塞给读者,从而使很多.NET程序员望而却步.未入其门就路过了. 所以我设想用一种更为平滑的学习方式, 就是在学习命令时,先用纯语言来介绍Linux背景和动机. 就如同所有的的网络游戏都要先介绍游戏的历史观,然后再介绍游戏的操作. 大多数初学者在刚刚接触Linux都会有非常陌生的感觉.往往会有一些疑惑和问题.而我们就沿着这些问题,从远及近,从宏观到微观来理解Linux的简洁和美丽. 问题1:Winows有注册表,为什么Linu

.Net程序员学习Linux最简单的方法

有很多关于Linux的书籍,博客.大多数都会比较“粗暴“的将一大堆的命令塞给读者,从而使很多.NET程序员望而却步.未入其门就路过了. 所以我设想用一种更为平滑的学习方式, 就是在学习命令时,先用纯语言来介绍Linux背景和动机. 就如同所有的的网络游戏都要先介绍游戏的历史观,然后再介绍游戏的操作. 大多数初学者在刚刚接触Linux都会有非常陌生的感觉.往往会有一些疑惑和问题.而我们就沿着这些问题,从远及近,从宏观到微观来理解Linux的简洁和美丽. 问题1: Winows有注册表,为什么Lin

.Net程序员学习Linux(三)

  基础命令 ll 文件名 命令可以查看文件的大小 file 文件名 可以看到文件后缀,大小 压缩与解压工具 这些压缩工具按照我理解应该是很少单独拿出来用,应该是需要配合其他命令或者工具来使用 gzip 是用于压缩文件 gzip -v 文件名            ------>压缩文件并且显示压缩后文件的详细信息 gzip -l 压缩后文件       ------>也可以查看压缩后文件的详细信息,上面那个跟随的未压缩文件并压缩,这里是跟随压缩后的文件名 gzip -9 -c 文件名    

马程序员学习笔记——红黑树解析二

---------------------- ASP.Net+Unity开发..Net培训.期待与您交流! ---------------------- 四.树中删除元素 1.先找到需要删除的元素. 2. 2.1如果被删元素没有子元素,那么直接用NIL节点代替他: 2.2如果被删元素只有一个子元素,那么直接用这个子元素代替他: 2.3如果被删元素有两个子元素,那么就用左子元素中的最大元素或者右子元素的最小元素代替他. 比如说原来要删除的元素是N,N有两个分支,其中P是N左分支中的最大元素,那么就

C#程序员学习Android开发系列之学习路线图

通过前面的3篇博客已经简单的介绍了Android开发的过程并写了一个简单的demo,了解了Android开发的环境以及一些背景知识. 接下来这篇博客不打算继续学习Android开发的细节,先停一下,明确一下接下来的学习目标以及学习路线. 一.对Android开发的基本认识 1.Android原生开发是基于Java语言的,由于我比较擅长C#,所以对Java语言本身不太熟练,需要加强Java语言基础的练习,这一块我会穿插到具体的知识点练习当中,并且在必要的地方给出与C#语言的对比(其实基本上在语法层

聊聊阿里社招面试,谈谈“野生”Java程序员学习的道路

阿里社招面试都问什么? 和之前一样,文章一上来,我们先来谈谈阿里的社招面试都问什么,其实这个话题并不是什么秘密,所有来阿里面试过的同学,都能回答一二. 两年前的时候,笔者在文章里是这么回答的. 这个是让LZ最头疼的一个问题,也是群里的猿友们问的最多的一个问题. 说实话,LZ只能隐约想起并发.JVM.分布式.TCP/IP协议这些个关键字,具体的问题真的是几乎都没记住.而且就算LZ记住了,也告诉你了,你也背会了,但LZ觉得,在面试中,你被问到一模一样问题的可能性依然很小. 甚至,就算你运气好被问到了

一个无锁消息队列引发的血案:怎样做一个真正的程序员?(二)——月:自旋锁

前续 一个无锁消息队列引发的血案:怎样做一个真正的程序员?(一)——地:起因 一个无锁消息队列引发的血案:怎样做一个真正的程序员?(二)——月:自旋锁 平行时空 在复制好上面那一行我就先停下来了,算是先占了个位置,虽然我知道大概要怎么写,不过感觉还是很乱. 我突然想到,既然那么纠结,那么混乱,那么不知所措,我们不如换个视角.记得高中时看过的为数不多的长篇小说<穆斯林的葬礼>,作者是:霍达(女),故事描写了两个发生在不同时代.有着不同的内容却又交错扭结的爱情悲剧,一个是“玉”的故事,一个是“月”