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