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
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 / -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命令的功能是将给出的文件或目录复制到另一个文件或目录中,相当于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来移动文件或者目录,也可以给文件或者目录重命名 |选项|含义| |—|---| |-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是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
tar与gzip命令结合使用实现文件打包、压缩。 tar只负责打包文件,但不压缩,用gzip压缩tar打包后的文件,其扩展名一般用xxxx.tar.gz。
|选项|含义| |选项| 含义| |-d|解压| |-r|压缩所有的子目录|
tar这个命令并没有压缩的功能,它只是一个打包的命令,但是在tar命令中增加一个选项(-z)可以调用gzip实现了一个压缩的功能,实行一个先打包后压缩的过程 可以在上文看到
bzip和gzip一样也是一个压缩软件 在tar命令中增加一个选项(-j)可以调用bzip2实现了一个压缩的功能,实行一个先打包后压缩的过程。
压缩用法:tar -jcvf 压缩包包名 文件…(tar jcvf bk.tar.bz2 *.c)
解压用法:tar -jxvf 压缩包包名 (tar jxvf bk.tar.bz2)
通过zip压缩文件的目标文件不需要指定扩展名,默认扩展名为zip。
压缩文件:zip [-r] 目标文件(没有扩展名) 源文件
解压文件:unzip -d 解压后目录文件 压缩文件
1.which 查询命令的路径
2.whereis命令只能用于程序名的搜索,而且只搜索二进制文件(参数-b)、man说明文件(参数-m)和源代码文件(参数-s)。如果省略参数,则返回所有信息。和find相比,whereis查找的速度非常快,这是因为linux系统会将 系统内的所有文件都记录在一个数据库文件中,当使用whereis时,会从数据库中查找数据,而不是像find命令那样,通过遍历硬盘来查找,效率自然会很高。 但是该数据库文件并不是实时更新,默认情况下时一星期更新一次,因此,我们在用whereis查找文件时,有时会找到已经被删除的数据,或者刚刚建立文件,却无法查找到,原因就是因为数据库文件没有被更新。 看一下2个命令的区别
3.locate命令用于查找文件,它比find命令的搜索速度快,它需要一个数据库,这个数据库由每天的例行工作(crontab)程序来建立。当我们建立好这个数据库后,就可以方便地来搜寻所需文件了。
即先运行:updatedb(无论在那个目录中均可,可以放在crontab中 )后在 /var/lib/slocate/ 下生成 slocate.db 数据库即可快速查找。在命令提示符下直接执行#updatedb 命令即可: [root@vagrant-centos65 ~]# updatedb