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

一、Linux文件管理类命令汇总

1、文件的复制命令:cp

复制命令:cp
    cp [OPTION]... [-T] SOURCE DEST
    cp [OPTION]... SOURCE... DIRECTORY
    cp [OPTION]... -t DIRECTORY SOURCE...
    
    cp SRC DEST               // SRC代表源文件,DEST代表目标文件。
       SRC是文件:
          ①如果目标不存在:新建DEST,并将SRC中内容填充至DEST中;
          ②如果目标存在:
            如果DEST是文件:将SRC中的内容覆盖至DEST中;
                此时建议为cp命令使用-i选项;(对于管理员来讲,是一个命令别名,默认就有-i选项的。但对普通用户时不具备)
            如果DEST是目录:在DEST下新建与原文件同名的文件,并将SRC中内容填充至新文件中;
    
    cp SRC... DEST
       SRC...:多个文件
           DEST必须存在,且为目录,其它情形均会出错;

    cp SRC DEST
       SRC是目录:
          此时使用选项:-r
          ①如果DEST不存在:则创建指定目录,复制SRC目录中所有文件至DEST中;
          ②如果DEST存在:
        	如果DEST是文件:报错
        	如果DEST是目录:
				
    常用选项:
       -i:交互式
       -r, -R: 递归复制目录及内部的所有内容;
       -a: 归档,用于备份,保留文件原来的所有的元数据属性,相当于-dR --preserv=all
	   -d:--no-dereference  --preserv=links 
	       (意思是我们不跟踪符号链接,就复制符号链接这个文件本身,而不是复制它指向的那个文件内容)
           --preserv[=ATTR_LIST]
                mode: 权限
        	ownership: 属主属组
        	timestamp: 时间戳
        	links :链接本身的属性
        	xattr :扩展属性
        	context : 安全上下文
        	all : 所有属性
       -p(小写): --preserv=mode,ownership,timestamp
       -v: --verbose  (显示详细信息,显示复制过程)
       -f: --force  (强制)

2、文件的移动命令:mv

移动命令:mv
    mv [OPTION]... [-T] SOURCE DEST
    mv [OPTION]... SOURCE... DIRECTORY
    mv [OPTION]... -t DIRECTORY SOURCE...  
       
    mv [选项]  源文件   目标文件
    mv [选项]  多个源文件    目标目录
    mv -r [选项]    源目录     目标  
     
    常用选项:
        -i: 交互式
       	-f: 强制
       	-r: 递归

3、文件的删除命令:rm

删除命令:rm
    rm [OPTION]... FILE...
    
    常用选项:
    	-i: 交互式
    	-f: 强制删除
    	-r: 递归

二、练习

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

[root@localhost ~]# mkdir -pv /tmp/{a,b}_{c,d}
mkdir: created directory `/tmp/a_c'
mkdir: created directory `/tmp/a_d'
mkdir: created directory `/tmp/b_c'
mkdir: created directory `/tmp/b_d'
[root@localhost ~]# tree /tmp/
/tmp/
├── a_c
├── a_d
├── b_c
└── b_d

4 directories, 0 files

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

mkdir -pv /tmp/mylinux/{bin,boot/grub,dev,etc/{rc.d/init.d,sysconfig/network-scripts},
lib/modules,lib64,proc,sbin,sys,usr/{local/{bin,sbin},var/{lock,log,run}}}


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

23 directories, 0 files

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

1、Bash命令执行状态返回值:

Bash 命令执行后,会对执行状态返回一个值。 如果命令执行成功则返回0,如果执行不成功,就会返回一个1—255的数字。

Bash使用特殊变量$?保存最近一条命令的执行状态结果:($? Bash中是特殊变量)

命令的执行结果状态(状态只有2种,要么成功要么失败)

               0:成功

               1-255:失败

[root@localhost ~]# ll /etc/passwd
-rw-r--r--. 1 root root 1438 Jul 26 05:35 /etc/passwd
[root@localhost ~]# echo $?
0
[root@localhost ~]# ll /etc/passwdd
ls: cannot access /etc/passwdd: No such file or directory
[root@localhost ~]# echo $?        
2

2、命令行展开特性:

1、“~”  展开为用户的家目录

      使用方法:~username       // 展开为指定的用户的主目录

      例如:

[root@localhost ~]# cd ~gentoo
[root@localhost gentoo]# pwd
/home/gentoo

2、使用花括号,里面用逗号分隔的列表,并将其展开为多个路径

      例如:/tmp/{a,b} = /tmp/a, /tmp/b

[root@localhost ~]# mkdir -p /tmp/{a,b}
[root@localhost ~]# tree /tmp/
/tmp/
├── a
└── b

2 directories, 0 files

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

   文件的元数据包含文件本身的一些属性信息,如:文件名、文件的各类权限、各类时间戳、链接次数等。

   文件包括三个时间戳:atime,mtime,ctime,可以使用touch命令来修改时间戳,用法如下:

文件时间戳管理工具:touch
    文件:metadata, data
	三个时间戳:
	    access time:访问时间--->简写为atime,读取文件内容
	    modify time: 修改时间--->简写为mtime,改变文件内容(数据)
	    change time: 改变时间--->简写为ctime,元数据发生改变
查看时间戳命令:stat
[root@localhost ~]# stat /etc/passwd
  File: `/etc/passwd'
  Size: 1438            Blocks: 8          IO Block: 4096   regular file
Device: 805h/2053d      Inode: 262888      Links: 1
Access: (0644/-rw-r--r--)  Uid: (    0/    root)   Gid: (    0/    root)
Access: 2016-07-28 18:40:01.824678351 -0400
Modify: 2016-07-26 05:35:32.110304187 -0400
Change: 2016-07-26 05:35:32.111304187 -0400
手动指定修改时间戳命令:touch
touch [OPTION]... FILE...
    -a: only atime (指定修改访问时间)
    -m: only mtime (指定修改修改时间)
    -t STAMP:(自己指明时间戳)
        [[CC]YY]MMDDhhmm[.ss]
    -c: 如果文件不存在,则不予创建

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

命令别名(alias 是一个bash的内建命令)通过alias命令实现:
    (1) alias
        显示当前shell进程所有可用的命令别名;
    (2) 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";

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

[root@localhost ~]# ls /var/l*[0-9]*[[:lower:]]

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

[root@localhost ~]# ls /etc/[0-9]*[^[:alpha:]]

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

[root@localhost ~]# ls /etc/[^[:alpha:]][[:alpha:]]*

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

[root@localhost ~]# touch /tmp/tfile-`date +%F-%H-%M-%S`
[root@localhost ~]# ll /tmp/
total 0
-rw-r--r--. 1 root root 0 Jul 29 14:23 tfile-2016-07-29-14-23-12

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

[root@localhost ~]# cp -rf /etc/p*[^[:lower:]] /tmp/mytest1
[root@localhost ~]# ls /tmp/mytest1/
passwd-  passwd.OLD  pkcs11  polkit-1

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

[root@localhost ~]# cp -rf /etc/*.d /tmp/mytest2
[root@localhost ~]# ls /tmp/mytest2/
bash_completion.d  event.d       lsb-release.d   popt.d          rc2.d  rc.d           statetab.d
chkconfig.d        init.d        makedev.d       prelink.conf.d  rc3.d  request-key.d  sudoers.d
cron.d             latrace.d     modprobe.d      profile.d       rc4.d  rsyslog.d      xinetd.d
depmod.d           ld.so.conf.d  oddjobd.conf.d  rc0.d           rc5.d  rwtab.d        yum.repos.d
dracut.conf.d      logrotate.d   pam.d           rc1.d           rc6.d  setuptool.d

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

[root@localhost ~]# cp /etc/[lmn]*.conf /tmp/mytest3/
[root@localhost ~]# ls /tmp/mytest3
latrace.conf  libaudit.conf  logrotate.conf  mke2fs.conf    nsswitch.conf  numad.conf
ld.so.conf    libuser.conf   ltrace.conf     nfsmount.conf  ntp.conf

原创文章,作者:N21_杭州-Debian,如若转载,请注明出处:http://www.178linux.com/26559

(0)
N21_杭州-DebianN21_杭州-Debian
上一篇 2016-07-29 15:23
下一篇 2016-07-29 15:23

相关推荐

  • CentOS 7 部署LAMP架构(独立服务模式)

    细节要求:(1) 三者分离于三台主机,Httpd与PHP以FastCGI模式通讯; (2) 一个虚拟主机用于提供phpMyAdmin;另一个虚拟主机用于提供wordpress; (3) 部署PHP加速器:xcache; 一、准备CentOS 7主机环境以及Repo仓库提供基于rpm安装包方式的程序包安装源 安装主机程序包规划: 主机1:web-server(…

    Linux干货 2017-02-17
  • 相识–Varnish

    Varnish与一般服务器软件类似,分为master(management)进程和child(worker,主要做cache的工作)进程。master进程读入命令,进行一些初始化,然后fork并监控child进程。child进程分配若干线程进行工作,主要包括一些管理线程和很多woker线程。 VCL: ”域“专有类型的配置语言 VCL有多个状态引擎,状态之间…

    Linux干货 2017-11-13
  • session sticky + session cluster 实战

    前言 在做负载均衡集群的时候,如果后端是应用服务器,我们就有一个不得不考虑的一个问题:会话绑定。为了追踪会话,我们常见的有三种方式:(1)session sticky:会话粘性,常见有2种方式: source_ip:采用源地址绑定方式 nginx:ip_hash,ip地址哈希 haproxy:source lvs:sh,源地址哈希 cookie:基于cook…

    Linux干货 2017-02-13
  • N25-第三周作业

    1.列出当前系统所有已经登录的用户的用户名,注意同一个用户登录多次,只显示一次即可   who | cut -d" " -f1 |uniq 2.取出最后登录到当前系统的用户的相关信息    w | tail -1 3.取出当前系统上被用户当做其默认shell最多的那个shell &nbsp…

    Linux干货 2016-12-19
  • Shell脚本基础练习

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

    2017-08-05
  • 程序员小抄大全

    你是否会经常忘记一些CSS中的函数名或是一些属性名,那个时候,你一定觉得,如果手边有一个“小抄”(Cheat Sheet)就好了。当然,这个“小抄”不是给你作弊用的,这个“小纸条”就是可以让你马上知道那个你最想知道的东西。这个“小抄”上也不需要有所有的东西,就需要那些经常用的就行了。现在,网上有很多这样的“小抄”,它们可能是PDF格式的,可能是PNG格式的,…

    Linux干货 2015-04-03

评论列表(1条)

  • 马哥教育
    马哥教育 2016-07-29 16:07

    写的很好,排版也很棒,加油