您的位置:首页 > 运维架构 > Linux

linux系统管理操作指令学习笔记(三)管理好文件

2016-12-05 21:55 633 查看
Linux操作系统完全是小白一枚,最近在跟着视频学习linux系统法管理的操作指令,特此记录,一方面方便自己以后的查询,另一方面也希望能给大家提供一些资料。另外,在我的资源点击打开链接里有鸟哥的linux私房菜的pdf书,大家可以下载学习。另外这个系列的博客是我在学习视频的时候的笔记,视频链接点击打开链接

1归档压缩文件

打包文件:将多个文件或者一个目录,打包城一个大文件,linux的打包命令叫做tar(tape archive),原理就是把多个文件前后连在一起行程一个大文件,tar并不对文件进行压缩,tar打包文件是起码要跟上两个选项,-c表示创建打包文件,-f指定要创建的打包文件名。tar
-cf  【要创建的打包文件名】【要打包的一批文件名(空格隔开)】

例如:tar -cf sample.tar /tmp/f1 /tmp/f2 /tmp/f3

tar也可以打包整个目录,将参数2替换成要打包的目录就可以了

此外,我们还可以用tar -tf命令来列出打包文件中的所有文件名,例如:tar -tf ./sample.tar,用delete来删除打包文件中的某个文件,例如 tar -f ./sample --delete  tmp/f1.用-A选项来合并两个打包文件,例如 tar -f  ./sample1.tar -A ./sample2.tar,合并到前一个文件中。-r选项可以向打包文件中添加新文件,例如 tar
-f  ./sample -r ~/f3.txt.

解包文件:tar -xf [要解包的文件],-x选项表示解包,默认的解包目录是当前目录,你可以用-C选项来自己选定解包目录。

压缩文件:linux中压缩命令有多种,最常用的是gzip,gzip  【要压缩的文件/目录】,例如:gzip ./sample.tar,压缩后的文件将替换源文件,gzip自动为压缩文件加了个后缀名.gz。解压(加上个-d选项即可):gzip -d ./sample.tar.gz,解压后的文件替换压缩文件。

gzip还可以调节压缩比,这个可以通过一个数字选项来实现,1-9之间的任意数字,1表示最低压缩比,压缩过程最快,9表示最高压缩比,压缩过程最慢,默认是6这个选项。gzip -9 sample.tar。但是gzip不包含打包的过程,只能是tar和gzip相结合或者gzip先解压,再tar解包。特别的tar还提供了一个选项,可以将tar和gzip一气呵成,tar -czf  sample.tar.gz   /tmp/sample1
 /tmp/sample2  /tmp/sample3.接下来就是解压缩和解包,类似的也是加一个-z选项,-xzf,即

tar -xzf  sample.tar.gz

2、linux查找文件

locate:快,但功能弱;find:慢,但功能强大

locate [查找的路径] [文件名的关键字]。例如:在整个系统中查找一下名字中包含有“.tar”的文件:locate .tar

查找速度非常快,但是他并没有真正到硬盘上去找这个文件,他速度快是因为linux将系统内的所有文件名都记录在一个名为/var/lib/mlocate/的数据库中,当使用locate时,会从数据库中查找,而不是真正的遍历硬盘查找,因此locate查找到的文件有一个重大限制,就是有时候会找到已经被删除的文件,或者刚刚建立的文件无法查找到,这是由于记录文件名的数据库不实时更新造成的,这个数据库默认情况下每天更新一次,当然我们可以通过updatedb命令来手动更新这个数据库,特别注意,如果系统文件较多的话,更新操作将会花费一定的时间,更新后暂时就不会出现这种问题了。

find命令要比locate命令强大很多,它可以按照用户指定的各种准则来匹配文件。

find [查找范围(目录,省略时表示在当前工作目录下进行查找)][查找条件(多个选项和参数,用于确定炒炸文件的具体条件,文件名字、大小和类型)][动作(
对查找的文件进行进一步的处理)]

例子:1、根据文件名进行查找,使用的条件选项是-name。find / -name passwd:表示在整个目录中查找文件名为passwd的文件,要注意文件名得是精确名称,而不是关键字。如果要通过文件名中的关键字来查找文件,就要用到通配符。

2、根据文件类型来进行查找,使用的条件选项是 -type,后面跟上代表文件类型的一个字符来进行查找。文件类型:d表示目录文件,f表示普通文件,c表示字符设备文件,b表示块设备文件,l表示符号链接文件,如我们要查找目录下所有的符号链接文件,就可以用-type l:find /bin -type l

3、根据文件的时间属性来进行查找:-mtime,-mmin,-ctime,-cmin,-atime,-amin,这三组的用法类似,-mtime和-mmin和文件内容修改时间相关。find /tmp -mtime -3 (-ls),这个命令表示在/tmp目录下查找3天之内内容曾经发生改变的文件,可以通过find命令的动作选项-exec(ls所在的位置)-ls文件的时间戳属性来进行印证。

例2:find /tmp -mtime +7,表示在tmp目录下查找7天前内容曾发生改变的文件。

例3:find /tmp -mtime 4,表示在tmp目录下查找4天前的那天内容曾经发生改变的文件。

+表示n天之前,无符号表示n天那天,-表示n天之内。

-mmin和-mtime用法相同,只是将时间单位改成了分钟。find /tmp -mmin +10 表示10分钟之前在tmp目录下,内容发生改变的文件,之后的类似。

-atime和-amin则和文件被读取或者执行的时间相关,ctime和cmin这文件属性修改的时间相关。-mmin和-mtime是文件修改的时间,他们的选项用法都一样。

4、根据文件大小进行查找,使用的条件选项是-size选项,

例1、find /tmp -size -3k,表示在tmp目录下查找比3k字节小的文件

例2、find /tmp -size +100c,表示在tmp目录下查找比100字节大的文件

例3、find /tmp -size 10M,表示在tmp目录下查找大小正好为10M字节的文件

注意到-size选项中使用的大小单位,c表示字节,k表示1024字节,M表示1024k,G表示1024M,加号减号和无符号的含义与前面所说的一样。

5、根据文件拥有者和从属用户组的属性进行查找,相关选项有四个,可分为两组,分别是-user,-uid和-group,-gid。

例1、find /tmp -user root:表示在tmp目录下,查找拥有者是root用户的文件;

例2、find /tmp -uid 500:表示在tmp目录下,查找拥有者用户的uid为500的文件;

例3、find /tmp -group stu:表示在tmp目录下查找从属于stu用户组的文件;

例4、find /tmp -gid 0:表示在tmp目录下查找从属于gid为0的用户组的文件。

6、根据文件的权限进行查找,使用的条件选项是-perm

perm后面跟的海一个八进制的文件访问权限条件数字。

例1、find /tmp -perm 754,表示在tmp目录下查找754权限,也即文件拥有着可读可写可执行,文件从属组的用户可读可执行,其他用户仅可读的文件。

以上都是讲的单个条件的查找,其实这些条件是可以联合使用的。find命令中,与-a,或-o,非!三种逻辑符来连接查找条件,当然条件要用圆括号括起来,左右圆括号还要使用\来进行转义。左右圆括号和条件项之间应各有一个空格。

最后就find命令的一个特殊选项和跟在后面的特殊参-动作选项和动作参数进行讨论。这个选项叫做-exec选项,后面可一跟一个shell命令,find将对查找到的文件,执行该参数所指定的shell命令,find命令动作选项和动作参数的目的是要让用户可以方便的对find查找到的文件进行一个统一的处理,例如,我们要在tmp目录下查找大小大于1k小于1M的普通文件,并且将他们都删除掉,当然在文件少的时候,我们可以用find或者locate命令将这些文件都找出来,然后一一删除,但是文件多的时候用这些命令就非常麻烦。此时我们可以用find动作选项和动作参数,

find /tmp \( -size +1k -a -size -10M -a -mmin -30 -a type f \)
-exec -rm -rf {} \;加粗的这部分内容表示find动作的开始(-exec)到结束(\;),这中间的就是find命令的动作,其中rm -f是具体命令,{}代表的是find查找到的文件,;表示动作结束,\是转义用的,\;表示分号。

find ~ \( -mmin -10 -a -type d \) -exec tar -cf {} .tar {} \;这个命令表示在当前用户家目录下,查找在10分钟内被创建或者被修改过的目录文件,并将它们打包成与目录同名后缀为.tar的打包文件。我们可以用-ok来替

-exec,它的用处和-exec基本相同,只不过以一种更为安全的模式来执行动作命令。在执行每个命令之前都会逐个提示让用户来确定是否执行。

3、通配符

通常,如需要对多个文件对象执行单一操作,而不需要像前面的递归操作一样对整个树进行操作。例如,你可能想要找出在某个目录下中创建的所有文本文件的修改时间,而不需要列出分散的文件。尽管这很容易在小目录中实现,但是对于大型文件系统则非常困难。

要解决这个问题,可以使用 bash shell 中内置的通配符(wildcard)支持。这种支持也称为“globbing”(因为它最初被实现为一个名为 /etc/glob 的程序),让你能够使用通配符模式指定多个文件。

包含任何 '?'、'*' 或 '[' 字符的字符串就是一个通配符模式。Globbing 是指 shell(或另一个程序)将这些模式扩展为一组匹配该模式的参数的过程。这种匹配按照如下方式完成:

                    表1 Linux中常用通配符         
           
字符含义实例
 

*
 
 

匹配 0 或多个字符
a*b   a与b之间可以有任意长度的任意字符, 也可以一个也没有, 如aabcb,
 axyzb, a012b, ab。
 


 

匹配任意一个字符
 

a?b  a与b之间必须也只能有一个字符, 可以是任意字符, 如aab,
abb,  acb, a0b。
 

[list] 
 
 

匹配 list 中的任意单一字符
 
 

a[xyz]b   a与b之间必须也只能有一个字符,但只能是 x 或 y 或 z, 如:
axb,  ayb, azb。
 

[!list] 
 
 

匹配除list 中的任意单一字符
 

a[!0-9]b  a与b之间必须也只能有一个字符,但不能是阿拉伯数字, 如axb,
aab,  a-b。
 

[c1-c2]
 

匹配 c1-c2 中的任意单一字符如:[0-9]
[a-z],c1-c2是有序的,数字或者字母
 

a[0-9]b  0与9之间必须也只能有一个字符如a0b,
 a1b... a9b。
 

{string1,string2,...}
 

匹配 sring1 或 string2
(或更多)其一字符串
 

a{abc,xyz,123}b     a与b之间只能是abc或xyz或123这三个字符串之一。
我们常常在 ls、cp、mv 或 rm 命令中需要操作多个文件或目录名时使用通配符。
 



 
 

注意
 
  

'*' 和  '?' 字符与它们自身匹配。如果在文件名中使用这些字符,那么需要注意适当的引用或转义。
 

两个字符之间的 '-' 字符表示一个范围,包括这两个字符和排序序列中介于这两个字符之间的所有字符。例如,[0-9a-fA-F] 表示任何大写或小写十六进制数位。你可以通过将 '-' 放到一个范围的首位或末位来匹配它。
 

'!' 在Shell中是有特殊含义的,因此需要小心地对它进行适当的转义。
 

文件通配符被单独应用到路径名的每个组成中。但我们无法匹配'/'。
 

小心 
  

命令中的任何通配符都可以被 shell 扩展,这将导致意外的结果。在使用 cp、mv 或 rm 出现异常行为之前,使用 ls 检查你的通配符模式。
例子:1、rm -f /tmp/*.txt:删除以.txt结尾的所有文件
2、ls -l /bin/??sh

3、cp /tmp/file[0-9].txt ~:拷贝tmp目录下,file0.txt-file9.txt到家目录下

4、rm -rf {jiaoben,script}*.sh:删除jiaoben*.sh或script*.sh的文件

5、tar -cf file.tar /tmp/file[!0-9].txt 除去0-9的txt文件打包

4、查看文本文件

linux中查看文本文件有多个命令,less,cat,more,head,tail,我们需要根据情况选择合适的命令来进行查看。

命令

cat可以有三种作用1.连接几个文件2.从键盘创建文件3.查看文件,这里就是讲查看文件
 
  

用法:cat [选项]...
[文件]...
 

将[文件]或标准输入组合输出到标准输出。
 
 

-b对非空输出行编号

-E在每行的未尾添加$符号,便于确认每一行,因为有些行内容太长了,在显示时会在显示器上以多行表示。

-n对输出的所有行编号

-s将相连的多个空行用一个空行来代替

-T将Tab字符显示为^I

 

如果没有指定文件,或者文件为"-",则从标准输入读取。
 
   例子:cat /etc/passwd将文件的内容全部显示,但若内容过多,超过的部分就看不见了,而且cat命令不提供翻页查找等命令,所以只适合于小的文件,更常用的查找命令是less与more,二者相似,less更强大,较大的文件建议使用less。
 



 
 

命令
 
  

用法:less [选项]...
[文件]...
 

对文件或其它输出进行分页显示。
 

-n对输出的所有行编号

-M  输出打开的文件名,当前显示的行数,总行数和光标当前所处文档位置

-s将相连的多个空行用一个空行来代替

-S  截断过长的行而不换行显示

 

在less中,可以使用如下命令来控制文本的查看:
                                        导航命令回车键,e向下移动一行 y,k向上移动一行空格键,f向下滚动一屏b向上滚动一屏 d   向下滚动半屏   u向上滚动半屏   g  跳到第一行   G跳到最后一行p n%跳到n%。如50%,表示从整个文档的50%处开始显示  搜索命令/pattern从光标处向下搜索与pattern匹配的字符串,例如/ftpuser,表示从光标处向下文件中搜索单词ftpuser?pattern从光标处向上搜索与pattern匹配的字符串 n跳到下一个匹配的文本  N跳到上一个匹配的文本其他命令R,r刷新屏幕 
 q退出  :e [文件]打开一个新文件:n如打开多个文件,则跳转到打开的下一个文件:p如打开多个文件,则跳转到打开的上一个文件:d如打开多个文件,则关闭当前查看的文件!command调用Shell命令,例如使用“!ls”,表示列出当前目录下的所有文件     
   例:less /var/log/messages可以用上下键和pageup,pageDo键进行翻页,还可以用/关键字进行查找项英的关键字文本,可以用n跳转到下一个关键字处,N跳转到上一个处,q返回命令
 



 
 

命令
 
  

用法:head [选项]...
[文件]...
 

将每个指定文件的头10 行显示到标准输出。
 

如果指定了多于一个文件,在每一段输出前会给出文件名作为文件头。如果不指定文件,或者文件为"-",则从标准输入读取数据。
 

-c  K 显示每个文件的前K 字节内容;如果附加"-"参数,则除了每个文件的最后K字节数据外显示剩余全部内容

-n  K 显示文件的前K 行内容.

 
  
 



 
 

命令
 
  

用法:tail [选项]...
[文件]...
 

显示每个指定文件的最后10 行到标准输出。
 

若指定了多于一个文件,程序会在每段输出的开始添加相应文件名作为头。如果不指定文件或文件为"-"
 ,则从标准输入读取数据。
 

 

  -c K     输出最后K 字节;另外,使用-c
+K 从每个文件第K 字节输出

  -n K     显示文件的最后K 行内容.
 
head和tail查看日志文件如head -n 20 /var/log/messages:查看前20行内容,不加的话默认是10行。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: