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)
FSSlcFSSlc
上一篇 2017-02-24
下一篇 2017-02-24

相关推荐

  • 8.1作业习题

    1,创建testuser uid 1234,主组:bin,辅助组:root,ftp,shell:/bin/csh home:/testdir/testuser useradd -u 1234 -g bin -G root,ftp -s /bin/csh -d /testdir/testuser testuser 2.修改testuser uid:4321,主…

    Linux干货 2016-08-04
  • lvs-nat集群

    lvs-nat算法 nat模型样式 vs服务器:公网地址 172.18.250.253 私网地址 192.168.57.129 (DIP) 各私网服务器网关指向服务器DIP 各私网服务器做集群:web (telnet,ssh) 私网服务器使用httpd实现 rs私网服务器1 centos7 ip:192.168.57.132 rs私网服务器2 centos6…

    Linux干货 2017-05-15
  • 管理SYSTEMd

    核心概念unit,systemctl管理系统服务,

    Linux干货 2018-01-04
  • 8.9_Linux文本处理三剑客之sed和文本编辑利器vim的使用

    本文处理三剑客之sed的使用   什么是sed? Stream EDitor(简称sed), 行编辑器,一次只读一行,只处理一行,不对源文件做处理,至输出到屏幕上。 sed是一种流编辑器,它一次处理一行内容。处理时,把当前处理的行存储在临时缓冲区中,称为“模式空间”(pattern space),接着用sed命令处理缓冲区中的内容,处理完成后,把缓…

    Linux干货 2016-08-11
  • CentOS 6.5 LVM磁盘管理学习笔记

    在系统运维和服务器管理过程中,经常遇到服务器磁盘容量不足,需要在线扩容的情况。普通磁盘分区的管理方式在逻辑分区划好之后就无法改变其大小。而LVM可以实现Linux服务器下面磁盘空间的在线扩容和动态管理,相对于普通的磁盘分区有很大的灵活性。一、LVM简介    LVM是 Logical VolumeManager(逻辑卷管理)的简…

    Linux干货 2016-08-29

评论列表(1条)

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

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