linux文件管理必会知识

一、文件查看类命令
         ① less 选项  参数(文件名)    
            分屏显示文件内容(查看至文件的结尾不会退出,按q退出)
            快捷键
                ctrl+d 向下翻半屏
                ctrl+u 向上翻半屏
                回车键 向下翻一行
                K键 向上翻一行
                空格键 向下翻一整屏
                b 向上翻一整屏
                #G 跳转至第#行

linux文件管理必会知识_时间戳

            关键字查找:
                /+关键子 从首部向尾部
                n-next 下一个关键字
                N 向上查找关键字
                ?+关键字 从尾部向首部
                n 下一个(向上查找)
                N 上一个(从下向上)--注:不要看起来好像迷迷糊糊,别只顾看,动手试试

linux文件管理必会知识_文件管理_02

        ②more 选项(很少用) 参数(文件名)
            分屏显示文件内容(特性:查看至文件尾部自动退出)
            注:k键和ctrl+u 不可用(这里指相对于上面less的快捷键)

        ③tail [选项] 参数(文件名)
            查看文件的尾部多少行,注:不跟任何选项,指显示默认的行数(10行)
            -n #或(-#)查看倒数的行数
            -f 监视文件有没有新增内容(作用于 日志查看)

linux文件管理必会知识_时间戳_03

如上图:查看默认行数及设置显示5行

linux文件管理必会知识_复制_04

如上图为在伪终端/dev/pts/0 上开启监控

linux文件管理必会知识_文件管理_05

 如上图为在伪终端/dev/pts/1 对文件file.log用echo来追加字符串“44”

linux文件管理必会知识_时间戳_06

如上图为在伪终端/dev/pts/1 上对文件用vim进行编辑,添加55,66两行


linux文件管理必会知识_stat_07

如上图:在伪终端/dev/pts/0上对文件的操作监视变化情况

结论:vim打开是一个文本副本的形式打开,而echo "ccc" >> file.log 直接把字符串追加到文件file.log(原始文件)中。所以-f是指监视文件本身。

        ④head [选项] 参数(文件名)
            -n #或(-#) 查看首部的行数
            注:不跟任何选项,指显示默认的行数(10行)

linux文件管理必会知识_文件管理_08

如上图,查看首部默认行数及设置显示6行

二、文件的类型
    - :普通文件
    d :目录文件
    c : 字符设备文件
    b : 块设备文件
    l :链接文件
    p : 管道文件
    s : socket(套接字)文件

三、文件的组成
        元数据(除了文件的内容以外,对文件的描述信息称为文件属性信息--元数据,时间戳也是元数据)
        数据(文件内容)
        时间戳 (3类时间)
        最近一次被access的时间 access time <---->atime
        最近一次被modify的时间 modify time <---->mtime
        最近一次被change的时间 (metadate)元数据被改变 change time<---->ctime
        stat 文件名 (查看文件的元数据)

    touch [选项] 参数(文件名)  文件的时间戳管理工具
        -a 仅修改文件的atime
        -m 仅修改文件的mtime
        -c 不创建空文件
        -t [[CC]YY]MMDDhhmm[.ss] 时间书写的格式 给文件创建一个新的时间,即atime和mtime同时被修改
        注:-at,-mt,-ct,都可以设置 -ta 不可以,因为后面-t 时间有具体值
   

[root@localhost tmp]# ls
backups  file.log  man.config  yum.log
[root@localhost tmp]# stat file.log        
  File: `file.log'
  Size: 26            Blocks: 8          IO Block: 4096   regular file
Device: fd00h/64768d    Inode: 3014664     Links: 1
Access: (0644/-rw-r--r--)  Uid: (    0/    root)   Gid: (    0/    root)
Access: 2015-04-03 20:14:11.326956761 +0800
Modify: 2015-04-03 20:14:11.326956761 +0800
Change: 2015-04-03 20:14:11.329956762 +0800
[root@localhost tmp]# touch -a -t 201504031010.10 file.log  #修改文件的访问时间 -a
[root@localhost tmp]# stat file.log 
Access: 2015-04-03 10:10:10.000000000 +0800                #此处省略其他信息(下同)
Modify: 2015-04-03 20:14:11.326956761 +0800
Change: 2015-04-03 20:37:42.448971037 +0800
[root@localhost backups]# touch -mt 201504031111.11 file.log  #修改文件的修改时间 -m
[root@localhost tmp]# stat file.log 
Access: 2015-04-03 10:10:10.000000000 +0800               
Modify: 2015-04-03 11:11:11.000000000 +0800
Change: 2015-04-03 20:39:55.134955727 +0800
[root@localhost tmp]# touch -c -t 201504031212.12 file.log  #修改文件的改变时间 -c
[root@localhost tmp]# stat file.log 
Access: 2015-04-03 12:12:12.000000000 +0800                 (此时刻标注为时间1)
Modify: 2015-04-03 12:12:12.000000000 +0800
Change: 2015-04-03 20:40:43.301964980 +0800

结论:atime和mtime都已经生效,而ctime并未生效,原因是文件的保护机制,所以ctime不会立即生效

紧接着上面的进行以下操作,看效果

[root@localhost tmp]# echo "aa" >> file.log 
[root@localhost tmp]# stat file.log             #查看文件的元数据
Access: 2015-04-03 12:12:12.000000000 +0800
Modify: 2015-04-03 20:52:13.553956518 +0800                (此时刻标注为时间2)
Change: 2015-04-03 20:52:13.553956518 +0800
[root@localhost tmp]# vim file.log 
[root@localhost tmp]# stat file.log 
Access: 2015-04-03 20:53:09.984956196 +0800
Modify: 2015-04-03 20:53:25.258950158 +0800                (此时刻标注为时间3)
Change: 2015-04-03 20:53:25.260950347 +0800

结论:(vim 能改变所有的时间,echo就不能改变访问时间)

注:经常容易犯的错误,相对路径和绝对路径一定要分的清楚哦    

四、文件复制命令
    cp [选项] 参数1(源文件) 参数2 目录文件(文件、目录)
        1、源文件为文件,目标文件是文件                

                (1)文件不存在,创建目标文件,且内容为源文件内容,如下图

linux文件管理必会知识_stat_09

                (2)文件存在,内容被覆盖,如下图

linux文件管理必会知识_复制_10

        2、源文件是文件,目标文件是目录(直接把文件拷贝到目标目录下(必须存在))如下图

linux文件管理必会知识_stat_11

        3、源文件是目录,必须跟一个选项-r 才能把目录复制到目标目录下如下图    

linux文件管理必会知识_时间戳_12

        -r 复制目录,会实现递归复制

        -d 不跟随符号指向的源文件(即复制的是符号链接文件,而非指向的文件)重点记忆
        -a 相当于-r + -d
        -i 提示是否进行覆盖 默认别名已经设置了cp -i
        -f 强制复制(不建议使用)

五、文件移动命令
    mv [选项]  参数1(源文件) 参数2 目标文件(文件、目录)
        1、源文件为文件,目标文件是文件 

                (1)文件不存在,创建目标文件,且内容为源文件内容,如下图

linux文件管理必会知识_stat_13

                (2)文件存在,内容被覆盖,如下图

linux文件管理必会知识_时间戳_14

        2、源文件是文件,目标文件是目录(直接把文件拷贝到目标目录下(必须存在))如下图

linux文件管理必会知识_复制_15

        3、源文件是目录,把源目录复制到目标目录下如下图

linux文件管理必会知识_复制_16

        -i 提示是否进行移动

        -f 强制移动(不建议使用)
六、文件删除
    rm [选项] 参数(文件名)
        -r 递归删除文件,而且可以删除目录
        -f 强制删除
        -i 提示是否进行删除
       

linux文件管理必会知识_stat_17

    注:创建一个回收站的安全机制,如下图
    /tmp 创建一个目录backups,所有要删除的文件可以先放到这里。

linux文件管理必会知识_stat_18


bash的基本特性 输入输出重定向及管道

一、重定向

    重定向:改变输入和输出的形式

         输出:

                  标准输出 状态码为1

                  错误输出 状态码为2

         输入:

                  标准输入 状态码0   echo $? 显示上条命令的输出状态

            (1) >>输出 代表追加到尾部 ,书写格式  1>>   2>>

[root@localhost tmp]# cat abc 
this is abc
[root@localhost tmp]# echo "def comehere" >> abc  
[root@localhost tmp]# cat abc 
this is abc
def comehere

         

[root@localhost tmp]# cat backups/ 2>> abc
[root@localhost tmp]# cat abc 
this is abc
def comehere
cat: backups/: Is a directory

       

            (2)>  输出 以覆盖的形式输出 ,格式  1>   2>

[root@localhost tmp]# echo "abc come back" > abc 
[root@localhost tmp]# cat abc 
abc come back
[root@localhost tmp]# ech "def is angry" 2> abc
[root@localhost tmp]# cat abc 
-bash: ech: command not found

&>> 和&> 代表不管是标准输出还是错误输出全部输出追加或覆盖

            (3)输入  <<

[root@localhost tmp]# cat << EOF #(EOF只是代表一个起始符号,后面在写一个EOF表示结束)
> 1111
> 2222
> 3333
> 4444
> EOF
1111
2222
3333
4444

二、管道 

        | 标识符 ,把一个命令的输出作为另一个命令的输入

        命令1 | 命令2 | 命令3 。。。 哲学思想3(linux是由众多功能单一的程序组成)

[root@localhost tmp]# cat /etc/passwd | head -6 | tail -3 
adm:x:3:4:adm:/var/adm:/sbin/nologin
lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin
sync:x:5:0:sync:/sbin:/bin/sync

练习1 /etc/passwd 文件的内容的前十行转换为大写输出

练习2 将当前系统的所登录的所有用户的前一个的信息转换为大写输出

三、命令别名

         alias别名=“真实命令”提高工作效率 临时设置

         unalias别名

[root@localhost share]# alias cdvim="cd /usr/share/vim"
[root@localhost share]# alias cdvim
alias cdvim='cd /usr/share/vim'
[root@localhost share]# cdvim 
[root@localhost vim]# pwd
/usr/share/vim

         永久修改 修改两个配置文件

        注: ~/.bashrc仅对当前用户有效,/etc/bashrc对所有用户有效 (面试题)

          临时取消别名unalias rm

[root@localhost vim]# unalias cdvim
[root@localhost vim]# alias cdvim
-bash: alias: cdvim: not found

bash特性 快捷键

         ctrl+a光标跳到命令首部

         Ctrl+E快捷键

         这里的E可以理解为End。当在命令行按下此组合键时,我们的可爱的光标就

         乖乖地跑到了当前命令行的最后。

         ctrl+u删除命令行首部至光标所在处的所有字符

         ctrl+l清屏

         ctrl+k这里的K可以理解为Kill。按下此组合键,会删除从当前光标到本命令行的结束的位置的所有字符。别只顾着看,动手试试!       


练习1答案

[root@localhost tmp]# echo | head -10 /etc/passwd | tr 'a-z' 'A-Z'
ROOT:X:0:0:ROOT:/ROOT:/BIN/BASH
BIN:X:1:1:BIN:/BIN:/SBIN/NOLOGIN
DAEMON:X:2:2:DAEMON:/SBIN:/SBIN/NOLOGIN
ADM:X:3:4:ADM:/VAR/ADM:/SBIN/NOLOGIN
LP:X:4:7:LP:/VAR/SPOOL/LPD:/SBIN/NOLOGIN
SYNC:X:5:0:SYNC:/SBIN:/BIN/SYNC
SHUTDOWN:X:6:0:SHUTDOWN:/SBIN:/SBIN/SHUTDOWN
HALT:X:7:0:HALT:/SBIN:/SBIN/HALT
MAIL:X:8:12:MAIL:/VAR/SPOOL/MAIL:/SBIN/NOLOGIN
UUCP:X:10:14:UUCP:/VAR/SPOOL/UUCP:/SBIN/NOLOGIN

练习2答案

[root@localhost tmp]# who
root     pts/0        2015-04-04 09:47 (stone-pc.lan)
root     pts/1        2015-04-04 15:12 (stone-pc.lan)
root     pts/2        2015-04-04 15:12 (stone-pc.lan)
[root@localhost tmp]#  who | head -1| tr 'a-z' 'A-Z'
ROOT     PTS/0        2015-04-04 09:47 (STONE-PC.LAN)

注:个别命令的演示效果本文可能稍有忽略,希望大家自己动手练习,你会发现linux的奥妙所在!!!