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 实时查看被添加到一个文件中的内容

 
原文地址:https://www.cnblogs.com/bjlhx/p/10531760.html