Linux学习笔记(二)——文件/目录/VIM
文件和目录管理 及 VI编辑器的使用
文件和目录管理,刚开始学这块的时候感觉内容很多很杂,但是学完进行总结后,发现其实很有条理的而且没什么难度,只是熟练掌握这些常用的命令就行了。至于Vim编辑器,不得不说,用了这个编辑器之后,感觉windows的notepad很没有技术含量了。
先简单总结一下文件和目录常用到的命令,简单的用法就略过。
文件操作命令:touch、file、which、find、cp、rm、mv、ln
文件内容操作命令:cat、more、less,head、tail,wc、grep
目录操作命令:pwd、cd、ls、mkdir、du
归档及压缩命令:gzip、bzip2、tar

[jzhou@localhost ~]$ pwd ==>显示当前目录
/home/jzhou
[jzhou@localhost ~]$ mkdir dirtest ==>创建一个目录
[jzhou@localhost ~]$ cd dirtest ==>进入这个目录
[jzhou@localhost dirtest]$ touch testfile ==>创建一个文件
[jzhou@localhost dirtest]$ mkdir dirtest1 ==>创建子目录
[jzhou@localhost dirtest]$ ls ==>列出当前目录内容
dirtest1 testfile
[jzhou@localhost dirtest]$ echo hello linux >>testfile ==>追加内容到文件
[jzhou@localhost dirtest]$ cat testfile ==>显示文件内容
hello linux
[jzhou@localhost dirtest]$ file testfile ==>查看文件类型
testfile: ASCII text
[jzhou@localhost dirtest]$ du -sh testfile ==>显示文件所占空间
8.0K testfile
[jzhou@localhost dirtest]$ wc testfile ==>统计文件行数、字数、字符数
1 2 12 testfile
[jzhou@localhost dirtest]$ echo haha,I love Linux >> testfile ==>追加内容
[jzhou@localhost dirtest]$ echo no,no ,I hate C plus plus >> testfile
[jzhou@localhost dirtest]$ echo OK,the end >> testfile
[jzhou@localhost dirtest]$ cat testfile ==>查看内容
hello linux
haha,I love Linux
no,no ,I hate C plus plus
OK,the end
[jzhou@localhost dirtest]$ head -2 testfile ==>查看文件前两行内容
hello linux
haha,I love Linux
[jzhou@localhost dirtest]$ tail -2 testfile ==>查看文件最后两行内容
no,no ,I hate C plus plus
OK,the end
[jzhou@localhost dirtest]$ cat testfile | grep "Linux" 查找特定关键字
haha,I love Linux
[jzhou@localhost dirtest]$

以上只是展示部分命令的简单用法,很多选项没有加入,head和tail命令默认是显示前10行和后10行记录,du是查看目录或文件所占的空间,通常比实际大小要大,且通常为4的整数倍。
more和less命令也是查看文件内容的方法,不过less已经渐渐取代more了,因为more的所有功能less都具有,而且less可以向上翻页查看,more则不可以,cat是直接将文件内容一屏显示出来,不管多长,所有如果文件很长时,则使用less命令,同样,也是按q键退出。

[jzhou@localhost dirtest]$ cd dirtest1 ==>进入到刚才建的子目录
[jzhou@localhost dirtest1]$ touch testfile1 ==>在子目录中创建一个新文件
[jzhou@localhost dirtest1]$ echo haha >> testfile1
[jzhou@localhost dirtest1]$ cd .. ==>返回到上一目录
[jzhou@localhost dirtest]$ ls
dirtest1 testfile
[jzhou@localhost dirtest]$ cp testfile ./dirtest1/ ==>把文件testfile复制到子目录dirtest1下
[jzhou@localhost dirtest]$ cd dirtest1/ ==>进入到子目录
[jzhou@localhost dirtest1]$ ls ==>查看子目录下多了一个刚才复制过来的文件
testfile testfile1
[jzhou@localhost dirtest1]$ cd ..
[jzhou@localhost dirtest]$ ls
dirtest1 testfile
[jzhou@localhost dirtest]$ rm -f testfile ==>强制删除dirtest目录下的testfile文件
[jzhou@localhost dirtest]$ ls ==>testfile文件已经被删除
dirtest1
[jzhou@localhost dirtest]$ cd ./dirtest1/ ==>进入到子目录
[jzhou@localhost dirtest1]$ mv testfile ./testfile ==>这里我尝试移动的目标目录错误
testfile testfile1
[jzhou@localhost dirtest1]$ pwd ==>所以我要查看当前目录,以使用绝对路径
/home/jzhou/dirtest/dirtest1
[jzhou@localhost dirtest1]$ mv testfile /home/jzhou/dirtest/==>将testfile文件移到dirtest目录下
[jzhou@localhost dirtest1]$ cd ..
[jzhou@localhost dirtest]$ ls ==>很好,testfile文件已经被移动过来了
dirtest1 testfile
[jzhou@localhost dirtest]$ ln -s testfile linkfile ==>建立软链接
[jzhou@localhost dirtest]$ ls -l ==>注意下面软链接文件的显示方式
总计 20
drwxrwxr-x 2 jzhou jzhou 4096 03-05 22:43 dirtest1
lrwxrwxrwx 1 jzhou jzhou 8 03-05 22:45 linkfile -> testfile
-rw-rw-r-- 1 jzhou jzhou 67 03-05 22:40 testfile
[jzhou@localhost dirtest]$

rm 文件作用在文件与目录的唯一区别就是是否带有-r选项,因为删除目录时,目录里面可能嵌套有文件和目录,所以必须要有-r选项,cp和rm的格式都是: cp/rm 原文件 目标文件(注意这里的路径问题)
ln链接文件:分为软链接和硬链接,软链接又称符号链接,即带有-s选项。软链接即相当于windows下的快捷方式,若原文件损坏,则快捷方式无效,而硬链接则相当于对原文件的一个拷贝,通常情况,硬链接用的很少。所以建立链接文件时,通常加-s选项即建立软链接。链接文件的文件类型位为:l,后续笔记文件权限中会介绍这个位。
另外要注意的是:不能为目录建立硬链接文件,而且硬链接与原始文件必须位于同一分区(文件系统)中。

[jzhou@localhost ~]$ cd dirtest/
[jzhou@localhost dirtest]$ ls
dirtest1 linkfile testfile
[jzhou@localhost dirtest]$ tar cf test.tar dirtest1 testfile ==>归档目录和文件
[jzhou@localhost dirtest]$ ls ==>多了一个刚新建的归档文件test.tar
dirtest1 linkfile testfile test.tar
[jzhou@localhost dirtest]$ rm -rf dirtest1 testfile ==>删除原文件,方便后面确认文件是否归档
[jzhou@localhost dirtest]$ ls
linkfile test.tar
[jzhou@localhost dirtest]$ pwd ==>查看一下当前目录,后面要解归档在这个目录
/home/jzhou/dirtest
[jzhou@localhost dirtest]$ tar xf test.tar -C /home/jzhou/dirtest/ ==>解开归档,testfile文件释放了
[jzhou@localhost dirtest]$ ls
dirtest1 linkfile testfile test.tar
[jzhou@localhost dirtest]$ rm -f test.tar ==>删除这个归档包,助于后面测试
[jzhou@localhost dirtest]$ ls
dirtest1 linkfile testfile
[jzhou@localhost dirtest]$ gzip -9 testfile ==>将这个文件以gz格式压缩
[jzhou@localhost dirtest]$ ls
dirtest1 linkfile testfile.gz ==>这个就是压缩后自动生成的文件名
[jzhou@localhost dirtest]$ gzip -d testfile.gz ==>将刚压缩的包解开
[jzhou@localhost dirtest]$ ls
dirtest1 linkfile testfile ==>看,testfile被解压出来了
[jzhou@localhost dirtest]$ bzip2 -9 testfile ==>将这个文件以bz2格式压缩
[jzhou@localhost dirtest]$ ls
dirtest1 linkfile testfile.bz2 ==>看,这个bz2就是刚生成的
[jzhou@localhost dirtest]$ bzip2 -d testfile.bz2 ==>解开这个压缩包
[jzhou@localhost dirtest]$ ls
dirtest1 linkfile testfile ==>看,它被释放出来了
[jzhou@localhost dirtest]$ tar jcf test.tar.bz2 testfile ==>这个是bz2格式归档压缩,注意选项是j
[jzhou@localhost dirtest]$ ls
dirtest1 linkfile testfile test.tar.bz2
[jzhou@localhost dirtest]$ rm -r testfile
[jzhou@localhost dirtest]$ ls
dirtest1 linkfile test.tar.bz2
[jzhou@localhost dirtest]$ tar jxf test.tar.bz2 -C /home/jzhou/dirtest/ ==>解开归档压缩
[jzhou@localhost dirtest]$ ls
dirtest1 linkfile testfile test.tar.bz2
[jzhou@localhost dirtest]$ tar zcf test.tar.gz dirtest1 ==>这个是gz格式归档压缩,注意选项是z
[jzhou@localhost dirtest]$ ls
dirtest1 linkfile testfile test.tar.bz2 test.tar.gz
[jzhou@localhost dirtest]$ rm -rf dirtest1
[jzhou@localhost dirtest]$ ls
linkfile testfile test.tar.bz2 test.tar.gz
[jzhou@localhost dirtest]$ tar zxf test.tar.gz -C /home/jzhou/dirtest/ ==>解开归档压缩
[jzhou@localhost dirtest]$ ls
dirtest1 linkfile testfile test.tar.bz2 test.tar.gz
[jzhou@localhost dirtest]$

上面命令显示格式不太友好,因为在真实环境下,若删除原文件,软链接文件会处于不可用状态背景会变成红底。不过这个不影响理解呵呵。
注意归档只是将文件或者目录打在一个包里,并不进行压缩,而gzip和bzip2是进行压缩,上述最后几行命令是将二者结合起来使用的,即先归档后压缩。
tar和gzip bzip2的命令格式如下:
tar [选项]... 归档文件名 [-C 目标目录] ==》解开归档文件
gzip/bzip2 [-9] 文件名或目录 ==》制作压缩文件
gzip/bzip2 -d .gz/.bz2格式的压缩文件 ==》解开压缩文件
对于上述命令,只是举出最简单的用法,至于要实现更强大的功能,使用时那就要去查每个命令带有哪些选项,或者直接找man命令帮助,那些选项太多,所以我认为只要知道有某个命令,至于具体用法用到时再去查而没必要记住所有的选项含义。
VIM编辑器的常用快捷编辑方式
文本编辑器可用来创建或修改文本文件,以及维护Linux系统中的各种配置文件。首次接触这个编辑器时会由于不熟练而是影响编辑效率,但是掌握常用快捷键后,非常神速。下面只是简单介绍下Vim编辑器,至于更深入的用法大家可以网上找找。
Unix和早期的Linux中默认使用的文本编辑器是Vi,现在用的都是vi的增强版vim,由于vi用的比较习惯了,所以现在仍然叫vi,其实是别名 alias vi='/usr/bin/vim',这个可以通过命令which vi看到。
Vim编辑器有3种工作模式:命令模式、输入模式、末行模式,在有的资料中可能说有2中工作模式,不将‘末行模式’列在其中,这个不重要,总之前两种模式确实很重要;因为在这两种模式下可以做很多事。各种模式之间的切换如下图:
这几个模式的转换也要非常熟练。
命令模式中的基本操作:
(1)显示行号::set nu 取消行号: :set nonu
(2)行间快速跳转:#G:跳转到文件中的第#行;G:跳转到文件的末尾行;1G或gg:跳转到文件的行首。
(3)行内快速跳转:Home End
关于删除复制和粘贴:(命令模式下)
删除 |
x或Del |
删除光标处的单个字符 |
dd |
删除当前光标所在行 |
|
#dd |
删除从光标处开始的#行内容 |
|
d^ |
删除当前光标之前到行首的所有字符 |
|
d$ |
删除当前光标处到行尾的所有字符 |
|
复制 |
yy |
复制当前行整行的内容到剪贴板 |
#yy |
复制从光标处开始的#行内容 |
|
粘贴 |
p |
将缓冲区中的内容粘贴到光标位置处之后 |
P |
粘贴到光标位置处之前 |
在文件内容中查找:
操作键 |
功能 |
/word |
从上而下在文件中查找字符串“word” |
?word |
从下而上在文件中查找字符串“word” |
n |
定位下一个匹配的被查找字符串 |
N |
定位上一个匹配的被查找字符串 |
撤销编辑及保存退出:
u |
按一次取消最近的一次操作 多次重复按u键,恢复已进行的多步操作 |
U |
用于取消对当前行所做的所有编辑 |
ZZ |
保存当前的文件内容并退出vi编辑器 |
保存文件及退出vi编辑器:(末行模式下)
保存文件 |
||
:w /root/newfile |
另存为其它文件 |
|
退出vi |
:q |
未修改退出 |
:q! |
放弃对文件内容的修改,并退出vi |
|
保存文件退出vi |
:wq |
文件内容替换:(末行模式下)
:s /old/new |
将当前行中查找到的第一个字符“old” 串替换为“new” |
:s /old/new/g |
将当前行中查找到的所有字符串“old” 替换为“new” |
:#,# s/old/new/g |
在行号“#,#”范围内替换所有的字符串“old”为“new” |
:% s/old/new/g |
在整个文件范围内替换所有的字符串“old”为“new” |
:s /old/new/c |
在替换命令末尾加入c命令,将对每个替换动作提示用户进行确认 |
要想熟练操作Vim编辑器,首先得掌握这些快捷键,这些都是最基本的。
如有错误,欢迎指正,3Q!
Linux学习笔记(二)——文件/目录/VIM的更多相关文章
- linux学习笔记二-----文件权限管理
一.分析文件权限(ln -s 文件名 快捷方式名 用来创建文件的快捷方式,下方ll查看信息时会在第一个字符处显示l) [hjp@bogon ~]$ ll total 4 drwxrwxr-x. 2 h ...
- Linux学习笔记(二) 文件管理
了解 Linux 系统基本的文件管理命令可以帮助我们更好的使用 Linux 系统,以下介绍几个常用的文件管理命令 1.pwd pwd 是 Print Working Directory 的简写,用于显 ...
- Linux 学习笔记 5 文件的下载、压缩、解压、初步认识yum
写在前面 上节我们通过简单的几组命令,已经完全的实现了文件的移动.删除.更名.以及复制,我们最常用的基本玩法,本节将带着大家学习压缩.解压的相关步骤. Linux 学习笔记 4 创建.复制.移动.文件 ...
- Linux学习笔记 -- 话说文件
文件基本属性 Linux系统是一种典型的多用户系统,不同的用户处于不同的地位,拥有不同的权限.为了保护系统的安全性,Linux系统对不同的用户访问同一文件(包括目录文件)的权限做了不同的规定. 在Li ...
- Linux学习笔记之文件权限
前言: 说起文件权限,大家在windows下应该很熟悉就对文件右键属性,然后配置一点什么读写之类的权限,然后可以分配到每个的人. 对于linux 我先为大家介绍一个使用者和组和其他的概念说明一下 文件 ...
- linux 学习笔记二
笔记二 命令行格式 command [-options] parameter1 parameter2 ... 命令 选项 参数(1) 参数(2) options 和 参数 不是必须的 帮助命令 man ...
- linux学习笔记之文件类型,及目录介绍
引用A:http://www.cnblogs.com/xiaoluo501395377/archive/2013/04/20/3033131.html 引用B:http://www.cnblogs.c ...
- Linux学习笔记05—文件与目录权限
1. 绝对路径与相对路径绝对路径:路径的写法一定由根目录 ‘/’写起,例如 /usr/local/mysql 这就是绝对路径相对路径:路径的写法不是由根目录 ‘/’写起,例如:首先用户进入到/, 然后 ...
- Linux学习笔记11——文件I/O之二
一.文件共享 内核使用三种数据结构表示打开的文件,它们之间的关系决定了在文件共享方面一个进程对另一个进程可能产生的影响. 1.每个进程在进程表中都有一个记录项,记录项中包含有一张打开文件描述表 2.内 ...
- Linux System Programming 学习笔记(二) 文件I/O
1.每个Linux进程都有一个最大打开文件数,默认情况下,最大值是1024 文件描述符不仅可以引用普通文件,也可以引用套接字socket,目录,管道(everything is a file) 默认情 ...
随机推荐
- [转]JAVA的动态代理机制及Spring的实现方式
JAVA 代理实现 代理的实现分动态代理和静态代理,静态代理的实现是对已经生成了的JAVA类进行封装. 动态代理则是在运行时生成了相关代理累,在JAVA中生成动态代理一般有两种方式. JDK自带实现方 ...
- (入门篇 NettyNIO开发指南)第四章-TIP黏包/拆包问题解决之道
熟悉TCP编程的读者可能都知道,无论是服务端还是客户端,当我们读取或者发送消息的时候,都需要考虑TCP底层的粘包/拆包机制.木章开始我们先简单介绍TCP粘包/拆包的基础知识,然后模拟一个没有考虑TCP ...
- C#访问ORALCE数据库
随着时间的推移知识也在更新,原来可用的技术也会被淘汰或更新. framework4.0开始不再支持System.Data.OracleClient了,但是令人欣慰的是ORACLE公司自己出了一个Ora ...
- 【T-SQL性能优化】01.TempDB的使用和性能问题
以前总是追求新东西,发现基础才是最重要的,今年主要的目标是精通SQL查询和SQL性能优化. 本系列[T-SQL基础]主要是针对T-SQL基础的总结. [T-SQL基础]01.单表查询-几道sql查询题 ...
- 软件需求规格说明书(spec)
1.spec 的目标是什么,spec 的目标不包括什么? 我们的目标是对用户发布的各种需求(需要伙伴的需求)进行处理,使别的用户可以看到信息,并且成功找到合适的伙伴一起! 不包括对用户之间的联系. 2 ...
- 解决R语言临时文件目录的问题(tempdir、tempfile)
最近在调用SparkR的时候,当用copy_to函数将R中的数据框导入到Spark时,会在默认的tempdir()目录下(这里默认目录即为/tmp)产生巨大的临时文件, 严重影响R脚本的运行,最终一番 ...
- Bash+R: howto pass parameters from bash script to R(转)
From original post @ http://analyticsblog.mecglobal.it/analytics-tools/bashr/ In the world of data a ...
- Spring Boot的properties配置文件读取
我在自己写点东西玩的时候需要读配置文件,又不想引包,于是打算扣点Spring Boot读取配置文件的代码出来,当然只是读配置文件没必要这么麻烦,不过反正闲着也是闲着,扣着玩了.具体启动过程以前的博客写 ...
- Javascript加载执行顺序
本文主要内容 一.不同位置的script标签执行顺序 二.document.ready和window.onload的区别 一.不同位置的script标签执行顺序 整个加载的过程从解析头部开始,比如ht ...
- Django Nginx反代 获取真实ip
p.p1 { margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px "Andale Mono"; color: #28fe14; backgr ...