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

相关推荐

  • centos 7 修改sshd服务默认端口号

    由于最近sshd服务默认端口号22被匿名进行试探性的进行登入,为防止匿名用户再次进行试探性的登入,将sshd服务的默认端口号进行修改。 环境:centos 7.3  xshell 思路:先将sshd的被指文件进行修改,把sshd服务的默认端口号修改为所需要的端口号,然后重启sshd服务,发现重启报错。找其原因是应为selinux不允许自定义sshd…

    Linux干货 2017-04-06
  • 优云Automation:实现IT服务弹性伸缩的利器

    随着互联网业务快速持续增长,IT资源使用量按需变化成为常态,这就要求信息部门能快速响应资源使用的变化要求,对运维提出不小挑战。比如电商、在线教育等企业经常推出一些秒杀、抢红包活动,在特定时间段对资源的利用处于高峰期,之后基本处于空闲。 几年前,我们从申请采购到应用部署上线都只能人工操作,需要提前几个月开始规划。如今通过云平台能很好实现资源按需动态管理,运维人…

    系统运维 2017-03-15
  • 马哥教育网络班21期-第二周课程练习

    第二周课程练习 1、Linux上的文件管理类命令都有哪些,其常用的使用方法及其相关示例演示?     1.1 目录管理类命令:cd,pwd,ls,mkdir,rmdir,tree          1.1.1 cd:主要功能是改变当前目录,…

    Linux干货 2016-07-04
  • Linux 常用命令之cp,一个可以煮饭的工具;

    cp 复制目录和文件 对于系统管理员来说,在文件系统中将文件和目录从一个位置复制到另外一个位置是家常便饭,而cp就是可以煮饭的工具之一。cp需要源对象和目标对象,源对象在前,目标对象在后面。 1. 常用选项 基本用法 [root@local tmp]# ll total 0 -rw-rw-r–. 1 gen…

    Linux干货 2016-08-02
  • 马哥教育网络班第21期+第五周课程作业

    1、 显示/boot/grub/grub.conf中以至少一个空白字符开头的行; [root@redhat6 ~]# grep '^[[:space:]]\+' /boot/grub/grub.conf   2、显示/etc/rc.d/rc.sysinit文件中以#开头,后面跟至少一个空白字符,而后又有至少一个非空白字符的…

    Linux干货 2016-08-08
  • Linux下硬连接和软连接的区别

    Linux下硬链接与软链接的区别   链接,是指在计算机文件之间传递参数和控制命令,并把它们组成一个可执行的整体的过程。例如我们常见的windows系统下的“快捷方式”,它是一种链接,人们可以通过它来直接访问计算机上的某个文件,不必逐级在硬盘目录下寻找;互联网上的“超文本链接”,它用文字链接的形式来指向一个页面,人们可以通过此链接快速访问网站的页面…

    Linux干货 2016-10-21

评论列表(1条)

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

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