总结cp、mv命令的用法(要求列出源及目标各种情况的表格)
cp 命令
该命令用于复制文件。
基本用法:
cp source_fileanme target_dir
# 复制之后重命名
[19:56:44 main@centos8-huasio:~ $] #38 cp /home/main/file.log /data/file.log
# 复制到指定目录,但是不重命名
[19:56:44 main@centos8-huasio:~ $] #38 cp /home/main/file.log /data/
cp 本质上是对目标文件的完整复制成一个新文件,生成新 inode 表记录,然后在目标位置生成目录项,将数据与 inode 关联;
- 分配一个空闲的 INode Number,在 INode 中生成新记录
- 在目录中创建目录项,将文件名称与 INode Number 关联
- 拷贝数据生成新的文件
mv 命令
该命令是移动文件。
基本用法:
mv source_filename target_filename
# 移动文件到指定路径,并且重命名
[19:57:00 main@centos8-huasio:~ $] #39 mv /home/main/file.log /data/file.log
# 移动文件到指定位置,不重命名
[19:57:00 main@centos8-huasio:~ $] #39 mv /home/main/file.log /data/
使用 mv 对移动目录或者文件的时候,存在两种情况:
- 当前分区内移动
- 当前分区移动的情况,使用新名称在目录中创建新的目录项
- 删除旧的目录项
- INode 记录以及数据不会改变
- 跨分区移动
- 相当于 cp 和 rm 的组合使用,旧分区的 INode 对应的记录会被删除。
- 在新的分区重新分配 INode Number
移动文件看是否跨分区,没有跨分区就是只是对目录项记录进行更改,以及该换新名称。跨分区那就是整个文件都从旧分区中删除,然后在新分区中创建新的记录,将数据写入到新分区的磁盘中。
总结IO重定向的类别和区别
内存分成两部分,一份是内核,一份是应用程序空间,而程序本身也包含两部分数据:程序指令和数据。
那么,程序的数据是从何而来的呢?
很明显,有的数据需要用户输入给程序,既然这样就要一种输入设备。在 Linux 中,一切都表现为文件,所以输入输出也是文件,一种设备文件。
输入输出设备文件表现形式是一种文件描述符,只要打开任何应用程序,系统就会为该应用程序分配标准输入输出设备的文件描述符,这是固定的描述符,准确的说,应该是将描述符分配给进程,每个进程都有固定标准输入输出文件描述符。除此之外,进程内打开的其它文件则随机分配。
- 标准输入(STDIN) 0:默认接受来自终端窗口的输入
- 标准输出(STDOUT) 1:默认输出到终端窗口
- 标准错误(STDERR) 2:默认输出到终端窗口
它们有什么区别吗?
标准输出、标准错误这两种设备是输出数据到指定位置,默认是终端窗口。
标准输入是从外界获取数据,默认是从终端窗口获取数据。
这三种设备,一般进程都是指定当前终端窗口,我们可以通过特定符号来修改数据的输入源,比如说文件。
- >:标准输出,可以将输出到指定文件
- 2>:标准错误,可以将输出到指定文件
- <:标准输入,可以从文件中获取数据
将 /etc/issue 文件中的内容转换为大写后保存至 /tmp/issue.out 文件中
通过 tr 命令,可以对文件进行简单的转换、删除、压缩功能的处理。
将内容转换成大写。
[20:03:06 main@centos8-huasio:~ $] #40 cat /etc/issue | tr -t '[a-z]' '[A-Z]' >> /tmp/issue.out
[20:31:13 main@centos8-huasio:~ $] #41 cat /tmp/issue.out
\S
KERNEL \R ON AN \M
网友评论