• Linux的文件操作


    11.17.2文件操作
    touch命令
    用途:新建空文件,或更新文件时间标记
    格式:touch  文件名…
    创建名字带有空格的文件:touch ‘a1 2’
    # stat a1
      File: `a1'
      Size: 0          Blocks: 0          IO Block: 4096   regular empty file
    Device: 803h/2051d Inode: 3276804     Links: 1
    Access: (0644/-rw-r--r--)  Uid: (    0/    root)   Gid: (    0/    root)
    Access: 2018-11-17 10:26:06.868999883 +0800 读取内容时间
    Modify: 2018-11-17 10:26:06.868999883 +0800 修改内容时间
    Change: 2018-11-17 10:26:06.868999883 +0800 属性改变时间
    将123写入a1:echo 123 > a1
    元数据-------属性数据(大小、权限、类型)
    touch已有文件之后,已有文件的读取时间,修改时间都会被现在时间替换
    touch -a:改变文件的读取时间记录
    touch -m:改变文件的修改时间记录
    touch -r:使用参考文件的时间记录
    touch -d:设定日期与时间
    忘掉touch的属性?man touch
    指定时间:
    touch -a -d  "2018-11-11 10:10:10" a1
    a1的时间替换到a2:touch -r a1 a2
    [root@zzhCentos6 tmp]# stat a1   File: `a1'   Size: 5          Blocks: 8          IO Block: 4096   regular file Device: 803h/2051d Inode: 3276804     Links: 1 Access: (0644/-rw-r--r--)  Uid: (    0/    root)   Gid: (    0/    root) Access: 2018-11-11 00:00:00.000000000 +0800 Modify: 2018-11-11 00:00:00.000000000 +0800 Change: 2018-11-17 10:47:35.923999769 +0800 [root@zzhCentos6 tmp]# stat a2   File: `a2'   Size: 0          Blocks: 0          IO Block: 4096   regular empty file Device: 803h/2051d Inode: 3276805     Links: 1 Access: (0644/-rw-r--r--)  Uid: (    0/    root)   Gid: (    0/    root) Access: 2018-11-17 10:26:06.868999883 +0800 Modify: 2018-11-17 10:26:06.868999883 +0800 Change: 2018-11-17 10:26:06.868999883 +0800 [root@zzhCentos6 tmp]# touch -r a1 a2 [root@zzhCentos6 tmp]# stat a2   File: `a2'   Size: 0          Blocks: 0          IO Block: 4096   regular empty file Device: 803h/2051d Inode: 3276805     Links: 1 Access: (0644/-rw-r--r--)  Uid: (    0/    root)   Gid: (    0/    root) Access: 2018-11-11 00:00:00.000000000 +0800 Modify: 2018-11-11 00:00:00.000000000 +0800 Change: 2018-11-17 10:48:58.722999857 +0800 [root@zzhCentos6 tmp]# stat a1   File: `a1'   Size: 5          Blocks: 8          IO Block: 4096   regular file Device: 803h/2051d Inode: 3276804     Links: 1 Access: (0644/-rw-r--r--)  Uid: (    0/    root)   Gid: (    0/    root) Access: 2018-11-11 00:00:00.000000000 +0800 Modify: 2018-11-11 00:00:00.000000000 +0800 Change: 2018-11-17 10:47:35.923999769 +0800
    Change时间不能修改
    cp命令
    用途:复制(Copy)文件或目录
    格式:cp  [选项]...  源文件或目录…  目标文件或目录(多个源的话目标必须是目录)
    [root@zzhCentos6 tmp]# ls /etc/hosts
    /etc/hosts
    [root@zzhCentos6 tmp]# cp /etc/hosts .
    [root@zzhCentos6 tmp]# ls
    2018-11-11 00:00:00  a1  a1 2  a2  a3  a4  hosts  yum.log
    多个文件
    [root@zzhCentos6 tmp]# ls /etc/hosts  /etc/passwd
    /etc/hosts  /etc/passwd
    [root@zzhCentos6 tmp]# cp /etc/hosts  /etc/passwd .
    [root@zzhCentos6 tmp]# ls
    2018-11-11 00:00:00  a1  a1 2  a2  a3  a4  hosts  passwd  yum.log
    复制并重命名:
    [root@zzhCentos6 tmp]# cp /etc/hosts ./hosts.bank
    [root@zzhCentos6 tmp]# ls
    2018-11-11 00:00:00  a1  a1 2  a2  a3  a4  hosts.bank  yum.log
    别名存在内存中
    /bin/cp------->在硬盘中
    别名的优先级高于硬盘中
    -r:递归复制整个目录
    -a:   复制时保留链接、文件属性,并递归地复制目录
    mv命令
    用途:移动(Move)文件或目录
        —— 若如果目标位置与源位置相同,则相当于改名
    格式:mv  [选项]...  源文件或目录…  目标文件或目录(多个源的话目标必须是目录)
    file命令
    用途:查看文件类型
    格式: file  文件名…
    rm命令
    用途:删除(Remove)文件或目录
    格式:rm  [选项]...  文件或目录
    -f:强行删除文件或目录,不进行提醒
    -r:递归删除整个目录树
    通配符
    *        匹配0个或者多个字符
    ?      匹配1个字符
    11.17.3文件组成
    11.17.4文件内容查看操作
    cat命令
    用途:显示出文件的全部内容
    格式:cat -n 文件名
    tac命令
    用途:从最后一行倒着显示出文件的全部内容
    more命令
    用途:全屏方式分页显示文件内容(看到最后一行会自动退出)
    交互操作方法:
     按Enter键向下逐行滚动
     按空格键向下翻一屏、按b键向上翻一屏
     按q键退出
    看上一行按b
    less命令
    用途:与more命令相同,但扩展功能更多(看到最后一行会自动退出)
    交互操作方法:
     与more命令基本类似,但个别操作会有些出入
    【page down】【page up】上翻下翻页
    head命令
    用途:查看文件开头的一部分内容(默认为10行)
    格式:head -n 文件名
    head -n -3 /etc/passwd 不显示最后三行
    head -n +3 /etc/passwd 显示前三行
    tail命令
    用途:查看文件结尾的少部分内容(默认为10行)
    格式:tail  -n 文件名           tail  -f  文件名
    最后一行:tail -1 /etc/passwd
    tail命令高级用法
    格式:tail  -n 数字 文件名
    数字:数字前有 +(加号),从文件开头指定的单元      数开始输出;数字前有 -(减号),从文件末尾指定的单元 数开始输出;没有 +或 -,从文件末尾指定的单元 数开始输出。
    例如:
    tail -n +3 /etc/passwd 从第三行开始显示
    tail -n -3  /etc/passwd 显示最后三行
    11.17.4文件查找
    which命令
    用途:查找可执行文件并显示所在的位置
        —— 搜索范围由 PATH 环境变量指定
    格式:which  命令或程序名
    别名优先,存在内存中
    查看别名:alias
    取消别名:unlaias 命令
    定义新的命令:
    按照目录顺序查找,若有即结束
    执行优先级:别名   >   内部命令  >   外部命令 
    改变变量优先(越靠前越优先):
    whereis命令
    用途:查找文件的路径、该文件的帮助文件路径,原理和which类似
    格式:whereis  命令或程序名
    输出帮助手册
    locate命令
    格式:locate 文件名
    根据每天更新的数据库(/var/lib/mlocate)查找,速度块
    不能找到自己新建的文件但会找到已经删除的文件
    手动更新数据库updatedb
    *find命令
    用途:用于查找文件或目录
    格式:find  [查找范围]  [查找条件] [动作]
    【动作】: rm cp mv
    常用查找条件
    -name:按文件名称查找
    -size:   按文件大小查找
    -user:  按文件属主查找
    -type:  按文件类型查找
    -perm :按文件权限查找
    -mtime :按文件更改时间查找
    -newer:按比某个文件更新的查找
    特殊查找条件
    -o :逻辑或,只要所给的条件中有一个满足,寻找条件就算满足
    -not :逻辑非,在命令中可用“!”表示。该运算符表示查找不满足所给条件的文件
    -a:逻辑与,系统默认是与,可不加,表示只有当所给的条件都满足时,寻找条件才算满足。
      find /boot -size +1024k    -o    -name “vmlinuz*”
               范围         大小                  或者           名字   以vmlinuz开头
    vmlinuz*     以vmlinuz开头
    *vmlinuz    以vmlinuz结尾
    *vmlinuz*   包含vmlinuz
      find  /home  !-user  hello  -exec  ls       -ld  {}               ;
                 目录        不属于hello用户           动作       前面找到的文件     命令结束
    查找并复制:
    find /etc -name "passwd" -exec cp -r {} /tmp ;
    按照时间查找:
    格式:find  /usr -mtime +/-数字
    数字:数字前有 +(加号),大于数字的天数;数字前有 -(减号),小于数字的天数;没有 +或 -,等于数字的天数。
    例如:
    find /usr -mtime 4   表示4天前那一天
    find /usr -mtime -4   表示4天内
    find /usr -mtime +4   表示4天前
    常用动作:
    -exec:将find查找的结果交给-exec后面的命令执行
    -ok:比-exec动作多了一个确认
    挂载光盘:读取光盘数据
    挂载命令:mount  [挂载目录]
    /dev/sr0   表示第一个光驱
    [root@zzhCentos6 ~]# mount /dev/sr0 /mnt/
    mount: block device /dev/sr0 is write-protected, mounting read-only
    [root@zzhCentos6 ~]# ls /mnt/       访问
    CentOS_BuildTag  isolinux                  RPM-GPG-KEY-CentOS-Debug-6
    EFI              Packages                  RPM-GPG-KEY-CentOS-Security-6
    EULA             RELEASE-NOTES-en-US.html  RPM-GPG-KEY-CentOS-Testing-6
    GPL              repodata                  TRANS.TBL
    images           RPM-GPG-KEY-CentOS-6
    11.17.5文件压缩
    zip命令
    用途:制作压缩文件
    格式:zip  压缩文件名  文件1 文件2
    install.log  install.log.syslog
    unzip命令
    用途:解压缩文件
    格式:unzip  [-l] 压缩文件名
    解压到指定目录:
    unzip -d [目录]
    zip压缩目录,使用-r选项,否则只有目录本身,里面没有文件
    gzip命令
    用途:制作压缩文件、解开压缩文件,只能是文件,不能是目录
    格式:gzip  [-9]  文件名...例如:gzip b.sh
                   gzip  -d  .gz格式的压缩文件(解压)
    常用命令选项
    -9:表示高压缩比,取值1-9,默认为6
    -d:用于解压缩文件,同gunzip命令
    -c:将输出重定向到标准输出
    zcat命令
    用途:查看压缩文件内容
    格式:zcat  压缩文件名
    bzip2命令
    用途:制作压缩文件、解开压缩文件
    格式:bzip2  [-9]  文件名...
                   bzip2 -d  .bz2格式的压缩文件
    常用命令选项
    -9:表示高压缩比,取值1-9,默认为6
    -d:用于解压缩文件,同bunzip2命令
    -c:将输出重定向到标准输出
    bzcat命令
    用途:查看压缩文件内容
    格式:bzcat  压缩文件名
    tar命令
    用途:制作归档文件、释放归档文件(打包)
    格式:tar  [选项]...  归档文件名  源文件或目录
                  tar  [选项]...  归档文件名  [-C 目标目录]
    常用命令选项
    -c:创建 .tar 格式的包文件
    -x:解开.tar格式的包文件
    -v:输出详细信息
    -f:表示使用归档文件
    -t:列查看包内的文件
    -p:保持原文件的原来属性
    -P:保持原文件的绝对路径
    打包命令:
    tar  -cf a.tar passwd shadow
    查看命令:
    tar  -tf a.tar
    解压命令:
    tar -xf a.tar
    常用命令选项
    -C:建包或解包时进入指定的目录
    -z:调用gzip程序进行压缩或解压
    -j:调用bzip2程序进行压缩或解压
    -J:调用xz程序进行压缩或解压
    -A:将归档文件追加到另外一个归档文件中
    -r:将文件追加到一个文档中,例如:tar -rf /tmp/sxkj.tar .bashrc
    tar -cjf a.zip passwd shadow
    tar -czf a.zip passwd shadow
    先切换到d1,再进行解压:(-C命令)
    tar xf b.tar -C d1
    例如:以下两个等同
    tar cf c.tar -C /etc hosts passwd
     tar cf c.tar  /etc/hosts /etc/passwd
    将目录/etc/httpd/压缩并归档
    tar jcf test.tar.bz2 /etc/httpd/
    将test.tar.bz2加压到/tmp
    tar xf test.tar.bz2 -C /tmp
    tar命令注意事项
    一定要注意绝对路径和相对路径问题,推荐使用相对路径。
    使用z或j压缩的文件,解压缩的时候不需要加上z或j,tar直接可以识别。
    tar对目录和文件都可以进行操作,gzip和bzip2只能对文件进行操作。
    date命令
    使用man命令查询date命令的使用方法,实现下列功能
    显示日期时间效果例如:2012-03-10  10:35
    使用date命令修改日期和时间
    时间戳运算
    %F     full date; same as %Y-%m-%d
    %T     time; same as %H:%M:%S
    [root@localhost ~]# date "+%F %T"
    2018-11-23 16:59
    date 可以查看或者设置系统日期和时间
    hwclock 同步系统和硬件时间
            -s   |   --hctosys      set the system time from the hardware clock
            -w  |   --systohc      set the hardware clock to the curret system time
    11.17.6本章总结
    绝对路径和相对路径
    目录操作命令
    pwd、cd、ls、mkdir、du
    文件操作命令
    touch、file、cp、rm、mv、ln
    查找命令
    which、whereis、locate、find
    文件内容操作命令
    cat、more、less、head、tail
    归档及压缩命令
    zip、gzip、bzip2、zcat、bzat、tar
    11.17.7练习
    练习一:
    阶段练习1
    在/root下创建sxjy/ss和/sxjy/xx这些目录,停在/root下将/etc/passwd这个文件复制到ss中,把/etc/shadow这个文件复制到xx中,停在/root下把ss下面的passwd改名为haha,把xx下面的shadow移动到ss下并且同时改名为xixi。接着进入/usr/bin目录后,删除ss下的xixi,然后进入xx,接着再进入ss,再快速退回到xx中,接着进入/etc/sysconfig/network-scripts/目录,把ss下的haha复制到xx目录中去,最后删除sxjy和/sxjy
    [root@localhost ~]# pwd
    /root
    [root@localhost ~]# mkdir -p sxjy/ss
    [root@localhost ~]# mkdir -p /sxjy/xx
    [root@localhost ~]# cp /etc/passwd sxjy/ss
    [root@localhost ~]# cp /etc/shadow /sxjy/xx
    [root@localhost ~]# mv sxjy/ss/passwd sxjy/ss/haha
    [root@localhost ~]# ls sxjy/ss
    haha
    [root@localhost ~]# mv /sxjy/xx/shadow sxjy/ss/xixi
    [root@localhost ~]# ls sxjy/ss
    haha  xixi
    [root@localhost ~]# cd /usr/bin/
    [root@localhost bin]# pwd
    /usr/bin
    [root@localhost bin]# rm -f ~/sxjy/ss/xixi
    [root@localhost bin]# cd /sxjy/xx
    [root@localhost xx]# cd ~/sxjy/ss
    [root@localhost ss]# pwd
    /root/sxjy/ss
    [root@localhost ss]# cd -
    /sxjy/xx
    [root@localhost xx]# cd /etc/sysconfig/network-scripts/
    [root@localhost network-scripts]# pwd
    /etc/sysconfig/network-scripts
    [root@localhost network-scripts]# cp ~/sxjy/ss/haha /sxjy/xx/
    [root@localhost network-scripts]# rm -rf ~/sxjy /sxjy
    [root@localhost network-scripts]# ls /
    bin   cgroup  etc   lib    lost+found  misc  net  proc  sbin     srv  tmp  var
    boot  dev     home  lib64  media       mnt   opt  root  selinux  sys  usr
    [root@localhost network-scripts]# cd 
    [root@localhost ~]# ls
    anaconda-ks.cfg  install.log  install.log.syslog
    阶段练习2
    在/root目录中执行这个命令:mkdir -p aa/bb/cc/dd,保持当前的目录停留在/root下,用相对路径的表示法在dd下创建一个叫sxjy.bat的文件,进入到bb目录下,再用相对路径的表示法将sxjy.bat这个文件复制到cc下,进入到dd目录下,用相对路径的表示法将cc下面的sxjy.bat移动到aa下面,回到/root目录,用相对路径的表示法将dd目录复制到aa下。
    [root@localhost ~]# mkdir -p aa/bb/cc/dd
    [root@localhost ~]# ls
    aa  anaconda-ks.cfg  install.log  install.log.syslog
    [root@localhost ~]# ls aa/
    bb
    [root@localhost ~]# touch aa/bb/cc/dd/sxjy.bat
    [root@localhost ~]# cd aa/bb
    [root@localhost bb]# cp cc/dd/sxjy.bat cc
    [root@localhost bb]# cd cc/dd
    [root@localhost dd]# mv ../sxjy.bat ../../../
    [root@localhost dd]# cd ../../../
    [root@localhost aa]# pwd
    /root/aa
    [root@localhost aa]# ls
    bb  sxjy.bat
    [root@localhost aa]# cd -
    /root/aa/bb/cc/dd
    [root@localhost dd]# cd
    [root@localhost ~]# cp -r aa/bb/cc/dd aa
    [root@localhost ~]# ls aa
    bb  dd  sxjy.bat
    练习二:
    首先创建如图所示的目录(机器名无需一致)
    挂载系统光盘(mount  /dev/sr0 /mnt);将光盘中的文件大于10M并且名字是kerne开头的文件复制到xx下;然后将光盘中大于3072k小于8192k并且名字是i开头的文件复制到kk下;将xx和kk中的所有文件移动到jj下,把xx目录复制到/xx;
    [root@localhost jj]# mount /dev/sr0  /mnt
    [root@localhost jj]# find /mnt -size +10M -a -name "kerne*" -exec cp {} ../.. ;
    [root@localhost jj]# find /mnt -size +3072k -a -size -8192k -a -name "i*" -exec cp {} .. ;
    [root@localhost jj]# find ../.. -type f -exec mv {} . ;
    [root@localhost jj]# cp -r /home/ss/xx /
    练习三:
    阶段练习5
    停在/root目录下把/etc下的passwd、shadow、group三个文件备份到/tmp下的sxkj.tar文件中去,要求查看sxkj.tar里面的内容,要求最后一列只显示文件名,不带路径。
    接着将/root目录下.bashrc这个文件追加备份到sxkj.tar中去,然后将sxkj.tar中的group文件恢复到/home目录下;再把/home目录下所有的文件都备份到/tmp下的home.tar.bz2中去,停在/root目录下将home.tar.bz2的内容都恢复到/tmp中去
    [root@localhost ~]# tar -cf /tmp/sxkj.tar -C /etc passwd shadow group
    [root@localhost ~]# tar -tf /tmp/sxkj.tar 
    [root@localhost ~]# tar -rf /tmp/sxkj.tar .bashrc 
    [root@localhost ~]# tar -tf /tmp/sxkj.tar
    passwd
    shadow
    group
    .bashrc
    [root@localhost ~]# tar -xf /tmp/sxkj.tar -C /home/ group 
    [root@localhost ~]# tar -cjf /tmp/home.tar.bz2  /home/*
    [root@localhost ~]# tar -xf /tmp/home.tar.bz2 -C /tmp/
    练习四:
    1、 切换到/opt,然后一条命令在/tmp下创建2个文件,文件名分别是:a.txtb.txt
        Touch /tmp/a.txt b.txt
    2、 更改/tmp/a.txt的访问时间为“20101028日 1022分”
        Touch -a -d 2010-10-28 10:22:00  /tmp/a.txt
    3、 更改/tmp/b.txt的内容修改时间为“2015108日 1722分”
        Touch -m -d 2010-10-28 10:22:00 /tmp/b.txt
         
     
     
     
     
     
     
     
     
    4、 在保留文件属性情况下,复制/etc/shadow/tmp,并且重命名为shadow.bak
        Cp -a /etc/shadow /tmp/shadow.bak
    5、 复制/etc/sysconfig目录到/tmp,并且改名,名字自己随便起
        Cp /etc/sysconfig /tmp/aaa
    6、 /tmp目录下创建一个空文件,名字随便,然后重命名为:原文件名_new。例如:原文件名是a.txt,则新文件名为a.txt_new
        Touch /tmp/a1
        Cp /tmp/a1 ./a1_new
    7、 停在/tmp下,在根目录下创建一个空文件,继续停在/tmp下,然后把刚创建的空文件重命名为:原文件名_new
        Touch /b
        Cp /b ./b_new
    8、 查看/dev/sda的文件类型
        File dev/sda
    9、 删除目录/tmp/a/b
        Rm -rf /tmp/a/b
     
     
     
    10、 查看/etc/passwd文件内容,一次查看所有内容,并且显示行号
        Cat -n /etc/passwd
    11、 查看/etc/passwd文件内容,分页查看
        More /etc/passwd
    12、 查看/etc/shadow4
        head -n +4 /etc/passwd
    13、 查看/etc/shadow最后4
        tail -n -4  /etc/passwd
    14、 查看top命令对应的可执行文件保存在哪里
        which top
    15、 输入命令lslslsls,看看有什么提示,为什么?
        [root@zzhCentos6 ~]# lslslsls
        -bash: lslslsls: command not found
        Lslslsls不是一条命令
    16、 查找ssh_config文件并且复制到/tmp,一条命令完成
        Find / -name  ssh_config -exec cp -r {} /tmp ;
    17、 /etc/ssh/打包到/tmp/ssh.tar
        Tar -cPf  /tmp/ssh.tar /etc/ssh
    18、 /etc/ssh/压缩打包到/tmp/ssh.tar.gz,并且保留原文件权限。
        Tar czPf /tmp/ssh.tar.gz /etc/ssh/
    19、 /etc/ssh/压缩打包到/tmp/ssh_YYYY-MM-DD_HH:MM.tar.bz2,例如: /tmp/ssh_2016-07-03_10:26.tar.bz2
        Tar cjPf /tmp/ssh_2016-07-03_10:26.tar.bz2 /etc/ssh
    20、 /etc/ssh/压缩打包到/tmp/ssh.zip
        tar cPzf ssh.zip /etc/ssh/ -C /tmp/
    21、 /tmp目录下,随便创建一个空目录,把ssh.tar.gz解压到这个空目录中
        Mkdir /tmp/ d1
        Tar zxf ssh.tar.gz -C d1
    22、 /tmp目录下,随便创建一个空目录,把ssh.tar.bz2解压到这个空目录中,并且显示解压过程。
        Mkdir /tmp/ d1
        Tar jxvf ssh.tar.bz2 -C d1
    23、 /tmp目录下,随便创建一个空目录,把ssh.zip解压到这个空目录中
        Mkdir /tmp/ d1
        Unzip /tmp/d1 -d ssh.zip
  • 相关阅读:
    Aspose.Words三 创建表格
    Aspose.words一 DOM结构
    Aspose.words四 bookmark
    Aspose.Words五 MergeField
    为什么使用Reazor
    C#实现发送给QQ邮件
    T4模板之基础篇
    avalon子孙元素属性监听
    C#设置WebBrowser IE浏览器版本
    【GoLang】GoLang GOPATH 工程管理 最佳实践
  • 原文地址:https://www.cnblogs.com/qluzzh/p/10306092.html
Copyright © 2020-2023  润新知