第二周博客作业

1.Linux上的文件管理类命令都有那些,其常用的使用方法及其相关示例演示。
2.Bash的工作特性之命令执行状态返回值和命令行展开所涉及的内容及其示例演示。
3.请使用命令行展开功能来完成以下的练习。
4.文件的元数据信息有哪些,分别表示什么含义,如何查看?如何修改文件的时间戳信息。
5.如何定义一个命令的别名,如何在命令中引用另一个命令的执行结果?
6.显示/var目录下所有以1开头,以一个小写字母结尾,且中间至少出现一位数字(可以有其他字符)的文件或目录。
7.显示/etc目录下,以任意一个数字开头,且以非数字结尾的文件或目录。
8.显示/etc目录下,以非字母开头,后面跟了一个字母以及其他任意长度任意字符的文件或目录。
9.在/tmp目录下创建以tgile开头,后跟当前日期和时间的文件,文件名形如:tfile-2016-05-27-09-32-22
10.复制/etc目录下所有以p开头,以非数字结尾的文件或目录到/tmp/mytest1目录中。
11.复制/etc目录下所有以.d结尾的文件或目录到/tmp/mytest2目录中。
12.复制/etc目录下所有以l或m或n开头,以.conf结尾的文件至/tmp/mytest3目录中。

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

文件管理工具:cp, mv, rm

cp命令:copy复制命令

SOURCE:源文件;DEST:目标文件;

 

单源复制:cp [OPTION]… [-T] SOURCE DEST

多源复制:cp [OPTION]… SOURCE… DIRECTORY

cp [OPTION]… -t DIRECTORY SOURCE…

 

单源复制:cp [OPTION]… [-T] SOURCE DEST

如果DEST不存在:则事先创建此文件,并复制源文件的数据流至DEST中;

  示例:[root@localhost ~]# cp /etc/inittab /tmp

              [root@localhost ~]# ls /tmp

               inittab  

如果DEST存在:

如果DEST是非目录文件:则覆盖目标文件;

如果DEST是目录文件:则先在DEST目录下创建一个与源文件同名的文件,并复制其数据流;

 示例:  [root@localhost ~]# cp /etc/inittab /tmp

                cp:是否覆盖”/tmp/inittab”? y

                [root@localhost ~]# ls /tmp

                 inittab      

 

多源复制:cp [OPTION]… SOURCE… DIRECTORY

cp [OPTION]… -t DIRECTORY SOURCE…

 

如果DEST不存在:错误;

如果DEST存在:

如果DEST是非目录文件:错误;

如果DEST是目录文件:分别复制每个文件至目标目录中,并保持原名;

  示例:[root@localhost tmp]# ls test

               123  234,345

              [root@localhost tmp]# cp /tmp/test/123 /tmp/test/234,345 /tmp/test2

              [root@localhost tmp]# ls /tmp/test2

              123  234,345

 

常用选项:

-i:交互式复制,即覆盖之前提醒用户确认;

-f:强制覆盖目标文件;

-r, -R:递归复制目录;

-d:复制符号链接文件本身,而非其指向的源文件;

-a:-dR –preserve=all, archive,用于实现归档;

–preserv=

mode:权限

ownership:属主和属组

timestamps: 时间戳

context:安全标签

xattr:扩展属性

links:符号链接

all:上述所有属性

 

mv命令:move

mv [OPTION]… [-T] SOURCE DEST

mv [OPTION]… SOURCE… DIRECTORY

mv [OPTION]… -t DIRECTORY SOURCE..

 

常用选项:

-i:交互式;

-f:force

示例:[root@localhost tmp]# ls  123.txt

             [root@localhost ~]# mv /tmp/123.txt /tmp/test/

             [root@localhost ~]# ls /tmp/test

             123  123.txt  234,345

 

rm命令:remove

rm [OPTION]… FILE…

 示例:[root@localhost ~]# ls /tmp/test

              123  123.txt  234,345

             [root@localhost ~]# rm /tmp/test/123

              rm:是否删除普通空文件 “/tmp/test/123″?y

             [root@localhost ~]# ls /tmp/test

               123.txt  234,345

 

常用选项:

-i:interactive

-f:force

-r: recursive

 

删除目录:rm -rf /PATH/TO/DIR

危险操作:rm -rf /*

 

注意:所有不用的文件建议不要直接删除,而是移动至某个专用目录;(模拟回收站)

 

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

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

命令执行的状态结果:

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

成功:0

失败:1-255

命令执行完成之后,其状态返回值保存于bash的特殊变量$?中; 命令正常执行时,有的还回有                 命令返回值:根据命令及其功能不同,结果各不相同;

 示例:

[root@localhost ~]# ls
[root@localhost ~]# echo $?
0
[root@localhost ~]# asdf
-bash: asdf: command not found
[root@localhost ~]# echo $?
127

命令行展开;

以某些bash能够解释的符号来代替命令中的某些参数。

~:展开为用户的家目录;

例:切换至家目录

cd ~;pwd

/root

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

例:在/tmp/d目录下创建f1,f2,f3三个文件

ttouch /tmp/d/f{1,2,3}

        示例: [root@localhost ~]# touch /tmp/d/f{1,2,3}

                     [root@localhost ~]# tree

.                   └── d

                   ├── f1

                   ├── f2

                   └── f3

                 1 directory, 3 files

                 [root@localhost tmp]#

 

 

 

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

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

示例:   [root@localhost ~]# mkdir -v /tmp/{a,b}_{c,d}

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

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

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

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

                  [root@localhost ~]# tree /tmp

                  /tmp

               ├── a_c

               ├── a_d

              ├── b_c

             ├── b_d

 

  (2)  创建/tmp/mylinux目录下的:

1

示例:  [root@localhost ~]# mkdir -p                   /tmp/mylinux/{bin,boot/grub,dev,etc/{rc.d/init.d,sysconfig/network-        soripts},lib/modiles,lib64,proc,sbin,sys,tmp,usr/local/{bin,sbin},var/{look,log,run}}

[root@localhost ~]# tree /tmp/mylinux

/tmp/mylinux

├── bin

├── boot

│   └── grub

├── dev

├── etc

│   ├── rc.d

│   │          └── init.d

│   └── sysconfig

│              └── network-soripts

├── lib

│         └── modiles

├── lib64

├── proc

├── sbin

├── sys

├── tmp

├── usr

│   └── local

│             ├── bin

│              └── sbin

└── var

├── log

├── look

└── run

24 directories, 0 files

 

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

 

          (1)文件的元数据信息及查看

文件的数据分两种:一种元数据,既属性数据;一种就是数据本身;可使用stat命令查看文件的元数据:

例如:

]# stat /etc/passwd

文件:”/etc/passwd”

大小:2483 块:8 IO 块:4096 普通文件

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

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

环境systemu:objectr:passwdfilet:s0

最近访问:2016-09-22 22:07:14.897045766 +0800

最近更改:2016-09-20 18:10:23.223086880 +0800

最近改动:2016-09-20 18:10:23.227086888 +0800

创建时间:-

其中:file:文件名;

size:文件大小

block:文件占了多少个数据块

IO Block:文件所占数据块的块大小

Device:硬件,既说明该文件在硬盘的那个柱面

Inode:节点号

links:链接

Access(第一个):权限

Uid:该文件所属的属

Gid:该文件所属的属组

context:安全上下文

Access(第二个):文件上一次的访问时间

Modify:文件上一次修改的时间

Change:文件上一次属性更改的时间

修改文件的时间戳信息:

可以使用touch命令更改文件的时间戳:

语法:touch [OPTION]… FILE…

常用选项:

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

-a: 仅修改access time;

-m:仅修改modify time;

-t:使用指定的日期时间,而非现在的时间;[[CC]YY]MMDDhhmm[.ss];

 

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

命令别名(alias)

通过alias命令实现:

(1) alias

显示当前shell进程所有可用的命令别名;

(2) alias NAME=’VALUE’

定义别名NAME,其相当于执行命令VALUE;

 

注意:在命令行中定义的别名,仅对当前shell进程有效;如果想永久有效,要定义在配置文件中;

仅对当前用户:~/.bashrc

对所有用户有效:/etc/bashrc

 

编辑配置给出的新配置不会立即生效;

bash进程重新读取配置文件:

路径:source /path/to/config_file

相对路径:. /path/to/config_file

撤消别名:unalias  格式:unalias [-a] name [name …]

 

如果别名同原命令的名称,则如果要执行原命令,可使用”\COMMAND”;

引用另一个命令的执行结果——管道:COMMAND1 | COMMAND2 | COMMAND3 |…

最后一个命令会在当前shell进程的子shell进程中执行;

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

示例:

[root@localhos]#  ls /var/1*[0-9]*[a-z]

 

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

示例:

[root@localhos]# ls /etc/[0-9]*[^0-9]

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

示例:

[root@localhos]# ls /etc/[^[:alpha:]][:alpha:]*

 

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

示例:

[root@localhost tmp]# touch tfile-`date +%F-%H-%M-%S`

[root@localhost tmp]# ls

tfile-2018-03-23-00-29-40

 

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

示例:

[root@localhost ~]# mkdir /tmp/mytest1

[root@localhost ~]# cp -r /etc/p*[^0-9] /tmp/mytest1

[root@localhost ~]# ls /tmp/mytest1

pam.d   passwd-       pinforc   pm                            popt.d       ppp             printcap  

 

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

示例:

[root@localhost ~]# mkdir /tmp/mytest2

[root@localhost ~]# cp -r /etc/*.d /tmp/mytest2

[root@localhost ~]# ls /tmp/mytest2

ant.d              cron.d         event.d       logrotate.d    oddjobd.conf.d  profile.d  rc3.d  rc.d          

 

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

 

示例:    

[root@localhost ~]# mkdir /tmp/mytest3

 [root@localhost ~]# cp -r /etc/[l,m,n]*\.conf /tmp/mytest3

[root@localhost ~]# ls /tmp/mytest3

latrace.conf  libaudit.conf  logrotate.conf  mke2fs

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