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%%.*}
该方式是从右开始最大化匹配到字符".",然后截掉右边内容(包括字符"."),返回余下左侧部分。
小结:
1.2.2、basename和dirname
命令是专门用来截取文件名和路径名的。
1、basename
$ 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 实时查看被添加到一个文件中的内容