马哥教育网络班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

相关推荐

  • 初涉Linux基本要点概括(1)

    计算机,这里通常指可以储存程序的计算机,根据冯诺依曼体系,计算机组成部件包括控制单元(Control Unit)、算术逻辑单元(Arithmetic Logic Unit)、内存(Memory)、输入设备(Input)、输出设备(Output)。计算机通过输入的数据和指令,可以完成各种复杂的运算任务,小到文字处理、游戏、影音、大到卫星定位,火箭发射,人工智能…

    Linux干货 2016-09-26
  • 系统管理之Selinux详解

    SELinux: SELinux概念SELinux配置启用SELinux管理文件安全标签管理端口标签管理SELinux布尔值开关管理日志查看SELinux帮助 SELinux概述 SELinux: Secure Enhanced Linux, 是美国国家安全局「NSA=The National Se…

    Linux干货 2016-09-21
  • 文件、目录——Linux基本命令(7)

    1.     文件名规则 (1)文件名最长255个字节          (2)包括路径在内文件名称最长4095个字节 (3)文件颜色          蓝色-…

    2017-07-17
  • bash功能特性六 bash操作环境

    一、bash查找命令的顺序     1、以相对路径或绝对路径执行的命令;     2、由alias找到该命令来执行;     3、由bash内置的命令来执行;     4、通过$PATH这个变量的顺序找到的第一个命令来执…

    Linux干货 2015-04-22
  • ldd 的一个安全问题

    我们知道“ldd”这个命令主要是被程序员或是管理员用来查看可执行文件所依赖的动态链接库的。是的,这就是这个命令的用处。可是,这个命令比你想像的要危险得多,也许很多黑客通过ldd的安全问题来攻击你的服务器。其实,ldd的安全问题存在很长的时间了,但居然没有被官方文档所记录来下,这听上去更加难以理解了。怎么?是不是听起来有点不可思议?下面,让我为你细细道来。 首…

    Linux干货 2016-05-05
  • lvm的基本使用

    lvm的创建、扩展、迁移以及逻辑卷快照的使用

    2017-12-08

评论列表(1条)

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

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