第三周作业(linux文件与目录管理)

目录管理类命令cd;pwd;mkdir,rmdir,ls,tree

 

cd:切换目录

用法:cd [绝对路径或相对路径]         

cd ~user:切换到user这个用户的主文件夹,即/home/user

cd /var/spool/mail  切换到/var/spool/mail下       ;  cd ../mqueue  由/var/spool/mail切换到/var/spool/mqueue下 

相关的环境变量:PWD:当前工作目录;OLDPWD:上一次的工作目录          

演示:切换到/var/spool/mail目录下

          ~]#cd  /var/spool/mail

 

pwd:显示目前所在的目录

用法:pwd  [-p] 

        -p:显示出当前的路径,而不是使用链接路径

演示:~]#pwd

              /tmp

mkdir:新建新目录

用法:mkdir [-pvm MODE] 目录名称

                     -p:递归创建所需的目录,当所创建的目录存在时,不返回错误,不存在时,递归创建

                     -v:显示创建过程的详细信息

                     -m MODE:创建目录时直接指定权限

演示:新建权限为rwx--x--x的目录test1

           ~]mkdir -m 711 test1

 命令行展开:

    {}可以承载一个以逗号分隔的列表,并将其展开为多个路径。

    例如:创建/tmp/a1,/tmp/a2,/tmp/a1/a,/tmp/a1/b

                      ~]#mkdir  -pv /tmp/{a1/{a,b},a2}

               在/tmp目录下创建x_y,x_z,q_y,q_z目录

                      ~]#mkdir  -pv /tmp/{x,q}_{y,z}

              在tmp目录下创建以tfile开头,后跟当前日期和时间的文件,文件名形如:tfile-2016-05-27-09-32-22

                      ~]#mkdir /tmp/tfile-$(date +%H-%M-%S)

 

rmdir:删除目录

注:mkdir只能删除空目录

用法:rmdir [options]...目录名称

                      -v:显示过程

                      -p:连同上层空目录一起删除

演示:删除刚才创建的/tmp/a1/b目录

                ~]#rmdir -pv /tmp/a1/b

 

ls:列出指定路径下的文件列表

用法:ls [OPTION]...[FILE]...

                    -a:--all显示所有文件,包括隐藏文件

                    -A:--almost-all:显示所有文件,但不显示 ...

                    -l:long长格式显示文件信息

                   -h:对文件大小进行换算

                    -i:列出inode号码 

演示:以长格式显示/etc目录下所有文件

                  ~]#ls -al /etc/

 

tree:目录结构查看

 

文件内容查看命令:cat、tac、more、less、head、tail

 

cat:显示文件内容

用法:cat   [OPTION]...[FILE]...

                        -n:对显示的行进行编号

演示:~]#cat   -n    /etc/passwd     

    

tac:从最后一行开始显示,即反向显示

演示: ~]#tac /etc/passwd

 

more:一页一页的显示文件内容

演示:~]#more /etc/passwd

注:Space:代表下翻一页;Enter:代表向下滚动一行;/STRING :代表在显示的内容当中,向下查询“STRING”这个关键字; :f 代表立即显示出文件名以及目前显示的行数;q:离开 

 

less:一页一页翻动,但支持向回翻动操作

演示:less /etc/passwd

注:Space 下翻一页  【Pageup】上翻一页

 

tail:查看文件的后几行,head为查看文件的前几行,具体用法与tail相同

用法:tail [OPTION]...[FILE]...

                      -n#:指定获取后#行,也可以使用 - #

                      -c# :指定获取后#字节内容

                      -f:动态显示文件新内容

演示:~]#tail -5 /etc/passwd

例:查看/etc/passwd文件的第2到4行文件内容

             ~]# head -n 4 /etc/passwd | tail - 2

 

stat:查看文件状态命令

状态信息有三个时间戳:

                                 access time:访问时间,atime,即通过cat,more等命令读取其内容的时间

                                 modify time:修改时间,mtime,即改变文件内容时间

                                 change time:改变时间,ctime,即元数据发生改变的时间

  可以通过touch来修改时间戳

touch:修改文件时间或创建新文件

 

文件管理命令:cp、mv、rm

cp:复制命令

用法:cp [OPTION]...SRC...DEST

1. 如果SRC是文件

(1)如果目标不存在:新建DEST,并将SRC中的内容填充至DEST中

演示:~]# cp /etc/passwd /tmp/passwd

(2)如果目标存在

        如果DEST是文件,则会将SRC中的内容覆盖至DEST中;(可以使用 -i 来提示用户是否覆盖)

        如果DEST是目录,则在DEST下新建与源文件同名的文件,并将SRC中的内容填充至新文件当中

演示:

       DEST是目录                                                          DEST是文件

~]#cp /etc/passwd /tmp                                              ~]# touch a.text

                                                                                   ~]# cp /etc/passwd  a.text

2 如果SRC是目录:则必须使用 -r 选项

(1)如果DEST存在,则其必须为目录,否则报错,现在DEST目录下创建于SRC同名的目录,并将SRC中的所有内容复制到DEST中

演示: 

~]#cp -r  /var/spool/    /tmp

(2)如果DEST不存在,则先创建DEST目录,并将SRC中的所有内容复制到DEST目录中

演示: ~]#cp -r  /var/spool  /abc

 常用选项: -i:交互式

                   -r:递归复制目录及内部所有内容

                   -a:归档,即保持源文件的所有属性

                   -v:显示过程

                   -f:强制覆盖

                  -p:保持源文件的所有属性

                  -d:表示不跟踪符号链接所指向的原文件,即复制符号链接本身,而非其指向的源文件

演示:~]#cp -a /var/log/wtmp wtmp_2

           ~]#ls -l   /var/log/wtmp wtmp_2

 

mv:移动命令,还可以用来更改文件名

用法:mv [OPTION]...SRC...DEST

                     -f:强制覆盖

                     -i:交互式

                    -u:若目标文件存在,且SRC比较新,则才会更显DEST

演示:更改文件名 

~]# mv wtmp_2 wtmp_1

  

rm:移除文件或目录 

用法:rm [OPTION] 文件或目录

                       -f:强制删除,不会出现警告信息

                       -r:递归删除

                       -i:交互式

演示:~]#rm -rf   /tmp/a1/b

 

glob实现文件名通配

文件名通配:是指以指定格式显示文件名,常用的通配符有 * ? []

(1) * 表示任意长度的任意字符

(2) ? 表示任意单个字符

(3) [] 表示指定范围内的任意单个字符

      [a-z]  :表示任意单个字母,不区分大小写

      [0-9]  :表示任意单个数字

      [a-z0-9] :表示任意单个数字或字母

(4) [^]匹配指定范围外的任意单个字符

     与[]相反,即取反

(5)字符集的表示方法

[:space:] 表示所有的空白字符

[:alnum:]表示所有的字母或数字

[:alpha:]表示所有的字母,不区分大小写

[:dight:]表示所有的数字

[:lower:]表示所有的小写字母

[:upper:]表示所有的大写字母

[:punct:]表示所有的标点符号

作业:复制/etc目录下所有以p开头,以非数字结尾的的文件或目录到/tmp/mytest1目录中

cp -a  /etc/p*[^0-9] /tmp/mytest1

 

文本处理工具:wc、cut、sort、uniq

 

wc:字符统计命令

用法:wc [OPTION]... [FILE] 

                    -l :lines统计行数

                   -w:words统计单词个数

                   -c:character统计字符个数

 

cut命令:文本内容切割

 cut命令就是把文件中的内容按照某种分隔符进行切割,然后取出指定字段

     注:原内容或原文件不会受到影响

用法: cut [OPTION]...[FILE]...

                      -d:指明分割符

                      -f fields:指明需要取出的字段

                           #:第#个字段

                          #,#,#:离散的字段  如1,2,3,

                         #-#:连续的字段,如1-9

                         混合使用:1-3,5,10-44

 

sort命令:排序,将原文件内容取出后排序

用法: sort [OPTION]...[FILE]... 

                       -f:忽略字符大小写

                    -r:逆序

      -t delimiter:指明分隔符

      -n:以数值大小进行排序

      -u:uniq排序后去重

      -k #:以指定字段为标准进行排序

演示:sort -t: -k3 /etc/passwd | cut -d: -f3

 

uniq命令:移除或报告重复的行

用法:uniq [OPTION]... [INPUT[OUTPUT]]

                        -c:显示每行重复的次数

        -d:仅显示重复的行

        -u:仅显示不重复的行

注:连续且完全相同为重复

 

练习:取出/etc/passwd 文件中的第6行到第十行,并将这些信息按照第3个字段的数值大小进行排序,最后仅显示各自的第一个字段(以:为分隔符)

cut -d:-f6-10  /etc/passwd | sort -t: -k3 -n

 

文件的元数据信息(inode),inode记录的文件数据至少包括以下部分:

文件的所有者和组

文件的大小

时间戳

 

查看时间戳(atime、ctime、mtime)

查看访问时间命令: ls -l --time=atime FILE 

查看状态时间命令:ls -l --time=ctime FILE 

默认情况下,ls -l命令显示的文件的mtime 

 

修改文件的时间戳:touch [-acmdt] FILE

演示:touch -d “2 days ago” bashrc

 

 

 

 

posted on 2018-11-25 15:27  向北00  阅读(320)  评论(0编辑  收藏  举报

导航