欢迎光临
我们一直在努力

Linux练习题

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

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

bash通过状态返回值来输出此结果:

成功:0

失败:1~255

命令执行完成之后,其状态返回值保存于bash的特殊变量$?中:

~]# echo $?

示例:

[root@cuikedong /]# ls /

bin   dev  home  lib64  mnt  proc  run   srv  tmp  var

boot  etc  lib   media  opt  root  sbin  sys  usr

[root@cuikedong /]# echo $?

0

注:显示值为“0”命令执行成功

[root@cuikedong /]# lss /

-bash: lss: 未找到命令

[root@cuikedong /]# echo $?

127

注:显示值为“127”命令执行失败

 

命令正常执行时,有的还会有命令返回值:

根据命令其功能不同,结果各不相同:

 

bash的基础特性之:命令行展开

~:自动展开为用户的家目录,或指定的用户的家目录:

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

例如:/tmp/{a,b}相当于/tmp/a /tmp/b

示例:

创建/tmp/x/y1,/tmp/x/y2,/tmp/x/y1/a,/tmp/x/y1/b?

解答:

[root@cuikedong /]# mkdir -pv /tmp/x/{y1/{a,b},y2}

mkdir: 已创建目录 “/tmp/x”

mkdir: 已创建目录 “/tmp/x/y1”

mkdir: 已创建目录 “/tmp/x/y1/a”

mkdir: 已创建目录 “/tmp/x/y1/b”

mkdir: 已创建目录 “/tmp/x/y2”

[root@cuikedong /]# tree /tmp

/tmp

└── x

├── y1

│   ├── a

│   └── b

└── y2

[root@cuikedong /]#

 

创建a_c,a_d,b_c,b_d:

解答:

[root@cuikedong /]# mkdir -v /tmp/{a,b}_{c,d}

mkdir: 已创建目录 “/tmp/a_c”

mkdir: 已创建目录 “/tmp/a_d”

mkdir: 已创建目录 “/tmp/b_c”

mkdir: 已创建目录 “/tmp/b_d”

[root@cuikedong /]# ls -l /tmp

总用量 0

drwxr-xr-x. 2 root root  6 12月 10 15:06 a_c

drwxr-xr-x. 2 root root  6 12月 10 15:06 a_d

drwxr-xr-x. 2 root root  6 12月 10 15:06 b_c

drwxr-xr-x. 2 root root  6 12月 10 15:06 b_d

 

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

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

解答:

[root@cuikedong /]# mkdir -v /tmp/{a,b}_{c,d}

mkdir: 已创建目录 “/tmp/a_c”

mkdir: 已创建目录 “/tmp/a_d”

mkdir: 已创建目录 “/tmp/b_c”

mkdir: 已创建目录 “/tmp/b_d”

[root@cuikedong /]# ls -l /tmp

总用量 0

drwxr-xr-x. 2 root root  6 12月 10 15:06 a_c

drwxr-xr-x. 2 root root  6 12月 10 15:06 a_d

drwxr-xr-x. 2 root root  6 12月 10 15:06 b_c

drwxr-xr-x. 2 root root  6 12月 10 15:06 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@cuikedong /]# 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@cuikedong /]# 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

[root@cuikedong /]#

 

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

解答:

stat命令:状态(查看文件的元数据)

用法:

stat FILE,,,,,,

示例:

[root@cuikedong ~]# stat /tmp/cui

文件:”/tmp/cui”

大小:0          块:0          IO 块:4096   普通空文件

设备:fd00h/64768d Inode:67358650    硬链接:1

权限:(0644/-rw-r–r–)  Uid:(    0/    root)   Gid:(    0/    root)

环境:unconfined_u:object_r:user_tmp_t:s0

最近访问:2017-12-10 18:45:55.186935129 +0800

最近更改:2017-12-10 18:45:55.186935129 +0800

最近改动:2017-12-10 18:45:55.186935129 +0800

创建时间:-

修改时间戳

touch命令:手动更改时间戳

touch – change file timestamps

touch [OPTION]… FILE…

-c:指定的文件路径不存在时不予创建:

-a:仅修改access time

-m:仅修改modify time

-t STAMP

[[CC]YY]MMDDhhmm[.ss]

示例:

[root@cuikedong ~]# stat /tmp/cui

文件:”/tmp/cui”

大小:0          块:0          IO 块:4096   普通空文件

设备:fd00h/64768d Inode:67358650    硬链接:1

权限:(0644/-rw-r–r–)  Uid:(    0/    root)   Gid:(    0/    root)

环境:unconfined_u:object_r:user_tmp_t:s0

最近访问:2017-12-10 18:45:55.186935129 +0800

最近更改:2017-12-10 18:45:55.186935129 +0800(跟改前)

最近改动:2017-12-10 18:45:55.186935129 +0800

创建时间:-

[root@cuikedong ~]# touch -m -t 201808080808.08 /tmp/cui

[root@cuikedong ~]# stat /tmp/cui

文件:”/tmp/cui”

大小:0          块:0          IO 块:4096   普通空文件

设备:fd00h/64768d Inode:67358650    硬链接:1

权限:(0644/-rw-r–r–)  Uid:(    0/    root)   Gid:(    0/    root)

环境:unconfined_u:object_r:user_tmp_t:s0

最近访问:2017-12-10 18:45:55.186935129 +0800

最近更改:2018-08-08 08:08:08.000000000 +0800(更改后)

最近改动:2017-12-10 18:58:07.301294741 +0800

创建时间:-

 

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

解答:

定义别名:

~]# alias NAME=‘COMMAD’

注意:仅对当前shell进程有效

示例:

[root@cuikedong ~]# alias p=’pwd’

[root@cuikedong ~]# alias

alias p=’pwd’

[root@cuikedong ~]# p

/root

 

引用命令的执行结果:

$(COMMAND)

或‘COMMAND’

bash的基础特性:引用

强引用:”

弱引用:“”

命令引用:“(反引号)

示例:

[root@cuikedong ~]# touch /tmp/cui-`date +%Y-%m-%d-%H-%M-%S`  (命令引用)

[root@cuikedong ~]# ls /tmp

cui

cui-2017-12-10-19-21-41

[root@cuikedong ~]#

1 2 3 4
赞(0) 打赏
未经允许不得转载:运维那些事 » Linux练习题

评论 抢沙发

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址

觉得文章有用就打赏一下文章作者

非常感谢你的打赏,我们将继续给力更多优质内容,让我们一起创建更加美好的网络世界!

支付宝扫一扫打赏

微信扫一扫打赏