本周作业内容:

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

Linux上的文件管理类命令有cp, mv, rm.

1.1、cp文件拷贝命令

       cp [OPTION]... [-T] SOURCE DEST

       cp [OPTION]... SOURCE... DIRECTORY

       cp [OPTION]... -t DIRECTORY SOURCE...

情况一:多个文件向目标拷贝:

                要求目标必须是一个目录并且目标必须存在,否则拷贝将失败

目标不存在时拷贝文件时系统的提示:

[root@localhost ~]# cp   /etc/fstab /etc/passwd /tmp/testtest

cp: target `/tmp/testtest' isnot a directory

情况二:单个文件向目标拷贝:如果

如果目标为文件且和复制的文件同名,则覆盖目标(此时推荐配合选项-i,如果有重名的文件则提示是否覆盖),否则在目标路径下创建一个和原同名的文件

[root@localhost ~]# cp -i/etc/fstab /tmp/fstab

cp: overwrite`/tmp/fstab/fstab'?

如果目标为目录且不存在则拷贝失败,如果目标目录存在则将文件拷贝到该目录下,如果有同名的文件则覆盖,没有则创建。

[root@localhost ~]# cp/etc/fstab /tmp/ob2/

cp: cannot create regularfile `/tmp/ob2/': Is a directory

情况三:单个目录向目标拷贝:

               要求目标也是一个目录,如果目标为文件则拷贝不成功

                  如果目标存在,拷贝时要加参数-r递归复制(为使用参数拷贝也将不成功)

[root@localhost ~]# cp  /etc/pam.d/ /tmp/file2/   (失败)

cp: omitting directory`/etc/pam.d/'

[root@localhost ~]# cp  -r /etc/pam.d/ /tmp/file2/    (成功)

其它用法

归档参数-a

该参数常用来备份文件,以保留文件原来的样子

-f 强制选项,使用该参数时,不与用户交互。除非你特别确认否则不推荐使用该参数

如果不使用,当拷贝的文件中有软链接时,该文件的内容将被链接的文件内容所替换,而非显示为一个链接

1.2、mv文件移动命令

当目标为文件且不存在,则复制源文件并将源删除,当目标存在且同名这覆盖目标文件同样删除源。

当目标为目录且目录存在,则将源拷贝到目录下并将源删除,

如果源为多个,则目标必须存在且目标不能为文件

如果源为目录,则目标必须为目录。否则命令不成功

[root@localhost ~]# mv /etc/pam.d/ /tmp/dds/

[root@localhost ~]# mv /etc/pam.d/ /tmp/dda

mv: cannot stat `/etc/pam.d/': No such file or directory

 

当源和目的都在同一目录下,则相当于将源改名为目标的名字

参数:

-i 交互式,当不知道是否有同名文件时推荐使用

-f 强制选项,使用该参数时,不与用户交互。除非你特别确认否则不推荐使用该参数

 

1.3、rm文件删除命令

当源为文件时,使用该命令源文件将直接被删除

当源为目录时,使用该命令要加参数-r否则不能删除

[root@localhost ~]# rm /tmp/file5   (未使用参数时,程序的出错提示)

rm: cannot remove `/tmp/file5': Is a directory

参数:

-i 交互式,当不知道是否有同名文件时推荐使用

-f 强制选项,使用该参数时,不与用户交互。除非你特别确认否则不推荐使用该参数

----------------------------------------------------------------------------

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

2.1执行状态返回值

命令的执行结果叫做命令的执行状态

对于命令的执行有两种结果:成功(0),失败(1-255,随机生成)

Bash有一个变量($?)来存储最近一条命令的执行状态结果

成功执行:

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

[root@localhost ~]# echo $?

0

执行失败:

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

ls: cannot access /tmp/file: No suchfile or directory

[root@localhost ~]# echo $?

2

2.2命令行展开:(是用户或管理员可以更加方便的创建目录)

~ 展开为用户的主目录

[root@localhost ~]# ~

bash: /root: is a directory

~USERNAME :展开为指定用户的主目录

[root@localhost ~]# ~blue

bash: /home/blue: is adirectory

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

[root@localhost ~]# mkdir /tmp/file{1,2,3,4,5}

root@localhost ~]# ls  /tmp/file*

/tmp/file1:

/tmp/file2:

/tmp/file3:

/tmp/file4:

/tmp/file5:

-----------------------------------------------------------------------------------------------

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

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

mkdir -p /tmp/{a{c,d},b{c,d}}

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

mkdir -p/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,cock,log,run}

├── 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

--------------------------------------------------------------------------------------

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

4.1文件的元数据信息有:

File 、size、Blocks、IO blocks、file type、Device、INnode、Access、UID、GID、Access time、Modifytime、Change time

File :带路径的文件名       Size:文件大小        Blocks:文件占用的文件块数

IO blocks、io块数      Device、驱动号

file type、文件类型,通常有普通文件,目录文件,链接文件、套接字文件、块文件、字符文件

INnode、文件唯一innode号             Links:文件的链接数量

Access、文件的访问权限:读,写,执行

UID、所属者的ID号             GID、所属组的ID号

Access time、访问时间

Modify time、修改时间

Change time、改变时间

4.2查看文件原信息 stat

Stat FILE

例如:stat /etc/fstab

4.3修改文件的时间戳

三个时间戳:

Access time访问时间—读取文件内容

Modify time 修改时间—改变文件内容

Change time 改变时间—元数据发生改变

时间戳的修改有直接修改和间接修改

直接修改就是利用命令直接修改文件的时间戳例如touch命令

不带参数的touch将直接修改三个时间戳

间接修改就是在完成其它命令的时候由于改变了文件而系统自动修改时间戳。例如使用文件管理命令,文本编辑命令,脚本,文件的调用等修改像cp mv nano vim 等

--------------------------------------------------------------------------------

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

5.1别名的定义:

alias NAME=’VLAUE’

直接使用alias则显示当前的已经定义的命令别名

[root@localhost ~]# alias

alias cp='cp -i'

alias l.='ls -d .* --color=auto'

alias ll='ls -l --color=auto'

alias ls='ls --color=auto'

alias mv='mv -i'

alias rm='rm -i'

alias which='alias | /usr/bin/which --tty-only --read-alias--show-dot --show-tilde'

定义别名例子:alias ls=’ls -la’

别名定义的实现通常有两种:在命令行中定义,在配置文件中

如果在命令行中定义则仅当前进程有效

如果定义在个人用户的配置文件中,~/.bashrc则仅对该用户有效

        想所有用户有效则定义在/etc/bashr中,

注意:定义在配置文件中的配置不会马上生效必须使用命令source使配置生效-y’y

5.2在命令中引用另一个命令的执行结果

可以将需要保存命令的执行结果赋值给一个变量,变量的作用域根据实际需要定义,然后使用${变量名称}符引用该变量

User_login_num=”$(who | wc -l )”

Echo “The number of login is ${User_login_num}“

-----------------------------------------------------------------------------------

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

Ls -d /var/l*[0-9]*[:lower:]

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

Ls -d /etc/[0-9]*[~0-9]

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

Ls -d /etc/[~[:alpha:]][:alpha:]*

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

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

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

mkdir /tmp/mytest1

cp /etc/p*[~0-9] /tmp/mytest1

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

mkdir /temp/mytest2

cp /etc/*.d /tmp/mytest2

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

mkdir /tmp/mytest3

cp /etc/[lmn]*.con /tmp/mytest3