N26 第二周博客作业

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

常用的文件管理工具有: cp mv rm

cp 命令 : copy 的简写

语法格式:
    1) 单源复制 cp [OPTION]… [-T] SOURCE DEST
        若 DEST 不存在,则事先创建此文件,并复制内容到 DEST 中,
        若 DEST 存在,1.若 DEST 是非目录文件,则覆盖目标文件 2. 若 DEST 是目录文件,则先在 DEST 目录下创建一个与源文件同名的文件,并复制其数据流
    2) 多源复制 cp [OPTION]… SOURCE… DIRECTORY 或 cp    [OPTION]… -t DIRECTORY SOURCE…
        如果 DEST 不存在 ,报错
        如果 DEST 存在,1. 若 DEST 是非目录文件,错误 2. 若 DEST 是目录文件,则分别复制每个文件至目标目录中,并保持原名

常用选项:
    -i : 交互式复制
    -f : 强制覆盖目标文件
    -r,-R : 递归复制目录
    -d : 复制符号链接文件本身,而非其指向的源文件
    -a : -dR –preserve=all, archive
    –preserv=
        mode 权限
        ownership 从属关系
        timestamps 时间戳
        context 安全属性
        xattr 扩展属性
        links 符号链接
        all 上述所有属性

示例:
[root@432895f7d850 ~]# ls # 展示当前目录所包含的一般文件
anaconda-ks.cfg
[root@432895f7d850 ~]# cp anaconda-ks.cfg anaconda-ks-copy.cfg  # 复制一个文件
[root@432895f7d850 ~]# ls # 查看是否复制成功
anaconda-ks-copy.cfg  anaconda-ks.cfg
[root@432895f7d850 ~]# cp anaconda-ks.cfg /tmp/anaconda-ks-copy.cfg # 复制文件到另一个目录
[root@432895f7d850 ~]# ls /tmp
anaconda-ks-copy.cfg  ks-script-LRoSA2  yum.log
[root@432895f7d850 ~]# cp anaconda-ks.cfg /tmp/ # 复制文件到另一个目录
[root@432895f7d850 ~]# ls /tmp
anaconda-ks-copy.cfg  anaconda-ks.cfg  ks-script-LRoSA2  yum.log
[root@432895f7d850 ~]# mkdir a
[root@432895f7d850 ~]# cp a b # 复制目录
cp: omitting directory ‘a’
[root@432895f7d850 ~]# cp -r a b
[root@432895f7d850 ~]# ls # 复制目录成功
a  anaconda-ks-copy.cfg  anaconda-ks.cfg  b

mv 命令: move (rename) file 移动或重命名文件

语法格式:
    mv [OPTION]… [-T] SOURCE DEST
    mv [OPTION]… SOURCE… DIRECTORY
    mv [OPTION]… -t DIRECTORY SOURCE…

常用选项:
    -i,–interactive 在覆盖文件时进行提示
    -f,–force 在覆盖文件时不进行提示
    -n, –no-clobber 不覆盖一个现存的文件

示例:
    [root@432895f7d850 ~]# ls
    a  anaconda-ks-copy.cfg  anaconda-ks.cfg  b
    [root@432895f7d850 ~]# mv anaconda-ks-copy.cfg anaconda-ks-COPY.cfg # 重命名文件
    [root@432895f7d850 ~]# ls
    a  anaconda-ks-COPY.cfg  anaconda-ks.cfg  b
    [root@432895f7d850 ~]# mv /tmp/yum.log ~/ # 移动文件
    [root@432895f7d850 ~]# ls
    a  anaconda-ks-COPY.cfg  anaconda-ks.cfg  b  yum.log

rm 命令: remove files or directories

语法格式:
    rm [OPTION]… [FILE]…  

常用选项:
    -i : 交互式移除
    -f : 强制移除目标文件
    -r,-R : 递归移除目录

示例:

    [root@432895f7d850 ~]# ls
    a  anaconda-ks-COPY.cfg  anaconda-ks.cfg  b  yum.log
    [root@432895f7d850 ~]# rm anaconda-ks-COPY.cfg # 移除文件
    rm: remove regular file ‘anaconda-ks-COPY.cfg’? y
    [root@432895f7d850 ~]# rm -f yum.log # 强制移除文件
    [root@432895f7d850 ~]# rm -r a # 移除目录
    rm: remove directory ‘a’? y
    [root@432895f7d850 ~]# rm -rf b # 强制移除目录
    [root@432895f7d850 ~]# ls

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

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

说明:
    bash 通过状态返回值来输出此结果: 0 表示成功,其他值(1-255)表示失败
    命令执行完成之后,其状态返回值保存于bash的特殊变量$?中;
    命令正常执行时,有的还回有命令返回值,根据命令及其功能不同,结果各不相同;

示例:

    [root@432895f7d850 tmp]# ls
    a_c  a_d  b_c  b_d  mylinux
    [root@432895f7d850 tmp]# echo $?
    0
    [root@432895f7d850 tmp]# useradd lc
    useradd: user ‘lc’ already exists
    [root@432895f7d850 tmp]# echo $?
    9
    [root@432895f7d850 tmp]# lss
    bash: lss: command not found
    [root@432895f7d850 tmp]# echo $?
    127

bash的工作特性之命令行展开

说明:
    在 bash 中,~ 会被自动展开为用户的家目录;
    {} 可承载一个以逗号(,)分隔的路径列表,并能够将其展开为多个路径

示例:

    [root@432895f7d850 tmp]# mkdir -pv /tmp/x/{p1/{a,b},/p2}
    mkdir: created directory ‘/tmp/x’
    mkdir: created directory ‘/tmp/x/p1’
    mkdir: created directory ‘/tmp/x/p1/a’
    mkdir: created directory ‘/tmp/x/p1/b’
    mkdir: created directory ‘/tmp/x//p2’
    [root@432895f7d850 tmp]# tree  /tmp/x
    /tmp/x
    |– p1
    |   |– a
    |   -- b<br />
&nbsp;&nbsp;&nbsp;
— p2

    4 directories, 0 files

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

(1) 命令如下

    [root@432895f7d850 tmp]# touch /tmp/{a,b}_{c,d}
    [root@432895f7d850 tmp]# ls # 确认是否创建成功
    a_c  a_d  b_c  b_d

(2)命令如下

    [root@432895f7d850 tmp]# 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}}
    [root@432895f7d850 tmp]# tree -L 3 mylinux/ # 确认是否创建成功
    mylinux/
    |– bin
    |– boot
    |   -- grub<br />
&nbsp;&nbsp;&nbsp; |-- dev<br />
&nbsp;&nbsp;&nbsp; |-- etc<br />
&nbsp;&nbsp;&nbsp; |&nbsp;&nbsp; |-- rc.d<br />
&nbsp;&nbsp;&nbsp; |&nbsp;&nbsp; |&nbsp;&nbsp;
— init.d
    |   -- sysconfig<br />
&nbsp;&nbsp;&nbsp; |&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
— network-scripts
    |– lib
    |   -- modules<br />
&nbsp;&nbsp;&nbsp; |-- lib64<br />
&nbsp;&nbsp;&nbsp; |-- proc<br />
&nbsp;&nbsp;&nbsp; |-- sbin<br />
&nbsp;&nbsp;&nbsp; |&nbsp;&nbsp;
— sys
    |– tmp
    |– usr
    |   -- local<br />
&nbsp;&nbsp;&nbsp; |&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; |-- bin<br />
&nbsp;&nbsp;&nbsp; |&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
— sbin
    -- var<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; |-- lock<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; |-- log<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
— run

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

文件的元数据包括:

File 文件名,
Size 文件大小,Blocks:数据块,IO Block:IO 块
Links 文件链接数,Uid 属主, Gid 属组
Acess 最近一次访问文件的时间
Modify 最近一次修改文件的时间
Change 最近一次改变文件的时间

可以使用 stat 命令来查看这些元数据信息。
语法格式是: stat [OPTION]… FILE…
    
可以使用 touch 命令来修改文件的时间戳信息。
语法格式
    touch [OPTION]… FILE…

常用选项
    -c:指定的文件路径不存在时不予创建
    -a:仅修改access times
    -m:仅修改modify times
    -t STAM:[[CC]YY]MMDDhhmm[.ss]

示例:

    [root@432895f7d850 ~]# stat anaconda-ks.cfg
      File: ‘anaconda-ks.cfg’
      Size: 3354            Blocks: 8          IO Block: 4096   regular file
    Device: fe01h/65025d    Inode: 23068819    Links: 1
    Access: (0600/-rw——-)  Uid: (    0/    root)   Gid: (    0/    root)
    Access: 2017-02-24 11:33:29.008304390 +0000                  
    Modify: 2016-12-14 14:59:34.000000000 +0000                             
    Change: 2017-02-24 11:23:16.131313547 +0000
    Birth: –
    [root@432895f7d850 ~]# touch -a -t 201702272036 anaconda-ks.cfg # 居然也可以定义一个未来的时间!!
    [root@432895f7d850 ~]# stat anaconda-ks.cfg
      File: ‘anaconda-ks.cfg’
      Size: 3354            Blocks: 8          IO Block: 4096   regular file
    Device: fe01h/65025d    Inode: 23068819    Links: 1
    Access: (0600/-rw——-)  Uid: (    0/    root)   Gid: (    0/    root)
    Access: 2017-02-27 20:36:00.000000000 +0000
    Modify: 2016-12-14 14:59:34.000000000 +0000
    Change: 2017-02-24 12:37:02.560563384 +0000
     Birth: –

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

  1. 可以使用 alias 来查看、定义一个命令的别名
    —–
    查看别名: alias
    定义别名:alias 别名=‘COMMAND’
    注意:仅对当前的shell有效
    撤销别名:unalias 别名

    示例:

        [root@432895f7d850 ~]# alias
        alias cp=’cp -i’
        alias egrep=’egrep –color=auto’
        alias fgrep=’fgrep –color=auto’
        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’
        [root@432895f7d850 ~]# alias clc=’clear’
        [root@432895f7d850 ~]# alias | grep clc
        alias clc=’clear’
        [root@432895f7d850 ~]# unalias clc

  2. 要引用另一个命令的结果,可以用 反引号 或者 $() 包裹命令

    示例:

        [root@432895f7d850 ~]# pwd
        /root
        [root@432895f7d850 ~]# ls -al $(pwd)
        total 24
        dr-xr-x—  2 root root  114 Feb 24 11:51 .
        drwxr-xr-x 17 root root  273 Feb 24 11:27 ..
        -rw-r–r–  1 root root   18 Dec 29  2013 .bash_logout
        -rw-r–r–  1 root root  176 Dec 29  2013 .bash_profile
        -rw-r–r–  1 root root  176 Dec 29  2013 .bashrc
        -rw——-  1 root root 3354 Dec 14 14:59 anaconda-ks.cfg

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

所用命令为: ls -dl /var/l*[[:digit:]]*[a-z] 或者 ls -dl /var/l*[0-9]]*[a-z]
演示:

    [root@432895f7d850 var]# touch l2a a3c l33a lll
    [root@432895f7d850 var]# mkdir l22b b33c aaa
    [root@432895f7d850 var]# ls -dl /var/l[[:digit:]][a-z]
    drwxr-xr-x 2 root root 6 Feb 24 13:05 l22b
    -rw-r–r– 1 root root 0 Feb 24 13:05 l2a
    -rw-r–r– 1 root root 0 Feb 24 13:05 l33a

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

所用命令为: ls -dl /etc/[0-9]*[^0-9] 或者 ls -dl /etc/[0-9]*[^[:digit:]]
演示:
    
    [root@432895f7d850 etc]# touch 3a a3 33
    [root@432895f7d850 etc]# mkdir 2a a2 22
    [root@432895f7d850 etc]# ls -dl [0-9]*[^0-9]
    drwxr-xr-x 2 root root 6 Feb 24 13:12 2a
    -rw-r–r– 1 root root 0 Feb 24 13:12 3a

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

所用命令为: ls -dl /etc/[^[:alpha:]][[:alpha:]]*
演示:
    
    [root@432895f7d850 ~]# touch 3a23
    [root@432895f7d850 ~]# mkdir 2a23
    [root@432895f7d850 ~]# ls -dl [^[:alpha:]][[:alpha:]]*
    drwxr-xr-x 2 root root 6 Feb 24 13:12 2a
    drwxr-xr-x 2 root root 6 Feb 24 13:20 2a23
    -rw-r–r– 1 root root 0 Feb 24 13:12 3a
    -rw-r–r– 1 root root 0 Feb 24 13:20 3a23

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

所用命令为: touch /tmp/tfile-$(date +%F-%H-%M-%S)
演示:
    
    [root@432895f7d850 ~]# touch /tmp/tfile-$(date +%F-%H-%M-%S)
    [root@432895f7d850 ~]# ls /tmp/tfile*                    
    /tmp/tfile-2017-02-24-13-27-33

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

所用命令为: cp -r /etc/p*[^0-9] /tmp/mytest1
演示:

    [root@432895f7d850 ~]# mkdir /tmp/mytest1
    [root@432895f7d850 ~]# touch /etc/{pp,p2}
    [root@432895f7d850 ~]# mkdir /etc/{pP,Pp}
    [root@432895f7d850 ~]# cp -r /etc/p*[^0-9] /tmp/mytest1
    [root@432895f7d850 ~]# ls -al /tmp/mytest1/
    total 0
    drwxr-xr-x 3 root root  26 Feb 24 13:32 .
    drwxrwxrwt 8 root root 307 Feb 24 13:32 ..
    drwxr-xr-x 2 root root   6 Feb 24 13:32 pP
    -rw-r–r– 1 root root   0 Feb 24 13:32 pp

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

所用命令为: cp -r /etc/*.d /tmp/mytest2
演示:

    [root@432895f7d850 ~]# mkdir /tmp/mytest2
    [root@432895f7d850 ~]# touch /etc/{2,3}.d
    [root@432895f7d850 ~]# cp -r /etc/*.d /tmp/mytest2
    [root@432895f7d850 ~]# ls -al /tmp/mytest2
    total 4
    drwxr-xr-x 22 root root 4096 Feb 24 13:37 .
    drwxrwxrwt  9 root root  322 Feb 24 13:35 ..
    -rw-r–r–  1 root root    0 Feb 24 13:37 2.d
    -rw-r–r–  1 root root    0 Feb 24 13:37 3.d
    drwxr-xr-x  2 root root   28 Feb 24 13:37 bash_completion.d
    drwxr-xr-x  2 root root    6 Feb 24 13:37 binfmt.d
    drwxr-xr-x  2 root root    6 Feb 24 13:37 chkconfig.d
    drwxr-xr-x  2 root root   23 Feb 24 13:37 depmod.d
    drwxr-xr-x  2 root root    6 Feb 24 13:37 dracut.conf.d
    lrwxrwxrwx  1 root root   11 Feb 24 13:37 init.d -> rc.d/init.d
    drwxr-xr-x  2 root root    6 Feb 24 13:37 krb5.conf.d
    drwxr-xr-x  2 root root    6 Feb 24 13:37 ld.so.conf.d
    drwxr-xr-x  2 root root   17 Feb 24 13:37 logrotate.d
    drwxr-xr-x  2 root root    6 Feb 24 13:37 modprobe.d
    drwxr-xr-x  2 root root    6 Feb 24 13:37 modules-load.d
    drwxr-xr-x  2 root root  280 Feb 24 13:37 pam.d
    drwxr-xr-x  2 root root    6 Feb 24 13:37 popt.d
    drwxr-xr-x  2 root root   38 Feb 24 13:37 prelink.conf.d
    drwxr-xr-x  2 root root   84 Feb 24 13:37 profile.d
    drwxr-xr-x 10 root root  127 Feb 24 13:37 rc.d
    lrwxrwxrwx  1 root root   10 Feb 24 13:37 rc0.d -> rc.d/rc0.d
    lrwxrwxrwx  1 root root   10 Feb 24 13:37 rc1.d -> rc.d/rc1.d
    lrwxrwxrwx  1 root root   10 Feb 24 13:37 rc2.d -> rc.d/rc2.d
    lrwxrwxrwx  1 root root   10 Feb 24 13:37 rc3.d -> rc.d/rc3.d
    lrwxrwxrwx  1 root root   10 Feb 24 13:37 rc4.d -> rc.d/rc4.d
    lrwxrwxrwx  1 root root   10 Feb 24 13:37 rc5.d -> rc.d/rc5.d
    lrwxrwxrwx  1 root root   10 Feb 24 13:37 rc6.d -> rc.d/rc6.d
    drwxr-xr-x  2 root root   25 Feb 24 13:37 rsyslog.d
    drwxr-xr-x  2 root root    6 Feb 24 13:37 sysctl.d
    drwxr-xr-x  2 root root    6 Feb 24 13:37 tmpfiles.d
    drwxr-xr-x  2 root root    6 Feb 24 13:37 xinetd.d
    drwxr-xr-x  2 root root  187 Feb 24 13:37 yum.repos.d

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

所用命令为: cp /etc/{l,m,n}*.conf /tmp/mytest3
演示:

    [root@432895f7d850 ~]# touch /etc/m{2,3}.conf
    [root@432895f7d850 ~]# mkdir /tmp/mytest3
    [root@432895f7d850 ~]# cp /etc/{l,m,n}*.conf /tmp/mytest3
    [root@432895f7d850 ~]# ls -al /tmp/mytest3
    total 24
    drwxr-xr-x  2 root root  135 Feb 24 13:40 .
    drwxrwxrwt 10 root root 4096 Feb 24 13:40 ..
    -rw-r–r–  1 root root   28 Feb 24 13:40 ld.so.conf
    -rw-r—–  1 root root  191 Feb 24 13:40 libaudit.conf
    -rw-r–r–  1 root root 2391 Feb 24 13:40 libuser.conf
    -rw-r–r–  1 root root   19 Feb 24 13:40 locale.conf
    -rw-r–r–  1 root root    0 Feb 24 13:40 m2.conf
    -rw-r–r–  1 root root    0 Feb 24 13:40 m3.conf
    -rw-r–r–  1 root root 1742 Feb 24 13:40 nsswitch.conf

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

(0)
上一篇 2017-02-24 20:50
下一篇 2017-02-24 22:03

相关推荐

  • 装饰器

    装饰器(Decorator) 装饰器推导过程 需求 一个加法函数,想增强它的功能,能够输出被调用过以及调用的参数信息 def add(x,y): return x + y 增加信息输出功能 def add(x,y): print(‘call {},{}+{}’.format(add.__name__, x, y)) return x + y 不足:打印语句的…

    2017-10-23
  • 马哥教育千万级PV实战大揭秘

    又到了激动人心的架构实战项目实践时间,马哥教育面授班的学员都很期待这一刻的到来,因为经过此次洗礼,能让自己成长更多! 上周二,马哥教育张Sir带领18期面授班的学员们做千万PV级别的电商架构实战项目!新增的多台R710企业级服务器设备,轻松搭建大数据、云计算等高端实验环境,让实战,更加真实!相信经过这场实战的洗礼,小伙伴们架构技能会有更大提升! 【张Sir生…

    2016-06-30
  • 博客

       这是我的第一篇博客!   平时学习中,总会遇到或大或小的问题,以及一些新的感悟,在当时能够十分清晰记得,但过一些时日,便发现又忘记了。以前十分明白的东西,又变得有些模糊,甚至完全忘记。因此特别需要记录下来,方便日后的查阅或分享给其他遇到类似问题的朋友。    如果以后忘记的某些知识,这时候,翻开以往博客…

    Linux干货 2017-07-11
  • 文件共享服务之SAMBA

    文件共享服务之SAMBA 文件共享服务之SAMBA 一、samba出现的意义 二、samba协议描述 三、samba为客户端的实现 四、samba为服务端的实现 五、使用图形界面配置SAMBA 一、samba出现的意义 首先nfs实现系统文件挂载linux与linux之间,linux到windows之间实现的并不是那么理想 FTP可以实现linux和wind…

    Linux干货 2016-04-19
  • sed行编辑器与vim编辑器

    一、sed行编辑器   1、简介:sed的本身也是一个管道命令,可以分析标准输入,还可以将数据进行替换、删除、新增、选取特定行的功能   2、工作原理:sed是一种流编辑器,它一次处理一行内容。处理时,把当前处理的行存储在临时缓冲区中,称为“模式空间”( pattern space),接着用sed命令处理缓冲区中的内容…

    Linux干货 2016-08-11
  • Http虚拟主机的应用

    一、http 1、 基于主机名实现三个虚拟主机 (1)yum安装httpd (2)注释中心主机的网页路径 (3)创建三个虚拟机主机的文件路径 (4)创建三个虚拟机主机的文件网页index.html (5)更改hosts文件进行映射 (6)关闭防火墙和Selinux进行测试(测试步骤是在本机的虚拟机上测试) 2、每虚拟主机使用独立的访问日志和错误日志 (1)给…

    Linux干货 2016-10-08

评论列表(1条)

  • 马哥教育
    马哥教育 2017-03-06 19:48

    写的不错,请注意排版格式