zoukankan      html  css  js  c++  java
  • 002-linux命令-文件和目录、查看文件内容-【cp、${}、basename、dirname、ls】

    一、文件和目录

    1.1、cp复制

    语法

    cp [options] <source file or directory> <target file or directory>cp [options] source1 source2 source3 …. directory

    options选项包括:

    - a 保留链接和文件属性,递归拷贝目录,相当于下面的d、p、r三个选项组合。
    - d 拷贝时保留链接。
    - f 删除已经存在目标文件而不提示。
    - i 覆盖目标文件前将给出确认提示,属交互式拷贝。
    - p 复制源文件内容后,还将把其修改时间和访问权限也复制到新文件中。
    - r 若源文件是一目录文件,此时cp将递归复制该目录下所有的子目录和文件。当然,目标文件必须为一个目录名。
    - l 不作拷贝,只是链接文件。
    -s 复制成符号连结文件 (symbolic link),亦即『快捷方式』档案;
    -u 若 destination 比 source 旧才更新 destination。

    示例

    cp file1 file2 复制一个文件
    cp dir/* . 复制一个目录下的所有文件到当前工作目录
    cp -a /tmp/dir1 .复制一个目录到当前工作目录
    cp -a dir1 dir2 复制一个目录
    cp -rvf dir1 dir2  复制文件夹dir1到dir2,显示进度
    cp -rf dir1 dir 复制文件夹dir1到dir2,不显示进度

    1.2、shell 提取文件名和目录名

    1.2.1、使用变量操作符 ${}

    1、${var##*/}

    该方式是从左开始最大化匹配到字符"/",然后截掉左边内容(包括字符"/"),返回余下右侧部分。

    $ var=/dir1/dir2/file.txt
    $ echo ${var##*/}
    file.txt

    在shell脚本中,可以使用变量来保存这个结果,再加以利用,如file=${var##*/}

    我们将"/" 换成"." 

    $ var=/dir1/dir2/file.txt
    $ echo ${var##*.}
    txt

    2、${var#*.} 

    该方式是从左开始第一次匹配到字符".",然后截掉左边内容(包括字符"."),返回余下右侧部分。

    $ var=/dir1/dir2/file.tar.gz
    $ echo ${var#*.}
    tar.gz

    3、${var%/*}

    该方式是从右开始第一次匹配到字符"/",然后截掉右边内容(包括字符"/"),返回余下左侧部分。

    $ var=/dir1/dir2/file.txt
    $ echo ${var%%/*}
    /dir1/dir2

    4、${var%%.*}

    该方式是从右开始最大化匹配到字符".",然后截掉右边内容(包括字符"."),返回余下左侧部分。

    小结:

      看键盘,"#"在"%"的左边,当使用#的时候,就说明截掉左边的内容,反之%就是从右边开始截掉。而##和%%就是最大化的截掉。
      *:表示要删除的内容,另外还需要一个字符表示戒掉点。
      例如:${var%%x*}表示找出从右侧开始最大化的查找到字符"x",并删除字符x及其右边的字符。

    1.2.2、basename和dirname

      命令是专门用来截取文件名和路径名的。

    1、basename

    该命令的作用提取文件名,使用方法为basename NAME [SUFFIX]。
    1)从路径中提出出文件名(带后缀),例子如下:
    $ var=/dir1/dir2/file.txt
    $ echo $(basename ${var})
    file.txt

    2)从上面命令的用法中可以看到,后缀(SUFFIX)是一个可选项。所以,若只想提取出文件名file,而不带有后缀,还可以在变量的后面加上后缀名,例子如下:

    $ var=/dir1/dir2/file.txt
    $ echo $(basename ${var} .txt)
    file

    2、dirname

    该命令的作用是从路径中提取出路径名,使用方法为 dirname NAME

    使用例子如下:

    $ var=/dir1/dir2/file.txt
    $ echo $(dirname ${var})
    /dir1/dir2

    这样就提取出了file.txt文件所在的路径。

    注意:该命令不仅能提取出普通文件所在目录,它能提取出任何文件所在的目录,例如目录所在的目录,如下:

    $ var=/dir1/dir2/
    $ echo $(dirname ${var})
    /dir1

      

    1.2、其他

    cd /home :进入‘/home’目录

    cd .. 返回上一级目录

    cd ../..返回上两级目录

    cd 进入个人的主目录

    cd ~user1进入个人的主目录

    cd - 返回上次所在的目录

    pwd 显示工作路径

    ls 查看目录中的文件

    ls -F 查看目录中的文件

    ls -l 显示文件和目录的详细资料

    ls -a 显示隐藏文件

    ls *[0-9]* 显示包含数字的文件名和目录名

    tree 显示文件和目录由根目录开始的属性结构

    lstree 显示文件和目录由根目录开始的属性结构

    mkdir dir1  创建一个叫做dir1的目录

    mkdir dir1 dir2 同时创建两个目录

    mkdir -p /tmp/dir1/dir2 创建一个目录树

    rm -f file1 删除file1的文件

    rmdir dir1 删除dir1目录

    rm -rf dir1 删除dir1目录以及内容

    mv dir1 new_dir 重命名/移动  一个目录

    ln -s file1 lnk1 创建一个指向文件或目录的软链接

    ln file1 lnk1 创建一个指向文件或目录的物理链接

    touch -t 0912250000 file1 修改一个文件或目录的时间戳(YYMMDDhhmm)

    二、查看文件内容

    cat file1 从第一个字节开始正向查看文件的内容

    tac file1 从最后一行开始反向查看文件的内容

    more file1 查看一个长文件内容

    less file1 和more类似,反向查看

    head -2 file1 查看文件的前两行

    tail -2 file1 查看文件最后两行

    tail -f /log/message 实时查看被添加到一个文件中的内容

     
  • 相关阅读:
    Java File类应用:递归遍历文件夹和递归删除文件
    综合应用题:多线程复制文件(知识点:多线程、随机读写流)
    Java IO流之随机读写流RandomAccessFile
    Java之枚举----小试牛刀练习
    Java之枚举
    PHP笔试题及答案
    静态方法何时使用
    你怎么理解并使用静态方法和实例化方法的?
    99%的人理解错 HTTP 中 GET 与 POST 的区别
    描述一下大流量高并发量网站的解决方案
  • 原文地址:https://www.cnblogs.com/bjlhx/p/10531760.html
Copyright © 2011-2022 走看看