马哥教育网络20期+第二周练习博客

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

ls:list(查看文件)

命令格式:

ls [OPTION]... [FILE]...

选项:

-a, --all: 显示所有文件,包括隐藏文件;
-l: 长格式
-h, --human-readable:单位换算
-d: 显示目录自身的相关属性;通常要与-l一起使用;
-r, --reverse: 逆序显示
-R, --recursive: 递归

示例:

[root@localhost ~]# ls /home/jobs/
123.txt  Documents  grep.txt         ignoredups  Music  Pictures  scripts    test_dsa_1024.pub
Desktop  Downloads  id_rsa_2048.pub  index.html  perl5  Public    Templates  Videos

cp:copy(复制文件)

命令格式:

cp [OPTION]... [-T] SOURCE DEST
cp [OPTION]... SOURCE... DIRECTORY
cp [OPTION]... -t DIRECTORY SOURCE...

cp SRC DEST
    SRC是文件:
        如果目标不存在:新建DEST,并将SRC中内容填充至DEST中;
        如果目录存在:
            如果DEST是文件:将SRC中的内容覆盖至DEST中;
                此时建议为cp命令使用-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:强行

示例:

[root@localhost ~]# cp -r /etc /tmp/abc
[root@localhost ~]# ls /tmp/abc/
abrt                        dracut.conf.d  kderc                     opt               securetty
adjtime                     drirc          kdump.conf                os-release        security...

mv:move(移动文件) 

命令格式:

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

选项:

-i: 交互式
-f: 强制
-v: 显示已经完成的

示例:

[root@localhost ~]# mv /tmp/abc /home/jobs/
[root@localhost ~]# ls /home/jobs/abc/
abrt                        dracut.conf.d  kderc                     opt               securetty
adjtime                     drirc          kdump.conf                os-release        security...

rm:remove(删除文件)

命令格式:

rm [OPTION]... FILE...

选项:

-i: 交互式
-f: 强制删除
-r: 递归

示例:

[root@localhost ~]# rm -rf /home/jobs/abc
[root@localhost ~]# ls /home/jobs/
123.txt  Documents  grep.txt         ignoredups  Music  Pictures  scripts    test_dsa_1024.pub
Desktop  Downloads  id_rsa_2048.pub  index.html  perl5  Public    Templates  Videos

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

bash使用特殊变量$?保存最近一条命令的执行状态结果,0表示成功,1-255表示失败

示例:

成功示例:
[root@localhost ~]# ls /home/jobs/
123.txt  Documents  grep.txt         ignoredups  Music  Pictures  scripts    test_dsa_1024.pub
Desktop  Downloads  id_rsa_2048.pub  index.html  perl5  Public    Templates  Videos
[root@localhost ~]# echo $?
0        ----------->成功
失败示例:
[root@localhost ~]# cat /abc/ss.txt
cat: /abc/ss.txt: No such file or directory
[root@localhost ~]# echo $?
1        ----------->失败

命令行展开:

~: 展开为用户的主目录
~USERNAME:展开为指定用户的主目录
{}:可承载一个以逗号分隔的列表,并将其展开为多个路径

示例:

[root@localhost ~]# mkdir /tmp/{a,b,c}    -------->执行过程相当于mkdir /tmp/a;mkdir /tmp/b;mkdir /tmp/c
[root@localhost ~]# tree /tmp
/tmp
├── a
├── b
├── c

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

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

mkdir {a,b}_{c,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
[root@localhost ~]# mkdir -p /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}}

[root@localhost tmp]# tree 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

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

查看文件元数据信息:

命令格式:

stat [OPTION]... FILE...

示例:

[root@localhost ~]# stat /tmp/pass/
  File: ‘/tmp/pass/’                                      ---->文件路径
  Size: 6         	Blocks: 0          IO Block: 4096   directory    ---->文件大小、块、IO块、目录
Device: fd00h/64768d	Inode: 203927352   Links: 2                       ---->驱动、节点、链接
Access: (0755/drwxr-xr-x)  Uid: (    0/    root)   Gid: (    0/    root)   ---->访问权限、UID、GID
Context: unconfined_u:object_r:user_tmp_t:s0
Access: 2016-06-22 15:13:16.331862500 +0800                 ---->access time:访问时间,简写为atime,读取文件内容
Modify: 2016-06-22 15:13:16.331862500 +0800                 ---->modify time:修改时间,简写为mtime,改变文件内容(数据)
Change: 2016-06-22 15:13:16.331862500 +0800                 ---->change time:改变时间,简写为ctime,元数据发生改变
 Birth: -

修改文件时间戳信息:

命令格式:

touch [OPTION]... FILE...

选项:

-a: only atime:只修改访问时间
-m: only mtime:只修改修改时间
-t STAMP:[[CC]YY]MMDDhhmm[.ss]:使用[[CC]YY]MMDDhhmm[.ss]替换全部时间
-c: 如果文件不存,则不予创建

示例:

[root@localhost ~]# stat /tmp/pass/
  File: ‘/tmp/pass/’
  Size: 6         	Blocks: 0          IO Block: 4096   directory
Device: fd00h/64768d	Inode: 203927352   Links: 2
Access: (0755/drwxr-xr-x)  Uid: (    0/    root)   Gid: (    0/    root)
Context: unconfined_u:object_r:user_tmp_t:s0
Access: 2016-06-22 15:13:16.331862500 +0800          ---->修改访问时间之前
Modify: 2016-06-22 15:13:16.331862500 +0800
Change: 2016-06-22 15:13:16.331862500 +0800
 Birth: -
 
[root@localhost ~]# touch -a /tmp/pass/              ---->修改访问时间

[root@localhost ~]# stat /tmp/pass/
  File: ‘/tmp/pass/’
  Size: 6         	Blocks: 0          IO Block: 4096   directory
Device: fd00h/64768d	Inode: 203927352   Links: 2
Access: (0755/drwxr-xr-x)  Uid: (    0/    root)   Gid: (    0/    root)
Context: unconfined_u:object_r:user_tmp_t:s0
Access: 2016-06-22 15:28:51.060845953 +0800          ---->修改访问时间之后
Modify: 2016-06-22 15:13:16.331862500 +0800
Change: 2016-06-22 15:28:51.060845953 +0800
 Birth: -

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

定义别名alias

命令格式:

alias [alias-name[=string] ...]

示例:

[root@localhost ~]# alias cdnet='cd /etc/sysconfig/network-scripts/'
[root@localhost ~]# cdnet
[root@localhost network-scripts]# pwd
/etc/sysconfig/network-scripts

撤销别名使用unalias

引用另一个命令的执行结果:管道、变量、“

“管道”示例:

[root@localhost ~]# cat /etc/passwd | grep root
root:x:0:0:root:/root:/bin/bash
operator:x:11:0:operator:/root:/sbin/nologin
dockerroot:x:983:978:Docker User:/var/lib/docker:/sbin/nologin

“变量”示例:

[root@localhost ~]# abc=$(cat /etc/fstab)
[root@localhost ~]# echo $abc
# # /etc/fstab # Created by anaconda on Fri Mar 11 22:14:07 2016 # # Accessible filesystems, 
by reference, are maintained under '/dev/disk' # See man pages fstab(5), findfs(8), mount(8) 
and/or blkid(8) for more info # /dev/mapper/centos-root / xfs defaults 0 0 UUID=73822afe-bc0
0-431b-8851-0151d8054a67 /boot xfs defaults 0 0 /dev/mapper/centos-home /home xfs defaults 0
 0 /dev/mapper/centos-swap swap swap defaults 0 0
[root@localhost ~]# 
[root@localhost ~]# cat /etc/fstab 

#
# /etc/fstab
# Created by anaconda on Fri Mar 11 22:14:07 2016
#
# Accessible filesystems, by reference, are maintained under '/dev/disk'
# See man pages fstab(5), findfs(8), mount(8) and/or blkid(8) for more info
#
/dev/mapper/centos-root /                       xfs     defaults        0 0
UUID=73822afe-bc00-431b-8851-0151d8054a67 /boot                   xfs     defaults        0 0
/dev/mapper/centos-home /home                   xfs     defaults        0 0
/dev/mapper/centos-swap swap                    swap    defaults        0 0

““”示例:

[root@localhost ~]# echo `uname -r`
3.10.0-327.el7.x86_64

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

[root@localhost ~]# ls /var | grep "^[1].*[0-9].*[[:lower:]]"
1ss5ss
[root@localhost ~]# ls /var
1ss5ss   adm    crash  empty  games   kerberos  local  log   named  opt       run    target  www
account  cache  db     ftp    gopher  lib       lock   mail  nis    preserve  spool  tmp     yp

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

[root@localhost ~]# ls /etc | grep "^[[:digit:]].*[^[:digit:]]\>"
1aa
1ab
1ac
1ad
(结果显示的文件是我自己在/etc目录下创建的,只是为了验证正则表达式是否正确)

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

[root@localhost ~]# ls /etc | grep "^[^[:alpha:]][[:alpha:]].*"
1aa
1ab
1ac
1ad
(结果显示的文件是我自己在/etc目录下创建的,只是为了验证正则表达式是否正确)

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

[root@localhost ~]# touch /tmp/tfile-$(date +%Y-%m-%d-%H-%M-%S)
[root@localhost ~]# ls /tmp/ | grep tfile.*
tfile-2016-06-22-16-03-58

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

[root@localhost ~]# cp -r  /etc/p*[^0-9] /tmp/mytest1/ 
[root@localhost ~]# ls /tmp/mytest1/
pam.d    pbm2ppa.conf  pcp.env  pear.conf  pinforc   pm            portreserve  prelink.conf.d  profile.d  purple
passwd   pcp           pcp.sh   php.d      pki       pnm2ppa.conf  postfix      printcap        protocols  python
passwd-  pcp.conf      pear     php.ini    plymouth  popt.d        ppp          profile         pulse

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

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

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

[root@localhost ~]# cp -r /etc/[1,m,n]*.conf /tmp/mytest3
[root@localhost ~]# ls /tmp/mytest3
man_db.conf  mke2fs.conf  mtools.conf  named.conf  nfsmount.conf  nsswitch.conf  ntp.conf  numad.conf

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

(0)
AnacondaAnaconda
上一篇 2016-06-23
下一篇 2016-06-23

相关推荐

  • 一次css页面加载异常的折腾

    1       原始需求 近期在搭建平台,因多域名会分割流量,所以希望将类似 ansible.178linux.com  salt.178linux.com qa.178linux.com 这些平台整合为一个平台,所示如下 ansible.178linux.com =è www.178li…

    系统运维 2015-06-10
  • 推荐-运维学习笔记-Puppet应用配置的工作原理

    背景知识 Puppet的核心功能是配置管理。一般来说,用户在master上集中做配置,同时,被管理节点上的agent会定期从master上下载配置数据,再应用(apply)到本地,从而使管理节点的状态(用户,组,文件,安装包,服务等的设置和运行状态)与masters上定义的保持一致。 有时,出于测试的目的,并不希望真的应用配置,那么就需要执行puppet a…

    2016-06-01
  • web服务介绍二)

    apache指令说明:http://httpd.apache.org/docs/2.2/mod/directives.html Listen 172.18.100.67:8081  监听某个指定地址和端口启动前检查一下语法:    httpd -t 如果要监听多个端口,要多行写    Listen 80&nb…

    Linux干货 2017-04-20
  • 常用的shell命令

    硬件: 1.cpu相关 lscpu:查看cpu的统计信息 cat /proc/cpuinfo :查看cpu详细信息,如每个cpu的型号 2.内存相关 free -m:概要查看内存情况,这里的单位是MB cat  /etc/meminfo   :查看内存详细信息 3.磁盘相关: l…

    Linux干货 2016-08-22
  • 文本编辑工具Sed

                    Stream EDitor, 行编辑器         sed是一种流编辑器,它一次处理一行内容。处理时,一次性的先把文件读入内存中,并且开辟一块内存空间,该内存空间称为“模式空间”(pa…

    Linux干货 2016-08-10
  • 第八周-Shell脚本编程

    1、写一个脚本,使用ping命令探测172.16.250.1-172.16.250.254之间的所有主机的在线状态; 在线的主机使用绿色显示; 不在线的主使用红色显示; #!/bin/bash for i in {1..254}; do { ip=172.16.250.$i if ping -c 1 -w 1 $ip &> /dev/null …

    Linux干货 2017-08-23

评论列表(1条)

  • 马哥教育
    马哥教育 2016-06-23 11:33

    写的很棒,并且有案例作为辅助说明,有没有尝试过第10题以数字结尾会不会也复制过去