【Linux】文件和目录管理命令——ls,cp,rm,mv

1.文件与目录的查看:Is

  1. ls  [-aAdfFhilnrRst]  文件名或目录名称
  2. ls  [ --color={never,auto,always}  ]文件名或目录名称
  3. ls  [ --full-time ]文件名或目录名称

选项与参数:

  • -a:全部的文件,连同隐藏文件(开头为 .的文件)一起列出来(常用);
  • -A:全部的文件,连同隐藏文件,但不包括  .  与  ..  这两个目录;
  • -d:仅列出目录本身,而不是列出目录内的文件数据(常用);
  • -f:直接列出结果,而不进行排序(ls默认会以文件名排序);
  • -F:根据文件、目录等信息,给予附加数据结构,例如:  *:代表可执行文件;/:代表目录;=:代表socket 文件;|:代表FIFO文件;
  • -h:将文件容量以人类较易读的方式(例如GB、KB等)列出来;
  • -i:列出inode 号码;
  • -l:详细信息显示,包含文件的属性与权限等数据:(常用);
  • -n:列出UTD与GID而非使用者与用户组的名称(UID与GID会在账号管理提到)
  • -r:将排序结果反向输出,例如:原本文件名由小到大,反向则为由大到小;
  • -R:连同子目录内容一起列出来,等于该目录下的所有文件都会显示出来;
  • -S:以文件容量大小排序,而不是用文件名排序;
  • -t:依时间排序,而不是用文件名。
  • -color=never :不要依据文件特性给予颜色显示;
  • --color=always:显示颜色;
  • --color=auto:让系统自行依据设置来判断是否给予颜色;
  • --full-time :以完整时间模式(包含年。月、日、时。分) 输出;
  • --time-(atime,ctime):输出access 时间或改变权限属性时间(ctime )而非内容修改时间(modification time)

在Linux系统当中,这个Is命令可能是最常被执行的吧!

因为我们随时都要知道文件或是目录的相关信息,不过,我们Linux的文件所记录的信息实在是太多了,Is没有需要全部都列出来,所以,当你只执行Is时,默认显示的只有:非隐藏文件的文件名、以文件名进行排序及文件名代表的颜色显示如此而已。

举例来说,你执行【Is /etc】之后,只有经过排序的文件名,并以蓝色显示目录及白色显示一般文件,如此而已。

        那如果我还想要加入其他的显示信息时,可以加入上面提到的那些有用的选项,举例来说,我们之前一直用到的-l这个显示详细信息,以及将隐藏文件也一起列示出来的-a选项等。

下面则是一些常用的范例,实际试做看看:
 

范例一:将家目录下的所有文件列出来(含属性与隐藏文件)



#这个时候你会看到以  . 为开头的几个文件,以及目录文件(.)、(..),不过,目录文件文件名都是以深蓝色显示,有点不容易看清楚.

范例二:承上题,不显示颜色、但显示出该文件名代表的类型(type)


范例三:完整的显示文件的修改时间



#请仔细看,上面的【时间】栏位变了。变成较为完整的格式。一般来说,ls-al仅列出目前短格式的时间。有时不会列出年份,借由--full-time可以查到比较正常的完整时间格式

        其实 Is的用法还有很多,包括查看文件inode号码的Is -i选项,以及用来进行文件排序的-S选项,还有用来查看不同时间的操作的--time=atime等选项。而这些选项的存在都是因为Linux文件系统记录了很多有用的信息的缘故。

那么Linux的文件系统中,这些与权限、属性有关的数据放在哪里?放在inode 里面。
 

        无论如何Is最常被使用到的功能还是那个-l的选项,为此很多Linux发行版在默认的情况中,已经将ll(L的小写)设置成为Is-I的意思。其实,那个功能是Bash shell的alias功能,也就是说,我们直接输入ll就等于是输入Is-l。

2.复制文件或目录:cp

cp的主要用法如下: 

  1. cp [options] sourcel source2 source3
  2. cp  [-adfilprsu] 源文件(source)目标文件(destination)

选项与参数:

  • -a:相当于-dr --preserve=all的意思,至于dr请参考下列说明(常用);
  • -d:若源文件为链接文件的属性(link file),则复制链接文件属性而非文件本身;
  • -f:为强制(force)的意思,若目标文件已经存在且无法开启,则删除后再尝试一次,
  • -i:若目标文件(destination)已经存在时,在覆盖时会先询问操作的进行(常用);
  • -l:进行硬链接(hard link)的链接文件建立,而非复制文件本身;
  • -p:连同文件的属性(权限、用户、时间)一起复制过去,而非使用默认属性(备份常用);
  • -r:递归复制,用于目录的复制操作(常用);
  • -s:复制成为符号链接文件(symbolic link),亦即“快捷方式”文件;
  • -u: destination 比 source 旧才更新destination,或 destination 不存在的情况下才复制;
  • -preserve=all:除了-p的权限相关参数外,还加入 SELinux的属性,links、xattr 等也复制;

最后需要注意的是,如果源文件有两个以上,则最后一个目标文件一定要是“目录”才行。

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

        下面的练习中,有的身份为root,有的身份为一般账号在我这里用zs_108这个账号,练习时请特别注意身份的差别。好,开始来做复制的练习与观察:

范例一:用root 身份,将家目录下的.bashrc复制到/tmp 下,并更名为bashrc.




重复作两次操作,由丁/tmp 下面已经存在 bashrc
加上-i选项后,则在覆盖前会询问使用者是否确定,可以按下n或y来二次确认。n不覆盖,y为覆盖.

范例二:切换目录到/tmp,并将/var/log/wtmp复制到/tmp且观察属性。

注意:想要复制到目前的目录,最后的.不要忘。

注意上面的特殊字体,在不加任何选项的情况下,文件的某些属性/权限会改变。
这是个很重要的特性,要注意,还有,连文件建立的时间也不一样了。

那如果你想要将文件的所有特性都一起复制过来该怎么办?可以加上-a,如下所示:

#了解了吧!整个数据特性完全一模一样。真是不赖,这就是-a的特性。
 

        这个 cp的功能很多,由于我们常常会进行一些数据的复制,所以也会常常用到这个命令。

一般来说,我们如果去复制别人的数据(当然,该文件你必须要有read的权限才行)时,总是希望复制到的数据最后是我们自己的,所以,在默认的条件中,cp的源文件与目标文件的权限是不同的,目标文件的拥有者通常会是命令操作者本身。

举例来说,上面的范例二中由于我是root的身份,因此复制过来的文件拥有者与用户组就改变成了root所有。

        由于具有这个特性,因此当我们在进行备份的时候,某些需要特别注意的特殊权限文件,例如密码文件(/etc/shadow)以及一些配置文件,就不能直接以cp来复制,而必须要加上-a或是-p等可以完整复制文件权限的选项才行。

        另外,如果你想要复制文件给其他的用户,也必须要注意到文件的权限,包含读、写、执行以及文件拥有者等),否则,其他人还是无法针对你给予的文件进行自定义的操作

范例三:复制/etc/这个目录下的所有内容到/tmp下面。

如果是目录的话使用cp是不能复制的,得加上-r选项才行

不过-r是可以复制目录,但是,文件与目录的权限可能会被改变。

所以,也可以利用【cp -a /etc /tmp】来执行命令,尤其是在备份的时候

范例四:将范例一复制的bashrc 建立一个符号链接文件(symbolic 1ink).

范例四可有趣了,使用-l及-s都会建立所谓的链接文件(link file),但是这两种链接文件却有不一样的情况。

这是怎么一回事?

        那个-l就是所谓的硬链接(hard link),至于-s则是符号链接(symbolic link),简单来说,bashrc_slink是一个快捷方式,这个快捷方式会链接到bashrc。所以你会看到文件名右侧会有个指向(->)的符号。

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


范例五:若~/.bashrc比/tmp/bashrc新,才复制过来.

这个-u的特性,是在目标文件与源文件有差异时,才会复制的。所以,常被用于备份的工作当中
 

范例六;将范例四造成的bashrc_slink复制成为bashrc_slink_1和bashrc_slink_2



        这个例子也是很有趣。原本复制的是链接文件,但是却将链接文件的实际文件复制过来了。

        也就是说,如果没有加上任何选项时,cp复制的是原始文件,而非链接文件的属性。

若要复制链接文件的属性,就得要使用-d的选项了,如bashrc_slink_2所示。

范例七:将家目录的.bashrc及.bash_history复制到/tmp下面。

可以将多个文件一次复制到同一个目录,最后面一定是目录

范例八,你能否使用zs_108的身份,完整地复制/var/log/wtmp文件到/tmp下面,并更名为dmtsai_wtmp?

答:实际做的结果如下:



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

而root账号下面轻松做到

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

  1. 是否需要完整的保留源文件的信息?
  2. 源文件是否为符号链接文件(symbolic link file)?
  3. 源文件是否为特殊的文件,例如FIFO、socket等?
  4. 源文件是否为目录?

3.rm(删除文件或目录)

  • rm[-fir]文件或自录

选项与参数:

  1. -f:就是 force的意思,忽略不存在的文件,不会出现警告信息。
  2. -I:交互模式,在删除前会询问使用者是否操作。
  3. -r:递归删除,最常用于目录的删除,这是非常危险的选项。

范例一:将刚刚在cp的范例中建立的bashrc删除掉、

#如果加上-i的选项就会主动询问,避免你删除到错误的文件名。

范例二:通过通配符*的帮忙,将/tmp下面开头为bashrc的文件名通通删除



 注意那个星号,代表的是0到无穷多个任意字符,很好用的东西。

范例三:将cp 范例中所建立的/tmp/etc/这个目录删除掉

删不掉因为不是空目录 

我们就得使用

……(中间省略)……

#因为身份是root,默认已经加入了-i的选项,所以你要一直按y才会删除。
如果不想要继续按y,可以按ctrl+c来终止这个删除工作

这是一种保护的操作,如果确定要删除掉此目录而不要询问,可以在命令前加上反斜线,可以忽略掉alias的指定选项,


#拜托,这个范例很可怕,你不要删错了,删除/etc系统会挂掉。

范例四:删除一个带有-开头的文件。


文件因为”-“是选项嘛,所以系统误判了。

我们的bash也给我们提了建议,我们来试试看


        这是删除的命令(remove),要注意的是,通常在Linux系统下,为了怕文件被root误删,所以很多Linux发行版都已经默认加入了-i这个选项。

        而如果要连目录下的东西都一起删除的话,例如子目录里面还有子目录时,那就要使用-r这个选项。不过,使用rm -r这个命令之前,请千万注意了,因为该目录或文件肯定会被root删除。因为系统不会再次询问你是否要删除,所以那是个超级严重的命令,得特别注意。

        不过,如果你确定该目录不要了,那么使用rm-r来递归删除是不错的方式。

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

4.mv(移动文件与目录,或重命名)

  • mv [-fiu] source destination
  • mv [options] source1 source2 ...  directory

选项与参数:

  1. -f:force 强制的意思,如果目标文件已经存在,不会询问而直接覆盖。
  2. -i:若目标文件(destination)已经存在时,就会询问是否覆盖。
  3. -u:若目标文件已经存在,且source 比较新,才会更新(update)

.范例一:复制一文件,建立一目录,将文件移动到目录中。

将某个文件移动到某个目录去,就是这样做。

范例二:将刚刚的目录名称更名为mvtest2.

这样就重命名了。
#其实在Linux下面还有个有趣的命令,名称为rename,
#该命令专职进行多个文件名的同时重命名,并非针对单一文件名修改,与mv不同,请man rename.

范例三:再建立两个文件,再全部移动到/tmp/mvtest2当中。

注意到这边,如果有多个源文件或目录,则最后一个目标文件一定是【目录】
意思是说,将所有的文件移动到该目录的意思。

这是移动(move)的意思,当你要移动文件或目录的时候,这个命令就很重要。

同样,你也可以使用-u(update)来测试新旧文件,看看是否需要移动。

另外一个用途就是修改文件名,我们可以很轻易地使用mv 来修改一个文件的文件名。

不过,在Linux中有个rename命令,可以用来更改大量文件的文件名,你可以利用man rename来查看一下,也是挺有趣的命令。
 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/785802.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

高质量PPT模板素材,免费下载

在制作演示文稿时,选择合适的PPT模板至关重要。为了帮助您轻松找到免费的PPT模板资源,这里分享了6个优秀的网站。这些资源库提供了各种风格和主题的PPT模板,让您的演示内容更生动、更吸引人。 1、baotuppt ppt模板下载-ppt背景 一个专业分享…

如何使用HTML和JavaScript读取文件夹中的所有图片并显示RGB范围

如何使用HTML和JavaScript读取文件夹中的所有图片并显示RGB范围 在这篇博客中&#xff0c;我将介绍如何使用HTML和JavaScript读取文件夹中的所有图片&#xff0c;并显示这些图片以及它们的RGB范围。这个项目使用现代浏览器提供的<input type"file" webkitdirecto…

探展2024世界人工智能大会之合合信息扫描黑科技~

文章目录 ⭐️ 前言⭐️ AIGC古籍修复文化遗产焕新⭐️ 高效的文档图像处理解决方案⭐️ AIGC扫描黑科技一键全搞定⭐️ 行业级的大模型加速器⭐️ 结语 ⭐️ 前言 大家好&#xff0c;我是 哈哥&#xff08;哈哥撩编程&#xff09; &#xff0c;这次非常荣幸受邀作为专业观众参…

深入解析工信认证分类:价值及重要性

随着科技的发展和全球化的推进&#xff0c;企业对于产品和服务的质量、安全、环保等方面的要求日益提高。在这样的背景下&#xff0c;工信认证作为一种权威的第三方认证服务&#xff0c;受到了众多企业的青睐。 一、工信认证的类型 工信认证涵盖了多个领域&#xff0c;包括但不…

温州海经区管委会主任、乐清市委书记徐建兵带队莅临麒麟信安调研

7月8日上午&#xff0c;温州海经区管委会主任、乐清市委书记徐建兵&#xff0c;乐清市委常委、副市长叶序锋&#xff0c;乐清市委办主任郑志坚一行莅临麒麟信安调研&#xff0c;乐清市投资促进服务中心及湖南省浙江总商会相关人员陪同参加。麒麟信安董事长杨涛、总裁刘文清热情…

百度Feed业务数仓建模实践

作者 | XY 导读 Feed&#xff0c;即个性化推荐信息流&#xff0c;是百度 App 上承载各种类型内容&#xff08;如文章、视频、图集等&#xff09;的重要 topic。本文概要讲述了随着业务发展&#xff0c;移动生态数据研发部在 Feed 数据宽表建模上的演进过程以及一些实践&#xf…

自动驾驶SLAM又一开源巅峰之作!深挖时间一致性,精准构建超清地图

论文标题&#xff1a; DTCLMapper: Dual Temporal Consistent Learning for Vectorized HD Map Construction 论文作者&#xff1a; Siyu Li, Jiacheng Lin, Hao Shi, Jiaming Zhang, Song Wang, You Yao, Zhiyong Li, Kailun Yang 导读&#xff1a; 本文介绍了一种用于自动…

【触想智能】工业一体机在工程机械车辆上的应用分析

随着工程机械行业的不断发展和自动化程度的提高&#xff0c;工业一体机在工程机械车辆上的应用越来越广泛。工业一体机是集电脑、显示器、触摸屏、通讯、测量、控制等多种功能于一体的高度集成化的工业控制系统&#xff0c;在工程机械车辆上的应用可以为用户提供更为便捷、高效…

Android EditText+ListPopupWindow实现可编辑的下拉列表

Android EditTextListPopupWindow实现可编辑的下拉列表 &#x1f4d6;1. 可编辑的下拉列表✅步骤一&#xff1a;准备视图✅步骤二&#xff1a;封装显示方法✅步骤三&#xff1a;获取视图并监听 &#x1f4d6;2. 扩展上下箭头✅步骤一&#xff1a;准备上下箭头icon图标✅步骤二&…

【北京迅为】《i.MX8MM嵌入式Linux开发指南》-第一篇 嵌入式Linux入门篇-第十三章 Linux连接档

i.MX8MM处理器采用了先进的14LPCFinFET工艺&#xff0c;提供更快的速度和更高的电源效率;四核Cortex-A53&#xff0c;单核Cortex-M4&#xff0c;多达五个内核 &#xff0c;主频高达1.8GHz&#xff0c;2G DDR4内存、8G EMMC存储。千兆工业级以太网、MIPI-DSI、USB HOST、WIFI/BT…

js碰撞检测

碰撞检测 碰撞检测&#xff08;边界检测&#xff09;在前端游戏&#xff0c;以及涉及拖拽交互的场景应用十分广泛。 碰撞&#xff0c;顾名思义&#xff0c;就是两个物体碰撞在了一起&#xff0c;眼睛是可以直观的观察到碰撞的发生。但对于前端实现&#xff0c;如何让 JavaScrip…

使用Simulink基于模型设计(二):系统定义和布局

Simulink模型的顶层系统布局是许多工程团队可以使用的公共环境&#xff0c;是基于模型的设计范式&#xff1a;分析、设计、检验和实现。您可以通过确定模型的结构和各个组件来定义顶层系统。然后&#xff0c;您可以将模型按照层次结构进行组织&#xff0c;分别与系统的各个组件…

群晖NAS配置WebDav服务结合内网穿透实现跨平台云同步思源笔记

文章目录 前言1. 开启群晖WebDav 服务2. 本地局域网IP同步测试3. 群晖安装Cpolar4. 配置远程同步地址5. 笔记远程同步测试6. 固定公网地址7. 配置固定远程同步地址 前言 本教程主要分享如何将思源笔记、cpolar内网穿透和群晖WebDav三者相结合&#xff0c;实现思源笔记的云同步…

华为手机照片视频恢复,2种有效方法,让你的回忆重现

“曾经沧海难为水&#xff0c;除却巫山不是云。”这话放在我们手机里的照片视频上也是相当贴切。那些一不小心删除或丢失的珍贵回忆&#xff0c;就像巫山云雨般飘渺难寻&#xff0c;让人心痛不已。照片视频恢复究竟该如何解决呢&#xff1f;今天我就为你带来2种手机照片视频恢复…

C++--继承(下)

目录 5.继承与友元 6.继承与静态成员 7.复杂的菱形继承与菱形虚拟继承 8.继承与组合 5.继承与友元 简单来说就是父类的友元函数子类继承不了&#xff0c;所以父类的友元函数不能访问子类的私有和保护成员 class Person { public:friend void Display(const Person&…

DeepMind的JEST技术:AI训练速度提升13倍,能效增强10倍,引领绿色AI革命

谷歌旗下的人工智能研究实验室DeepMind发布了一项关于人工智能模型训练的新研究成果&#xff0c;声称其新提出的“联合示例选择”&#xff08;Joint Example Selection&#xff0c;简称JEST&#xff09;技术能够极大地提高训练速度和能源效率&#xff0c;相比其他方法&#xff…

【北京迅为】《i.MX8MM嵌入式Linux开发指南》-第一篇 嵌入式Linux入门篇-第十一章 Linux 帮助手册

i.MX8MM处理器采用了先进的14LPCFinFET工艺&#xff0c;提供更快的速度和更高的电源效率;四核Cortex-A53&#xff0c;单核Cortex-M4&#xff0c;多达五个内核 &#xff0c;主频高达1.8GHz&#xff0c;2G DDR4内存、8G EMMC存储。千兆工业级以太网、MIPI-DSI、USB HOST、WIFI/BT…

机器学习笔记:初始化0的问题

1 前言 假设我们有这样的两个模型&#xff1a; 第一个是逻辑回归 第二个是神经网络 他们的损失函数都是交叉熵 sigmoid函数的导数&#xff1a; 他们能不能用0初始化呢&#xff1f; 2 逻辑回归 2.1 求偏导 2.1.1 结论 2.1.2 L对a的偏导 2.1.3 对w1&#xff0c;w2求偏导 w2同…

Springboot整合Jsch-Sftp

背景 开发一个基于jsch的sftp工具类&#xff0c;方便在以后的项目中使用。写代码的过程记录下来&#xff0c;作为备忘录。。。 Maven依赖 springboot依赖 <parent><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-par…