N-22-南京-修 第二周作业

linux文件管理命令有:cp,mv,rm


cp命令:用于复制件或目录文

[root@localhost etc]# cp -i /etc/passwd /tmp/123
[root@localhost etc]# cd /tmp
[root@localhost tmp]# ls
123           //cp/etc目录下得passwd至/tmp目录下并更名为123。此为单源复制,源文件可以为文件也可以是目录但必须是一个
[root@localhost tmp]# cp -r /etc /tmp/
[root@localhost tmp]# ls /tmp
123  etc  
[root@localhost tmp]#  //-r复制目录。此为多源复制,目标文件必须是目录 
注意:文件属主得不同会带来文件权限上得变化 如要备份-r选项改为-a
[root@localhost etc]# cp -d ./favicon.png /tmp

常用选项:

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

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

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

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

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



mv命令:移动文件、目录 或更名

[root@localhost tmp]# ls
123  etc  favicon.png  lianxi1.sh
[root@localhost tmp]# mv 123 234
[root@localhost tmp]# ls
234  etc  favicon.png  lianxi1.sh  
[root@localhost tmp]#              //重命名 注意:重命名目录名也可不加选项
[root@localhost tmp]# mv 234 ./magedu.com
[root@localhost tmp]# ls /tmp/magedu.com
234  machine-id  mtab    
[root@localhost tmp]#              //移动

常用选项:

-i:交互式;

-f:当目标文件存在,强行覆盖




rm命令:删除

[root@localhost magedu.com]# ls
234  machine-id  mtab
[root@localhost magedu.com]# rm 234  //直接跟目标文件名即可
rm: remove regular file ‘234’? y   //root用户使用rm时,其别名默认为rm -i 即交互式。
[root@localhost magedu.com]# ls
machine-id  mtab
[root@localhost magedu.com]#
[root@localhost tmp]# rm -r ./etc              //删除目录
rm: descend into directory ‘./etc’? y        //管理员的rm别名默认为rm -i,同上
rm: remove regular file ‘./etc/fstab’? y
[root@localhost tmp]# rm -rf ./etc      //-f 强行删除,切记危险操作

常用选项:

-i:交互式

-f:强制

-r: 递归删除

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


bash命令执行的状态结果:

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

成功:0

失败:1-255

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

[xujie@localhost ~]$ ls
[xujie@localhost ~]$ echo $?
0
[xujie@localhost ~]$
[xujie@localhost ~]$ lls
-bash: lls: command not found
[xujie@localhost ~]$ echo $?
127
[xujie@localhost ~]$

命令行展开:

~:自动展开为用户的家目录,或指定的用户的家目录;

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

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


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

  (1)、创建/tmp目录下的: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

[root@localhost tmp]# mkdir -pv {a,d}_{b,c}
mkdir: created directory ‘a_b’
mkdir: created directory ‘a_c’
mkdir: created directory ‘d_b’
mkdir: created directory ‘d_c’
[root@localhost tmp]#
[root@localhost tmp]# mkdir -pv /tmp/mylinux/{bin,boot,boot/grub,dev,etc,etc/{rc.d/init.d
,sysconfig/network-scrip}lib,lib/modules,lib64,proc,sbin,sys,tmp,usr,usr/loca/{bin,sbin},
var/{lock,log,run}}
[root@localhost tmp]# tree mylinux
mylinux
├── bin
├── boot
│   └── grub
├── dev
├── etc
│   ├── rc.d
│   │   └── init.dlib
│   └── sysconfig
│       └── network-scriplib
├── lib
│   └── modules
├── lib64
├── proc
├── sbin
├── sys
├── tmp
├── usr
│   └── loca
│       ├── bin
│       └── sbin
└── var
    ├── lock
    ├── log
    └── run

24 directories, 0 files

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

[root@localhost tmp]# ls
mylinux    
[root@localhost tmp]# stat mylinux    //使用stat命令查看文件的元数据
File: ‘mylinux’      //文件名         
Size: 4096   Blocks: 8     IO Block: 4096   directory    //文件大小,占据多少个块,IO块,文件的类型
                     注: Blocks:8  IO Block:4096  占据8个块,每一个块的大小4096字节
Device: fd00h/64768d    Inode: 458214      Links: 14    //所在的设备号,索引节点号,硬链接
Access: (0755/drwxr-xr-x)  Uid: (    0/    root)   Gid: (    0/    root)  //权限,UID,组ID
Context: unconfined_u:object_r:user_tmp_t:s0
Access: 2016-08-20 23:00:34.989551567 -0400                //最近访问,读取数据流
Modify: 2016-08-20 22:59:39.296555079 -0400     //这三个时间代表时间戳//最近更改,元数据改变
Change: 2016-08-20 22:59:39.296555079 -0400                //最近改动,数据改变
 Birth: -
[root@localhost tmp]#

修改时间戳:touch命令 touch命令通常只改变Access Time和Modify Time

[root@localhost tmp]# stat ./mylinux/
  File: ‘./mylinux/’
  Size: 4096            Blocks: 8          IO Block: 4096   directory
Device: fd00h/64768d    Inode: 458214      Links: 14
Access: (0755/drwxr-xr-x)  Uid: (    0/    root)   Gid: (    0/    root)
Context: unconfined_u:object_r:user_tmp_t:s0
Access: 2016-08-20 23:00:34.989551567 -0400
Modify: 2016-08-20 22:59:39.296555079 -0400
Change: 2016-08-20 22:59:39.296555079 -0400
 Birth: -
[root@localhost tmp]# touch ./mylinux/
[root@localhost tmp]# stat ./mylinux/
  File: ‘./mylinux/’
  Size: 4096            Blocks: 8          IO Block: 4096   directory
Device: fd00h/64768d    Inode: 458214      Links: 14
Access: (0755/drwxr-xr-x)  Uid: (    0/    root)   Gid: (    0/    root)
Context: unconfined_u:object_r:user_tmp_t:s0
Access: 2016-08-21 00:38:12.418182188 -0400
Modify: 2016-08-21 00:38:12.418182188 -0400
Change: 2016-08-21 00:38:12.418182188 -0400
 Birth: -
[root@localhost tmp]#

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

-a: 仅修改access time;

-m:仅修改modify time;

-t STAMP 格式[[CC]YY]MMDDhhmm[.ss]年月日时分.秒

[root@localhost tmp]# touch -m -t 201609240815.45 ./mylinux/
[root@localhost tmp]# stat ./mylinux/
  File: ‘./mylinux/’
  Size: 4096            Blocks: 8          IO Block: 4096   directory
Device: fd00h/64768d    Inode: 458214      Links: 14
Access: (0755/drwxr-xr-x)  Uid: (    0/    root)   Gid: (    0/    root)
Context: unconfined_u:object_r:user_tmp_t:s0
Access: 2016-08-21 00:38:12.418182188 -0400
Modify: 2016-09-24 08:15:45.000000000 -0400
Change: 2016-08-21 00:45:19.599155249 -0400
 Birth: -
[root@localhost tmp]#


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

定义别名 alias命令:

[xujie@localhost ~]$ alias rm='rm -i'
[xujie@localhost ~]$ alias
alias egrep='egrep --color=auto'
alias fgrep='fgrep --color=auto'
alias grep='grep --color=auto'
alias l.='ls -d .* --color=auto'
alias ll='ls -l --color=auto'
alias ls='ls --color=auto'
alias rm='rm -i'
alias vi='vim'
alias which='alias | /usr/bin/which --tty-only --read-alias --show-dot --show-tilde'
[xujie@localhost ~]$

引用命令的执行结果:

num1=$(id 1 | grep -o "uid=[0-9]\+" | cut -d = -f 2)
[xujie@localhost ~]$ de='rm -i'
[xujie@localhost ~]$ echo $de
rm -i
[xujie@localhost ~]$

引用命令的执行结果: $(COMMAND)或`COMMAND`


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

[root@localhost tmp]# ls -d /var/l*[[:digit:]]*[[:lower:]]


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

[root@localhost tmp]# ls -d /etc/[0-9]*[^0-9]
/etc/0a0544d


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

[root@localhost tmp]# ls -d /etc/[^a-z][a-z]*


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

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


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

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


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

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



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

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

原创文章,作者:N22-南京-修,如若转载,请注明出处:http://www.178linux.com/38039

(0)
上一篇 2016-08-22 09:30
下一篇 2016-08-22 09:30

相关推荐

  • 关于shell脚本基础编程第五篇

                  shellb编程基础第五篇              本章内容:数组 变量:存储单个元素的内存空间数组:存储多个元素的连续的内存空间…

    系统运维 2016-08-24
  • 序列化和反序列化

    序列化和反序列化之基本笔记

    2017-10-29
  • DNS服务器之配置

    一、安装DNS服务器     DNS服务的安装包为bind,使用yum直接安装即可:     安装完成后,查看DNS服务相关的文件: 二、配置正向区域     1、在配置正向区域之前,先来看下主配置文件中的内容:    &nbsp…

    Linux干货 2015-05-03
  • linux常用命令实战练习–第一周作业

    1、使用date命令,显示前10天的年月日,显示后20天的年月日。 [root@chen ~]# date  Fri Jul 22 20:26:02 CST 2016 [root@chen ~]# date -d -10day &…

    Linux干货 2016-07-22
  • 实现基于MYSQL验证的vsftpd虚拟用户

    马哥教育面授21期 运维 vsftpd MySQL 说明:本实验在两台CentOS主机上实现,一台做为FTP服务器,一台做数据库服务器 一、安装所需要包和包组: 在数据库服务器上安装包: yum –y install mariadb-server mariadb-devel systemctl start mariad…

    Linux干货 2016-12-21
  • 软链接,硬链接区别

    软硬链接涉及文件系统inode, 区分于inode号,硬链接inode号与链接文件相同,且创建链接不占空间.而软链接占名称字节个空间,且inode号与链接文件不同; 两者查找inode号命令都可查找inode号,命令为ls -i,如需查找本目录要加d; 在创建链接环境上,硬链接只能在同分区创建一个,不能跨分区创建;而软链接可以跨分区创建多个链接文件且可以多个…

    Linux干货 2016-10-20

评论列表(2条)

  • N22-南京-修
    N22-南京-修 2016-08-22 10:56

    [root@localhost /]# cp -r `ls -d /etc/p*[^0-9]` /tmp/mytest1
    [root@localhost /]# cp -r `ls -d /etc/*.d` /tmp/mytest2
    [root@localhost /]# cp -r `ls -d /etc/[l,m,n]*.conf` /tmp/mytest3
    以上最后三题的更正

  • 马哥教育
    马哥教育 2016-08-22 13:58

    写的很好,排版也很棒,加油,创建目录的题目跟题目的要求不一样啊