N26_W2

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

  • file 查看文件类型
  • touch 创建空文件,修改时间戳
  • rm 删除
  • cp 复制
  • mv 重命名,剪贴
  • chmod chown 修改文件权限

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

  • 命令执行返回值,存储在$?这个特殊变量内。可以使用echo显示或在shell脚本中引用。其中0表示正常执行完成,1-255表示不同的错误类型。

  • 命令行展开(expansion)

#花括号展开(Brace expansion)   
$ echo {1..10}
1 2 3 4 5 6 7 8 9 10  
$ echo {0001..5}
0001 0002 0003 0004 0005  
$ echo {1..10..2}
1 3 5 7 9  
#命令执行结果替换(Command substitution)  
#使用其他命令执行输出的结果作为当前命令的输入或参数
$  file `ls /dev/sda*`
/dev/sda:  block special
/dev/sda1: block special
/dev/sda2: block special
/dev/sda5: block special
#算数展开(Arithmetic expansion)  
$ echo $(( 5 + 6))
11  

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

  • 创建/tmp目录下的:a_c, a_d, b_c, b_d
$ mkdir -vp /tmp/{a,b}_{c,d}
mkdir: created directory ‘/tmp/a_c’  
mkdir: created directory ‘/tmp/a_d’  
mkdir: created directory ‘/tmp/b_c’  
mkdir: created directory ‘/tmp/b_d’  
  • 按要求创建目录结构
$ mkdir -vp /tmp/mylinux/{bin,boot/brub,dev,etc/{rc.d/init.d,\
sysconfig/network-scripts},lib/modules,lib64,proc,sbin,sys,\  
tmp,usr/local/{bin,sbin},var/{lock,log,run}}

$ tree /tmp/mylinux/
/tmp/mylinux/
├── bin
├── boot
│   └── brub
├── 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命令查看文件元数据信息
$ stat /etc/issue
  File: ‘issue’
  Size: 23              Blocks: 8          IO Block: 4096   regular file
Device: 802h/2050d      Inode: 131122      Links: 1  
Access: (0644/-rw-r--r--)  Uid: (    0/    root)   Gid: (    0/    root)  
Context: system_u:object_r:etc_t:s0  
Access: 2016-12-26 10:13:45.402284724 +0800  
Modify: 2016-11-30 02:12:59.000000000 +0800  
Change: 2016-12-17 10:50:22.102217170 +0800  
 Birth: -

#使用touch命令修改各时间戳
# -a  更改访问时间(access time)
# -m  更改文件内容修改时间(modification time)
# 注: 文件更改时间(change time)不能被手动修改
$ touch -at 201701031949 /tmp/testfile

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

#自定义别名:
alias rm='rm -i'  
#替换命令执行结果: 
cmd $(cmd0)  
#或者
cmd `cmd0`  

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

ls /var/l*[[:digit:]]*[:lower:]  

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

ls /etc/[[:digit:]]*[![:digit:]]  

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

ls /etc/[![:alpha:]][[:alpha:]]*  

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

touch /tmp/tfile-$(date +%F-%H-%M-%S)  

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

cp -a /etc/p*[![:digit:]] /tmp/mytest1  

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

cp -a /etc/*.d /tmp/mytest2  

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

cp -a /etc/{l,m,n}*.conf /tmp/mytest3