马哥教育网络班19期第二周课程练习

1、Linux上的文件管理类命令都有哪些,其常用的使用方法及其相关示例演示。

cd:切换目录命令
实例

 cd [dirctory] 切换目录
 cd .. 返回上一级目录
 cd -  来回切换
 cd ~  切换到家目录

pwd:显示当前目录
实例

  pwd:显示当前目录

ls:列出目录内容
实例与常见的使用方法

   ls -ld  [dirctory]或[file]
   ls -al  显示所有文件包括隐藏文件
   ls -i   显示所有的文件的iNode  后面加文件名或目录命只显示单个iNode 
   ls --color  以彩色形式显示文件

alias:别名

实例

alias l='ls -l'  定义别名 alias  alias=“command”

cat:查看文件的内容

     实例和使用方法
        cat filename 直接显示这个文件
        cat -n filename  对行进行编号
        cat -b filename  对空白行不进行编号
        cat >  linuxsir.org.txt  << EOF  注:创建linuxsir.org.txt文件;
         输入内容
        EOF结束

more:查看文件的内容

        用man来查看用法

less:查看文件的内容

      用man来查看用法

tail:查看尾部文件内容
实例和使用方法

     tail -n # filename   指定获取后#行
     tail -c # filename   指定获取后#字节
     tail -f filename   动态获取后面追加的内容

head:查看头部文件内容
实例和使用方法

    head -n # filename   指定获取后前#行
    head  -c # filename   指定获取前#字节

split:分割文件
实例和使用方法

 split -l 300 large_file.txt new_file_prefix 
 对与txt文本文件,可以通过指定分割后文件的行数来进行文件分割。 
 split -b 10m large_file.bin new_file_prefix 
 对于可执行文件等二进制文件,则不能通过文件行数来进行文件分割,此时我们可以指定分割大小来分隔文件。

cut:剪切命令
实例和使用方法
cut -d分隔符 -f指定字段

            #: 第#个字段
            #,#[,#]:离散的多个字段,例如1,3,6
            #-#:连续的多个字段, 例如1-6
            还可以混合使用 1-3,5
 cut -b 指定字节
 cut -c 指定字符

wc:统计指定文件中的字节数、字数、行数,并将统计结果显示输出。
实例和使用方法

       wc -l filename  统计行数
        wc -w  filename   统计字数
        wc -c filename  统计字符

sort:排序命令
实例和使用方法

      sort -f  filename 忽略字符大小写
       sort -r  filename 逆序排序
    sort -t DELIMITER filename 指定字段分隔符
     sort -k# filename   以指定字段为标准排序
     sort-n filename 以数值大小进行排序
      sort -u filename uniq,排序后去重

uniq:去重命令
实例和使用方法

      uniq -c filename 显示每行重复出现的次数;
      uniq -d filename 仅显示重复过的行;
      uniq -u filename 仅显示不曾重复的行;

    Note: 连续且完全相同方为重复

mkdir:创建目录
实例和使用方法

  mkdir -p  /dirctory/files   递归创建文件
  mkdir -m [+-]mode files 指定权限创建文件

touch:创建文件
实例和使用方法

 三个时间戳:
        access time:访问时间,简写为atime,读取文件内容
        modify time: 修改时间, mtime,改变文件内容(数据)
        change time: 改变时间, ctime,元数据发生改变

   touch  -a file  only atime
   touch  -m  file  only mtime
   touch  -t STAMP 使用指定时间,不是现在时间
             [[CC]YY]MMDDhhmm[.ss]
   touch -c  file   如果文件不存,则不予创建

mv:重命名
实例和使用方法

 mv -b oldfilename newfilename  重命名之前先备份
 mv oldfilename newfilename 
 mv oldfielname1 oldfilename2  newdirctory
 mv -i oldfilename  newfilename  目标文件已存在,覆盖之前会询问

cp:复制
实例和使用方法

cp file  /tmp/file  复制file到/tmp下的file file可以重命名
cp -a 用来备份文件
cp -r dirctory  dirctory  复制目录的内容到另一个目录

rm:删除
实例和使用方法

rm -r dirctory 递归删除
rm -f file  强制删除 
rm -i file 询问删除

ln:链接
实例和使用方法

 ln -s file  filelink  创建软连接
 ln  file  filehardlink 穿件硬连接

which:查看可执行文件的位置。
实例和使用方法

  which command

whereis:查看文件的位置。
实例和使用方法

  whereis  **            将和**文件相关的文件都查找出来
  whereis -b **           把二进制文件找出来 也就是可执行文件

locate:配合数据库查看文件位置。并不是实时的
实例和使用方法

     locate filename      会查找所有有filename的文件或目录

     用man 看

find:实际搜寻硬盘查询文件名称 实时
find:
实时查找工具,通过遍历指定路径下的文件系统完成文件查找;

    语法:
        find [OPTION]... [查找路径] [查找条件] [处理动作]
            查找路径:指定具体目标路径;默认为当前目录;
            查找条件:指定的查找标准,可以文件名、大小、类型、权限等标准进行;默认为找出指定路径下的所有文件;
            处理动作:对符合条件的文件做什么操作;默认输出至屏幕;

            查找条件:
                根据文件名查找:
                    -name "文件名称":支持使用glob
                        *, ?, [], [^]
                    -iname "文件名称":不区分字母大小写

                    -regex "PATTERN":以PATTERN匹配整个文件路径字符串,而不仅仅是文件名称;

                根据属主、属组查找:
                    -user USERNAME:查找属主为指定用户的文件;
                    -group GRPNAME: 查找属组为指定组的文件;

                    -uid UserID:查找属主为指定的UID号的文件;
                    -gid GroupID:查找属组为指定的GID号的文件;

                    -nouser:查找没有属主的文件;
                    -nogroup:查找没有属组的文件;

                根据文件类型查找:
                    -type TYPE:
                        f: 普通文件
                        d: 目录文件
                        l: 符号链接文件
                        s:套接字文件
                        b: 块设备文件
                        c: 字符设备文件
                        p: 管道文件

                组合条件:
                    与:-a
                    或:-o
                    非:-not, !

                    !A -a !B = !(A -o B)
                    !A -o !B = !(A -a B)

                    找出/tmp目录下,属主不是root,且文件名不是fstab的文件;
                        find /tmp \( -not -user root -a -not -name 'fstab' \) -ls
                        find /tmp -not \( -user root -o -name 'fstab' \) -ls

                根据文件大小来查找:
                    -size [+|-]#UNIT
                        常用单位:k, M, G

                        #UNIT: (#-1, #]
                        -#UNIT:[0,#-1]
                        +#UNIT:(#,oo)

                根据时间戳:
                    以“天”为单位;
                        -atime [+|-]#,  
                            #: [#,#+1)
                            +#: [#+1,oo]
                            -#: [0,#)
                        -mtime
                        -ctime

                    以“分钟”为单位:
                        -amin
                        -mmin
                        -cmin

                根据权限查找:
                    -perm [/|-]MODE
                        MODE: 精确权限匹配
                        /MODE:任何一类(u,g,o)对象的权限中只要能一位匹配即可;
                        -MODE:每一类对象都必须同时拥有为其指定的权限标准;

            处理动作:
                -print:默认的处理动作,显示至屏幕;
                -ls:类似于对查找到的文件执行“ls -l”命令;
                -delete:删除查找到的文件;
                -fls /path/to/somefile:查找到的所有文件的长格式信息保存至指定文件中;
                -ok COMMAND {} \; 对查找到的每个文件执行由COMMAND指定的命令;
                    对于每个文件执行命令之前,都会交互式要求用户确认;
                -exec COMMAND {} \; 对查找到的每个文件执行由COMMAND指定的命令; 
                    {}: 用于引用查找到的文件名称自身;

                注意:find传递查找到的文件至后面指定的命令时,查找到所有符合条件的文件一次性传递给后面的命令;
                有些命令不能接受过多参数,此时命令执行可能会失败;另一种方式可规避此问题:
                    find | xargs COMMAND

2、bash的工作特性之命令执行状态返回值和命令行展开所涉及的内容及其示例演示。

bash的工作特性之命令执行状态返回值

   成功:0
   失败:1-255
使用echo $! 查看

命令行展开

  ~: 展开为用户的主目录
    ~USERNAME:展开为指定用户的主目录
    {}:可承载一个以逗号分隔的列表,并将其展开为多个路径
        /tmp/{a,b} = /tmp/a, /tmp/b
        /tmp/{tom,jerry}/hi = /tmp/tom/hi, /tmp/jerry/hi

3、请使用命令行展开功能来完成以下练习:

(1)、创建/tmp目录下的:a_c, a_d, b_c, b_d

mkdir -r {a,b}_{c,d}

(2)、创建/tmp/mylinux目录下的:
mkdir -p mylinux/{bin,boot/grub,dev,etc/{rc.d/init.d,sysconfig/network-scripts},lib/modules,lib64,proc,sbin,sys,tmp,usr/local/{bin,sbin},var/{lock,log,run}}

mylinux/
├── bin
├── boot
│   └── grub
├── dev
├── etc
│   ├── rc.d
│   │   └── init.d
│   └── sysconfig
│       └── network-scripts
├── lib
│   └── modules
├── lib64
├── proc
├── sbin
├── sys
├── tmp
├── usr
│   └── local
│       ├── bin
│       └── sbin
└── var
    ├── lock
    ├── log
    └── run#

4、文件的元数据信息有哪些,分别表示什么含义,如何查看?如何修改文件的时间戳信息。

   [root@king-liu mylinux]# stat bin   使用stat查看
  File: `bin'   文件
   Size: 4096  大小        Blocks: 8   块大小       IO Block: 4096 输入输出块大小  directory
  Device: 802h/2050d设备    Inode: 2883666  iNode号   Links: 2  链接
 Access: (0755/drwxr-xr-x) 权限 Uid: (    0/    root)   Gid: (    0/    root)
 Access: 2016-06-19 06:42:46.032726013 +0800
 Modify: 2016-06-19 06:42:46.032726013 +0800
 Change: 2016-06-19 06:42:46.032726013 +0800

 三个时间戳:
        access time:访问时间,简写为atime,读取文件内容
        modify time: 修改时间, mtime,改变文件内容(数据)
        change time: 改变时间, ctime,元数据发生改变
   touch -a :仅更新Access time(同时更新Change为current time)
   touch -m:仅更新Modify time(同时更新Change为current time)
   touch -c:不创建新文件
   touch -t:使用指定的时间更新时间戳(仅更改Access time与Modify time,Change time更新为current time)
   例:touch -t  [[CC]YY]MMDDhhmm[.ss] filename

5、如何定义一个命令的别名,如何在命令中引用另一个命令的执行结果?

   alias  commandname=“command option ....”
   |   使用管道命令可以引用另一个命令

6、显示/var目录下所有以l开头,以一个小写字母结尾,且中间至少出现一位数字(可以有其它字符)的文件或目录。

  ls -d /var/l*[0-9]*[[:lower:]]

7、显示/etc目录下,以任意一个数字开头,且以非数字结尾的文件或目录。

  ls -d /etc/[0-9]*[^0-9]

8、显示/etc目录下,以非字母开头,后面跟了一个字母以及其它任意长度任意字符的文件或目录。

   ls -d /etc/[^a-z][a-z]*

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

  touch tfile-"$(date +%F-%H-%M-%S)"

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

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

11、复制/etc目录下所有以.d结尾的文件或目录至/tmp/mytest2目录中。

 cp -r /etc/*.d  /tmp/mytest2

12、复制/etc/目录下所有以l或m或n开头,以.conf结尾的文件至/tmp/mytest3目录中。

cp /etc/[1mn]*.conf /tmp/mytest3

原创文章,作者:N19_king,如若转载,请注明出处:http://www.178linux.com/18607

(0)
N19_kingN19_king
上一篇 2016-06-18
下一篇 2016-06-19

相关推荐

  • 8月9日sed(更新版)

    sed命令及vim基础使用命令 处理文本的工具sed stream editor,行编辑器    sed是一种流编辑器,它一次处理一行内容。处理时,把当前处理的行存储在临时缓冲区中,称为“模式空间”(pattern space),接着用sed命令处理缓冲区中的内容,处理完成后,把缓冲区的内容送往屏幕。接着处理下一行,这样不断重复,直到文件末尾。文件内容并没有…

    Linux干货 2016-08-15
  • 设定Linux自动登陆

    设定Linux自动登陆 在实验场景中我们可能会经常重新启动Linux,然后反复输入账户密码登陆。为了在每次启动后快速进入系统减少在实验场景中不必要的工作,我们可以设定Linux在启动后自动登陆到指定账户(实验中一般为root账户)。基于Linux一切皆文件的思想,我们可以通过修改配置文本的方式决定是否启用自动登录,以及自动登录的账户是普通用户账户还是root…

    Linux干货 2017-07-15
  • M20-1扩展正则表达式作业

    1、取本机ip地址 [root@centos6 ~]# ifconfig eth1      Link encap:Ethernet  HWaddr 00:0C:29:35:DD:AB     &nb…

    Linux干货 2016-08-10
  • 第八周网络基础以及脚本联系

    1、请描述网桥、集线器、二层交换机、三层交换机、路由器的功能、使用场景与区别。 ![](http://i.imgur.com/5u2IMF8.png) 三层交换机:将路由技术和交换技术合二为一的技术,当对第一次数据流进行路由后,会产生一个MAC地址与IP地址相对应的映射表,当同样的数据流再次通过时,将根据映射表进行数据交换而不在进行路由。 路由器:工作于网络…

    Linux干货 2017-03-30
  • 文本处理之sed

     sed:是一种行编辑器,它在处理行时会把要处理的行读入模式空间中,处理的是模式空间的内容,一行一行的处理,然后把处理结果显示在屏幕中,不对原文做修改,除非强制重定向。   好处:可同时编辑一个或多个文件,简化了对文件的反复操作。 sed用法:   格式: sed [options ]…'script&#0…

    Linux干货 2016-08-15
  • 特殊权限之SUID、SGID、STICKY

    特殊权限        在系统中,难免有一些比较特殊的用户或文件目录,但是普通的权限有不能解决我们的需求,于是就有特殊权限帮我们解决这个问题 特殊权限有三个:SUID、SGID、STICKY      首先,先说说安全上下文: 进程以某用户的身份运行,那么进程将会以此用户身份去完成所有操作…

    Linux干货 2016-08-05

评论列表(1条)

  • 马哥教育
    马哥教育 2016-06-21 22:44

    排版很好,如果可以在写一些例子说明一下会更好,加油!