第二周作业

linux 文件管理命令 rm、mv、cp

  • rm

rm命令:remove

rm [OPTION]… FILE…

常用选项:

-i:interactive (默认rm是‘rm -i’的别名)

-f:force

-r: recursive

        -v:显示指令的详细过程

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

危险操作:rm -rf /*

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

[root@localhost ~]# ls
123  123.txt  anaconda-ks.cfg  test  useradd1.sh
[root@localhost ~]# rm -fv 123.txt
removed ‘123.txt’
[root@localhost ~]#
  • mv

mv命令:剪切、改名

move (mv在同一个硬盘分区上操作是inode号是不变的,无论文件多大都很快,是因为只是修改了文件对应的指针。跨分区是执行复制操作,所以很慢)

   mv [OPTION]… [-T] SOURCE DEST

   mv [OPTION]… SOURCE… DIRECTORY

   mv [OPTION]… -t DIRECTORY SOURCE..    

   常用选项:

    -i:交互式;

    -f:force

[root@localhost test]# ls
123.txt
[root@localhost test]# mv 123.txt 1234.txt
[root@localhost test]# ls
1234.txt
[root@localhost test]# mv 1234.txt ..
[root@localhost test]# ls ../ | grep 1234.txt
1234.txt
  • cp

cp命令:复制单个或多个文件或者目录复制到指定目标文件或者目录

源文件;目标文件;

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

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

    cp [OPTION]… -t DIRECTORY SOU

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

    如果DEST不存在:则事先创建此文件,并

    如果DEST存在:

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

    如果DEST是目录文件:则先在DEST目

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

     cp [OPTION]… -t DIRECTORY SO

    如果DEST不存在:错误;

    如果DEST存在:

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

    如果DEST是目录文件:分别复制每个

    常用选项:

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

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

    -p:复制是保留文件的元数据信息

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

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

    -a:-dR –preserve=all, archive,用

    –preserv=

    mode:权限

    ownership:属主和属组

    timestamps: 时间戳

    context:安全标签

    xattr:扩展属性

    links:符号链接

    all:上述所有属性

[root@localhost ~]# cp -v file1 file2 file3 test/
‘file1’ -> ‘test/file1’
‘file2’ -> ‘test/file2’
‘file3’ -> ‘test/file3’
[root@localhost ~]# cp -rv ~/test ~/test1
‘/root/test’ -> ‘/root/test1/test’
‘/root/test/1234.txt’ -> ‘/root/test1/test/1234.txt’
‘/root/test/test1’ -> ‘/root/test1/test/test1’
‘/root/test/test1/1234.txt’ -> ‘/root/test1/test/test1/1234.txt’
‘/root/test/file1’ -> ‘/root/test1/test/file1’
‘/root/test/file2’ -> ‘/root/test1/test/file2’
‘/root/test/file3’ -> ‘/root/test1/test/file3

bash工作特性

  • 命令执行结果状态返回值

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

成功:0

失败:1-255

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

[root@localhost ~]# ls 
file1  file2  file3
[root@localhost ~]# echo $?
0
[root@localhost ~]# ls file4
ls: cannot access file4: No such file or directory
[root@localhost ~]# echo $?
2
  • 命令展开

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

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

  • 命令展开演示

[root@localhost ~]# mkdir /tmp/{a,b}{_c,_d}
[root@localhost ~]# ls /tmp/
a_c  a_d  b_c  b_d
[root@localhost ~]# mkdir -p /tmp/mylinux/{{bin,dev,lib64,proc,sbin,sys,tmp},
{boot/grub,lib/modules,var/{lock,log,run},usr/local/{bin,sbin},etc/{rc.d/init.d,sysconfig/network-scripts}}}
[root@localhost ~]# 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

文件元数据信息

文件元数据信息包括:

文件名称、属主属组、文件访问权限、uid、gid、三个时间戳(centos7是四个)、inode号等等

访问时间access time:读一次这个文件的内容,这个时间就会更新。比如对这个文件运用 more、cat等命令。ls、stat命令都不会修改文件的访问时间。

修改时间modify time:修改时间是文件内容最后一次被修改时间。比如:vi后保存文件。ls -l列出的时间就是这个时间。

状态改变时间change time:是该文件的i节点最后一次被修改的时间,通过chmod、chown命令修改一次文件属性,这个时间就会更新。

查看命令stat filename

[root@localhost ~]# stat file1
  File: ‘file1’
  Size: 0         	Blocks: 0          IO Block: 4096   regular empty file
Device: fd00h/64768d	Inode: 83233005    Links: 1
Access: (0644/-rw-r--r--)  Uid: (    0/    root)   Gid: (    0/    root)
Context: unconfined_u:object_r:admin_home_t:s0
Access: 2016-11-24 13:29:58.553193471 -0500
Modify: 2016-11-24 13:29:29.081193305 -0500
Change: 2016-11-24 13:29:29.081193305 -0500

修改文件时间戳:touch [option] filename

touch命令:

touch – change file timestamps

touch [OPTION]… FILE…

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

-a: 仅修改access time;

-m:仅修改modify time;

-t 指定时间:[[CC]YY]MMDDhhmm[.ss]

[root@localhost ~]# touch -a file1   ##修改文件的访问时间
[root@localhost ~]# stat file1
  File: ‘file1’
  Size: 0         	Blocks: 0          IO Block: 4096   regular empty file
Device: fd00h/64768d	Inode: 83233005    Links: 1
Access: (0644/-rw-r--r--)  Uid: (    0/    root)   Gid: (    0/    root)
Context: unconfined_u:object_r:admin_home_t:s0
Access: 2016-11-24 14:44:08.509218528 -0500  ##该时间较之前有更新
Modify: 2016-11-24 13:29:29.081193305 -0500
Change: 2016-11-24 14:44:08.509218528 -0500
 Birth: -
[root@localhost ~]# touch -m file1       ##修改文件的编辑时间
[root@localhost ~]# stat file1
  File: ‘file1’
  Size: 0         	Blocks: 0          IO Block: 4096   regular empty file
Device: fd00h/64768d	Inode: 83233005    Links: 1
Access: (0644/-rw-r--r--)  Uid: (    0/    root)   Gid: (    0/    root)
Context: unconfined_u:object_r:admin_home_t:s0
Access: 2016-11-24 14:44:08.509218528 -0500
Modify: 2016-11-24 14:44:33.556218669 -0500  ##该时间较之前有更新
Change: 2016-11-24 14:44:33.556218669 -0500
 Birth: -
[root@localhost ~]# touch -t 201612062130.30 file1    ##指定文件的访问时间和修改时间
[root@localhost ~]# stat file1
  File: ‘file1’
  Size: 0         	Blocks: 0          IO Block: 4096   regular empty file
Device: fd00h/64768d	Inode: 83233005    Links: 1
Access: (0644/-rw-r--r--)  Uid: (    0/    root)   Gid: (    0/    root)
Context: unconfined_u:object_r:admin_home_t:s0
Access: 2016-12-06 21:30:30.000000000 -0500
Modify: 2016-12-06 21:30:30.000000000 -0500
Change: 2016-11-24 14:47:16.871219588 -0500
 Birth: -

文件别名以及引用命令结果

alias命令

alias NAME='COMMAND' 仅对当前shell进程有效

可以加进~/.bashrc配置文件中

[root@director ~]# alias network='service network restart'
[root@director ~]# network
正在关闭接口 eth0:                                        [确定]
正在关闭接口 eth1:                                        [确定]
关闭环回接口:                                             [确定]
弹出环回接口:                                             [确定]
弹出界面 eth0: 
正在决定 eth0 的 IP 信息...完成。
                                                           [确定]
弹出界面 eth1: Determining if ip address 10.10.10.1 is already in use for device eth1...
                                                           [确定]

引用命令的执行结果:

使用$()或者“

rootuid=`id -u root` 或者 rootuid=$(id -u root)

练习

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

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

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

ls -d /etc/[0-9]*[^0-9]

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

ls -d /etc/[^[:alpha:]][[:alpha:]]*

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

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

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

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

6、复制/etc目录下,所有以.d结尾的文件或目录至/tmp/mytest2目录下;

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

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

find /etc -name [lnm]*.conf -a -type f -exec cp -a {} /tmp/mytest3 \;

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

(0)
上一篇 2016-12-08 21:18
下一篇 2016-12-09 10:52

相关推荐

  • 构建私有CA

    构建私有CA 我们采用openssl这个软件来实现 所有首先我们来看下该软件的配置文件 实现环境 centos 7.2 [root@redhat7 ~]# rpm -qc openssl  //可以看到该命令没有任何输出,我们可以思考该软件包还存在其他的支包 [root@redhat7 ~…

    Linux干货 2016-09-28
  • Yacc 与 Lex 快速入门(词法分析和语法分析)

    Lex 代表 Lexical Analyzar。Yacc 代表 Yet Another Compiler Compiler。 让我们从 Lex 开始吧。 Lex Lex 是一种生成扫描器的工具。扫描器是一种识别文本中的词汇模式的程序。 这些词汇模式(或者常规表达式)在一种特殊的句子结构中定义,这个我们一会儿就要讨论。 一种匹配的常规表达式可能会包含相关的动作…

    Linux干货 2015-06-08
  • Linux下装载软Raid

    步骤1.创建磁盘,并转换为fd #fdisk /dev/sdb //这里使用新的磁盘sdb 然后输入n ,创建分区 使用默认的起始点 输入大小为+100M 然后重复刚才的操作4次,创建4个分区,创建完4个分区后 我们还要改变分区的ID 在分区的主菜单输入T 然后输入要改变ID的分区号,也就是最后4个分区 然后输入分区的ID:fd 四个分区都改成FD 完成后,…

    Linux干货 2017-08-12
  • 一年直接在于春

    day01

    2018-03-26
  • 一个开发眼中的运维

    在云计算时代,开发和运维的结合变得越来越重要。在DIFF论坛第一期,前新浪SAE运维主管,郑志勇,分享了《一个开发眼中的运维》根据自己从开发人员转型运维之后的心得,谈如何把在开发上的运用抽象思维方式运用到运维领域。 1. 运维不是什么? 运维不是打杂的,运维不是客服,运维也不是服务开发的,但要做好合作。 2. 运维是什么? 运维服务于整个产品,保证架构合理,…

    Linux干货 2015-03-11
  • 手动自制Mini Linux

        linux系统内核非常的精简,而且基于一切皆文件的思想,使得我们可以再现有系统上挂载一个空硬盘,利用现有系统编译一个内核和相关程序文件并拷贝到空硬盘上。我们就可以用空硬盘来单独运行一个精简的linux系统,这对于依赖于注册表的windows系统来说是不可能实现的。本文简要介绍一下一个mini linux的安装制…

    Linux干货 2016-05-03

评论列表(1条)

  • 马哥教育
    马哥教育 2016-12-16 15:43

    赞,写的比较详细~~~继续加油~