您的位置:首页 > 其它

第九天:基础文件管理

2016-07-29 10:18 31 查看
更好的排版及更全的图片显示请移步:
www.nextkara.net

cp复制命令:
cp [OPTION]... [-T] SOURCE DEST

cp [OPTION]... SOURCE... DIRECTORY

cp [OPTION]... -t DIRECTORY SOURCE...

cp SRC DEST

SRC是文件:
如果目标不存在:新建DEST,并将SRC中内容填充至
DEST中
如果目标存在:
如果DEST是文件:将SRC中的内容覆盖至DEST中
基于安全,建议为cp命令使用-i选项
如果DEST是目录:在DEST下新建与原文件同名的文
件,并将SRC中内容填充至新文件中
cp SRC... DEST
SRC...:多个文件
DEST必须存在,且为目录,其它情形均会出错;
cp SRC DEST
SRC是目录:此时使用选项:-r
如果DEST不存在:则创建指定目录,复制SRC目录中所
有文件至DEST中;
如果DEST存在:
如果DEST是文件:报错
如果DEST是目录:



选项[ options ]:
-i:交互式

-r, -R: 递归复制目录及内部的所有内容;

-a: 归档,相当于-dR --preserv=all

-d:--no-dereference --preserv=links 不复制原文件,只复制链接名

--preserv[=ATTR_LIST] ;mode: 权限 ;ownership: 属主属组 ;timestamp:时间戳;links;xattr;context;all

-p: 等同--preserv=mode,ownership,timestamp

-v: --verbose 详细信息

-f: --force 强制

mv移动命令:
mv [OPTION]... [-T] SOURCE DEST

mv [OPTION]... SOURCE... DIRECTORY

mv [OPTION]... -t DIRECTORY SOURCE...

常用选项:
-i: 交互式

-f: 强制

rm命令:移除文件或目录操作
rm [OPTION]... FILE...
常用选项:
-i: 交互式

-f: 强制删除

-r: 递归

--no-preserve-root:强制执行作死命令必要选项

例: #rm -rf /
练习:
1、使用别名命令,每日将/etc/目录下所有文件,
备份到/testdir/下独立的新目录下,并要求新目录
格式为 backupYYYY-mm-dd ,备份过程可见
alias baketc="cp -viRp /etc /testdir/backup`date +%F`"



2、先创建/testdir/rootdir目录,再复制/root所有
下文件到该目录内,并要求保留原有权限


基本目录操作:
tree 显示目录树
-d: 只显示目录

-L level:指定显示的层级数目

-P pattern: 只显示由指定pattern匹配到的路径

mkdir 创建目录
-p: 存在于不报错,且可自动创建所需的各目录;

-v: 显示详细信息

-m MODE: 创建目录时直接指定权限;

rmdir 删除空目录

-p: 递归删除父空目录

-v: 显示详细信息

rm -r 递归删除目录树
练习:
(1) 如何创建/testdir/dir1/x, /testdir/dir1/y,
/testdir/dir1/x/a, /testdir/dir1/x/b,
/testdir/dir1/y/a, /testdir/dir1/y/b
mkdir -p /testdir/dir1/{x,y}/{a,b}
(2) 如何创建/testdir/dir2/x, /testdir/dir2/y,
/testdir -p /dir2/x/a, /testdir/dir2/x/b
mkdir /dir2/{x/{a,b},y}
(3) 如何创建/testdir/dir3, /testdir/dir4, /testdir/dir5,
/testdir/dir5/dir3, /testdir/dir5/dir4
mkdir /testdir/dir{3,4,5/dir{3,4}}
显示当前shell进程所有可用的命令别名
alias

定义别名NAME,其相当于执行命令VALUE;
alias NAME='VALUE'

在命令行中定义的别名,仅对当前shell进程有效
如果想永久有效,要定义在配置文件中
仅对当前用户:~/.bashrc
对所有用户有效:/etc/bashrc


重新载入配置文件:
source /path/to/file
. /path/to/file
撤销别名:unalias new_command
如果别名同原命令同名,如果要执行原命令,可使用
“\COMMAND”
’COMMAND’
/PATH/COMMAND:外部命令
ls命令补充内容:
用法:
ls [options] [files_or_dirs]
Example:
ls -a 包含隐藏文件

ls -l 显示额外的信息

ls -R 目录递归通过

ls -ld 目录和符号链接信息

ls -1 文件分行显示

ls –S 按从大到小排序

ls –u 配合-t选项,显示并按atime从新到旧排序

ls –U 不排序按目录存放顺序显示

文件通配符:
* 匹配零个或多个字符

? 匹配任何单个字符

~ 当前用户家目录

~username 用户家目录

~+ 当前工作目录

~- 前一个工作目录

[0-9] 匹配一个数字范围

[a-z]:大写和小写字母

[A-Z]:大写字母

[wxc] 匹配列表中的任何的一个字符

[^wxc] 匹配列表中的所有字符以外的字符

预定义的字符类:#man 7 glob

[:digit:]:任意数字,相当于0-9

[:lower:]:任意小写字母

[:upper:]: 任意大写字母

[:alpha:]: 任意大小写字母

[:alnum:]:任意数字或字母

[:space:]:空格

[:punct:]:标点符号

练习:
1、显示/var目录下所有以l开头,以一个小写字母结尾,且中
间出现至少一位数字的文件或目录
ll -h /var/l*[[:digit:]]*[[:lower:]]
2、显示/etc目录下以任意一位数字开头,且以非数字结尾的
文件或目录
ll -h /etc/[[:digit:]]*[^[:digit:]]
3、显示/etc/目录下以非字母开头,后面跟了一个字母及其
它任意长度任意字符的文件或目录
ll -h /etc/[^[:alpha:]][[:alpha:]]*
4、显示/etc目录下所有以m开头以非数字结尾的文件或目录
ll -h /etc/m*[^[:digit:]]
5、显示/etc目录下,所有以.d结尾的文件或目录
ll -h /etc/*.d
6、显示/etc目录下,所有.conf结尾,且以m,n,r,p开头的文
件或目录
ll -h /etc/`mnrp`*

stat
文件类别:metadata, data
三个时间戳:
access time:访问时间,atime,读取文件内容

modify time: 修改时间, mtime,改变文件内容(数据)

change time: 改变时间, ctime,元数据发生改变

创建空文件和刷新时间
touch命令:
touch [OPTION]... FILE...
-a: 仅改变 atime

-m: 仅改变 mtime

-t:STAMP: [[CC]YY]MMDDhhmm[.ss]

-c: 如果文件不存在,则不予创建

inode(index node)表中包含文件系统所有文件列表
一个节点 (索引节点)是在一个表项,包含有关文件的信息
( 元数据 ),包括:
文件类型,权限,UID,GID

链接数(指向这个文件名路径名称个数)

该文件的大小和不同的时间戳

指向磁盘上文件的数据块指针

有关文件的其他数据



文件引用一个是 inode号
是通过文件名来引用一个文件
一个目录是目录下的文件名和文件inode号之间的映射
注意:文件夹是特殊文件,记载有目录下的文件名和inode值,可使用vim编辑器查看文件夹内的内容




mv和inode
如果mv命令的目标和源在相同的文件系统,作为mv 命令
用新的文件名创建对应新的目录项
删除旧目录条目对应的旧的文件名
不影响inode表(除时间戳)或磁盘上的数据位置:没有
数据被移动!
如果目标和源在一个不同的文件系统, mv相当于cp和rm
rm和inode
链接数递减,从而释放的inode号可以被重用
把数据块放在空闲列表中
删除目录项
数据实际上不会马上被删除,但当另一个文件使用数据块
时将被覆盖。
cp和inode
分配一个空闲的inode号,在inode表中生成新条目
在目录中创建一个目录项,将名称与inode编号关联
拷贝数据生成新的文件
硬链接
创建硬链接会增加额外的记录项以引用文件
对应于同一文件系统上一个物理文件
每个目录引用相同的inode号
创建时链接数递增
删除文件时:
rm命令递减计数的链接
文件要存在,至少有一个链接数
当链接数为零时,该文件被删除
不能跨越驱动器或分区
语法:
ln filename [linkname ]
文件可以包含多种类型的数据
检查文文件类型,然后确定适当的开放命令或应用程序使用
file [options] <filename>...
Option:
-b列出文件辨识结果时,不显示文件名称。

-c详细显示指令执行过程,便于排错或分析程序执行形

-f列出文件中文件名的文件类型

-F使用指定分隔符号替换输出文件名后默认的”:”分隔符

-i输出mime类型的字符串

-L查看对应软链接对应文件的文件类型

-z尝试去解读压缩文件的内容

--help显示命令在线帮助

课后作业:
1、将/etc/issue文件中的内容转换为大写后保存至/tmp/issue.out文件中
tr 'a-z' 'A-Z' < /etc/issue
2、将当前系统登录用户的信息转换为大写后保存至/tmp/who.out文件中
echo `who` | tr 'a-z' 'A-Z' > /tmp/who.out
3、一个linux用户给root发邮件,要求邮件标题为”help”,邮件正文如下:
Hello, I am 用户名,the system version is here,pleasehelp me to check it ,thanks!
操作系统版本信息
echo "hello I am `whoami`,the system version is here, please help me to
check it ,thanks..`cat /proc/version`"|mail -s "help" root
4、将/root/下文件列表,显示成一行,并文件名之间用空格隔开
ls -1 /root | tr '*\n' '* '
5、file1文件的内容为:”1 2 3 4 5 6 7 8 9 10” 计算出所有数字的总和
echo $[$(tr ' ' '+' < file1)]
6、删除Windows文本文件中的'^M'字符
tr -d '^M' < fileW
7、处理字符串“xt.,l 1 jr#!$mn2 c*/fe3 uz4”,只保留其中的数字和空格
[root@CentOS7 testdir]# echo "xt.,l 1 jr#"xt.,l 1 jr#donemn2 c*/fe3
uz4"mn2 c*/fe3 uz4" | tr -d '[[:punct:]]' | tr -d '[[:alpha:]]'



8、将PATH变量每个目录显示在独立的一行
[root@CentOS7 testdir]# echo $PATH | tr ':' '\n'



9、删除指定文件的空行
[root@CentOS7 testdir]# tr -s "\n" < ll



10、将文件中每个单词(字母)显示在独立的一行,并无空行
[root@CentOS7 testdir]# cat hostname | tr "[[:space:]]" "\n" | tr -s "\n"


内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  文件管理