第二周作业之:bash状态返回 | 命令展开 | 文件元组信息 | 命令别名|课后练习

echo

bash的基础特性:命令的执行状态结果

命令的执行状态结果:
bash通过状态返回值输出此结果:
成功:0
失败:1-255
命令执行完成之后,其状态返回值保存于bash的特殊变量$?
[root@localhost /]# echo $?
0
[root@localhost /]# ls aa
ls: cannot access aa: No such file or directory
[root@localhost /]# echo $?
2

命令正常执行时,有的还有命令返回值
根据命令及其功能不同,结果各不相同:

bash的基础特性之:命令行展开
~:自动展开为用户的家目录,或者指定用户的家目录
{}: 可承载一个以逗号分隔的路径列表,并能够将其展开为多个路径
例如:/tmp/{a,b}相当于 /tmp/a /tmp/b
mkdir -pv /tmp/x/{y1/{a,b},y2}

1. 创建/tmp目录下a_c,a_d,b_c,b_d

 [root@loong ~]# ls /tmp
 conf  yum.log
 [root@loong ~]# mkdir /tmp/{a,b}_{c,d}
 [root@loong ~]# ls /tmp
 a_c  a_d  b_c  b_d  conf  yum.log
2. 创建/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

执行过程:-p表示如父目录不存在,则自动创建之。-v表示显示创建过程
tree命令显示目录的树形结构

文件的元数据信息有哪些,分别表示哪些含义,如何查看

元数据(Metadata),又称中介数据、中继数据,为描述数据的数据(data about data),主要是描述数据属性(property)的信息,用来支持如指示存储位置、历史数据、资源查找、文件记录等功能。元数据算是一种电子式目录,为了达到编制目录的目的,必须在描述并收藏数据的内容或特色,进而达成协助数据检索的目的。因此,元数据就是数据的数据。任何文件系统中的数据分为数据和元数据。数据指文件中实际存在的数据,元数据指用来描述该文件的系统特征的数据。诸如访问权限、文件拥有者以及文件数据块的分布信息(inode…)等等。在集群文件系统中,分布信息包括文件在磁盘上的位置以及磁盘在集群中的位置。用户需要操作一个文件必须首先得到它的元数据,才能定位到文件的位置并且得到文件的内容或相关属性。

文件系统元数据(metadata)的更改都被保存在一份单独的日志里,当发生系统崩溃时可以根据日志正确地恢复数据。除此之外,日志使系统重新启动时不必进行文件系统的检查,从而缩短了恢复时间。
查看元数据的命令是stat
stat [OPTION]… FILE…

[root@loong tmp]# stat numad.conf
File: "numad.conf"
Size: 91         Blocks: 8          IO Block: 4096   普通文件
Device: 802h/2050d Inode: 147231      Links: 1
Access: (0644/-rw-r--r--)  Uid: (    0/    root)   Gid: (    0/    root)
Access: 2017-07-19 10:44:44.170998930 +0800   //访问时间
Modify: 2017-07-19 10:44:44.170998930 +0800   //修改时间,即修改文件内容
Change: 2017-07-19 10:44:44.170998930 +0800  //改变时间,指元数据改变

可以看出获得的元数据包括了文件名,文件大小的字节数,文件占用的块数(blocks),文件权限、用户属主和属组信息,以及最后三行的时间戳信息。

修改文件的时间戳信息
使用touch命令来修改时间戳信息
touch [OPTION]… FILE…
-c: 指定的文件路径不存在时不予创建;
-a: 仅修改access time;
-m:仅修改modify time;
-t STAMP
[[CC]YY]MMDDhhmm[.ss]

例:直接touch filename,将文件的时间戳修改为当前时间。会修改所有的三个时间戳。

[root@loong tmp]# stat numad.conf
File: "numad.conf"
Size: 91         Blocks: 8          IO Block: 4096   普通文件
Device: 802h/2050d Inode: 147231      Links: 1
Access: (0644/-rw-r--r--)  Uid: (    0/    root)   Gid: (    0/    root)
Access: 2017-05-05 11:30:10.000000000 +0800
Modify: 2017-07-19 10:44:44.170998930 +0800
Change: 2017-07-19 11:37:05.144985181 +0800
[root@loong tmp]# touch numad.conf
[root@loong tmp]# stat numad.conf 
  File: "numad.conf"
  Size: 91         Blocks: 8          IO Block: 4096   普通文件
Device: 802h/2050d Inode: 147231      Links: 1
Access: (0644/-rw-r--r--)  Uid: (    0/    root)   Gid: (    0/    root)
Access: 2017-07-19 14:38:31.574996407 +0800
Modify: 2017-07-19 14:38:31.574996407 +0800
Change: 2017-07-19 14:38:31.574996407 +0800

例:使用-a选项,仅修改atime,并指定时间为2017-6-21 15:22:05

[root@loong tmp]# touch -a -t 201706211522.05 numad.conf 
[root@loong tmp]# stat numad.conf 
File: "numad.conf"
Size: 91         Blocks: 8          IO Block: 4096   普通文件
Device: 802h/2050d Inode: 147231      Links: 1
Access: (0644/-rw-r--r--)  Uid: (    0/    root)   Gid: (    0/    root)
Access: 2017-06-21 15:22:05.000000000 +0800
Modify: 2017-07-19 14:38:31.574996407 +0800
Change: 2017-07-19 14:45:09.950992896 +0800
命令别名
alias命令用来设置指令的别名。我们可以使用该命令可以将一些较长的命令进行简化。使用alias时,用户必须使用单引号''将原来的命令引起来,防止特殊字符导致错误。
alias命令的作用只局限于该次登入的操作。若要每次登入都能够使用这些命令别名,则可将相应的alias命令存放到bash的初始化文件/etc/bashrc中。
例如:alias l=‘ls -lsh' 将重新定义ls命令,现在只需输入l就可以列目录了。直接输入 alias 命令会列出当前系统中所有已经定义的命令别名。
查看系统已经设置的别名:
alias -p
alias cp='cp -i'
alias l.='ls -d .* --color=tty'
alias ll='ls -l --color=tty'
alias ls='ls --color=tty'
alias mv='mv -i'
alias rm='rm -i'
alias which='alias | /usr/bin/which --tty-only --read-alias --show-dot --show-tilde'
无标题
请心里默写出答案!

本文来自投稿,不代表Linux运维部落立场,如若转载,请注明出处:http://www.178linux.com/95972

(0)
cyzcyz
上一篇 2018-04-14
下一篇 2018-04-15

相关推荐