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

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

touch:
	创建一个文件,修改一个文件时间
	- 格式:touch [OPTION]... FILE...
	- 常用选项
		-a 只更改文件最近的访问时间
		-m 只更改文件最近的修改时间
		-t 指定时间 格式 [[CC]YY]MMDDhhmm[.ss]

	# touch abc
	# stat abc 
		Access: 2016-06-16 21:06:56.095545727 +0800
		Modify: 2016-06-16 21:06:56.095545727 +0800
		Change: 2016-06-16 21:06:56.095545727 +0800

	# touch -a -t 05152320 abc
	# stat abc
		Access: 2016-05-15 23:20:00.000000000 +0800
		Modify: 2016-06-16 21:06:56.095545727 +0800
		Change: 2016-06-16 21:07:34.871546823 +0800

	# touch -m -t 201405152320 abc
	# stat abc
		Access: 2016-05-15 23:20:00.000000000 +0800
		Modify: 2014-05-15 23:20:00.000000000 +0800
		Change: 2016-06-16 21:07:56.911547446 +0800

mkdir:
	创建文件夹
	- 格式:mkdir [OPTION]... DIRECTORY...
	- 常用选项
		-m 指定权限
		-p 多级创建
		-v 显示过程

	[root@c7-1 command]# mkdir -pv a/b/c
	mkdir: created directory ‘a’
	mkdir: created directory ‘a/b’
	mkdir: created directory ‘a/b/c’

	创建多级目录时 指定权限 会在最后一层目录生效
	[root@c7-1 command]# mkdir -pv -m 0777 d/e/f
	mkdir: created directory ‘d’
	mkdir: created directory ‘d/e’
	mkdir: created directory ‘d/e/f’

unlink:
	删除一个文件
	- 格式: unlink FILE
	# unlink /home/huazi/.bashrc

cp:
        复制文件或目录
	cp [OPTION]... FILE...
	- 常用选项
		-a 相当于-dpR 保留链接,文件属性,并递归地拷贝目录。
		-d 保留文件的连接数
		-p 保留原文件的权限以及时间戳
		-r,-R 复制目录。递归复制目录及其子目录内的所有内容
		-i 交互式,覆盖文件前询问用户
		-f 强制移动,需要有-i询问用户时使用

	# cp -a /etc/  /tmp/test1  复制/etc目录 到/tmp/test1下 保留/etc/下所有文件的属性
		
mv:
	移动文件
	mv [OPTION]... FILE...
	常用选项
		-i 交互式,覆盖文件前询问用户
		-f 强制移动,需要有-i询问用户时使用

	# root用户默认 有cp mv rm 的命令别名带 -i 选项 
	# mv a.log b.log     如果 b.log 存在直接覆盖,不存在正常移动
	# mv -i a.log b.log  如果 b.log 存在 会询问用户是否覆盖 n不覆盖 y覆盖 root默认mv别名带-i参数
	# mv -if a.log b.log 如果 b.log 存在直接覆盖,不存在正常移动

rm:
	删除文件
        rm [OPTION]... FILE...
	- 常用选项
		-i: 交互式,删除文件是询问是否删除
		-f: 强制删除,需要有-i询问用户时使用
		-r: 递归删除, 
	
	# root用户默认 有cp mv rm 的命令别名带 -i 选项 
	# rm -i a.log  删除 a.log 询问当前用户是否删除 n不删除 y删除  root默认mv别名带-i参数
	# rm -if a.log 删除 a.log -i询问用户,-f强制删除 则直接删除 。
	# rm -rf /tmp/* 删除 /tmp 下的所有文件 文件夹
	
跟文件相关命令还有很多,chmod,chown,chgrp,file,stat,cat,uniq,wc,sort,tr,less,more,tail,grep,fgrep,egrep,find.....等

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

    命令的状态返回值 通常可以叫我们来判断该脚本是否执行成功。
    上一条脚本的的返回状态值 保存在 $? 这个变量中。
    
    # ls /
    bin   boot_ucloud  dev  home  lib64       media  opt   root  selinux  swapfile  tmp  var
    boot  data         etc  lib   lost+found  mnt    proc  sbin  srv      sys       usr
    # echo $?
    0            执行成功
    # ls /abc
    ls: cannot access /abc: No such file or directory
    # echo $?  
    2            执行出错
    
    通常来说 脚本返回状态值为0时表示脚本执行成功,非0时表示执行过程中遇到问题
    返回值是程序员来定义的,你也可以写成一下代码
    shell脚本
    {
        #!/bin/bash

        ls /
        
        exit 1
    }
    当执行该脚本后 在看 $?变量里的值时 就是1,当然这是一个叫大家理解返回值的例子。
    在自己写的脚本中设立返回值是个好习惯,成功大家一般都会返回0
    
    
 二 命令行展开
     可以为我工作提高更好的效率
     ~: 展开为用户的主目录
     ~USERNAME:展开为指定用户的主目录
     {}:可承载一个以逗号分隔的列表,并将其展开为多个路径

     # vim ~/.bashrc   操作当前用户 家目录下的.bashrc文件
     # vim ~huazi/.bashrc  操作 huazi 用户家目录下的.bashrc文件
     # cd ~huazi  进入 huazi 的家目录
     
     # mkdir -p test/{a,b,c} 创建 test 目录已经该目录下 a b c三个目录
     # ls test/
     a  b  c
     
     # touch a{1..10}  连续创建文件
     # ls
     a1  a10  a2  a3  a4  a5  a6  a7  a8  a9
     
     # mkdir a{1..10}  连续创建目录
     # ls
     a1  a10  a2  a3  a4  a5  a6  a7  a8  a9

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

(1)、创建/tmp目录下的:a_c, a_d, b_c, b_d
    [root@c7-1 /]# mkdir /tmp/{a_c,a_d,b_c,b_d}      
    [root@c7-1 /]# ls /tmp/
    a_c  a_d  b_c  b_d 
    
(2)、创建/tmp/mylinux目录下的:
    [root@c7-1 /]# mkdir /tmp/mylinux 
    [root@c7-1 /]# cd /tmp/mylinux/
    [root@c7-1 mylinux]# mkdir -pv  bin boot/grub dev etc/{rc.d/init.d,sysconfig/network-script} lib/module lib64 proc sbin sys tmp usr/local/{bin,sbin} var/{lock,log,run} 
    mkdir: created directory ‘bin’
    mkdir: created directory ‘boot’
    mkdir: created directory ‘boot/grub’
    mkdir: created directory ‘dev’
    mkdir: created directory ‘etc’
    mkdir: created directory ‘etc/rc.d’
    mkdir: created directory ‘etc/rc.d/init.d’
    mkdir: created directory ‘etc/sysconfig’
    mkdir: created directory ‘etc/sysconfig/network-script’
    mkdir: created directory ‘lib’
    mkdir: created directory ‘lib/module’
    mkdir: created directory ‘lib64’
    mkdir: created directory ‘proc’
    mkdir: created directory ‘sbin’
    mkdir: created directory ‘sys’
    mkdir: created directory ‘tmp’
    mkdir: created directory ‘usr’
    mkdir: created directory ‘usr/local’
    mkdir: created directory ‘usr/local/bin’
    mkdir: created directory ‘usr/local/sbin’
    mkdir: created directory ‘var’
    mkdir: created directory ‘var/lock’
    mkdir: created directory ‘var/log’
    mkdir: created directory ‘var/run’
    [root@c7-1 mylinux]# 
    [root@c7-1 mylinux]# tree /tmp/mylinux/
    /tmp/mylinux/
        ├── bin
        ├── boot
        │   └── grub
        ├── dev
        ├── etc
        │   ├── rc.d
        │   │   └── init.d
        │   └── sysconfig
        │       └── network-script
        ├── lib
        │   └── module
        ├── lib64
        ├── proc
        ├── sbin
        ├── sys
        ├── tmp
        ├── usr
        │   └── local
        │       ├── bin
        │       └── sbin
        └── var
            ├── lock
            ├── log
            └── run
    24 directories, 0 files
    [root@c7-1 mylinux]#

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

    - 文件元数据包括
        文件的用户id
        文件的组id
        文件最近的访问时间
        文件最近的修改时间
        文件最近的inode修改时间
        文件的大小
        文件的链接数
        文件的权限
        文件数据block的位置
    
    
    stat 命令可以查看
    
    列出文件的元数据的相关信息
    # stat /etc/fstab 
      File: `/etc/fstab'
      Size: 644             Blocks: 8          IO Block: 4096   regular file
    Device: fc01h/64513d    Inode: 393244      Links: 1
    Access: (0644/-rw-r--r--)  Uid: (    0/    root)   Gid: (    0/    root)
    Access: 2016-04-12 16:01:55.498000866 +0800
    Modify: 2016-04-12 16:01:55.498000866 +0800
    Change: 2016-04-12 16:01:55.498000866 +0800
    
    touch 命令可以修改文件的 最近访问时间和最近修改时间 
    - 格式:touch [OPTION]... FILE...
	- 常用选项
	  -a 只更改文件最近的访问时间
	  -m 只更改文件最近的修改时间
	  -t 指定时间 格式 [[CC]YY]MMDDhhmm[.ss]

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

如何定义一个命令别名。
    alias 命令可以定义命令别名
        用法:
            查看别名 
            # alias
            alias h='ls -lh'
            alias l.='ls -d .* --color=auto'
            alias ll='ls -l --color=auto'
            alias log_nginx='cd /data/logs/nginx'

            建立别名 
            # alias name=value
                
            删除别名
            # unalias fgrep
                
    alias mycd='cd /etc/sysconfig/network-scripts/'
    alias myvim='vim /etc/sysconfig/network-scripts/ifcfg-eno16777736'
    还可以写到 ~/.bashrc 中 让当前用户永久生效
    
如何在命令中引用另外一个命令的结果。
    可以使用 $()   例 # a=$(pwd)
    可以使用 ``    例 # a=`pwd`  
    [root@c7-1 ~]# if [ $(wc -l /etc/passwd|cut -d' ' -f1) -gt 20 ]; then echo '> 20'; else echo '< 20'; fi 
    > 20
    [root@c7-1 ~]# if [ `wc -l /etc/fstab|cut -d' ' -f1` -gt 20 ]; then echo '> 20'; else echo '< 20'; fi
    < 20
    [root@c7-1 ~]# test $( wc -l /etc/passwd |cut -d' ' -f1 ) -gt 20 && echo '  > 20 ' || echo '< 20'  
    > 20 
    root@c7-1 ~]# test ` wc -l /etc/fstab |cut -d' ' -f1 ` -gt 20 && echo '  > 20 ' || echo '< 20'      
    < 20

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

ls -ld /tmp/1*[0-9]*[[:lower:]]

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

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

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

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

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

touch /tmp/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/[lmn]*.conf /tmp/mytest3

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

(0)
banbulabanbula
上一篇 2016-06-26
下一篇 2016-06-26

相关推荐

  • RPM软件包管理器及前端工具yum

    目前在linux系统之上软件安装方式最常见的有两种,分别是: dpkg:这个机制最早是由Debian Linux社区所开发出来的,透过dpkg的机制,Debian提供的软件就能够简单的安装起来,同时还能提供安装后的软件资讯,实在非常不错。只要是衍生于Debian的其他linux发行版,大多使用dpkg这个机制来管理软件的,包括B2D、Ubuntu等等。 RP…

    Linux干货 2016-08-20
  • vim

    VIM是什么? Vim是从VI发展出来的一个文本编辑器,拥有许多丰富的功能,便于编程开发,在程序员中被广泛使用,是类Unix系统用户最喜欢的功能强大的跨平台文本文件编辑工具。 为什么要用VIM? vi编辑器是所有类UNIX系统下标准的编辑器,他是我们使用Linux系统不能缺少的工具。对于所有类UNIX系统的任何版本,vi编辑器是完全相同的。而vim是从VI发…

    2017-06-07
  • locate与find不得不说的事

    本文内容: locate与find 练习     locate与find是linux中最常用的两种查找方式,二者各有优缺点,locate查找迅速,却由于数据库非实时更新,导致可能查找不全,而find由于是从指定路径开始遍历,速度相对较慢,却更为准确,而且用法也更加灵活,因此find运用更加广泛,也是本文的重点。 文件查找: locate搜…

    Linux干货 2016-08-18
  • 安装包管理

       软件包管理 软件的运行和编译 ABI 由于window和linux不兼容 linux是ELF window 是PE 对应的内核解析方式不同,可以用虚拟化 API 只程序与程序的公用的接口,相互调用方式 程序源代码 –>预处理–>编译–>汇编–>链接 预处理只会引…

    Linux干货 2017-04-24
  • N25期第八周作业

    1.请描述网桥、集线器、二层交换机、三层交换机、路由器的功能、使用场景与区别 主要功能: 网桥是一个局域网与另一个局域网之间建立连接的桥梁,属于数据链路层的一种设备。 集线器是可以将一些机器连接起来组成一个局域网的设备。 二层交换机是工作于OSI模型的第2层(数据链路层)的设备,作用和集线器类似。 三层交换机就是具有部分路由器功能的二层交换机。 路由器是互联…

    Linux干货 2017-03-08
  • 路径操作

    路径操作模块 3.4版本之前 os.path模块 from os import path p = path.join(‘/etc’, ‘sysconfig’, ‘network’) print(type(p), p) print(path.exists(p)) print(path.split(p)) print(path.abspath(‘.’)) p =…

    2017-10-27

评论列表(1条)

  • 马哥教育
    马哥教育 2016-06-29 15:19

    写的很好,排版也很漂亮,加油