对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中常用通配符
我们常常在 ls、cp、mv 或 rm 命令中需要操作多个文件或目录名时使用通配符。
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 /etc/passwd将文件的内容全部显示,但若内容过多,超过的部分就看不见了,而且cat命令不提供翻页查找等命令,所以只适合于小的文件,更常用的查找命令是less与more,二者相似,less更强大,较大的文件建议使用less。
例:less /var/log/messages可以用上下键和pageup,pageDo键进行翻页,还可以用/关键字进行查找项英的关键字文本,可以用n跳转到下一个关键字处,N跳转到上一个处,q返回命令