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)
N22-南京-修N22-南京-修
上一篇 2016-08-22
下一篇 2016-08-22

相关推荐

  • bash

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

    Linux干货 2016-11-06
  • 软件包管理器之一——RPM介绍及应用

    一、前言:     在没有软件包管理器前,用户都是通过源代码的方式来安装软件。但是我们很容易发现,在每次安装软件时都必须对操作系统的境、编译的参数进行对应的编译,并且操作过程很是复杂,这对于不熟悉操作系统的朋友来说真心困难,那么有没有一款软件能让用户能很简单的安装所需的软件呢?    &n…

    Linux干货 2015-07-20
  • N24 第三周 磁盘及文件系统管理

    Linux系统管理          磁盘分区及文件系统管理          RAID          LVM 动态磁盘设备管理          网络属性…

    Linux干货 2016-11-22
  • ansible

    Ansible 1、  特性: 模块化:调用特定的模块,完成特定任务; 基于Python语言实现部署简单:agentless; 支持自定义模块; 支持playbook;编排任务; ansible自身并不实现任何管理任务,它的所有管理任务,统统都使用模块完成;             &nb…

    Linux干货 2016-11-11
  • grep &&正则表达式&&通配,元字,转义符

    grep 基于正则表达式的查询 1正则表达式: 正则表达式是通过使用特殊的字符所编写的模式,一些字符不表示字符的表面意思,具有控制和通配的功能. 使用正则表达式进行匹配具有两种方法:一是通过使用特殊的元字符进行字符匹配;二是使用次数匹配。 一, 正则表达式的特殊字符(元字符) :  #建议再温习一下之前所学的统通配符,对比一下,防止混淆。 (1)元…

    Linux干货 2016-08-05
  • Mairadb

    Mairadb 编译安装Mairadb数据 先下载mariadb的软件包: 将软件包解压缩到/usr/local目录下 ]# tar xf mariadb-5.5.32-linux-x86_64.tar.gz -C /usr/local/ 创建连接 ]# ln -sv maria…

    Linux干货 2016-10-17

评论列表(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

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