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

news2024/11/15 10:59:08

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):输出acceas 时间或改变权限属性时间(ctame )而非内容修改时间(nodification 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来查看一下,也是挺有趣的命令。
 

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

电子产品分销商 DigiKey 在新视频系列中探索智能城市中的AI

电子产品分销商DigiKey推出了一系列新视频,深入探讨了AI在智能城市中的集成应用。这个名为“智能世界中的AI”的系列是其“城市数字”视频系列的第四季,它审视了城市环境中从基础设施到公共服务的多种AI硬件和软件的部署情况。 该系列由电子制造商莫仕&…

Java的垃圾回收机制解说

Java 内存运行时区域中的程序计数器、虚拟机栈、本地方法栈随线程而生灭;栈中的栈帧随着方法的进入和退出而有条不紊地执行着出栈和入栈操作。每一个栈帧中分配多少内存基本上是在类结构确定下来时就已知的(尽管在运行期会由 JIT 编译器进行一些优化&…

苹果电脑视频压缩工具,苹果电脑视频压缩软件

随着数字媒体内容的爆炸性增长,视频文件的体积越来越大,如何在保证画质的前提下,有效地压缩视频文件,成为许多创作者和普通用户的一大需求。本文将为您详细介绍视频压缩界的佼佼者,让您轻松应对视频文件体积过大的难题…

vue3中使用 tilwindcss报错 Unknown at rule @tailwindcss

解决方法: vscode中安装插件 Tailwind CSS IntelliSense 在项目中的 .vscode中 settings.json添加 "files.associations": {"*.css": "tailwindcss"}

网络连接线相关问题

问题1; 直通线为什么两头都是T568B?是否可以两台T5568A?或者任意线序,只需两头一致? 不行,施工规范规定。(原因;网线最长距离100m,实际用起来要把网线包管,走…

Mapboxgl 根据 AWS 地形的高程值制作等高线

更多精彩内容尽在dt.sim3d.cn&#xff0c;关注公众号【sky的数孪技术】&#xff0c;技术交流、源码下载请添加VX&#xff1a;digital_twin123 使用mapboxgl 3.0版本&#xff0c;根据 AWS 地形图块的高程值制作等高线&#xff0c;源码如下&#xff1a; <!DOCTYPE html> &…

CSS content 计数器

CSS content 计数器 CSS 计数器通过一个变量来设置&#xff0c;根据规则递增变量。 使用计数器自动编号 CSS 计数器根据规则来递增变量。 CSS 计数器使用到以下几个属性&#xff1a; counter-reset - 创建或者重置计数器&#xff0c;给计算器命名。注意声明计算器不能在自身…

乡村振兴指数与其30个原始变量数据(Shp/Dta/Excel格式,2000-2022年)

数据简介&#xff1a;这份数据是我国各地级市乡村振兴指数与其30各原始变量数据并对其进行地图可视化表达。城镇化是当今中国社会经济发展的必由之路。当前我国城镇化处于发展的关键时期&#xff0c;但城镇化发展的加快却是一把双刃剑&#xff0c;为何要如此形容呢?因为当前城…

【产品经理】订单处理12-订单的取消与反取消

在电商ERP系统中&#xff0c;订单取消与反取消也是常见功能之一。 订单取消与反取消也是电商ERP系统的常见功能&#xff0c;本次主要讲解下订单取消与反取消的逻辑。 一、订单取消 在电商ERP系统中&#xff0c;订单取消一般由审单员操作&#xff0c;此类取消一般是由于上下游…

ICMP隧道

后台私信找我获取工具 目录 ICMP隧道作用 ICMP隧道转发TCP上线MSF 开启服务端 生成后门木马 msf开启监听 开启客户端icmp隧道 执行后门木马&#xff0c;本地上线 ICMP隧道转发SOCKS上线MSF 开启服务端 生成后门木马 msf开启监听 开启客户端icmp隧道 ​执行后…

gui创新点charts图表

import javax.swing.*; import java.awt.*;public class ComboChartExample extends JPanel {Overrideprotected void paintComponent(Graphics g) {super.paintComponent(g);// 数据int[] values {100, 200, 150, 300, 250};int[] lineValues {120, 180, 160, 280, 230};Str…

Pytorch实战(二):VGG神经网络

文章目录 一、诞生背景二、VGG网络结构2.1VGG块2.2网络运行流程2.3总结 三、实战3.1搭建模型3.2模型训练3.3训练结果可视化3.4模型参数初始化 一、诞生背景 从网络结构中可看出&#xff0c;所有版本VGG均全部使用33大小、步长为1的小卷积核&#xff0c;33卷积核同时也是最小的能…

Jenkins 常用的 Linux 指令

个人名片 &#x1f393;作者简介&#xff1a;java领域优质创作者 &#x1f310;个人主页&#xff1a;码农阿豪 &#x1f4de;工作室&#xff1a;新空间代码工作室&#xff08;提供各种软件服务&#xff09; &#x1f48c;个人邮箱&#xff1a;[2435024119qq.com] &#x1f4f1…

MNN安装和编译 Win10

如何优化和解决问题 步骤 1: 以管理员权限打开 Windows PowerShell 导航到 C:\Windows\System32\WindowsPowerShell\v1.0 目录。右键点击 powershell.exe 并选择“以管理员身份运行”。执行以下命令&#xff0c;设置执行策略为不受限制&#xff1a;set-executionpolicy -exec…

视频号矩阵管理系统:短视频内容营销的智能助手

随着短视频行业的蓬勃发展&#xff0c;视频号矩阵管理系统应运而生&#xff0c;为内容创作者和品牌提供了一站式的短视频管理和营销解决方案。本文将深入探讨视频号矩阵管理系统的核心功能&#xff0c;以及它如何助力用户在短视频营销领域取得成功。 视频号矩阵管理系统概述 …

Lumerical Algorithm 查找最接近给定透射率值的波长值

Lumerical Algorothm 查找最接近给定透射率值的波长值 引言正文引言 在 Lumerical Script 算法,查找数组中对应值的所有索引值 一文中我们简单介绍了 Lumerical 中的索引值获取算法,这里,我们来介绍一下如何查找最接近给定透射率值的波长值。 正文 比如我们有如下透射率图…

北斗在高铁轨道位移监测中的应用

随着高速铁路的飞速发展&#xff0c;轨道的监测与维护变得至关重要。传统的监测方法已难以满足现代高铁的需求。 近年来&#xff0c;北斗卫星导航系统凭借其高精度、全天候、全球覆盖的优势&#xff0c;在高铁轨道位移监测中发挥了重要作用。 高铁轨道监测系统通过集成北斗卫星…

如何评价Flutter?

哈喽&#xff0c;我是老刘 我们团队使用Flutter已经快6年了。 有很多人问过我们对Flutter的评价。 今天在这里回顾一下6年前选择Flutter时的原因&#xff0c;以及Flutter在这几年中的实际表现如何。 选择Flutter时的判断 1、性能 最开始吸引我们的就是其优秀的性能。 特别是…

影刀RPA | 作业实操02 | 循环

步骤1 总流程 先完成搜索商品-获取最大页码的步骤&#xff0c;跑通看下日志&#xff0c;是正确的再继续写指令 步骤2 具体指令 由嵌套循环完成 外循环&#xff08;ForEach列表循环&#xff09;&#xff1a;遍历商品内循环-1&#xff08;For次数循环&#xff09;&#xff1…

用 MATLAB Function 模块在 Simulink 中实现 MATLAB 函数

MATLAB Function 模块使您能够使用 MATLAB 语言在 Simulink 模型中定义自定义函数。MATLAB Function 模块支持从 Simulink Coder 和 Embedded Coder生成 C/C 代码。 在以下情况下使用这些模块&#xff1a; 您有现有 MATLAB 函数可用于对自定义功能进行建模&#xff0c;或您可…