6.2.2 复制、删除与移动: cp, rm, mv

简介: 6.2.2 复制、删除与移动: cp, rm, mv

要复制文件,使用cp(copy)指令,移动目录与文件,使用mv(move),这个指令直接拿来作更名的动作(rename),移除是rm(remove)。

cp (复制文件或目录)

复制(cp)这个指令是非常重要的,不同身份者执行这个指令会有不同的结果产生,尤其是那个-a, -p的选项, 对于不同身份来说,差异则非常的大。

这个 cp 的功能很多,由于我们常常会进行一些数据的复制,所以也会常常用到这个指令的。一般来说,我们如果去复制别人的数据 (当然,该文件你必须要有 read 的权限才行) 时, 总是希望复制到的数据最后是我们自己的,所以,在默认的条件中, cp 的来源文件与目的文件的权限是不同的,目的文件的拥有者通常会是指令操作者本身。举例来说, 上面的范例二中,由于我是 root 的身份,因此复制过来的文件拥有者与群组就改变成为 root 所有了。


由于具有这个特性,因此当我们在进行备份的时候,某些需要特别注意的特殊权限文件, 例如密码档 (/etc/shadow) 以及一些配置文件,就不能直接以 cp 来复制,而必须要加上 -a或者是 -p 等等可以完整复制文件权限的选项才行!另外,如果你想要复制文件给其他的使用者, 也必须要注意到文件的权限(包含读、写、执行以及文件拥有者等等), 否则,其他人还是无法针对你给予的文件进行修订的动作。

范例四,使用-l及-s都会创建所谓的链接文件(link file),但是这两种文件却有不同的情况。-l就是所谓的实体链接(hard link),至于-s则是符号链接(symbolic link)。


至于bashrc_hlink文件与bashrc的属性与权限完全一模一样,与尚未进行链接前的差异则是第二栏的link数由1变成2了。

例题:你能否使用 dmtsai 的身份,完整的复制/var/log/wtmp文件到/tmp下面,并更名为dmtsai_wtmp呢?答:实际做看看的结果如下:

由于 dmtsai 的身份并不能随意修改文件的拥有者与群组,因此虽然能够复制wtmp的相关权限与时间等属性, 但是与拥有者、群组相关的,原本 dmtsai 身份无法进行的动作,即使加上 -a 选项,也是无法达成完整复制权限的。


总之,由于 cp 有种种的文件属性与权限的特性,所以,在复制时,你必须要清楚的了解到:


是否需要完整的保留来源文件的信息。


来源文件是否为链接文件(symbolic link file)


来源文件是否为特殊文件,例如FIFO,socket


来源文件是否为目录。


rm(移除文件或目录)

这是移除的指令(remove),要注意的是,通常在Linux系统下,为了怕文件被 root 误杀,所以很多 distributions 都已经默认加入 -i 这个选项了!而如果要连目录下的东西都一起杀掉的话, 例如子目录里面还有子目录时,那就要使用 -r 这个选项了!不过,使用“ rm -r ”这个指令之前,请千万注意了,因为该目录或文件“肯定”会被 root 杀掉!因为系统不会再次询问你是否要砍掉。所以那是个超级严重的指令下达。得特别注意!不过,如果你确定该目录不要了,那么使用 rm -r 来循环杀掉是不错的方式。


另外,文件名最好不要使用“-”号开头,因为“-”后面接的是选项,因此,单纯的使用“rm-aaa-"系统的指令就会误判。如果使用后面会谈到的正则表达式时,还是会出问题的!所以,只能用避过首位字符是 "-" 的方法,就是加上本目录“ ./ ”即可!如果 man rm 的话,其实还有一种方法,那就是“ rm -- -aaa- ”也可以。


mv (移动文件与目录,或更名)

这是搬移 (move) 的意思!当你要移动文件或目录的时后,这个指令就很重要。同样的,你也可以使用 -u ( update )来测试新旧文件,看看是否需要搬移。另外一个用途就是“变更文件名!”,我们可以很轻易的使用 mv 来变更一个文件的文件名。不过,在Linux 才有的指令当中,有个 rename , 可以用来更改大量文件的文件名,你可以利用 manrename 来查阅一下。


相关文章
|
Unix 索引 Python
BackTrader 中文文档(一)(2)
BackTrader 中文文档(一)
432 0
关于如何选择正确的U-boot版本
关于如何选择正确的U-boot版本
363 0
|
安全 Linux Shell
Linux用户管理指南:创建、删除、权限、最佳实践,全面掌握用户管理技巧
Linux用户管理指南:创建、删除、权限、最佳实践,全面掌握用户管理技巧
2183 0
|
7月前
|
存储 人工智能 算法
《探秘AI绿色计算:降低人工智能硬件能耗的热点技术》
在人工智能快速发展的背景下,硬件能耗问题日益突出。为实现绿色计算,降低能耗成为关键课题。新型硬件架构如CRAM、自旋电子器件和量子计算硬件,以及优化的低功耗芯片设计、3D集成技术和液冷散热技术等,正崭露头角。同时,硬件与软件协同优化,通过模型压缩、算法适配等手段,进一步提升能效。这些技术将推动AI向更绿色、高效的方向发展,助力应对全球气候变化。
296 19
|
9月前
|
自然语言处理 物联网 API
使用CAMEL和Unsloth进行数据生成与Qwen模型微调
本项目结合CAMEL和Unsloth,生成高质量训练数据并对Qwen 7B模型进行微调,提升其在特定内容上的理解和生成能力。我们使用CAMEL生成指令-输入-输出三元组数据,并通过Unsloth的LoRA技术加速微调过程。详细步骤包括环境准备、API密钥设置、模型加载与配置、数据生成与保存、模型训练及推理。最终,微调后的Qwen 7B模型能更好地处理CAMEL社区相关文本。 更多详情请参考: - [CAMEL GitHub](https://github.com/camel-ai/camel)
|
10月前
|
云安全 人工智能 自然语言处理
|
11月前
|
C语言
【c语言】指针就该这么学(1)
本文详细介绍了C语言中的指针概念及其基本操作。首先通过生活中的例子解释了指针的概念,即内存地址。接着,文章逐步讲解了指针变量的定义、取地址操作符`&`、解引用操作符`*`、指针变量的大小以及不同类型的指针变量的意义。此外,还介绍了`const`修饰符在指针中的应用,指针的运算(包括指针加减整数、指针相减和指针的大小比较),以及野指针的概念和如何规避野指针。最后,通过具体的代码示例帮助读者更好地理解和掌握指针的使用方法。
185 1
|
12月前
|
开发框架 .NET C#
VSCode开发.net项目时调试无效
【9月更文挑战第22天】在使用 VSCode 开发 .NET 项目时遇到调试问题,可从项目配置、调试配置、调试器安装、运行环境、日志和错误信息等方面排查。确认项目类型及文件配置,检查 `launch.json` 文件及配置项,确保调试器扩展已安装并启用,验证 .NET 运行时版本和环境变量,查看 VSCode 输出窗口和项目日志文件,检查权限及代码错误。若问题仍未解决,可查阅官方文档或社区论坛。
390 4
|
监控 网络架构 Windows
键盘没有pause break,该怎么办?
键盘没有pause break,该怎么办?
Cannot resolve method ‘success‘ in ‘Result‘
Cannot resolve method ‘success‘ in ‘Result‘