N25_第二周

Linux文件管理类命令

  • cp命令:copy 源文件;目标文件;

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

    多源复制:cp [OPTION]… SOURCE… DIRECTORY | 
          cp [OPTION]… -t DIRECTORY SOURCE…

    单源复制:cp [OPTION]... [-T] SOURCE DEST
        如果DEST不存在:则事先创建此文件,并复制源文件的数据流至DEST中;
        如果DEST存在:
            如果DEST是非目录文件:则覆盖目标文件;
            如果DEST是目录文件:则先在DEST目录下创建一个与源文件同名的文件,并复制其数据流;
    
    多源复制:cp [OPTION]... SOURCE... DIRECTORY
                cp [OPTION]... -t DIRECTORY SOURCE...
    
        如果DEST不存在:错误;
        如果DEST存在:
            如果DEST是非目录文件:错误;
            如果DEST是目录文件:分别复制每个文件至目标目录中,并保持原名;

    常用选项:

        -i:交互式复制,即覆盖之前提醒用户确认;
        -f:强制覆盖目标文件;
        -r, -R:递归复制目录;
        -d:复制符号链接文件本身,而非其指向的源文件;
        -a:-dR --preserve=all, archive,用于实现归档;
        --preserv=
            mode:权限
            ownership:属主和属组
            timestamps: 时间戳
            context:安全标签
            xattr:扩展属性
            links:符号链接
            all:上述所有属性

    例:
    1)多源复制

    [root@server1 nac]# cp  -r    mod     log     tmp   
                           递归  源文件   源目录  目的目录
  • mv命令:move 
    mv [OPTION]… [-T] SOURCE DEST 
    mv [OPTION]… SOURCE… DIRECTORY 
    mv [OPTION]… -t DIRECTORY SOURCE..

    常用选项:

        -i:交互式;  
        -f:force
  • rm命令:remove rm [OPTION]… FILE…

    常用选项:

        -i:interactive  
        -f:force  
        -r: recursive

    删除目录:rm -rf /PATH/TO/DIR 
    危险操作:rm -rf /*

参数-f是强制删除,使用前要注意防止误删除,建议少用
建议用单独的目录来存放不用的文件,类似Windows的回收站

bash基本特性演示

bash特性之命令行返回值

bash命令执行之后,其状态返回值保存于bash的特殊变量$?中,可以用命令echo $?来查看对应值 返回值分成两类:
   成功:0
   失败:1-255
不同的返回值代表不同的意义

例:
[root@server1 ~]# cat /varr
cat: /varr: No such file or directory
[root@server1 ~]# echo $?
1
[root@server1 ~]# ls /varr  
ls: cannot access /varr: No such file or directory
[root@server1 ~]# echo $?
2
[root@server1 ~]# 
[root@server1 ~]#    
[root@server1 ~]# ls /var
account  cache  db     games   kerberos  local  log   nis  preserve  spool  yp
adm      crash  empty  gopher  lib       lock   mail  opt  run       tmp
[root@server1 ~]# echo $?
0
[root@server1 ~]#

bash特性之命令行展开

~:自动展开为用户的家目录,或指定的用户的家目录;
{}:可承载一个以逗号分隔的路径列表,并能够将其展开为多个路径;
例如:/tmp/{a,b} 相当于 /tmp/a /tmp/b 
实例可参考“实战测验”内容

文件元数据

元数据(metadata)主要指文件的属性等相关信息,包含权限、大小、时间戳等,通过命令stat看到的信息都是元数据的内容。

  • 元数据内容

    [root@server1 ~]# stat /nac/test
    File: ‘/nac/test’
    Size: 75              Blocks: 0          IO Block: 4096   directory
    Device: fd00h/64768d    Inode: 104016110   Links: 4
    Access: (0755/drwxr-xr-x)  Uid: (    0/    root)   Gid: (    0/    root)
    Context: unconfined_u:object_r:default_t:s0
    Access: 2016-12-10 05:50:24.307412852 -0500
    Modify: 2016-12-10 05:59:28.702810562 -0500
    Change: 2016-12-10 05:59:28.702810562 -0500
    Birth: -
    [root@server1 ~]#
  • 元数据之时间戳:
       Access time:最近访问时间
       Modify time:最近修改(数据)时间
       Change time:最近改动(元数据)时间
       Birth time:创建时间 
    修改元数据时间戳:touch
    touch [OPTION]… FILE…
    -c: 指定的文件路径不存在时不予创建;
    -a: 仅修改access time;
    -m:仅修改modify time;
    -t STAMP    [[CC]YY]MMDDhhmm[.ss]

    例:
    以上图stat /nac/test 的结果为例  
    1)修改access time:  
    [root@server1 ~]# touch -a /nac/test
    [root@server1 ~]# stat /nac/test    
    File: ‘/nac/test’
    Size: 75              Blocks: 0          IO Block: 4096   directory
    Device: fd00h/64768d    Inode: 104016110   Links: 4
    Access: (0755/drwxr-xr-x)  Uid: (    0/    root)   Gid: (    0/    root)
    Context: unconfined_u:object_r:default_t:s0
    Access: 2016-12-10 23:02:44.430190973 -0500
    Modify: 2016-12-10 05:59:28.702810562 -0500
    Change: 2016-12-10 23:02:44.430190973 -0500
    Birth: -
    [root@server1 ~]#   
    2)修改modify time
    [root@server1 ~]# touch -m /nac/test
    [root@server1 ~]# stat /nac/test    
    File: ‘/nac/test’
    Size: 75              Blocks: 0          IO Block: 4096   directory
    Device: fd00h/64768d    Inode: 104016110   Links: 4
    Access: (0755/drwxr-xr-x)  Uid: (    0/    root)   Gid: (    0/    root)
    Context: unconfined_u:object_r:default_t:s0
    Access: 2016-12-10 23:02:44.430190973 -0500
    Modify: 2016-12-10 23:05:04.587246017 -0500
    Change: 2016-12-10 23:05:04.587246017 -0500
    Birth: -
    [root@server1 ~]#   
    3)修改至指定时间  
    [root@server1 ~]# touch -a -t 201512011111.11 /etc/test
    [root@server1 ~]# stat /etc/test
    File: ‘/etc/test’
    Size: 0               Blocks: 0          IO Block: 4096   regular empty file
    Device: fd00h/64768d    Inode: 35731198    Links: 1
    Access: (0644/-rw-r--r--)  Uid: (    0/    root)   Gid: (    0/    root)
    Context: unconfined_u:object_r:etc_t:s0
    Access: 2015-12-01 11:11:11.000000000 -0500
    Modify: 2016-12-10 23:06:47.220821768 -0500
    Change: 2016-12-10 23:06:47.220821768 -0500
    Birth: -
    [root@server1 ~]#

注:access time和modify time一旦改变,change time也会跟着改变;但是change time不可直接修改

命令的别名及引用

  • alias 设置命令别名 获取所有可用别名的定义:
    ~]# alias 定义别名:
    ~]# alias NAME='COMMAND'

注意:仅对当前shell进程有效
永久保存:/etc/bashrc(全局)、~/.bashrc(个人)文件中保存

  撤销别名:
   ~]# unalias NAME

例:  
1)查看当前的命令别名  
[root@server1 ~]# alias
alias cp='cp -i'
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 mv='mv -i'
alias rm='rm -i'
alias which='alias | /usr/bin/which --tty-only --read-alias --show-dot --show-tilde'
[root@server1 ~]# 
2)设置别名  
[root@server1 ~]# alias Grep='grep -o'
[root@server1 ~]# grep "UUID" /etc/fstab
UUID=c114b923-c522-443a-8a3b-637836838a61 /boot                   xfs     defaults        0 0
[root@server1 ~]# Grep "UUID" /etc/fstab 
UUID
[root@server1 ~]# 
3)取消别名  
[root@server1 ~]# unalias Grep
[root@server1 ~]# 
[root@server1 ~]# Grep "UUID" /etc/fstab
bash: Grep: command not found...
Similar command is: 'grep'
[root@server1 ~]#
  • 命令引用 
    引用指定命令的执行结果:
      $(COMMAND)或`COMMAND` 
    即将$(COMMAND)或`COMMAND` 的执行结果(不是$?代表的状态)作为前一个命令的参数

    例:
    [root@server1 ~]# echo "time is `date`"
    time is Sat Dec 10 23:27:31 EST 2016
    [root@server1 ~]#     
    
    [root@server1 test]# mkdir "$(date)"
    [root@server1 test]# ll
    total 12
    -rw-r--r--. 1 root root 497 Dec 10 01:03 cut.txt
    drwxr-xr-x. 2 root root  50 Dec 10 00:43 diff.test
    -rw-r--r--. 1 root root 465 Dec 10 04:01 fstab.bak
    -rw-r--r--. 1 root root  28 Dec 10 01:59 IO.out
    drwxr-xr-x. 2 root root   6 Dec 10 23:39 Sat Dec 10 23:39:10 EST 2016
    drwxr-xr-x. 2 root root  20 Dec 10 05:50 vim
    [root@server1 test]#

实战测验

1 创建/tmp命令下的ac,ad,bc,bd 
mkdir /tmp/{a,b}_{c,d}

[root@server1 ~]# mkdir /tmp/{a,b}_{c,d}  
[root@server1 ~]# cd /tmp
[root@server1 tmp]# ll
total 28
drwxr-xr-x.  2 root root         6 Dec 10 08:16 a_c
drwxr-xr-x.  2 root root         6 Dec 10 08:16 a_d
drwxr-xr-x.  2 root root         6 Dec 10 08:16 b_c
drwxr-xr-x.  2 root root         6 Dec 10 08:16 b_d

2 创建/tmp/mylinux目录下的目录
mkdir -pv /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}}

3 显示/var目录下所有以l开头,以一个小写字母结尾,且中间至少出现一位数字(可以有其他字符)的文件或目录
ls -d /var/l*[0-9]*[[:lower:]]

4 显示/etc目录下,以任意一个数字开头,且以非数字结尾的文件或目录
ls -d /etc/[0-9]*[^0-9]

5 显示/etc目录下,以非字母开头,后面跟了一个字母及其它任意长度任意字符的文件或目录
ls -d /etc/[^[:alpha:]][[:alpha:]]*

6 在/tmp目录下创建以tfile开头,后面跟当前日期和时间的文件,文件名形如:tfile-2016-05-27-09-32-22 
touch /tmp/tfile-$(date +%Y-%m-%d-%H-%M-%S)

7 复制/etc目录下所有以p开头,以非数字结尾的文件或目录到/tmp/mytest1目录中
cp -r /etc/p*[^0-9] /tmp/mytest1

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

9 复制/etc目录下所有以1或m或n开头,以.com结尾的文件至/tmp/mytet3目录中
cp /etc/[1mn]*.com /tmp/mytest3

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

(0)
上一篇 2016-12-11 17:44
下一篇 2016-12-11 19:01

相关推荐

  • bash 的过程式和循环式的编写

           bash脚本的编写,对于Linux这个多用户,多任务的系统,有很大的帮助,脚本可以帮助我们定时执行任务,过滤文本,检查系统性能等等。下面我们来了解一下过程式和循环式脚本的编写。 使用read 命令来接受输入 使用read 来把输入值分配给一个或多个shell 变量:  &nb…

    Linux干货 2016-08-24
  • (8.15-8.21)第2周博客作业

    1.linux文件管理命令 cat 功能:有从磁盘创建文件的功能(但不具备编辑功能),但主要功能还是2个或者以上文件的合并。 常配合使用参数: -n 或–number 由1 开始对所有输出的行数编号。-b 或–number-nonblank 和-n 相似,只不过对于空白行不编号。 使用方法: Cat –n diannaob1>d…

    Linux干货 2016-08-22
  • grep、正则表达式

    grep、正则表达式 grep:文本过滤(模式:pattern)工具 作用:文本搜索工具,根据用户指定的“模式”对目标文本逐行进行匹配检查;打印匹配到的行。 模式:由正则表达式字符及文本字符所编写的过滤条件。 正则表达式:由一类特殊字符及文本所编写的模式,其中有些字符不表示字符字面意义,而表示控制或通配的功能。 正则表达式分为两类:基本正则表达式、扩展正则表…

    Linux干货 2017-04-06
  • 第一周作业:计算机的组成及其功能

    第一周作业 主要是对应了马哥视频前两天共八节课的内容,作业一共有六道题 01.描述计算机的组成及其功能 02.按系列罗列Linux的发行版,并描述不同发行版之间的联系与区别 03.描述Linux的哲学思想,并按照自己的理解对其进行解释性描述 04.说明Linux系统上命令的使用格式;详细介绍ifconfig、echo、tty、startx、export、pw…

    2017-09-12
  • Week9’s homework

    Week9's homework 1、写一个脚本(1)判断当前系统上所有用户的shell是否为可登录shell(即用户的shell不是/sbin/nologin)(2)分别统计两类用户的个数;通过字符串比较来实现。 #!/bin/bash # for i in $(cat /etc/passwd |…

    Linux干货 2016-12-24
  • N25 – 第一周博客作业

      1. 描述计算机的组成及其功能2. 按系列罗列Linux的发行版,并描述不同发行版之间的联系和区别3. 描述Linux的哲学思想,并按照自己的理解对其进行解释性描述4. 说明Linux系统上命令的使用格式;详细介绍ifconfig,echo,tty,startx,export,pwd,history,sh…

    Linux干货 2016-11-28

评论列表(1条)

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

    赞~总结的比较详细~注意下文章的整体风格~~继续加油~