Linux常用命令(2)

16、locate命令
locate通过搜寻系统内建文档数据库达到快速找到档案,数据库由updatedb程序来更新,updatedb是由cron daemon周期性调用的。默认情况下locate命令在搜寻数据库时比由整个由硬盘资料来搜寻资料来得快,但较差劲的是locate所找到的档案若是最近才建立或 刚更名的,可能会找不到,在内定值中,updatedb每天会跑一次,可以由修改crontab来更新设定值。(etc/crontab)。

     locate与find命令相似,可以使用如*、?等进行正则匹配查找
     
     常用参数:

     -l num(要显示的行数)

     -f   将特定的档案系统排除在外,如将proc排除在外

     -r   使用正则运算式做为寻找条件

     
     实例:

     (1)查找和pwd相关的所有文件(文件名中包含pwd)

     locate pwd

     (2)搜索etc目录下所有以sh开头的文件

     locate /etc/sh

     (3)查找/var目录下,以reason结尾的文件

     locate -r '^/var.*reason$'(其中.表示一个字符,*表示任务多个;.*表示任意多个字符)

17、find命令
用于在文件树中查找文件,并作出相应的处理

     命令格式:

     find pathname -options [-print -exec -ok ...]

     命令参数:

     pathname: find命令所查找的目录路径。例如用.来表示当前目录,用/来表示系统根目录。

     -print: find命令将匹配的文件输出到标准输出。

     -exec: find命令对匹配的文件执行该参数所给出的shell命令。相应命令的形式为'command' {  } \;,注意{   }和\;之间的空格。

     -ok: 和-exec的作用相同,只不过以一种更为安全的模式来执行该参数所给出的shell命令,在执行每一个命令之前,都会给出提示,让用户来确定是否执行。      
    命令选项:

     -name 按照文件名查找文件

     -perm 按文件权限查找文件

     -user 按文件属主查找文件

     -group  按照文件所属的组来查找文件。

     -type  查找某一类型的文件,诸如:

               b - 块设备文件

               d - 目录

               c - 字符设备文件

               l - 符号链接文件

               p - 管道文件

               f - 普通文件

     -size n :[c] 查找文件长度为n块文件,带有c时表文件字节大小

     -amin n   查找系统中最后N分钟访问的文件

     -atime n  查找系统中最后n*24小时访问的文件

     -cmin n   查找系统中最后N分钟被改变文件状态的文件

     -ctime n  查找系统中最后n*24小时被改变文件状态的文件

     -mmin n   查找系统中最后N分钟被改变文件数据的文件

     -mtime n  查找系统中最后n*24小时被改变文件数据的文件

     (用减号-来限定更改时间在距今n日以内的文件,而用加号+来限定更改时间在距今n日以前的文件。 )

     -maxdepth n 最大查找目录深度

     -prune选项来指出需要忽略的目录。在使用-prune选项时要当心,因为如果你同时使用了-depth选项,那么-prune选项就会被find命令忽略

     -newer 如果希望查找更改时间比某个文件新但比另一个文件旧的所有文件,可以使用-newer选项

     实例:

     (1)查找48小时内修改过的文件

     find -atime -2

     (2)在当前目录查找 以.log结尾的文件。 ". "代表当前目录

     find ./ -name '*.log'

     (3)查找/opt目录下 权限为 777的文件

     find /opt -perm 777

     (4)查找大于1K的文件

     find -size +1000c

     find -size 1000c 查找等于1000字符的文件

     -exec         参数后面跟的是command命令,它的终止是以;为结束标志的,所以这句命令后面的分号是不可缺少的,考虑到各个系统中分号会有不同的意义,所以前面加反斜杠。{}   花括号代表前面find查找出来的文件名。


     实例:

     (5)在当前目录中查找更改时间在10日以前的文件并删除它们(无提醒)

     find . -type f -mtime +10 -exec rm -f {} \;

     (6)当前目录中查找所有文件名以.log结尾、更改时间在5日以上的文件,并删除它们,只不过在删除之前先给出提示。 按y键删除文件,按n键不删除

     find . -name '*.log' mtime +5 -ok -exec rm {} \;

     (7)当前目录下查找文件名以passwd开头,内容包含"pkg"字符的文件

     find . -f -name 'passwd*' -exec grep "pkg" {} \;

     (8)用exec选项执行cp命令 

     find . -name '*.log' -exec cp {} test3 \;

     -xargs find命令把匹配到的文件传递给xargs命令,而xargs命令每次只获取一部分文件而不是全部,不像-exec选项那样。这样它可以先处理最先获取的一部分文件,然后是下一批,并如此继续下去。

     实例:

     (9)查找当前目录下每个普通文件,然后使用xargs来判断文件类型

     find . -type f -print | xargs file

     (10)查找当前目录下所有以js结尾的并且其中包含'editor'字符的普通文件

     find . -type f -name "*.js" -exec grep -lF 'ueditor' {} \;

     find -type f -name '*.js' | xargs grep -lF 'editor'

     (11)利用xargs执行mv命令

     find . -name "*.log" | xargs -i mv {} test4

     (12)用grep命令在当前目录下的所有普通文件中搜索hostnames这个词,并标出所在行

     find . -name \*(转义) -type f -print | xargs grep -n 'hostnames'

     (13)查找当前目录中以一个小写字母开头,最后是4到9加上.log结束的文件

     find . -name '[a-z]*[4-9].log' -print

     (14)在test目录查找不在test4子目录查找

     find test -path 'test/test4' -prune -o -print

     (15)实例1:查找更改时间比文件log2012.log新但比文件log2017.log旧的文件

     find -newer log2012.log ! -newer log2017.log

     使用depth选项:

     depth选项可以使find命令向磁带上备份文件系统时,希望首先备份所有的文件,其次再备份子目录中的文件。 

     实例:find命令从文件系统的根目录开始,查找一个名为CON.FILE的文件。 它将首先匹配所有的文件然后再进入子目录中查找

     find / -name "CON.FILE" -depth -print

18、chmod命令
用于改变linux系统文件或目录的访问权限。用它控制文件或目录的访问权限。该命令有两种用法。一种是包含字母和操作符表达式的文字设定法;另一种是包含数字的数字设定法。

     每一文件或目录的访问权限都有三组,每组用三位表示,分别为文件属主的读、写和执行权限;与属主同组的用户的读、写和执行权限;系统中其他用户的读、写和执行权限。可使用ls -l test.txt查找

     以文件log2012.log为例:

     -rw-r--r-- 1 root root 296K 11-13 06:03 log2012.log

     第一列共有10个位置,第一个字符指定了文件类型。在通常意义上,一个目录也是一个文件。如果第一个字符是横线,表示是一个非目录的文件。如果是d,表示是一个目录。从第二个字符开始到第十个共9个字符,3个字符一组,分别表示了3组用户对文件或者目录的权限。权限字符用横线代表空许可,r代表只读,w代表写,x代表可执行。

     常用参数:
     
     -c 当发生改变时,报告处理信息

     -R 处理指定目录以及其子目录下所有文件

     权限范围:

     u :目录或者文件的当前的用户

     g :目录或者文件的当前的群组

     o :除了目录或者文件的当前用户或群组之外的用户或者群组

     a :所有的用户及群组

     权限代号:

     r :读权限,用数字4表示

     w :写权限,用数字2表示

     x :执行权限,用数字1表示

     - :删除权限,用数字0表示

     s :特殊权限
     

     实例:

     (1)增加文件t.log所有用户可执行权限

     chmod a+x t.log

     (2)撤销原来所有的权限,然后使拥有者具有可读权限,并输出处理信息

     chmod u=r t.log -c

     (3)给file的属主分配读、写、执行(7)的权限,给file的所在组分配读、执行(5)的权限,给其他用户分配执行(1)的权限

     chmod 751 t.log -c(或者:chmod u=rwx,g=rx,o=x t.log -c)

     (4)将test目录及其子目录所有文件添加可读权限

     chmod u+r,g+r,o+r -R text/ -c

19、tar命令
用来压缩和解压文件。tar本身不具有压缩功能,只具有打包功能,有关压缩及解压是调用其它的功能来完成。

     弄清两个概念:打包和压缩。打包是指将一大堆文件或目录变成一个总的文件;压缩则是将一个大的文件通过一些压缩算法变成一个小文件

     常用参数:
     
     -c 建立新的压缩文件

     -f 指定压缩文件

     -r 添加文件到已经压缩文件包中

     -u 添加改了和现有的文件到压缩包中

     -x 从压缩包中抽取文件

     -t 显示压缩文件中的内容

     -z 支持gzip压缩

     -j 支持bzip2压缩

     -Z 支持compress解压文件

     -v 显示操作过程

     有关gzip及bzip2压缩

     gzip实例:压缩gzip fileName .tar.gz和.tgz  解压:gunzip filename.gz或gzip -d filename.gz

     对应:tar zcvf filename.tar.gz     tar zxvf filename.tar.gz

     bz2实例:压缩bzip2 -z filename .tar.bz2 解压:bunzip filename.bz2或bzip -d filename.bz2

     对应:tar jcvf filename.tar.gz         解压:tar jxvf filename.tar.bz2
     

     实例:

     (1)将文件全部打包成tar包

     tar -cvf log.tar 1.log,2.log 或tar -cvf log.*

     (2)将/etc下的所有文件及目录打包到指定目录,并使用gz压缩

     tar -zcvf /tmp/etc.tar.gz /etc

     (3)查看刚打包的文件内容(一定加z,因为是使用gzip压缩的)

     tar -ztvf /tmp/etc.tar.gz

     (4)要压缩打包/home, /etc ,但不要 /home/dmtsai

     tar --exclude /home/dmtsai -zcvf myfile.tar.gz /home/* /etc

20、chown命令
chown将指定文件的拥有者改为指定的用户或组,用户可以是用户名或者用户ID;组可以是组名或者组ID;文件是以空格分开的要改变权限的文件列表,支持通配符

     -c 显示更改的部分的信息

     -R 处理指定目录及子目录

     实例:

     (1)改变拥有者和群组 并显示改变信息
     
     chown -c mail:mail log2012.log
    
     (2)改变文件群组

     chown -c :mail t.log

     (3)改变文件夹及子文件目录属主及属组为mail

     chown -cR mail: test/

     (4)改变文件

21、df命令
显示磁盘空间使用情况。获取硬盘被占用了多少空间,目前还剩下多少空间等信息,如果没有文件名被指定,则所有当前被挂载的文件系统的可用空间将被显示。默认情况下,磁盘空间将以 1KB 为单位进行显示,除非环境变量 POSIXLY_CORRECT 被指定,那样将以512字节为单位进行显示

     常用参数:
     
     -a 全部文件系统列表

     -h 以方便阅读的方式显示信息

     -i 显示inode信息

     -k 区块为1024字节

     -l 只显示本地磁盘

     -T 列出文件系统类型

     实例:

     (1)显示磁盘使用情况

     df -l

     (2)以易读方式列出所有文件系统及其类型

     df -haT

22、du命令
du命令也是查看使用空间的,但是与df命令不同的是Linux du命令是对文件和目录磁盘使用的空间的查看

     命令格式:

     du [选项] [文件]

     常用参数:

     -a 显示目录中所有文件大小

     -k 以KB为单位显示文件大小

     -m 以MB为单位显示文件大小

     -g 以GB为单位显示文件大小

     -h 以易读方式显示文件大小

     -s 仅显示总计

     -c或--total  除了显示个别目录或文件的大小外,同时也显示所有目录或文件的总和

     实例:

     (1)以易读方式显示文件夹内及子文件夹大小

     du -h scf/

     (2)以易读方式显示文件夹内所有文件大小

     du -ah scf/

     (3)显示几个文件或目录各自占用磁盘空间的大小,还统计它们的总和

     du -hc test/ scf/

     (4)输出当前目录下各个子目录所使用的空间

     du -hc --max-depth=1 scf/

23、ln命令
功能是为文件在另外一个位置建立一个同步的链接,当在不同目录需要该问题时,就不需要为每一个目录创建同样的文件,通过ln创建的链接(link)减少磁盘占用量。

     链接分类:软件链接及硬链接

     软链接:

     1.软链接,以路径的形式存在。类似于Windows操作系统中的快捷方式

     2.软链接可以 跨文件系统 ,硬链接不可以

     3.软链接可以对一个不存在的文件名进行链接

     4.软链接可以对目录进行链接

     硬链接:

     1.硬链接,以文件副本的形式存在。但不占用实际空间。

     2.不允许给目录创建硬链接

     3.硬链接只有在同一个文件系统中才能创建

     需要注意:

     第一:ln命令会保持每一处链接文件的同步性,也就是说,不论你改动了哪一处,其它的文件都会发生相同的变化;

     第二:ln的链接又分软链接和硬链接两种,软链接就是ln –s 源文件 目标文件,它只会在你选定的位置上生成一个文件的镜像,不会占用磁盘空间,硬链接 ln 源文件 目标文件,没有参数-s, 它会在你选定的位置上生成一个和源文件大小相同的文件,无论是软链接还是硬链接,文件都保持同步变化。

     第三:ln指令用在链接文件或目录,如同时指定两个以上的文件或目录,且最后的目的地是一个已经存在的目录,则会把前面指定的所有文件或目录复制到该目录中。若同时指定多个文件或目录,且最后的目的地并非是一个已存在的目录,则会出现错误信息。
     
     常用参数:

     -b 删除,覆盖以前建立的链接

     -s 软链接(符号链接)

     -v 显示详细处理过程

     实例:

     (1)给文件创建软链接,并显示操作信息

     ln -sv source.log link.log

     (2)给文件创建硬链接,并显示操作信息

     ln -v source.log link1.log

     (3)给目录创建软链接

     ln -sv /opt/soft/test/test3 /opt/soft/test/test5

24、date命令
显示或设定系统的日期与时间

     命令参数:

     -d<字符串>  显示字符串所指的日期与时间。字符串前后必须加上双引号。

     -s<字符串>  根据字符串来设置日期与时间。字符串前后必须加上双引号。

     -u  显示GMT。

     %H 小时(00-23)

     %I 小时(00-12)

     %M 分钟(以00-59来表示)

     %s 总秒数。起算时间为1970-01-01 00:00:00 UTC。

     %S 秒(以本地的惯用法来表示)

     %a 星期的缩写。

     %A 星期的完整名称。

     %d 日期(以01-31来表示)。

     %D 日期(含年月日)。

     %m 月份(以01-12来表示)。

     %y 年份(以00-99来表示)。

     %Y 年份(以四位数来表示)。

     实例:

     (1)显示下一天

     date +%Y%m%d --date="+1 day"  //显示下一天的日期

     (2)-d参数使用

     date -d "nov 22"  今年的 11 月 22 日是星期三

     date -d '2 weeks' 2周后的日期

     date -d 'next monday' (下周一的日期)

     date -d next-day +%Y%m%d(明天的日期)或者:date -d tomorrow +%Y%m%d

     date -d last-day +%Y%m%d(昨天的日期) 或者:date -d yesterday +%Y%m%d

     date -d last-month +%Y%m(上个月是几月)

     date -d next-month +%Y%m(下个月是几月)

25、cal命令
可以用户显示公历(阳历)日历如只有一个参数,则表示年份(1-9999),如有两个参数,则表示月份和年份

     常用参数:

     -3 显示前一月,当前月,后一月三个月的日历

     -m 显示星期一为第一列

     -j 显示在当前年第几天

     -y [year]显示当前年[year]份的日历

     实例:

     (1)显示指定年月日期

     cal 9 2012

     (2)显示2013年每个月日历

     cal -y 2013

     (3)将星期一做为第一列,显示前中后三月

     cal -3m
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值