欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

实验楼Linux入门:Linux 目录结构及文件基本操作

程序员文章站 2022-05-11 14:06:25
...

Linux 目录结构

各目录的作用

Linux的目录结构和windows不太一样

实验楼Linux入门:Linux 目录结构及文件基本操作

目录路径

切换目录

$ cd .. # 切换到上一级路径
$ cd ~ # 切换到当前用户的home目录
$ cd - # 切换到上一次所在目录

显示当前目录

$ pwd # Print Working Directory

绝对路径和相对路径

绝对路径 开头用代表根目录的 斜杠 /,相对路径开头可以用代表当前目录的点号.(不过一般是省略的)

# 绝对路径
$ cd /usr/local/bin
# 相对路径
$ cd ./../../usr/local/bin

其他

  • Linux中以.打头的文件是隐藏文件,若要显示它们,对ls命令加-a参数
$ ls -a # all
  • -使用Tab键可以自动补全目录,若有多个候选补全,多次按Tab键可以在多个候选中切换

  • -使用tree命令可以查看目录结构

$ tree mydir # 查看当前目录下的mydir目录的内容,会递归列出其子目录及文件

文件的基本操作

新建

新建空白文件

使用 touch 命令创建空白文件,关于 touch 命令,其主要作用是来更改已有文件的时间戳的(比如,最近访问时间,最近修改时间),但其在不加任何参数的情况下,只指定一个文件名,则可以创建一个指定文件名的空白文件(不会覆盖已有同名文件)

$ touch test # 新建一个文件名是test的文件

新建目录

$ mkdir mydir # 在当前目录下创建名为mydir的目录
$ mkdir -p a/b/c # 一下子创建多级目录

其他

  • 在同一个目录下的文件和子目录不能重名,若当前目录已经创建了一个 test 文件,再使用 mkdir test 新建同名的文件夹,系统会报错文件已存在。这符合 Linux 一切皆文件的理念。
  • 若当前目录存在一个 test 文件夹,则 touch 命令,则会更改该文件夹的时间戳而不是新建文件。

复制

使用 cp 命令(copy)复制一个文件到指定目录。

$ cp test a/b/c # 把当前目录下的test文件 复制到目录 ./a/b/c 下

使用 -r或者-R参数来复制目录

$ cp -r mydir a/b/c # 把当前目录下的mydir目录 复制到目录 ./a/b/c 下。 recursive: 递归

删除

删除文件

使用 rm(remove files or directories)命令删除一个文件。

$ rm test # 删除当前目录下叫test的文件

对于权限为只读的文件,使用rm命令会得到要求确认删除只读文件的提示,要去掉这个提示,需要加上-f参数。

$ rm -f test-read-only

删除目录

跟复制目录一样,要删除一个目录,也需要加上 -r-R 参数。遇到权限不足删除不了的目录也可以和删除文件一样加上 -f 参数:

$ rm -f -r mydir-read-only # 无需确认删除目录

移动文件

使用 mv(move)命令移动文件(剪切)。命令格式是 mv 源目录文件 目的目录

$ mv test a/b/c # 把当前目录下的test文件 复制到目录 ./a/b/c 下

重命名文件

简单的重命名操作

mv 命令除了能移动文件外,还能给文件重命名。命令格式为 mv 旧的文件名 新的文件名

$ mv test test2 # 把当前目录下的test文件重命名为test2

其实只要在要移动的目标目录后面再添加一个不与目标目录其他文件或目录冲突的新文件名,就能做到以新的名字移动到目标目录,上边的的重命名用法只是这个特性的一个妙用。

$ mv test a/b/c/test2 # 把当前目录下的test文件以新的名字test2移动到到目录 ./a/b/c 下

复杂的重命名需求

要实现批量重命名,mv 命令就有点力不从心了,我们可以使用一个看起来更专业的命令 rename 来实现。不过它要用 perl 正则表达式来作为参数。

# 使用通配符批量创建 5 个文件:
$ touch file{1..5}.txt

# 批量将这 5 个后缀为 .txt 的文本文件重命名为以 .c 为后缀的文件:
$ rename 's/\.txt/\.c/' *.txt

# 批量将这 5 个文件,文件名和后缀改为大写:
$ rename 'y/a-z/A-Z/' *.c

简单解释一下上面的命令,rename 是先使用第二个参数的通配符匹配所有后缀为 .txt 的文件,然后使用第一个参数提供的正则表达式将匹配的这些文件的 .txt 后缀替换为 .c

查看文件

使用 cattac 命令查看文件

打印文件内容到标准输出(终端),其中 cat 为正序显示,tac 为倒序从最后一行到第一行显示(cat反过来就是tac)。

$ cat test # 输出test文件中的内容到终端

可以加上 -n 参数显示行号:

$ cat -n test

使用 moreless 命令分页查看文件

如果说上面的 cat 是用来快速查看一个文件的内容的,那么这个 moreless 就是天生用来"阅读"一个文件的内容的,比如说 man 手册内部就是使用的 less 来显示内容。其中 more 命令比较简单,只能向一个方向滚动,而 less 为基于 more 和编辑器 vi

$ more test

打开后默认只显示一屏内容,终端底部显示当前阅读的进度。可以使用 Enter 键向下滚动一行,使用 Space 键向下滚动一屏,按下 h 显示帮助,q 退出。

使用 headtail命令查看文件

只查看文件的头几行(默认为 10 行,不足 10 行则显示全部)和尾几行。

$ tail test

甚至更直接的只看一行, 加上 -n 参数,后面紧跟行数

$ tail -n 1 test # 查看test文件的最后1行

查看文件类型

我们可以使用 file 命令查看文件的类型。

$ file /bin/ls

实验楼Linux入门:Linux 目录结构及文件基本操作

说明这是一个可执行文件,运行在 64 位平台,并使用了动态链接文件(共享库)。

与 Windows 不同的是,如果你新建了一个 shiyanlou.txt 文件,Windows 会自动把它识别为文本文件,而 file 命令会识别为一个空文件。这个前面我提到过,在 Linux 中文件的类型不是根据文件后缀来判断的。当你在文件里输入内容后才会显示文件类型。

编辑文件

在 Linux 下面编辑文件通常我们会直接使用专门的命令行编辑器比如(emacs,vim,nano)

相关标签: Linux