N25-第二周博客作业

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

文件管理工具有cp, mv, rm

  • cp命令: 复制文件或文件夹

    语法:

    cp [OPTION]… [-T] SOURCE DEST 单源复制
    cp [OPTION]… SOURCE… DIRECTORY 多源复制

    常用选项:

                  -i:交互式复制,即覆盖之前提醒用户确认;
                     -f:强制覆盖目标文件;
                     -r, -R:递归复制目录;
                     -d:复制符号链接文件本身,而非其指向的源文件;
                     -a:-dR --preserve=all, archive,用于实现归档;做备份
                     --preserv=
                         mode:权限
                         ownership:属主和属组
                         timestamps: 时间戳
                         context:安全标签
                         xattr:扩展属性
                         links:符号链接
                         all:上述所有属性

    示例:

  1. 拷贝/etc/fstab到/tmp目录下

    [root@node1 ~]# cp /etc/fstab /tmp
    [root@node1 ~]# ls /tmp
    fstab
  2. 拷贝/etc目录到/tmp目录下

    [root@node1 ~]# cp -r /etc/ /tmp
  • mv命令: 移动或重命名文件

    语法:

    mv [OPTION]… [-T] SOURCE DEST
    mv [OPTION]… SOURCE… DIRECTORY
    mv [OPTION]… -t DIRECTORY SOURCE..

源文件和目标文件在同一目录下,重命名
源文件和目标文件不在同一目录下,移动

选项:

           mv没有-r选项
           常用选项:
                   -i:交互式;
                   -f:force

示例

  1. 移动家目录下的test1到/tmp下

    [root@node1 ~]# ls
    anaconda-ks.cfg  initial-setup-ks.cfg  test1
    [root@node1 ~]# mv test1 /tmp
    [root@node1 ~]# ls /tmp
    etc  fstab  test1
  2. 重命名test1为test2

[root@node1 ~]# mkdir /tmp/test1
[root@node1 ~]# mv /tmp/test1 /tmp/test2
[root@node1 ~]# ls /tmp
test2
  • rm命令: 删除文件或目录

语法:

rm [OPTION]… FILE…

常用选项:

                -i:interactive  交互式
                -f:force   强制
                -r: recursive    递归删除目录

示例:

  1. 删除/tmp下的test2文件

    [root@node1 tmp]# rm test2 
    rm:是否删除普通空文件 "test2"?y
    [root@node1 tmp]# ls
    etc  fstab
  2. 删除/tmp下的所有文件

    [root@node1 tmp]# rm -rf /tmp/*
    [root@node1 tmp]# ls
    [root@node1 tmp]#
  3. 删除/tmp下的etc目录

    [root@node1 tmp]# ls
    etc
    [root@node1 tmp]# rm -rf /tmp/etc
    [root@node1 tmp]# ls
    [root@node1 tmp]#

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

  • 命令执行状态返回值
    bash通过状态返回值来输出此结果:

    • 成功:0

    • 失败:1-255

命令执行完成之后,其状态返回值保存于bash的特殊变量$?中;

命令正常执行时,有的还会有命令返回值

示例:

  1. 查看命令状态返回值(执行成功)

    [root@node1 ~]# ls
    anaconda-ks.cfg  initial-setup-ks.cfg
    [root@node1 ~]# echo $?
    0
  2. 查看命令状态返回值(执行失败)

    [root@node1 ~]# filess /etc/issue
    bash: filess: 未找到命令...
    [root@node1 ~]# echo $?
    127
  • 命令行展开
    ~:自动展开为用户的家目录,或指定的用户的家目录;
    {}:可承载一个以逗号分隔的路径列表,并能够将其展开为多个路径;

示例:

  1. 进入家目录

    [root@node1 tmp]# cd ~
    [root@node1 ~]# pwd
    /root
  2. 在/tmp下创建文件a,文件b

    [root@node1 ~]# ls /tmp
    [root@node1 ~]# touch /tmp/{a,b}
    [root@node1 ~]# ls /tmp
    a  b

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

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

[root@node1 ~]# touch /tmp/{a,b}_{c,d}
[root@node1 ~]# ls /tmp
a  a_c  a_d  b  b_c  b_d

(2) 创建/tmp/mylinux目录下的:
N25-第二周博客作业

[root@node1 ~]# mkdir -pv /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}}
mkdir: 已创建目录 "/tmp/mylinux"
mkdir: 已创建目录 "/tmp/mylinux/bin"
mkdir: 已创建目录 "/tmp/mylinux/boot"
mkdir: 已创建目录 "/tmp/mylinux/boot/grub"
mkdir: 已创建目录 "/tmp/mylinux/dev"
mkdir: 已创建目录 "/tmp/mylinux/etc"
mkdir: 已创建目录 "/tmp/mylinux/etc/rc.d"
mkdir: 已创建目录 "/tmp/mylinux/etc/rc.d/init.d"
mkdir: 已创建目录 "/tmp/mylinux/etc/sysconfig"
mkdir: 已创建目录 "/tmp/mylinux/etc/sysconfig/network-scripts"
mkdir: 已创建目录 "/tmp/mylinux/lib"
mkdir: 已创建目录 "/tmp/mylinux/lib/modules"
mkdir: 已创建目录 "/tmp/mylinux/lib64"
mkdir: 已创建目录 "/tmp/mylinux/proc"
mkdir: 已创建目录 "/tmp/mylinux/sbin"
mkdir: 已创建目录 "/tmp/mylinux/sys"
mkdir: 已创建目录 "/tmp/mylinux/tmp"
mkdir: 已创建目录 "/tmp/mylinux/usr"
mkdir: 已创建目录 "/tmp/mylinux/usr/local"
mkdir: 已创建目录 "/tmp/mylinux/usr/local/bin"
mkdir: 已创建目录 "/tmp/mylinux/usr/local/sbin"
mkdir: 已创建目录 "/tmp/mylinux/var"
mkdir: 已创建目录 "/tmp/mylinux/var/lock"
mkdir: 已创建目录 "/tmp/mylinux/var/log"
mkdir: 已创建目录 "/tmp/mylinux/var/run"

[root@node1 ~]# 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

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

  • 元数据信息有哪些?
    属性,权限,时间戳等

  • 元数据信息如何查看
    使用stat命令

示例:

[root@node1 ~]# stat /etc/issue
  文件:"/etc/issue"
  大小:23            块:8          IO 块:4096   普通文件
设备:803h/2051d    Inode:134220522   硬链接:1
权限:(0644/-rw-r--r--)  Uid:(    0/    root)   Gid:(    0/    root)
环境:system_u:object_r:etc_t:s0
最近访问:2016-12-09 23:05:14.894890846 +0800
最近更改:2015-12-09 17:59:15.000000000 +0800
最近改动:2016-11-14 08:54:12.074004823 +0800
创建时间:-
  • 修改时间戳信息

访问时间 access time:2015-12-10 16:12:22.776423693 +0800 最近访问时间

更改时间 modify time:2015-12-10 16:12:22.776423693 +0800 数据

改动时间 change time:2015-12-10 16:12:22.776423693 +0800 元数据

注意: centos7中被优化了,导致访问时间可能不变化
数据改变,元数据一定改变

touch命令:更改时间戳

语法:

touch [OPTION]… FILE…

选项:

                -c: 指定的文件路径不存在时不予创建;默认创建空文件
                -a: 仅修改access time;
                -m:仅修改modify time;
                -t STAMP  指定更改的时间
                    [[CC]YY]MMDDhhmm[.ss]

示例:

  1. 修改所有时间戳信息

    [root@node1 ~]# stat anaconda-ks.cfg 
    文件:"anaconda-ks.cfg"
    大小:1209          块:8          IO 块:4096   普通文件
    设备:803h/2051d    Inode:270678286   硬链接:1
    权限:(0600/-rw-------)  Uid:(    0/    root)   Gid:(    0/    root)
    环境:system_u:object_r:admin_home_t:s0
    最近访问:2016-11-14 01:44:35.851015291 +0800
    最近更改:2016-11-14 09:36:18.782059218 +0800
    最近改动:2016-11-14 09:36:18.782059218 +0800
    创建时间:-
    [root@node1 ~]# touch anaconda-ks.cfg 
    [root@node1 ~]# stat anaconda-ks.cfg 
    文件:"anaconda-ks.cfg"
    大小:1209          块:8          IO 块:4096   普通文件
    设备:803h/2051d    Inode:270678286   硬链接:1
    权限:(0600/-rw-------)  Uid:(    0/    root)   Gid:(    0/    root)
    环境:system_u:object_r:admin_home_t:s0
    最近访问:2016-12-10 00:13:17.993151406 +0800
    最近更改:2016-12-10 00:13:17.993151406 +0800
    最近改动:2016-12-10 00:13:17.993151406 +0800
    创建时间:-

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

  • 定义命令别名

    当前shell进程有效

    ~]# alias NAME='COMMAND'

示例:

  1. 设置clear的别名为cls

    [root@node1 ~]# alias cls=clear
    [root@node1 ~]# alias
    alias cls='clear'
    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'
    alias which='alias | /usr/bin/which --tty-only --read-alias --show-dot --show-tilde'
    开机有效

示例:

  1. 定义clear别名为cls,所有人有效,开机有效

[root@node1 ~]# vim /etc/bashrc  
alias cls=clear  

[root@node1 ~]# source /etc/bashrc
[root@node1 ~]# alias
alias cls='clear'
  • 命令应用(命令替换)
    引用命令的执行结果
    方式:

    $(COMMAND)  
    或`COMMAND`

示例:

  1. 显示日期

    [root@node1 ~]# echo $(date)
    2016年 12月 10日 星期六 00:38:10 CST

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

[root@node1 ~]# ls /var/l*[0-9]*[[:lower:]]
/var/l12a  /var/l3a  /var/lo2f

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

[root@node1 ~]# ls /etc/[0-9]*[^0-9]

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

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

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

[root@node1 ~]# touch /tmp/tfile-$(date +%Y-%m-%d-%H-%M-%S)
[root@node1 ~]# ls /tmp/tf*
/tmp/tfile-2016-12-10-01-01-55  /tmp/tfile-2016-12-10-01-02-24
/tmp/tfile-2016-12-10-01-02-19

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

[root@node1 ~]# mkdir /tmp/mytest1
[root@node1 ~]# cp -rf /etc/p*[^0-9] /tmp/mytest1
[root@node1 ~]# ls /tmp/mytest1
pam.d    pbm2ppa.conf  plymouth      popt.d   prelink.conf.d  profile.d  purple
passwd   pinforc       pm            postfix  printcap        protocols  python
passwd-  pki           pnm2ppa.conf  ppp      profile         pulse

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

[root@node1 ~]# mkdir /tmp/mytest2
[root@node1 ~]# cp -r /etc/*.d /tmp/mytest2
[root@node1 ~]# ls /tmp/mytest2
bash_completion.d  ipsec.d         profile.d      rwtab.d
binfmt.d           ld.so.conf.d    rc0.d          sane.d
chkconfig.d        libibverbs.d    rc1.d          setuptool.d
cron.d             logrotate.d     rc2.d          statetab.d
depmod.d           modprobe.d      rc3.d          sudoers.d
dnsmasq.d          modules-load.d  rc4.d          sysctl.d
dracut.conf.d      my.cnf.d        rc5.d          tmpfiles.d
exports.d          oddjobd.conf.d  rc6.d          usb_modeswitch.d
gdbinit.d          pam.d           rc.d           xinetd.d
grub.d             popt.d          request-key.d  yum.repos.d
init.d             prelink.conf.d  rsyslog.d

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

[root@node1 ~]# mkdir /tmp/mytest3
[root@node1 ~]# cp /etc/[lmn]*.conf /tmp/mytest3  
[root@node1 ~]# ll /tmp/mytest3
总用量 48
-rw-r--r--. 1 root root   28 12月 10 01:12 ld.so.conf
-rw-r-----. 1 root root  191 12月 10 01:12 libaudit.conf
-rw-r--r--. 1 root root 2391 12月 10 01:12 libuser.conf
-rw-r--r--. 1 root root   16 12月 10 01:12 locale.conf
-rw-r--r--. 1 root root  662 12月 10 01:12 logrotate.conf
-rw-r--r--. 1 root root 5171 12月 10 01:12 man_db.conf
-rw-r--r--. 1 root root  936 12月 10 01:12 mke2fs.conf
-rw-r--r--. 1 root root 2620 12月 10 01:12 mtools.conf
-rw-r--r--. 1 root root 3390 12月 10 01:12 nfsmount.conf
-rw-r--r--. 1 root root 1717 12月 10 01:12 nsswitch.conf
-rw-r--r--. 1 root root   91 12月 10 01:12 numad.conf

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

(0)
hansjhansj
上一篇 2016-12-09
下一篇 2016-12-10

相关推荐

  • 高性能集群软件Keepalived

    Keepalived的介绍以及安装与配置

    2017-09-18
  • Shell中的循环语句

    在编程语言中,循环语句是最基本的语法之一,在Shell(这里是Bash)中也不例外。把相关内容整理一下吧。 这里包括for/while/until循环,以及变量自增的语法实例。 Shell(以Bash为例)中的循环语句一般有for、while、until这几种,偶尔还有写错语法的时候,这里结合实例来自己总结一下。也为今后使用提供一个快捷的资料获取渠道。 一、…

    Linux干货 2016-08-22
  • zabbix快速创建筛选(sql操作)

        公司由于大量业务调整,尤其是服务器功能和性能的转变,监控也跟随这变化,其中操作最为繁琐的当数zabbix筛选(相信各位从页面添加的都深感痛苦)于是有了本文。     本文采用的方法是sql操作(由于本人不会php等,无法写程序直接调用官方api,所以,嘿嘿,不解释,同时也希望各路大…

    Linux干货 2015-12-17
  • Linux平台的4个最佳开源代码编辑器

    原文出处: Abhishek   译文出处:Linux中国 su-kaiyao   正在寻找Linux平台最棒的代码编辑器?如果你询问那些很早就玩Linux的人,他们会回答是Vi, Vim, Emacs, Nano等。但是,我今天不讨论那些。我将谈论一些新时代尖端、漂亮、时髦而且十分强大, 功能丰富…

    Linux干货 2015-03-02
  • 采用二进制包安装mysql

    本文是在CentOS7系统平台下安装Mysql5.6.26版本数据库的操作说明,如有错误,请指正。 系统平台:CentOS-7-x86_64    数据库版本:mysql-5.6.26   Mysql镜像文件下载地址:http://dev.mysql.com/downloads/mirrors.html 本次演示的Mysql安装…

    Linux干货 2017-05-04
  • 马哥教育网络班20期第2周课程练习

    一、Linux上的文件管理类命令都有哪些,其常用的使用方法及其相关  示例演示。 linux上文件管理命令包括: ls,cat,pwd,cp,rm,cd,head,tail,more,less,cut,which,whereis,find,mkdir,mv; 1、ls 命令;显示文件/文件夹清单   例如:如下显示列出根目录下的文件及目录…

    Linux干货 2016-06-23

评论列表(1条)

  • 马哥教育
    马哥教育 2016-12-16 16:27

    赞,总结的不错~~加油~