Linux笔记2

Linux文件

文件、目录操作命令

cp — 复制文件和目录 mv — 移动/重命名文件和目录 mkdir — 创建目录 rm — 删除文件和目录 ln — 创建硬链接和符号链接

通配符

通配符

意义

*

匹配任意多个字符(包括零个或一个)

?

匹配任意一个字符(不包括零个)

[characters]

匹配任意一个属于字符集中的字符

[!characters]

匹配任意一个不是字符集中的字符

[[:class:]]

匹配任意一个属于指定字符类中的字符

普遍使用的字符类

字符类

意义

[:alnum:]

匹配任意一个字母或数字

[:alpha:]

匹配任意一个字母

[:digit:]

匹配任意一个数字

[:lower:]

匹配任意一个小写字母

[:upper]

匹配任意一个大写字母

通配符范例

模式 匹配对象

*

所有文件

g*

文件名以“g”开头的文件

b*.txt

以"b"开头,中间有零个或任意多个字符,并以".txt"结尾的文件

Data???

以“Data”开头,其后紧接着3个字符的文件

[abc]*

文件名以"a","b",或"c"开头的文件

BACKUP.[0-9][0-9][0-9]

以"BACKUP."开头,并紧接着3个数字的文件

[[:upper:]]*

以大写字母开头的文件

[![:digit:]]*

不以数字开头的文件

*[[:lower:]123]

文件名以小写字母结尾,或以 “1”,“2”,或 “3” 结尾的文件

接受文件名作为参数的任何命令,都可以使用通配符

[A-Z]或 [a-z]形式的字符范围表示法是传统的 Unix 表示法,并且在早期的 Linux 版本中仍有效。 虽然它们仍然起作用,但应避免使用它们,用字符类来代替

mkdir 创建目录

mkdir directory...

注意表示法: 在描述一个命令时(如上所示),当有三个圆点跟在一个命令的参数后面, 这意味着那个参数可以重复,就像这样:

mkdir dir1 dir2 dir3

会创建三个目录,名为 dir1, dir2, dir3。

cp 复制文件和目录

两种用法:

  • 复制单个文件或目录”item1”到文件或目录”item2”
cp item1 item2
  • 复制多个项目(文件或目录)到一个目录下
cp item... directory

cp选项

选项

意义

-a, --archive

复制文件和目录,以及它们的属性,包括所有权和权限。 通常,复本具有用户所操作文件的默认属性。

-i, --interactive

在重写已存在文件之前,提示用户确认。如果这个选项不指定, cp 命令会默认重写文件。

-r, --recursive

递归地复制目录及目录中的内容。当复制目录时, 需要这个选项(或者-a 选项)。

-u, --update

当把文件从一个目录复制到另一个目录时,仅复制 目标目录中不存在的文件,或者是文件内容新于目标目录中已经存在的文件。

-v, --verbose

显示翔实的命令操作信息

cp实例

命令

运行结果

cp file1 file2

复制文件 file1 内容到文件 file2。如果 file2 已经存在,file2 会被 file1重写。如果file2不存在,则会创建 file2

cp -i file1 file2

在文件 file2 被重写之前,会提示用户确认信息。

cp file1 file2 dir1

复制文件 file1 和文件 file2 到目录 dir1。目录dir1 必须存在。

cp dir1/* dir2

使用一个通配符,在目录 dir1中的所有文件都被复制到目录 dir2 中。dir2必须已经存在。

cp -r dir1 dir2

复制目录dir1中的内容到目录dir2。如果目录 dir2 不存在,创建目录 dir2。如果目录 dir2 存在,则目录 dir1将会被复制到 dir2 中

mv 移动和重命名文件

mv 命令可以执行文件移动和文件命名任务,这依赖于你怎样使用它。任何一种情况下,完成操作之后,原来的文件名不再存在。mv 使用方法与 cp 很相像:

把文件或目录 “item1” 移动或重命名为 “item2”

mv item1 item2

把一个或多个条目从一个目录移动到另一个目录中

mv item... directory

mv选项

选项 意义 -i --interactive 在重写一个已经存在的文件之前,提示用户确认信息。 如果不指定这个选项,mv 命令会默认重写文件内容。 -u --update 当把文件从一个目录移动另一个目录时,只是移动不存在的文件, 或者文件内容新于目标目录相对应文件的内容。 -v --verbose 当操作 mv 命令时,显示翔实的操作信息。

mv实例

mv file1 file2 移动 file1 到 file2。如果 file2 存在,它的内容会被 file1 的内容重写。 如果 file2 不存在,则创建 file2。 每种情况下,file1 不再存在。 mv -i file1 file2 除了如果 file2 存在的话,在 file2 被重写之前,用户会得到 提示信息外,这个和上面的选项一样。 mv file1 file2 dir1 移动 file1 和 file2 到目录 dir1 中。dir1 必须已经存在。 mv dir1 dir2 如果目录 dir2 不存在,创建目录 dir2,并且移动目录 dir1 的内容到 目录 dir2 中,同时删除目录 dir1。如果目录 dir2 存在,移动目录 dir1(及它的内容)到目录 dir2。

rm 删除文件和目录

rm 命令用来移除(删除)文件和目录:

rm item...

rm 选项

选项 意义 -i, --interactive 在删除已存在的文件前,提示用户确认信息。 如果不指定这个选项,rm 会默默地删除文件 -r, --recursive 递归地删除文件,这意味着,如果要删除一个目录,而此目录 又包含子目录,那么子目录也会被删除。要删除一个目录,必须指定这个选项。 -f, --force 忽视不存在的文件,不显示提示信息。这选项颠覆了“--interactive”选项。 -v, --verbose 在执行 rm 命令时,显示翔实的操作信息。

rm 实例

命令 运行结果 rm file1 默默地删除文件 rm -i file1 除了在删除文件之前,提示用户确认信息之外,和上面的命令作用一样。 rm -r file1 dir1 删除文件 file1, 目录 dir1,及 dir1 中的内容。 rm -rf file1 dir1 同上,除了如果文件 file1,或目录 dir1 不存在的话,rm 仍会继续执行。

小心使用rm!

Linux没有复原命令,一旦你用rm指令删除了文件,就找不回来了。Linux假定你是聪明且理性的,所以不要用rm做蠢事!

尤其要小心通配符:

如:你想删除一个目录中的html文件,以下指令是正确的:

rm .*html

但以下的指令就会摧毁你整个目录了:

rm * .html

两者的差别就是多了一个空格。

无论什么时候,rm命令用到通配符时,先用ls命令进行测试!

ln 创建链接

创建硬链接:

ln file link

创建符号链接:(item可以是一个文件或一个目录)

ln -s item link

硬链接

默认情况下,每个文件都有一个硬链接。有两个重要局限性:

  1. 一个硬链接不能关联它所在文件系统之外的文件。这是说一个链接不能关联 与链接本身不在同一个磁盘分区上的文件。
  2. 一个硬链接不能关联一个目录。

一个硬链接和文件本身没有什么区别。不像符号链接,当你列出一个包含硬链接的目录 内容时,你会看到没有特殊的链接指示说明。当一个硬链接被删除时,这个链接 被删除,但是文件本身的内容仍然存在(这是说,它所占的磁盘空间不会被重新分配), 直到所有关联这个文件的链接都删除掉。

符号链接

创建符号链接是为了克服硬链接的局限性。符号链接生效,是通过创建一个 特殊类型的文件,这个文件包含一个关联文件或目录的文本指针。在这一方面, 它们和 Windows 的快捷方式差不多

一个符号链接指向一个文件,而且这个符号链接本身与其它的符号链接几乎没有区别。

例如,如果你往一个符号链接里面写入东西,那么相关联的文件也被写入。然而, 当你删除一个符号链接时,只有这个链接被删除,而不是文件自身。如果先于符号链接 删除文件,这个链接仍然存在,但是不指向任何东西。在这种情况下,这个链接被称为坏链接。ls 命令会以不同的颜色展示坏链接。

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏王纯的专栏

Valgrind 使用入门

Valgrind 是一套类似于 gprof 的动态检测的工具集,由于使用方便,不需修改目标程序源码,输出清晰图文并茂等优势,常被用作后台(特别是linux后台)...

8720
来自专栏小李刀刀的专栏

Laravel 5.5 的自定义验证对象/类

Laravel 5.5 将提供一个全新的自定义验证规则的对象,以作为原来的 Validator::extend 方法的替代。 Laravel 中的表单验证是比较...

3489
来自专栏会跳舞的机器人

Redis实现用户登录错误次数限制

系统登录的时候经常会有这种场景,如果密码连续N次输入错误,则要等N分钟之后才能重试。实现的方式有多种,比如在内存中维护一个数据结构来存储这些信息,但实现起来比较...

1022
来自专栏潇涧技术专栏

Learning Git by Animations

看到一个动画版的Git教程(网址),动画效果真心不错,所以学了下,本文是记录其中的几个重点部分。

552
来自专栏技巅

Glusterfs之rpc模块源码分析(中)之Glusterfs的rpc模块实现(2)

1275
来自专栏Python攻城狮

Python中的模块介绍和使用1.import2.from…import 3.from … import * 4.as 5.定位模块 6.模块制作7.模块中的__all__8.python中的包 9.

在Python中有一个概念叫做模块(module),这个和C语言中的头文件以及Java中的包很类似,比如在Python中要调用sqrt函数,必须用import关...

811
来自专栏Fish

使用cuda-gdb调试cu程序

简要教程 仿佛对于.cu程序的调试是需要关闭x的,所以学习了一下如何用cuda-gdb在tty下调试.cu程序. 1. 对于.cu文件是需要编译好才能调试...

2686
来自专栏守望轩

Visual Studio 2008 每日提示(二十八)

#271、启用地址级调试的设置的作用是什么? 原文链接:What the Enable Address-Level Debugging option does...

2924
来自专栏屈定‘s Blog

Alfred插件开发--了解Alfred的数据流动

最近发现要记住的长命令太多了,因此打算开发一款Alfred插件帮助自己记录. 先展示下成品,大概就是输入关键词->搜索展示->复制到指定位置这一流程,借此开分析...

803
来自专栏人工智能LeadAI

Python中各个模块的介绍和使用

在Python中有一个概念叫做模块(module),这个和C语言中的头文件以及Java中的包很类似,比如在Python中要调用sqrt函数,必须用import关...

3508

扫码关注云+社区