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

1、Linux上的文件管理类命令都有哪些,其常用的使用方法及其相关示例演示。
2、bash的工作特性之命令执行状态返回值和命令行展开所涉及的内容及其示例演示。
3、请使用命令行展开功能来完成以下练习:
   (1)、创建/tmp目录下的:a_c, a_d, b_c, b_d
   (2)、创建/tmp/mylinux目录下的:
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、文件的元数据信息有哪些,分别表示什么含义,如何查看?如何修改文件的时间戳信息。
5、如何定义一个命令的别名,如何在命令中引用另一个命令的执行结果?
6、显示/var目录下所有以l开头,以一个小写字母结尾,且中间至少出现一位数字(可以有其它字符)的文件或目录。
7、显示/etc目录下,以任意一个数字开头,且以非数字结尾的文件或目录。
8、显示/etc目录下,以非字母开头,后面跟了一个字母以及其它任意长度任意字符的文件或目录。
9、在/tmp目录下创建以tfile开头,后跟当前日期和时间的文件,文件名形如:tfile-2016-05-27-09-32-22。
10、复制/etc目录下所有以p开头,以非数字结尾的文件或目录到/tmp/mytest1目录中。
11、复制/etc目录下所有以.d结尾的文件或目录至/tmp/mytest2目录中。
12、复制/etc/目录下所有以l或m或n开头,以.conf结尾的文件至/tmp/mytest3目录中。

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

ls,cat,more,less, tail, head;cp,mv,rm


ls: list 列出目标目录中所有的子目录和文件

ls [选项] [目录名]

  -a, --all: 显示所有文件,包括隐藏文件;A的不包括(. ..)
  -l: 长格式
  -h, --human-readable:单位换算k,m
  -d: 显示目录自身的相关属性;通常要与-l一起使用;
  -r, --reverse: 逆序显示
  -R, --recursive: 递归

cat 文件查看命令

cat [OPTION]… [FILE]…链接文件并显示出来

 -E: 显示行结束符$
 -n: 对显示出的每一行进行编号

more,文本查看

more [OPTIONS…] FILE…    

 -d: 显示翻页及退出提示

less 和man的用法差不多

        less [OPTIONS…] FILE…

tail 和head用法差不多

 tail [OPTION]… [FILE]…

            

 -c #: 指定获取后#字节
 -n #: 指定获取后#行
   -#:
 -f: 跟踪显示文件新追加的内容;

head,获取文件头的用法,比如非常大日志文件

head [OPTION]… [FILE]…

  -c #: 指定获取前#字节
  -n #: 指定获取前#行

cp 复制命令

cp [OPTION]… [-T] SOURCE DEST 元到目标

        cp [OPTION]… SOURCE… DIRECTORY 复制

        cp [OPTION]… -t DIRECTORY SOURCE…

            

-i:交互式
-r, -R: 递归复制目录及内部的所有内容;
-a: 归档,相当于-dR --preserv=all,做备份的,文件保留成原来的样子

例如:ls -l /etc   看这个文件  system-release ->centos-
release ,普通cp /etc/system-release /tmp/,再看文件大小不一样,也没有指向原来的文件有
指向所以没有保存原来的样子

-d:--no-dereference --preserv=links

cp --no-dereference /etc/system-release /tmp/sys.release ,ls -l /tmp看这个文件也有指向,文件大小也一样,但是是错误链接,因为不是绝对路径

--preserv[=ATTR_LIST] 保留你所指定的属性
         mode: 权限
         ownership: 属主属组
         timestamp: 时间戳 
         links链接属性
         xattr扩展属性
         context 连接上下文
         a ll 所有原属性
-p: --preserv=mode,ownership,timestamp
-v: --verbose
-f: --force

 mv: move,移动文件

       mv [OPTION]… [-T] SOURCE DEST

       mv [OPTION]… SOURCE… DIRECTORY

       mv [OPTION]… -t DIRECTORY SOURCE…

  -i: 交互式
  -f: 强制

 rm: remove,删除

        rm [OPTION]… FILE..

-i: 交互式
-f: 强制删除
-r: 递归


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

bash返回值

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

例如:

[root@test1 ~]# ls /tmp/1
/tmp/1
[root@test1 ~]# echo $?
0
[root@test1 ~]# ls /tmp/11
ls: cannot access /tmp/11: No such file or directory
[root@test1 ~]# echo $?
2
[root@test1 ~]#

命令行展开

~: 展开为用户的主目录

 ~USERNAME:展开为指定用户的主目录

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

 /tmp/{a,b} = /tmp/a, /tmp/b

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

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

[root@test1 ~]# mkdir /tmp/{a,b}_{c,d}
[root@test1 ~]# ll /tmp
total 48
drwxr-xr-x  2 root root 4096 Jun 13 07:17 a_c
drwxr-xr-x  2 root root 4096 Jun 13 07:17 a_d
drwxr-xr-x  2 root root 4096 Jun 13 07:17 b_c
drwxr-xr-x  2 root root 4096 Jun 13 07:17 b_d

    (2)、创建/tmp/mylinux目录下的:

[root@test1 ~]# mkdir -p /tmp/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#}}
[root@test1 ~]# tree /tmp/mylinux
/tmp/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#

24 directories, 0 files
[root@test1 ~]#

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

[root@test1 ~]# stat 1.c   用stat查看源数据
  File: `1.c'
  Size: 319             Blocks: 8          IO Block: 4096   regular file
Device: 802h/2050d      Inode: 533990      Links: 1
Access: (0664/-rw-rw-r--)  Uid: (    0/    root)   Gid: (    0/    root)
Access: 2016-05-15 15:03:22.000000000 +0800
Modify: 2016-02-24 15:21:51.000000000 +0800
Change: 2016-05-15 15:03:22.494563429 +0800
[root@test1 ~]#

  三个时间戳:

            access time:访问时间,简写为atime,读取文件内容

            modify time: 修改时间, mtime,改变文件内容(数据)

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

touch命令:可以手动修改前两个时间戳

touch [OPTION]… FILE…

            -a: only atime

            -m: only mtime

            -t STAMP:

                 [[CC]YY]MMDDhhmm[.ss]

            -c: 如果文件不存,则不予创建

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


定义一个命令别名

alias NAME='VALUE'

                定义别名NAME,其相当于执行命令VALUE;

            注意:在命令行中定义的别名,仅对当前shell进程有效;如果想永久

有效,要定义在配置文件中;

                仅对当前用户:~/.bashrc

                对所有用户有效:/etc/bashrc

                Note: 编辑配置给出的新配置不会立即生效;

                bash进程重新读取配置文件:

                    source /path/to/config_file

                    .  /path/to/config_file

        撤消别名:unalias

            unalias [-a] name [name …]

        Note: 如果别名同原命令的名称,则如果要执行原命令,可使用"\COMMAND";


例如:

[root@test1 ~]# alias  显示所有别名
alias cdnet='cd /etc/sysconfig/network-scripts/'
alias cp='cp -i'
alias grep='grep --color=auto'
alias l.='ls -d .* --color=auto'
alias ll='ls -l --color=auto'
alias ls='ls --color=auto'
alias mv='mv -i'
alias rm='rm -i'
alias which='alias | /usr/bin/which --tty-only --read-alias --show-dot --show-tilde'
[root@test1 ~]# alias cdnet='cd /etc/sysconfig/network-scripts/'
[root@test1 ~]# cdnet
[root@test1 network-scripts]#

如何在命令中引用另一个命令的执行结果

 |   使用管道命令可以引用另一个命令

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

ls l*[0-9]*[[:lower:]]

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

 ls [0-9]*[^0-9]

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

ls [^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/mytest1/

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

cp -r /etc/[l,m,n]*.conf /tmp/mytest3/

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

(0)
zhutoyearnzhutoyearn
上一篇 2016-06-23
下一篇 2016-06-23

相关推荐

  • LINUX HASH命令

    LINUX:Hash命令 介绍:linux系统下会有一个hash表,刚开始这个hash表为空,每执行过一条命令hash表会缓存下这条命令。Shel优先会查看hash表。 hash缓存表可大大提高命令的调用速率 下面介绍几个hash常用选项 刚进入系统使用Hash命令 哈希表为空 使用过命令后使用Hash命令 使用过命令后,Hash可显示缓存的命令 Hash …

    Linux干货 2017-04-03
  • Shell脚本基础练习

    脚本编程能力是作为运维工程师不可或缺的一项基本技能,各种系统的运维,如果完全靠命令行一条一条命令来执行,工作效率可想而知,而脚本却可以将完成一定功能的各个命令依据一定的流程控制,逻辑判断去完成某种功能,提升工作效率。学习shell脚本,光学习理论是远远不够的,所以在学习中要多多练习,下面就看一些关于shell脚本基础的练习 (1) 编写脚本/root/bin…

    2017-08-05
  • DNS and BIND 介绍及安装

    DNS DNS是什么 为什么要用DNS 域名 BIND DNS是什么 DNS:Domain Name System,域名系统DNS作为域名和IP地址相互映射的一个分布式数据库,能够让用户更方便的访问互联网。它的正向映射是吧一个主机和IP地址关联起来,它的反向映射则是IP地址到主机名。DNS协议运行在UDP协议上,使用53端口。 为什么要用DNS 连接到互联网…

    Linux干货 2016-05-28
  • N26-第九周作业-邢岩

    马哥门徒-N26-邢岩 相信自己、勤奋努力、不断总结!shell脚本练习需要重复、重复、再重复!那么,我就继续来写、写、写。 1、写一个脚本,判断当前系统上所有用户的shell是否为可登录shell(即用户的shell不是/sbin/nologin);分别这两类用户的个数;通过字符串比较来实现; #******************************…

    Linux干货 2017-04-03
  • bash特性之命令行展开功能应用示例

                       bash特性之命令行展开功能应用示例 1.创建/tmp的目录下:a_c,a_d,b_c,b_d 创建命令:mkdir -pv /tmp/{a,…

    Linux干货 2017-07-09
  • 基于虚拟用户控制的ftp服务

    FTP作为最常见的文件共享服务,可提供文件的上传,下载等服务;其用户可分为三类: 匿名用户:即不需要用户账号与密码即可登录FTP服务器,此时登录用户将会被映射为系统上的ftp用户。 系统用户:即用FTP服务器上的用户账号与密码登录FTP服务器。此种方法虽然在一定程度上对登录做出了限制,但由于系统账号的相关权限,则增大了FTP服务器的系统风险; 虚拟用户:用户…

    Linux干货 2016-10-23

评论列表(1条)

  • 马哥教育
    马哥教育 2016-06-23 13:36

    写的很棒,只是一篇文章的排版不太一样那?在看一下10题,可能有一点小瑕疵,在仔细看一下,加油