.Net程序员学习Linux(二)
本次知识点:递归命令符,wc命令,文档编辑器 vi的简单使用,文本常用操作命令,find查询文件命令,grep匹配文本中对应的关键字
递归命令符
递归对于程序猿来说不默认,经常用于级联关系,一层套一层直达最后一层,在linux的命令中,例如 ls rm mv等等都可以递归, 只需要在后面加上-R 即可进行递归操作
计算文件行数,字节数的wc命令
wc命令用来打印文件的文本行数、单词数、字节数等.
[root@localhost etc]# wc krb5.conf ----->统计出该文件中的 行数 单词数 字节数
得到的结果是 22 47 449 krb5.conf
[root@localhost etc]# wc -l krb5.conf ------>加上-l则是数行数,加上-c则是字节数
可以利用wc来统计一下目录中有多少个文件
[root@localhost etc]# ls | wc – l ------->计算出当前目录下的文件数
216
-------------------------------利用wc统计------------------------------------
[root@localhost ~]# ls -R directory2/directory3 | less
directory2/directory3:
de123
er
ew
ewfds
qwes
qyv
tytr
[root@localhost ~]# ls -R directory2/directory3 | wc -l
8
利用wc统计,会把当前的文件目录也统计进去
递归复制目录
[root@localhost ~]# 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的文件是对应管理所有硬件设备的,如鼠标,打印机等
[root@localhost ~]# cat install.log | tee /dev/1p0 --------->使用tee命令,则可以是打印的同时,把文件的内容输出大打印机设备(假设dev/1p0)对于打印设备
pr 格式化输出
pr命令可处理其他命令产生的输出的格式
-<数字>:表示分栏,分成数字的栏数
-W:每行字符数,缺省是72。
-l:每页的行数,缺省为66。
-h <字符串>:用指定的字符串代替文件名称作为题头
[root@localhost ~]# cat install.log | pr -2 -h"aaaa" –l20 ------->分2栏, 标题为aaaa 每页20行
head和tail输出头/尾 指定行数
有时候我们只关心文本的头尾的部分,那么可以指定打印这些头与尾则可以使用命令head或者tail
[root@localhost ~]# tail -20 install.log ---->输出 install.log文件的尾20行
[root@localhost ~]# head -20 install.log ---->输出 install.log文件的头20行
把内容另存为到另一个文件中,
[root@localhost ~]# head -20 install.log > newfile ---->把头20行另存为newfile的文件中
[root@localhost ~]# tail -20 install.log >> newfile ----->把尾20行添加到newfile文件的尾部
注意:>是重定向输出到指定文件,如果文件中有内容,则里面的内容将被覆盖,>>则是添加到文件的尾端
diff比较两个文件的不同
[root@localhost ~]# 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 <命令> \;:执行<命令>,如果命令中要使用检索出的文件名称的话,用符号“{}”来代替,系统会在发现“{}”的地方,将检索出来的文件名称传递给该命令。结尾固定为\;
[root@localhost ~]# find / -name "*.bak" -exec rm {} \; --->找出 .bak后缀的文件,并删除
[root@localhost ~]# find / \( -name "a*" -o -name "*a" \) -print↙ --->包含或者的操作
grep寻找文件中包含某关键字的文件
grep "<关键字>" 目录 ---->可以使用正则 进行配对
这周主要是一些文本的处理,例如vi的使用,以及文件的一些操作.
.Net程序员学习Linux(二)的更多相关文章
- .Net程序员学习Linux(一)
本次知识点:Linux系统的多终端切换,linux下的用户,linux远程访问工具使用,linux下重要的目录,命令的组成,通配符,linux的路径问题,文件操作的综合运用 为什么学习linux? 1 ...
- Net程序员学习Linux
Net程序员学习Linux 本次知识点:Linux系统的多终端切换,linux下的用户,linux远程访问工具使用,linux下重要的目录,命令的组成,通配符,linux的路径问题,文件操作的综合运用 ...
- .Net程序员学习Linux最简单的方法
有很多关于Linux的书籍,博客.大多数都会比较“粗暴“的将一大堆的命令塞给读者,从而使很多.NET程序员望而却步.未入其门就路过了. 所以我设想用一种更为平滑的学习方式, 就是在学习命令时,先用纯语 ...
- 转:.Net程序员学习Linux最简单的方法
有很多关于Linux的书籍,博客.大多数都会比较“粗暴“的将一大堆的命令塞给读者,从而使很多.NET程序员望而却步.未入其门就路过了. 所以我设想用一种更为平滑的学习方式, 就是在学习命令时,先用纯语 ...
- .Net程序员学习Linux最简单的方法(转载)
有很多关于Linux的书籍.博客.大多数都会比较“粗暴“的将一大堆的命令塞给读者,从而使很多.NET程序员望而却步.未入其门就路过了. 所以我设想用一种更为平滑的学习方式, 就是在学习命令时,先用纯语 ...
- 【转】.Net程序员学习Linux最简单的方法
有很多关于Linux的书籍.博客.大多数都会比较“粗暴“的将一大堆的命令塞给读者,从而使很多.NET程序员望而却步.未入其门就路过了. 所以我设想用一种更为平滑的学习方式, 就是在学习命令时,先用纯语 ...
- .Net程序员学习Linux(三)
基础命令 ll 文件名 命令可以查看文件的大小 file 文件名 可以看到文件后缀,大小 压缩与解压工具 这些压缩工具按照我理解应该是很少单独拿出来用,应该是需要配合其他命令或者工具来使用 gzi ...
- 程序员藏经阁 Linux兵书
程序员藏经阁 Linux兵书 刘丽霞 杨宇 编 ISBN 978-7-121-21992-4 2014年1月出版 定价:79.00元 536页 16开 内容提要 <Linux兵书>由浅 ...
- PHP程序员学习路线
注:本文是@黑夜路人的旧文,假设PHP程序员基础不是非常扎实,简单梳理了每个阶段PHP程序员的技术要求,来帮助很多PHP程序做对照设定学习成长目标.再次分享,共勉,欢迎补充. 第一阶段:基础阶段(基础 ...
随机推荐
- dump 验证实例恢复的起点和终点
什么时候会产生实例恢复呢?当你数据库服务器异常断电,重启数据库就会发生实例恢复.实例恢复是由数据库自动完成的,无须DBA的干涉.当然这里有个前提条件:数据文件. 在线日志文件.控制文件不得有损坏. 我 ...
- Web安全测试之XSS(转)
XSS 全称(Cross Site Scripting) 跨站脚本攻击, 是Web程序中最常见的漏洞.指攻击者在网页中嵌入客户端脚本(例如JavaScript), 当用户浏览此网页时,脚本就会在用户的 ...
- Android——显示当前运行所有服务,判断服务是否运行
1.显示系统当前所有运行服务: ActivityManager am = (ActivityManager) MainActivity.this.getSystemService(Context.AC ...
- [C#网络编程系列]专题一:网络协议简介
转自:http://www.cnblogs.com/zhili/archive/2012/08/11/NetWorkProgramming.html 因为这段时间都在研究C#网络编程的一些知识, 所以 ...
- 12篇学通C#网络编程
转自:http://www.cnblogs.com/huangxincheng/archive/2012/01/03/2310779.html 在C#的网络编程中,进程和线程是必备的基础知识,同时也是 ...
- ashx文件的使用
转自:http://www.cnblogs.com/Tally/archive/2013/02/19/2916499.html ashx是什么文件 .ashx 文件用于写web handler的..a ...
- [原]RobotFrameWork(四)变量运算与Evaluate
一.特殊变量运算: 执行结果: 二.Evaluate使用 函数释义:Evaluate是执行python表达式,并返回执行结果 示例1: 执行结果: 示例2: 执行结果: 作者:liuheng12345 ...
- Bzoj 1982: [Spoj 2021]Moving Pebbles 博弈论
1982: [Spoj 2021]Moving Pebbles Time Limit: 10 Sec Memory Limit: 64 MBSubmit: 130 Solved: 88[Submi ...
- GCC基本知识
掌握下面的对GCC会有一个比较清晰的大致的了解: 不经意间,GCC已发展到了4.3的版本,尽管在软件开发社区之外乏人闻问,但因为GCC在几乎所有开源软件和自由软件中都会用到,因此它的编译性能的涨落会直 ...
- OpenSUSE SuSEfirewall2
1,修改SuSEfirewall2配置文件放行相应的端口方法vim /etc/sysconfig/SuSEfirewall2#TCP端口的情况:FW_SERVICES_EXT_TCP ="2 ...