文件目录操作(二)


文件目录操作(二)
 
which:查找可执行文件(命令)并显示所在的位置
    ----搜索范围由PATH环境变量指定
例如:
[root@teacher lianxi]# which  mkdir
/bin/mkdir
[root@teacher lianxi]# which tree 
/usr/bin/tree
[root@teacher lianxi]# mv /usr/bin/tree  /  将tree命令移走
[root@teacher lianxi]# which tree    tree命令找不到了,因为它的路径改变了,且PATH变量的路径没有了
/usr/bin/which: no tree in (/usr/lib/qt-3.3/bin:/usr/local/sbin:/usr/sbin:/sbin:/usr/local/bin:/usr/bin:/bin:/root/bin)
[root@teacher lianxi]# tree
bash: /usr/bin/tree: No such file or directory
[root@teacher lianxi]# /tree  使用绝对路径可以使用
[root@teacher lianxi]# echo $PATH       输出当前用户的查找命令的路径变量(环境变量中的一个变量)
/usr/lib/qt-3.3/bin:/usr/local/sbin:/usr/sbin:/sbin:/usr/local/bin:/usr/bin:/bin:/root/bin 
[root@teacher lianxi]# PATH=$PATH:/china  修改PATH变量的值
[root@teacher lianxi]# echo $PATH
/usr/lib/qt-3.3/bin:/usr/local/sbin:/usr/sbin:/sbin:/usr/local/bin:/usr/bin:/bin:/root/bin:/china
***********which默认在PATH变量提供的路径里面寻找,如果不存在就提示不存在,修改PATH变量,在环境变量路径中加入所查询的路径,就可以找到
 
whereis:查找文件的路径、该文件的帮助文件路径,原理和which类似
格式:
    whereis 命令或程序名
例如:
[root@localhost ~]# whereis which
which: /usr/bin/which /usr/share/man/man1/which.1.gz
[root@localhost ~]# touch sxkj
[root@localhost ~]# whereis sxkj
sxkj:
[root@localhost ~]# mv sxkj /usr/bin
[root@localhost ~]# whereis sxkj
sxkj: /usr/bin/sxkj
*************which和whereis的异同:
                        都是在PATH变量的路径下查找命令
                        但是whereis可以查看命令的man手册文件的路径,同时不要求命令具有可执行权限
 
locate 所有文件及其所在路径包含关键字段的文件与目录都会显示
格式:locate 文件名
[root@teacher ~]# updatedb  新建的文件locate不一定能找打,需要更新数据库
**********locate  :在整个根目录下查找,比较适合查找文件
**********which   :在PATH变量值路径下查找,比较适合查找命令
**********whereis  :在PATH变量值路径下查找,比较适合查找命令
 
find命令
用途:用于查找文件或目录
格式:find  [查找范围]  [查找条件] [表达式][-exec  -ok ...]  指令 {}   \;
    {}  存放find找到的文件
    \禁止转义  (注意{}和\之间的空格)
   ;表示本行指令结束
    -exec    后面接需要执行的命令 (execute)
    -ok 比-exec多一个确定是否执行
常用查找条件
    -name:按文件名称查找 *
    -size:   按文件大小查找 *
    -user:  按文件属主查找
    -type:  按文件类型查找 *
    -perm :按文件权限查找
    -mtime :按文件更改时间查找
    -newer:按比某个文件更新的查找
    -mmin 根据分钟来查找
 
 1:有时候,我们想让 通配符,或者元字符 变成普通字符,不需要使用它。那么这里我们就需要用到转义符了。 shell提供转义符有三种。
    ‘’(单引号) 又叫硬转义,其内部所有的shell 元字符、通配符都会被关掉。注意,硬转义中不允许出现’(单引号)。
    “”(双引号) 又叫软转义,其内部只允许出现特定的shell 元字符:$用于参数代换 `用于命令代替
    \(反斜杠)  又叫转义,去除其后紧跟的元字符或通配符的特殊意义。
[root@teacher ~]# find /boot -name "vm*" -exec ls -l {} \;(查找boot目录下以vm开头的文件名并且显示详细信息)
**************Linux Shell 通配符、元字符、转义符,更详细在百度键入通配符,元字符,转义符,博客园中有一篇文章总结的很好。之间粘贴网站貌似不行。
2:-size单位表示
        ‘k’    for Kilobytes (units of 1024 bytes)
         ‘M’    for Megabytes (units of 1048576 bytes)
         ‘G’    for Gigabytes (units of 1073741824 bytes)
[root@teacher ~]# find /boot -size +100M -exec cp {} /tmp \;  (查找boot目录下文件大小大于100M的复制到/tmp目录下)
   3:关于时间的参数:
    -mtime  modify  修改时间
    -atime access 访问时间
    -ctime change 改变文件的属性的时候(大小、时间、用户、组、权限)
例如:
[root@teacher bak]# find . -mtime +5   查找5天之前的文件
[root@teacher bak]# find . -mmin +420 -type f -exec rm -rf {} \;  (在/bak目录下查找出7个小时之前的文件,并将它删除)
*******访问时间  cat、vim查看
           修改时间  vim编辑
            ctime   chmod、chown可以修改文件的属性
4.-type参数:
    b——块设备文件(block)
    d——目录(directory)
    c——字符设备文件(character)
    p——管道文件(pipeline)
    l——符号链接文件 (link)
    f——普通文件 (file)
例如:
查找系统中所属组为 admin,权限为 644 的普通文件
 
[root@station12 /]# find  / -group admin -perm 644 -type f
5.特殊查找条件:
    -o :逻辑或,只要所给的条件中有一个满足,寻找条件就算满足
    -not :逻辑非,在命令中可用“!”表示。该运算符表示查找不满足所给条件的文件
    -a:逻辑与,系统默认是与,可不加,表示只有当所给的条件都满足时,寻找条件才算满足。
例如:
查找/boot 目录下不是目录的文件,然后把他们复制到/bak 目录下
 
[root@station12 /]# find /boot ! -type d -exec cp {} /bak \;
 
下面以练习形式引出命令:
    1.新建一个文件夹在根目录下叫zhaoshi 
  [root@localhost /]# mkdir zhaoshi
    2.进入根目录下的zhaoshi目录  
  [root@localhost /]# cd zhaoshi 
    3.复制/etc/passwd文件到当前目录下 
  [root@localhost zhaoshi]# cp /etc/passwd ./
    4.显示/etc/passwd文件的内容,要求看到文件里有多少行
    [root@localhost zhaoshi]# cat -n passwd (passwd注意路径)
 
cat 查看文件里的内容
选项说明:
    -n;--number 由1开始对所有输出的行数编号
        number all output lines
    -b,--number-nonblank 和-n相似,但不对空白行编号
    -s,--squeeze-blank 当遇到有连续两行以上的空白行,就代换成一行的空白行
tac命令
用途:从最后一行倒着显示出文件的全部内容(是cat反过来写)
 
    5.分页显示passwd文件里的内容
    [root@localhost zhaoshi]# more passwd
 
more 显示文件里的内容(分页显示)
用途:全屏方式分页显示文件内容
交互操作方法:
     按Enter键向下逐行滚动
     按空格键向下翻一屏、按b键向上翻一屏
     按q键退出
less命令
用途:与more命令相同,但扩展功能更多
交互操作方法:
 与more命令基本类似,但个别操作会有些出入
【page down】【page up】上翻下翻页
 
    6.显示passwd文件的头4行
    [root@localhost zhaoshi]# head -4 passwd 
 
head 查看文件开头的一部分内容(默认为10行)
    格式:head -n 文件名
    高级用法:
        head -n -3 /etc/passwd 不显示最后三行      *
        head -n +3 /etc/passwd 显示前三行
 
    7.显示passwd文件的末尾3行
    [root@localhost zhaoshi]# tail -3 passwd
 
tail 查看文件结尾的少部分内容(默认为10行)
格式:
     tail -n 文件名  
     tail -f 文件名(动态的监控文件的变化,一旦有变化在屏幕上输出)查看secure这个日志文件,该文件和系统的安全有关,凡是远程登录系统,新建用户和设置密码都会记录到此文件
高级用法:
格式:
    tail  -n 数字 文件名
数字:数字前有 +(加号),从文件开头指定的单元      数开始输出;数字前有 -(减号),从文件末尾指定的单元 数开始输出;没有 +或 -,从文件末尾指定的单元 数开始输出。
tail -n +3 /etc/passwd 从第三行开始显示  *  
tail -n -3  /etc/passwd 显示最后三行
 
    8.显示passwd文件的第8行
    [root@localhost zhaoshi]# head -8 passwd |tail -1
| 管道符号(pipeline) 将前面一个命令的输出送给后面一个命令作为输入的内容
 
    9.显示passwd文件的第2行到最后第3行之间的内容
    [root@localhost zhaoshi]# cat -n passwd|tail -n +2 |head -n -3(加上行数显示效果更明显)
 
打包归档及压缩命令
zip 
[root@localhost huhu]# zip  h.zip  haha hehe
zip命令
用途:制作压缩文件
格式:zip  压缩文件名  文件1 文件2
 
unzip命令
用途:解压缩文件
格式:unzip  [-l] 压缩文件名
 
gzip(扩展名为.gz)
用途:制作压缩文件、解开压缩文件
格式:
            gzip  [-9]  文件名...
            gzip  -d  .gz格式的压缩文件
常用命令选项:
    -9:表示高压缩比,取值1-9,默认为6
    -d:用于解压缩文件,同gunzip命令
    -c:将输出重定向到标准输出
 
zcat
用途:查看压缩文件内容
格式:zcat  压缩文件名
 
bzip2(扩展名为.bz2)
用途:制作压缩文件、解开压缩文件
格式:
               bzip2  [-9]  文件名...
               bzip2 -d  .bz2格式的压缩文件
常用命令选项
    -d:用于解压缩文件
    -c:将输出重定向到标准输出
 
bzcat命令
用途:查看压缩文件内容
格式:bzcat  压缩文件名
 
tar
作用:创建压缩文件,用来备份,可以节约磁盘空间。
用途:制作归档文件、释放归档文件
格式:tar  [选项]...  归档文件名  源文件或目录
              tar  [选项]...  归档文件名  [-C 目标目录]
常用命令选项
    -c:创建 .tar 格式的包文件
           -c, --create
              create a new archive
    -x:解开.tar格式的包文件
           -x, --extract(提取)--get
              extract files from an archive
    -v:输出详细信息
           -v, --verbose(冗长的)
              verbosely list files processed
    -f:表示使用归档文件
       -f, --file=ARCHIVE
              use archive file or device ARCHIVE
    -t:列表查看包内的文件
           -t, --list
              list the contents of an archive
    -p:保持原文件的原来属性(权限)
           -p, --preserve-permissions
              extract  information  about  file per-
              missions (default for superuser)
    -P:保持原文件的绝对路径
          -P, --absolute-names
              don’t strip  leading  ‘/’s  from  file
              names
    -C:解包时指定的目标文件夹
    -z:调用gzip程序进行压缩或解压
       -z, --gzip, --gunzip, --ungzip
              filter the archive through gzip
    -j:调用bzip2程序进行压缩或解压
       -j, --bzip2
              filter the archive through bzip2
   --exclude file:压缩过程中排除file(也可以是目录)
例如:
[root@teacher wulin]# tar czf pwd-host.tar.gz /etc/passwd /etc/shadow(将根下etc下德passwd和shadow打包)
tar: Removing leading `/' from member names   正常提醒
将/wulin目录下的除boot目录以外的所有文件和目录打包放在/bak目录下,叫noboot-wulin.tar.gz
tar czvf /bak/noboot-wulin.tar.gz /wulin/* --exclude /wulin/boot
***************创建压缩包常用选项组合czvf(用于扩展名为.gz)和cjvf(用于扩展名为.bz2)        
                         解压压缩包常用选项组合xvf                          
                         查看内容选项组合tvf
                              解压文件的时候接-C,指定路径
 
**********tar命令注意事项
一定要注意绝对路径和相对路径问题,推荐使用相对路径
使用z或j压缩的文件,解压缩的时候不需要加上z或j,tar直接可以识别,解压文件后会覆盖原来的文件
tar对目录和文件都可以进行操作,gzip和bzip2只能对文件进行操作
选项有-和没有-效果是一样的
 

相关内容

    暂无相关文章