马哥教育网络21期+第2周博客练习

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

        • cat, tac

        • more

more [OPTIONS…] FILE…

-d: 显示翻页及退出提示

        • less

less [OPTIONS…] FILE…

        • head

head [OPTION]… [FILE]…

-c #: 指定获取前#字节

-n #: 指定获取前#行

-#:

        • tail 

tail [OPTION]… [FILE]…

-c #: 指定获取后#字节

-n #: 指定获取后#行

-#:

-f: 跟踪显示文件新追加的内容;

more:

[root@CentOS6 tmp]# more test.txt 
111
222
dd

less:

111
222
ddd

test.txt (END)

head和tail:

[root@CentOS6 tmp]# cat test.txt 
111
222
ddd
[root@CentOS6 tmp]# head -2 test.txt |tail -1
222

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

  • 执行状态返回值:

    $?:保存最近一条命令执行状态结果;

    0:成功

    1-255:失败

[root@CentOS6 tmp]# ls
fstab  inittab  l  l1d  l23f  lABd  magedu.com  mageedu  mageedu.com  passwd.out  system-release  test  test.out  vimtest  who.out
[root@CentOS6 tmp]# echo $?
0
[root@CentOS6 ~]# lsls /etc
-bash: lsls: command not found
[root@CentOS6 ~]# echo $?
127
  • 命令行展开: 

                ~: 展开为用户的主目录

~USERNAME:展开为指定用户的主目录

{}:可承载一个以逗号分隔的列表,并将其展开为多个路径

[root@CentOS6 ~]# ls ~
anaconda-ks.cfg  bin  install.log  install.log.syslog
[root@CentOS6 ~]# pwd
/root
[root@CentOS6 ~]# cd ~santi
[root@CentOS6 santi]# pwd
/home/santi
[root@CentOS6 santi]# cd
[root@CentOS6 ~]# mkdir -pv ~/test/{bin,sbin/{test1,test2}}
mkdir: 已创建目录 "/root/test"
mkdir: 已创建目录 "/root/test/bin"
mkdir: 已创建目录 "/root/test/sbin"
mkdir: 已创建目录 "/root/test/sbin/test1"
mkdir: 已创建目录 "/root/test/sbin/test2"

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

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

[root@CentOS6 ~]# mkdir /tmp/{a,b}_{c,d}
[root@CentOS6 ~]# ls /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

[root@CentOS6 tmp]# 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/{local,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/local"
mkdir: 已创建目录 "/tmp/mylinux/var/log"
mkdir: 已创建目录 "/tmp/mylinux/var/run"
[root@CentOS6 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
    ├── local
    ├── log
    └── run

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

  • 元数据信息包含:

File:文件名

Size:文件大小      Blocks:占据的磁盘块     IO Block:I/O块读取大小

Device:所在设备      Inode:占据的Inode号     Links:连接数

Access:文件权限      Uid:属主          Gid:属组

Access:最近访问时间

Modify:文件内容最近修改时间

Change:元数据最近修改时间,如果修改了元数据,该时间戳会自动变化

  • 查看:stat命令

[root@CentOS6 tmp]# stat fstab 
  File: "fstab"
  Size: 783       	Blocks: 8          IO Block: 4096   普通文件
Device: fd00h/64768d	Inode: 2093137     Links: 1
Access: (0644/-rw-r--r--)  Uid: (    0/    root)   Gid: (    0/    root)
Access: 2016-07-17 13:28:48.349008446 +0800
Modify: 2016-07-17 13:28:48.349008446 +0800
Change: 2016-07-17 13:28:48.349008446 +0800
  • 修改:touch命令

    touch:

      • 语法:

        • touch [OPTION]… FILE…

        • -a: only atime

        • -m: only mtime

        • -t STAMP:

              [[CC]YY]MMDDhhmm[.ss]

        • -c: 如果文件不存,则不予创建

[root@CentOS6 tmp]# stat fstab 
  File: "fstab"
  Size: 783       	Blocks: 8          IO Block: 4096   普通文件
Device: fd00h/64768d	Inode: 2093137     Links: 1
Access: (0644/-rw-r--r--)  Uid: (    0/    root)   Gid: (    0/    root)
Access: 2016-07-17 13:28:48.349008446 +0800
Modify: 2016-07-17 13:28:48.349008446 +0800
Change: 2016-07-17 13:28:48.349008446 +0800
[root@CentOS6 tmp]# touch -a fstab 
[root@CentOS6 tmp]# stat fstab 
  File: "fstab"
  Size: 783       	Blocks: 8          IO Block: 4096   普通文件
Device: fd00h/64768d	Inode: 2093137     Links: 1
Access: (0644/-rw-r--r--)  Uid: (    0/    root)   Gid: (    0/    root)
Access: 2016-07-17 13:41:17.421007929 +0800
Modify: 2016-07-17 13:28:48.349008446 +0800
Change: 2016-07-17 13:41:17.421007929 +0800
[root@CentOS6 tmp]# touch -m fstab 
[root@CentOS6 tmp]# stat fstab 
  File: "fstab"
  Size: 783       	Blocks: 8          IO Block: 4096   普通文件
Device: fd00h/64768d	Inode: 2093137     Links: 1
Access: (0644/-rw-r--r--)  Uid: (    0/    root)   Gid: (    0/    root)
Access: 2016-07-17 13:41:17.421007929 +0800
Modify: 2016-07-17 13:41:29.734007208 +0800
Change: 2016-07-17 13:41:29.734007208 +0800

###Change因为元数据修改所以自动变化。

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

  • 别名:alias命令

    • 查看:

[root@CentOS6 tmp]# alias
alias cp='cp -i'
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
    • 定义:

[root@CentOS6 tmp]# alias grep='grep --color=auto'
[root@CentOS6 tmp]# alias
alias cp='cp -i'
alias grep='grep --color=auto'

###以上定义只存在于当前bash进程,切换进程或者关闭进程就失效,如果想永久定义别名,需要在配置文件中定义。

  • 命令引用:

name=`COMMAND`, name=$(COMMAND)

[root@CentOS6 tmp]# name=`hostname`
[root@CentOS6 tmp]# echo $name
CentOS6
[root@CentOS6 tmp]# name2=$(hostname)
[root@CentOS6 tmp]# echo $name2
CentOS6

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

[root@CentOS6 ~]# ls /var/1*[0-9]*[a-z]
ls: 无法访问/var/1*[0-9]*[a-z]: 没有那个文件或目录
[root@CentOS6 ~]# ls /var/1*[[:digit]]*[[:lower:]]
ls: 无法访问/var/1*[[:digit]]*[[:lower:]]: 没有那个文件或目录

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

[root@CentOS6 ~]# ls /etc/[0-9]*[^[:digit:]]
ls: 无法访问/etc/[0-9]*[^[:digit:]]: 没有那个文件或目录

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

[root@CentOS6 ~]# ls /etc/[^[:alpha:]][[:alpha:]]*
ls: 无法访问/etc/[^[:alpha:]][[:alpha:]]*: 没有那个文件或目录

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

[root@CentOS6 ~]# mkdir /tmp/tfile-`date +%F-%H-%M-%S`
[root@CentOS6 ~]# ls /mtp
fstab  mylinux  tfile-2016-07-17-14-07-23

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

[root@CentOS6 mytest1]# cp -a /etc/p*[^0-9] .
[root@CentOS6 mytest1]# ls
pam.d   passwd-       pinforc   pm                            popt.d       ppp            prelink.conf.d  profile.d  purple
pango   pbm2ppa.conf  pki       pm-utils-hd-apm-restore.conf  portreserve  prelink.cache  printcap        protocols
passwd  pcmcia        plymouth  pnm2ppa.conf                  postfix      prelink.conf   profile         pulse

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

[root@CentOS6 tmp]# cp -a /etc/*.d mytest2/
[root@CentOS6 tmp]# ls mytest2/
ant.d              cron.d         event.d       logrotate.d    oddjobd.conf.d  profile.d  rc3.d  rc.d           sane.d       sysctl.d
bash_completion.d  depmod.d       init.d        lsb-release.d  pam.d           rc0.d      rc4.d  request-key.d  setuptool.d  xinetd.d
cgconfig.d         dnsmasq.d      latrace.d     makedev.d      popt.d          rc1.d      rc5.d  rsyslog.d      statetab.d   yum.repos.d
chkconfig.d        dracut.conf.d  ld.so.conf.d  modprobe.d     prelink.conf.d  rc2.d      rc6.d  rwtab.d        sudoers.d

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

[root@CentOS6 tmp]# cp -a /etc/[1mn]*.conf mytest3/
[root@CentOS6 tmp]# ls mytest3/
mke2fs.conf  mtools.conf  nfsmount.conf  nsswitch.conf  ntp.conf

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

(0)
sandiegoitsandiegoit
上一篇 2016-07-17 21:50
下一篇 2016-07-17 21:50

相关推荐

  • 网络管理

    说起网络,大家都不陌生,因为大家天天上网嘛,连路边老大爷都会聊微信了,但是我们所了解的网络只是茫茫网络大海中的一叶扁舟,网络的范围其实有很大,里面涉及的东西也非常多,现在让小编带你一点一点去了解它吧,相信大家看了之后,会有不一样的体会呢! 1、 什么是网络? 网络是由节点和连线构成,表示诸多对象及其相互联系。在数学上,网络是一种图,一般认为专指加权图。网络除…

    2017-09-02
  • 学习开始拼搏、加油、努力

          搏一搏单车变摩托,用4个月时间为自己创造一个更好的未来,欧耶!。。。

    Linux干货 2016-10-28
  • 第七周

    1、创建一个10G分区,并格式为ext4文件系统; (1) 要求其block大小为2048, 预留空间百分比为2, 卷标为MYDATA, 默认挂载属性包含acl; (2) 挂载至/data/mydata目录,要求挂载时禁止程序自动运行,且不更新文件的访问时间戳; fdisk /dev/sdb欢迎使用 fdisk (util-li…

    Linux干货 2016-09-19
  • redis主/从配置及基于sentinel的故障转移

    一、NoSQL基础概念: ACID:原子性、一致性、隔离性、持久性;特性:数据量大、数据变化非常大(数据增长化、流量分布变化、数据间耦合结构变化)、数据源很多; CAP、BASECAP C:多个数据节点的的数据一致;A:用户发出请求后的有限时间范围内返回结果;P:network partition,网络发生分区后,服务是否依可用;CAP理论:一个分布式系统不…

    Linux干货 2014-10-15
  • 输出重定向 输入重定向 管道简单介绍 -20160729

    输出重定向 输入重定向 管道简单介绍 标准输入和输出 我们先来了解下输入和输出的概念: 在计算机中我们了解到计算机的组成部分:其中有输入 输出设备。       输出重定向 对于程序来说: 程序 :指令 + 数据 对于数据来说,数据可以由我们通过键盘输入,或者程序直接使用存储设备上的数据,我们称为读入 数据,程序处理数据后需要返…

    Linux干货 2016-08-04
  • GPG——另一种加密信息的方式

    GPG ·使用gpg实现对称加密 ·对称加密file文件          gpg -c file          ls file.gpg ·在另一台主机上解密file   &n…

    Linux干货 2016-09-22

评论列表(1条)

  • 马哥教育
    马哥教育 2016-07-17 22:07

    写的很好,排版也很漂亮,加油