LINUX学习之ln,grep,find,cp,mv,tar,gzip,bzip2,which,whereis

建立链接文件: ln

Linux链接文件类似于Windows下的快捷方式。 链接文件分为软链接和硬链接。
1.软链接:软链接不占用磁盘空间,源文件删除则软链接失效。
2.硬链接:硬链接只能链接普通文件,不能链接目录。
使用格式:

ln 源文件 链接文件
ln -s 源文件 链接文件

如果没有-s选项代表建立一个硬链接文件,两个文件占用相同大小的硬盘空间,即使删除了源文件,链接文件还是存在,所以-s选项是更常见的形式。 注意:如果软链接文件和源文件不在同一个目录,源文件要使用绝对路径,不能使用相对路径。

[root@jira ceshilearn]# touch hard     #创建两个文件
[root@jira ceshilearn]# touch soft
[root@jira ceshilearn]# ls
hard  soft
[root@jira ceshilearn]# ln hard hardlink #创建一个硬链接
[root@jira ceshilearn]# ls
hard  hardlink  soft
[root@jira ceshilearn]# ln -s soft softlink #创建一个软连接
[root@jira ceshilearn]# ls
hard  hardlink  soft  softlink
[root@jira ceshilearn]# ll 
total 0
-rw-r--r-- 2 root root 0 Apr 22 16:26 hard
-rw-r--r-- 2 root root 0 Apr 22 16:26 hardlink
-rw-r--r-- 1 root root 0 Apr 22 16:26 soft
lrwxrwxrwx 1 root root 4 Apr 22 16:27 softlink -> soft   #软连接会告知从哪里链接过来的
[root@jira ceshilearn]# echo 'xuxu' > hard #往硬链接文件中写数据,都会同步到两个文件中
[root@jira ceshilearn]# cat hard
xuxu
[root@jira ceshilearn]# cat hard
hard      hardlink  
[root@jira ceshilearn]# echo 'xuxu2'>soft  #往软链接文件中写数据,都会同步到两个文件中
[root@jira ceshilearn]# cat soft
xuxu2
[root@jira ceshilearn]# cat softlink 
xuxu2

文本搜索: grep

Linux系统中grep命令是一种强大的文本搜索工具,grep允许对文本文件进行模式查找。如果找到匹配模式, grep打印包含模式的所有行。 grep一般格式为:

grep [-选项] ‘搜索内容串’文件名

在grep命令中输入字符串参数时,最好引号或双引号括起来。例如:grep‘a ’1.txt。 常用选项说明:

选项 含义
-v 显示不包含匹配文本的所有行(求反就是不匹配)
-n 显示匹配的行以及行号)
-i 忽略大小写)

grep搜索内容串可以是正则表达式。 正则表达式是对字符串操作的一种逻辑公式,就是用事先定义好的一些特定字符、及这些特定字符的组合,组成一个“规则字符串”,这个“规则字符串”用来表达对字符串的一种过滤逻辑。 grep常用正则表达式:

参数 含义
^d 行首,搜索以d开头的行: grep -n ‘^d’ 1.txt
wen$ 行尾,搜索以web结束的行: grep -n ‘wen$’ 1.txt
^d 匹配 [] 里中一系列字符中的一个;搜寻匹配单词DwenZ,Dwenz,dwenz,dwenZ,的行,grep -n ‘[Dd]wen[Zz]’ 1.txt
^d (点)匹配一个非换行符的字符;匹配 e 和 e 之间有任意一个字符,可以匹配 eee,eae,eve,但是不匹配 ee,eaae;grep -n ‘e.e’ 1.txt
[root@jira ceshilearn]# cat xxx.txt 
ddddddddddddddddddd
aaaaaaaaaaaaaaaaa
DDDDDDDDDDDDDDDDD
ddddddddddddddddddddd
gggggg
g1111g
g2
dwena
mwenzg
[root@jira ceshilearn]# grep -n '^a' xxx.txt #匹配a开头的字符串
2:aaaaaaaaaaaaaaaaa
[root@jira ceshilearn]# grep -n 'd$' xxx.txt #匹配d结尾的字符串
1:ddddddddddddddddddd
4:ddddddddddddddddddddd
[root@jira ceshilearn]# grep -n '[a-z]wen[a-z]' xxx.txt #
8:dwena
9:mwenzg
[root@jira ceshilearn]# grep -n 'g.g' xxx.txt 
5:gggggg

查找文件: find

find命令功能非常强大,通常用来在特定的目录下搜索符合条件的文件,也可以用来搜索特定用户属主的文件。 |命令| 含义| |—|---| |find / -name awen.sh| 查找根目录下所有名为awen.sh的文件| |find / -name ‘.sh’| 查看根目录下面所有后缀为.sh的文件| |find ./ -name “[A-Z]”| 查找当前目录下所有以大写字母开头的文件| |find ./ -perm 0777|查找当前目录下权限为 777 的文件或目录

[root@jira ceshilearn]# ll
total 16
-rw-r--r-- 2 root root   5 Apr 22 16:28 hard
-rw-r--r-- 2 root root   5 Apr 22 16:28 hardlink
-rw-r--r-- 1 root root   6 Apr 22 16:29 soft
lrwxrwxrwx 1 root root   4 Apr 22 16:27 softlink -> soft
-rw-r--r-- 1 root root 108 Apr 22 16:52 xxx.txt
[root@jira ceshilearn]# find / -name xxx.txt 
/home/ceshilearn/xxx.txt

拷贝文件: cp

cp命令的功能是将给出的文件或目录复制到另一个文件或目录中,相当于DOS下的copy命令。

选项 含义
-a 该选项通常在复制目录时使用,它保留链接、文件属性,并递归地复制目录,简单而言,保持文件原有属性。
-f 已经存在的目标文件而不提示
-i 交互式复制,在覆盖目标文件之前将给出提示要求用户确认
-r 若给出的源文件是目录文件,则cp将递归复制该目录下的所有子目录和文件,目标文件必须为一个目录名。
-v 显示拷贝进度
#将文件file复制到目录/a/b/c下,并改名为file1
[root@jira ceshilearn]# ls
a  a1  file  hard  hardlink  soft  softlink  xxx.txt
[root@jira ceshilearn]# cp file /home/ceshilearn/a/b/c/file1
[root@jira ceshilearn]# ls /home/ceshilearn/a/b/c/
file1
#将目录a下的所有文件及其子目录复制到目录a1中
[root@jira ceshilearn]# cp -r /home/ceshilearn/a/ /home/ceshilearn/a1/
[root@jira ceshilearn]# ls /home/ceshilearn/a1
a  b1

移动文件: mv

用户可以使用mv来移动文件或者目录,也可以给文件或者目录重命名 |选项|含义| |—|---| |-f|禁止交互式操作,如有覆盖也不会给出提示| |-i|确认交互方式操作,如果mv操作将导致对已存在的目标文件的覆盖,系统会询问是否重写,要求用户回答以避免误覆盖文件| |-v|显示移动的进度|

#1.移动文件
[root@jira ceshilearn]# ls
a  a1  hard  hardlink  soft  softlink  xxx.txt
[root@jira ceshilearn]# mv file /home/ceshilearn/a/
[root@jira ceshilearn]# ls a
b  file
#2.移动多个文件
[root@jira ceshilearn]# ls
a  a1  file  file1  file2  hard  hardlink  soft  softlink  xxx.txt
[root@jira ceshilearn]# mv file file1 file2 /home/ceshilearn/a/
mv: overwrite ‘/home/ceshilearn/a/file’? y#如我们所见,当我们移动 filetxt 文件时,先前目录的 file1.txt 就被删除了。
[root@jira ceshilearn]# ls a
b  file  file1  file2
#3.移动目录
[root@jira ceshilearn]# mv a1 /home/ceshilearn/a/
[root@jira ceshilearn]# ls a
a1  b  file  file1  file2
#4.重命名文件或目录
[root@jira ceshilearn]# touch file1
[root@jira ceshilearn]# ls
a  file1  hard  hardlink  soft  softlink  xxx.txt
[root@jira ceshilearn]# mv file1 file2
[root@jira ceshilearn]# ls
a  file2  hard  hardlink  soft  softlink  xxx.txt

归档管理: tar 打包工具(压缩包)

计算机中的数据经常需要备份,tar是Unix/Linux中最常用的备份工具,此命令可以把一系列文件归档到一个大文件中,也可以把档案文件解开以恢复数据。

tar使用格式 tar [参数] 打包文件名 文件 tar命令很特殊,其参数前面可以使用“-”,也可以不使用。

参数 含义
-c 生成档案文件,创建打包文件
-v 列出归档解档的详细过程,显示进度
-f 指定档案文件名称,f后面一定是.tar文件,所以必须放选项最后
-t 列出档案中包含的文件
-x 解开档案文件
[root@jira ceshilearn]# ls
a  file2  hard  hardlink  soft  softlink  xxx.txt
[root@jira ceshilearn]# tar cvzf aaa.tar.gz * #打包这个目录下所有文件
a/
a/file2
a/b/
a/b/c/
a/b/c/file1
a/a1/
a/a1/a/
a/a1/a/b/
a/a1/a/b/c/
a/a1/a/b/c/file1
a/a1/b1/
a/a1/b1/c1/
a/file1
a/file
file2
hard
hardlink
soft
softlink
xxx.txt
[root@jira ceshilearn]# ls
a  aaa.tar.gz  file2  hard  hardlink  soft  softlink  xxx.txt
[root@jira ceshilearn]# rm -rf a file2 hard soft softlink  xxx.txt #删除这个目录下所有文件,除了aaa.tar.gz这个文件
[root@jira ceshilearn]# ls
aaa.tar.gz
[root@jira ceshilearn]# tar xvf aaa.tar.gz #解压压缩文件,发现文件恢复正常
a/
a/file2
a/b/
a/b/c/
a/b/c/file1
a/a1/
a/a1/a/
a/a1/a/b/
a/a1/a/b/c/
a/a1/a/b/c/file1
a/a1/b1/
a/a1/b1/c1/
a/file1
a/file
file2
hard
hardlink
soft
softlink
xxx.txt
[root@jira ceshilearn]# ls
a  aaa.tar.gz  file2  hard  hardlink  soft  softlink  xxx.txt

文件压缩解压: gzip

tar与gzip命令结合使用实现文件打包、压缩。 tar只负责打包文件,但不压缩,用gzip压缩tar打包后的文件,其扩展名一般用xxxx.tar.gz。

|选项|含义| |选项| 含义| |-d|解压| |-r|压缩所有的子目录|

tar这个命令并没有压缩的功能,它只是一个打包的命令,但是在tar命令中增加一个选项(-z)可以调用gzip实现了一个压缩的功能,实行一个先打包后压缩的过程 可以在上文看到

bzip2

bzip和gzip一样也是一个压缩软件 在tar命令中增加一个选项(-j)可以调用bzip2实现了一个压缩的功能,实行一个先打包后压缩的过程。

压缩用法:tar -jcvf 压缩包包名 文件…(tar jcvf bk.tar.bz2 *.c)
解压用法:tar -jxvf 压缩包包名 (tar jxvf bk.tar.bz2)

文件压缩解压:zip、unzip

通过zip压缩文件的目标文件不需要指定扩展名,默认扩展名为zip。

压缩文件:zip [-r] 目标文件(没有扩展名) 源文件
解压文件:unzip -d 解压后目录文件 压缩文件

查看命令位置:which whereis locate

1.which 查询命令的路径
2.whereis命令只能用于程序名的搜索,而且只搜索二进制文件(参数-b)、man说明文件(参数-m)和源代码文件(参数-s)。如果省略参数,则返回所有信息。和find相比,whereis查找的速度非常快,这是因为linux系统会将 系统内的所有文件都记录在一个数据库文件中,当使用whereis时,会从数据库中查找数据,而不是像find命令那样,通过遍历硬盘来查找,效率自然会很高。 但是该数据库文件并不是实时更新,默认情况下时一星期更新一次,因此,我们在用whereis查找文件时,有时会找到已经被删除的数据,或者刚刚建立文件,却无法查找到,原因就是因为数据库文件没有被更新。 看一下2个命令的区别
LINUX学习之ln,grep,find,cp,mv,tar,gzip,bzip2,which,whereis_第1张图片
3.locate命令用于查找文件,它比find命令的搜索速度快,它需要一个数据库,这个数据库由每天的例行工作(crontab)程序来建立。当我们建立好这个数据库后,就可以方便地来搜寻所需文件了。

即先运行:updatedb(无论在那个目录中均可,可以放在crontab中 )后在 /var/lib/slocate/ 下生成 slocate.db 数据库即可快速查找。在命令提示符下直接执行#updatedb 命令即可: [root@vagrant-centos65 ~]# updatedb

你可能感兴趣的:(LINUX学习之ln,grep,find,cp,mv,tar,gzip,bzip2,which,whereis)