N21-第二周博客

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

文件管理命令有复制、删除与移动:cp,mv,rm

cp(复制档案或目录)

[root@study ~]# cp [-adfilprsu] 源(source) 目标(destination)

[root@study ~]# cp [options] source1 source2 source3 …. directory

选项与参数:

-a  :相当于 -dr –preserve=all 的意思,至于 dr 请参考下列说明;(常用)

-d  :若来源文件为链接文件的属性(link file),则复制链接文件属性而非档案本身;

-f  :为强制(force)的意思,若目标档案已经存在且无法开启,则移除后再尝试一次;

-i  :若目标文件(destination)已经存在时,在覆盖时会先询问动作的进行(常用)

-l  :进行硬连结(hard link)的连结档建立,而非复制档案本身;

-p  :连同档案的属性(权限、用户、时间)一起复制过去,而非使用默认属性(备份常用);

-r  :递归持续复制,用于目录的复制行为;(常用)

-s  :复制成为符号链接文件 (symbolic link),亦即『快捷方式』档案;

-u  :destination 比 source 旧才更新 destination,或 destination 不存在的情况下才复制。

–preserve=all :除了 -p 的权限相关参数外,还加入 SELinux 的属性, links, xattr 等也复制了。

最后需要注意的,如果来源档有两个以上,则最后一个目的文件一定要是『目录』才行!

示例1:

[root@localhost ~]# cp install.log /tmp/
[root@localhost ~]# cp -i install.log /tmp/  #加i选项,覆盖前会询问用户
cp: overwrite `/tmp/install.log'? n
#默认alias里会有cp='cp -i',所以平时可以不用敲-i,默认就有

示例2:复制文件,并对比属性

[root@localhost ~]# cd /tmp
[root@localhost tmp]# cp /var/log/wtmp . #注意最后的“点”,代表本目录(/tmp)
[root@localhost tmp]# ll /var/log/wtmp wtmp 
-rw-rw-r--. 1 root utmp 166656 Jul 12 20:18 /var/log/wtmp
-rw-r--r--. 1 root root 166656 Jul 12 20:25 wtmp
#不加任何参数,文件的属性或者权限可能会改变
#如果要保持原样,加-a参数
[root@localhost tmp]# cp -a /var/log/wtmp wtmp2
[root@localhost tmp]# ll /var/log/wtmp wtmp2
-rw-rw-r--. 1 root utmp 166656 Jul 12 20:18 /var/log/wtmp
-rw-rw-r--. 1 root utmp 166656 Jul 12 20:18 wtmp2

示例3:复制/etc整个文件夹到/tmp

[root@localhost tmp]# cp /etc /tmp
cp: omitting directory `/etc'
[root@localhost tmp]# cp -r /etc /tmp

rm(移除文件或文件夹)

[root@study ~]# rm [-fir] 档案或目录

选项与参数:

-f  :就是 force 的意思,忽略不存在的档案,不会出现警告讯息;

-i  :互动模式,在删除前会询问使用者是否动作

-r  :递归删除!最常用在目录的删除!这是非常危险的选项!!

示例1

[root@localhost tmp]# rm -i install.log #加-i选项会询问确定删除?
rm: remove regular file `install.log'? y
#默认alias里会有cp='rm -i',所以平时可以不用敲-i,默认就有

示例2 删除/tmp/etc

[root@localhost tmp]# rm etc目录无法直接删除
rm: cannot remove `etc': Is a directory
[root@localhost tmp]# rm -r etc加上-r选项可以删除,但是会每个文件都询问
rm: descend into directory `etc'? y
rm: remove regular file `etc/system-release-cpe'? y
rm: descend into directory `etc/udev'? y
[root@localhost tmp]# rm -rf etc 加上-rf选项,强制删除

mv(移动文件和文件夹,或者改名)

[root@study ~]# mv [-fiu] source destination

[root@study ~]# mv [options] source1 source2 source3 …. directory

选项与参数:

-f  :force 强制的意思,如果目标文件已经存在,不会询问而直接覆盖;

-i  :若目标文件 (destination) 已经存在时,就会询问是否覆盖!

-u  :若目标文件已经存在,且 source 比较新,才会更新 (update)


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

    使用echo $? 查看命令执行返回值,为0表示执行成功,非0表示执行失败

    示例

[root@localhost tmp]# ls
a_c  a_d  b_c  b_d  vmware-root
[root@localhost tmp]# echo $?
0
[root@localhost tmp]# lll
bash: lll: 未找到命令...
[root@localhost tmp]# echo $?
127

    命令行展开示例

[root@localhost ~]# cd /tmp
[root@localhost tmp]# cd ~#切换到家目录
[root@localhost ~]# pwd
/root
[root@localhost ~]# cd -#切换到上一目录
/tmp
[root@localhost tmp]# cd -#再切换到上一目录
/root

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

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

    [root@localhost ~]# cd /tmp
    [root@localhost tmp]# mkdir {a,b}_{c,d}
   [root@localhost tmp]# ls

    a_c  a_d  b_c  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

mkdrir -p /tmp/mylinx/{bin,boot/grub,dev,etc/{rc.d/init.d,sysconfig/network-scripts},lib/modules,lib64,proc,sbin,sys,tmp,usr/local/{bin,sbin},var/{local,log,run}}

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

[root@localhost ~]# stat install.log   #查看文件元数据
  File: `install.log'文件名
  Size: 9562 #大小           Blocks: 24         IO Block: 4096   regular file  #文件类型
Device: fd00h/64768d    Inode: 131074      Links: 1 #链接数
Access: (0644/-rw-r--r--) #访问权限 Uid: (    0/    root) #属主  Gid: (    0/    root) #属组
Access: 2016-07-12 20:19:09.589869445 +0800 atime
Modify: 2016-05-15 07:41:01.961999987 +0800mtime
Change: 2016-05-15 07:41:07.976999985 +0800ctime

修改文件时间戳:touch

touch [OPTION]… FILE…

-a: 仅修改atime

-m: 仅修改mtime

-t STAMP:指定时间

[[CC]YY]MMDDhhmm[.ss]

-c: 如果文件不存,则不予创建

示例1:不加任何参数,默认修改所有时间戳为当前时间

[root@localhost ~]# touch install.log
[root@localhost ~]# stat install.log 
  File: `install.log'
  Size: 9562            Blocks: 24         IO Block: 4096   regular file
Device: fd00h/64768d    Inode: 131074      Links: 1
Access: (0644/-rw-r--r--)  Uid: (    0/    root)   Gid: (    0/    root)
Access: 2016-07-12 21:08:23.102867914 +0800
Modify: 2016-07-12 21:08:23.102867914 +0800
Change: 2016-07-12 21:08:23.102867914 +0800

示例2:仅修改atime为当前时间

[root@localhost ~]# touch -a install.log 
[root@localhost ~]# stat install.log    
  File: `install.log'
  Size: 9562            Blocks: 24         IO Block: 4096   regular file
Device: fd00h/64768d    Inode: 131074      Links: 1
Access: (0644/-rw-r--r--)  Uid: (    0/    root)   Gid: (    0/    root)
Access: 2016-07-12 21:10:21.632863145 +0800
Modify: 2016-07-12 21:08:23.102867914 +0800
Change: 2016-07-12 21:10:21.632863145 +0800

示例3:仅修改mtime,并指定时间

[root@localhost ~]# touch -mt 201511222122 install.log  
[root@localhost ~]# stat install.log                  
  File: `install.log'
  Size: 9562            Blocks: 24         IO Block: 4096   regular file
Device: fd00h/64768d    Inode: 131074      Links: 1
Access: (0644/-rw-r--r--)  Uid: (    0/    root)   Gid: (    0/    root)
Access: 2016-07-12 21:13:08.386863979 +0800
Modify: 2015-11-22 21:22:00.000000000 +0800
Change: 2016-07-12 21:13:13.479864909 +0800

以上示例可以总结出:无论修改atime还是mtime,ctime时间戳都会改变,所以touch命令没有修改ctime的选项

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

[root@localhost ~]# alias vi='vim'
直接定义命令别名即可,但是仅在当前会话生效。如果想本用户下次登录还可以使用,编辑~/.bashrc文件添加别名。


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

find /var -name "1*[0-9]?*[[:lower:]]"

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

find /var -name "[0-9]?*[^0-9]"

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

find /var -name "[^[:alpha:]][[:alpha:]]*"

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

touch /tmp/tfile-`date +%Y-%m-%d-%H-%M-%S`

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

cp -r `find /etc -name "p*[^0-9]"` /tmp/mytest1/

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

cp -r `find /etc -name "*\.d"` /tmp/mytest2

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

cp -r `find /etc -name "[l|m|n]*\.conf"` /tmp/mytest3

原创文章,作者:N21_smile,如若转载,请注明出处:http://www.178linux.com/23449

(0)
N21_smileN21_smile
上一篇 2016-07-16
下一篇 2016-07-16

相关推荐

  • kickstart+http+dhcp+tftp实现centos7的无人值守安装

    环境:IP: 172.16.0.11 centos 7.2 一. tftp 安装tftp服务端和客户端 [root@localhost ~]# yum -y install tftp tftp-server 启动tftp [root@localhost ~]# systemctl start tftp.socket [root@localhost ~]# s…

    Linux干货 2017-06-03
  • Python from entry to abandon

          学习Linux已经有大致两周了,依然感觉到自己仍然在运维的大门外徘徊。于是我想要找到一个在Linux之外的业余方向,可以作为枯燥基础学习的调节。没过多久我就发现了Python可以 说是钦定的选择,它作为Linux的内置语言,传言风格简洁优美,功能强大。Python老生常谈的缺点是效率不高,哎,没办…

    Linux干货 2017-04-01
  • Linux下的I/O重定向与管道

    一、I/O设备     Linux中,对系统进行操作时,就需要I/O设备与系统产生交互,同时会产生三种数据,标准输入(0)、标准输出(1)、标准错误(2)。其中标准输入(stdin)默认接受来自键盘的输入,标准输出(stdout)和标准错误(stderr)默认向终端窗口输出,改变默认输出和出入的位置,就是I/O重定向。 二、输出重定向到文…

    Linux干货 2016-08-04
  • MBR分区结构

    MBR分区结构 一、硬盘主引导记录MBR由4个部分组成: 1、主引导程序(偏移地址0000H–0088H),它负责从活动分区中装载,并运行系统引导程序。 2、出错信息数据区,偏移地址0089H–00E1H为出错信息,00E2H–01BDH全为0字节。 3、分区表(DPT,Disk Partition Table):含4个分…

    2017-08-20
  • Nginx基本使用方法及各模块基本功能

    一、Nginx介绍     Nginx是由俄罗斯软件工程师Igor Sysoev开发的一个高性能的HTTP和反向代理服务器,具备IMAP/POP3和SMTP服务器功能,Nginx最大的特点是对高并发的支持和高效的负载均衡,在高并发的需求场景下,是Apache服务器不错的替代品。目前,包括新浪、腾讯等知名网站都已使用Nginx作为Web应用…

    Linux干货 2016-01-21
  • Linux硬链接和软链接

    标签:    inode    软链接    硬链接 一、ionde及inode编号   在计算机中,信息一般以扇区(sectors)的形式存储在硬盘上,而每个扇区包括512个字节的数据和一些其他信息(即一个扇区包括两个主要部分:存储数据地点的标识符和存储数据的数据段)。操作系统…

    Linux干货 2016-10-20

评论列表(1条)

  • 马哥教育
    马哥教育 2016-07-17 21:36

    写的很好,排版也很漂亮,最后一个这样写可以吗?加油