当前位置:首页 > 文章 > 系统OS > 正文内容

Ubuntu初学教程,基本的命令(二)之创建文件和文件夹

myblog4个月前 (06-24)系统OS95

创建文件夹和文件

mkdir /tmp/tutorial
cd /tmp/tutorial

注意绝对路径的使用,以确保我们在/tmp中创建了教程目录。如果在开始时没有正斜杠,mkdir命令将尝试在当前工作目录中找到一个tmp目录,然后尝试在其中创建一个教程目录。如果找不到tmp目录,则命令将失败。如果您还没有猜到,mkdir是“make目录”的缩写。现在我们已经安全地进入了测试区域(如果您不确定,请与pwd进行双重检查),让我们创建几个子目录:

mkdir dir1 dir2 dir3

这个命令有点不同。到目前为止,我们只看到那些单独工作的命令(cdpwd),或者之后只有一个条目的命令(cd/cd~/Desktop)。但这一次,我们在mkdir命令之后添加了三项内容。这些东西被称为参数,不同的命令可以接受不同数量的参数。mkdir命令至少需要一个参数,而cd命令可以0个或1个,但不能使用更多参数。查看当您试图将错误的参数数传递给命令时会发生什么情况:

mkdir
cd /etc ~/Desktop

回到我们的新目录。上面的命令将在我们的文件夹中创建三个新的子目录。让我们使用ls(List)命令查看它们:

ls

正确输入命令您的终端应该如下所示:

The terminal, after running mkdir and ls

注意,mkdir创建了一个目录中的所有文件夹。它没有在dir1dir2或任何其他嵌套结构中创建dir3。但有时能够做到这一点很方便,而mkdir确实有一种方法:

mkdir -p dir4/dir5/dir6
ls

这一次,您将看到只有dir4被添加到列表中,因为dir5在其中,dir6在其中。稍后,我们将安装一个有用的工具来可视化结构,但是您已经有了足够的知识来证实它:

cd dir4
ls
cd dir5
ls
cd ../..

我们使用的“-p”称为选项或开关(在本例中,它的意思是“创建父目录”)。选项用于修改命令的操作方式,允许单个命令以各种不同的方式运行。不幸的是,由于历史和人性的怪癖,选项可以在不同的命令中采取不同的形式。您通常会看到它们是以连字符开头的单个字符(如本例中的情况),或者是由两个连字符组成的较长的单词。单字符表单允许组合多个选项,但并非所有命令都会接受。而且,为了进一步混淆问题,有些命令根本就没有明确地标识它们的选项,无论什么东西是否是选项,都完全是由参数的顺序决定的!你不需要担心所有的可能性,只要知道选项是存在的,它们可以采取几种不同的形式。例如,以下所有内容的含义完全相同:

# Don't type these in, they're just here for demonstrative purposes
mkdir --parents --verbose dir4/dir5
mkdir -p --verbose dir4/dir5
mkdir -p -v dir4/dir5
mkdir -pv dir4/dir5

现在,我们知道如何通过将多个目录作为分离参数传递给mkdir命令来创建多个目录。但是,假设我们想要创建一个名称中有空格的目录?让我们试一试:

mkdir another folder
ls

两个新文件夹,一个叫another,另一个称为folder。如果要使用目录或文件名中的空格,则需要转义它们。输入以下命令以尝试使用不同的方式创建具有名称中空格的文件夹:

mkdir "folder 1"
mkdir 'folder 2'
mkdir folder\ 3
mkdir "folder 4" "folder 5"
mkdir -p "folder 6"/"folder 7"
ls

尽管命令行可以用于处理文件和文件夹中的空格,但使用引号或反斜杠转义文件和文件夹会使事情变得更加困难。您通常可以从文件名中告诉经常使用命令行的人:他们倾向于坚持字母和数字,使用下划线(“_”)或连字符(“-”)代替空格。

使用重定向创建文件

我们的演示文件夹开始看起来充满目录,但是文件中有些缺少。 让我们进行补救,方法是重定向命令的输出,以便将其输出到新文件中,而不是输出到屏幕上。 首先,ls命令当前显示的内容:

ls

假设我们希望将该命令的输出捕获为一个文本文件,我们可以进一步查看或操作该文件。我们所需要做的就是将大于字符(“>”)添加到命令行的末尾,然后是要写入的文件的名称:

ls > output.txt

这一次屏幕上没有打印任何内容,因为输出被重定向到我们的文件。如果您只是自己运行ls,您应该看到已经创建了output.txt文件。我们可以使用cat命令查看其内容:

cat output.txt

这并不完全是以前显示在屏幕上的内容,但是它包含了所有相同的数据,而且它以更有用的格式进行进一步的处理。让我们看另一个命令echo

echo "This is a test"

是的,echo只是再次打印它的参数。但是,将其与重定向相结合,您就可以轻松地创建小型测试文件:

echo "This is a test" > test_1.txt
echo "This is a second test" > test_2.txt
echo "This is a third test" > test_3.txt
ls

您应该对这些文件中的每一个进行分类,以获取其内容。 但是cat不只是文件查看器-它的名称来自“ concatenate”,意思是“链接在一起”。 如果您将多个文件名传递给cat,它将以一个文本块的形式依次输出每个文件名:

cat test_1.txt test_2.txt test_3.txt

如果要将多个文件名传递给单个命令,则有一些有用的快捷方式,如果文件具有类似的名称,可以节省大量输入。问号(“?”)可用于指示文件名中的“任何单个字符”。星号(“*”)可以用来表示“零或多个字符”。这些字符有时被称为“通配符”。有几个例子可能会有所帮助,下面的命令都是这样做的:

cat test_1.txt test_2.txt test_3.txt
cat test_?.txt
cat test_*

您可能已经猜到,需要更多的转义,这种功能还意味着您需要用或者*。如果要从命令行创建文件名,通常最好避免使用标点符号。

如果您查看ls的输出,您会注意到,以“t”开头的唯一文件或文件夹是我们刚才创建的三个测试文件,因此您甚至可以将最后一个命令简化为cat t*,这意味着“将名称以t开头并后面跟着0个或多个其他字符的所有文件连接起来”。让我们使用这个功能将所有文件连接到一个新文件中,然后查看它:

cat t* > combined.txt
cat combined.txt

如果我们第二次运行这两个命令,您认为会发生什么?因为文件已存在,计算机会抱怨吗?它将文本附加到文件中,因此包含两个副本吗?还是会完全取代它?尝试一下会发生什么,但是要避免再次输入命令,可以使用向上箭头和向下箭头键在使用过的命令的历史记录中来回移动。多次按向上箭头以到达第一个cat,然后按Enter键运行它,然后再次执行相同操作以到达第二个cat


如您所见,该文件看起来相同。这不是因为它没有被修改过,而是因为shell在将cat命令的输出写入文件之前清除了文件的所有内容。因此,使用重定向时应格外小心,以确保不会意外覆盖所需的文件。如果确实要追加而不是替换文件的内容,请在>处再加上>(">>"):

cat t* >> combined.txt
echo "I've appended a line!" >> combined.txt
cat combined.txt

为了方便起见,重复向上箭头到达第一个cat,也许还会添加一些其他的echo命令,文本文档太大,以至于当您使用cat显示文本文档时,它并不能一次在终端显示。为了查看整个文件,我们现在需要使用一个的程序,称为more(因为它一次只显示一个“页面”)。它在每一页的底部放了一行文字,上面写着“-More-”,以表明你还没有看完所有的东西。现在,您应该使用一个更好shell命令less,他将显示的更少

less combined.txt

当通过less查看文件时,您可以使用向上箭头向下箭头Page UpPage Down, Home 和 End键来改变显示页面。试着看看他们之间的区别。当你看完你的文件,按q退出less,并返回到命令行。

注意

Unix系统区分大小写,也就是说,它们认为“A.txt”和“a.txt”是两个不同的文件。如果要运行以下行,您将得到三个文件:

echo "Lower case" > a.txt
echo "Upper case" > A.TXT
echo "Mixed case" > A.txt

通常,您应避免创建仅大小写不同的文件和文件夹。 它不仅有助于避免混乱,而且还可以防止在使用不同操作系统时出现问题。 例如,Windows不区分大小写,因此它将上面的所有三个文件名视为一个文件,可能导致数据丢失或其他问题。


您可能会想按一下Caps Lock键并为所有文件名使用大写。 但是绝大多数的shell命令都是小写的,因此您经常不得不在键入时打开和关闭它。 大多数经验丰富的命令行用户倾向于主要使用小写字母表示文件和目录的名称,因此他们很少担心文件名冲突或名称中每个字母使用哪种大小写。


良好的命名习惯

考虑到大小写敏感和转义时,一个好的经验法则是使文件名全部小写,仅使用字母,数字,下划线和连字符。 对于文件,通常在其末尾还带有一个点和一些字符,以指示文件的类型(称为“文件扩展名”)。


推荐阅读

Ubuntu初学教程,基本的命令(三)之移动和处理文件


版权声明:本文由静水流深发布,如需转载请注明出处。

分享给朋友:

相关文章

如何在Ubuntu 18.04上安装Docker

如何在Ubuntu 18.04上安装Docker

欢迎访问李梦园个人博客---静水流深准备条件Ubuntu 18.04 64位操作系统。具有sudo特权的用户帐户安装Docker官方Ubuntu存储库中提供的Docker安装软件包可能不是最新版本。...

Centos更换国内源

Centos更换国内源

1. 备份mv /etc/yum.repos.d/CentOS-Base.repo /etc/yum.repos.d/CentOS-Base.repo.backup2. 下载新的 CentOS-Bas...

Ubuntu安装配置Apache

Ubuntu安装配置Apache

安装Apache要安装Apache,请运行以下命令安装最新的软件包apache2:sudo apt update sudo apt install ...

Ubuntu更换国内源

Ubuntu更换国内源

配置方法新手推荐使用图形界面配置: 系统设置 -> 软件和更新 选择下载服务器 -> "mirrors.aliyun.com"终端命令更改root用户登录用编辑器打开:...

Kali系统下载地址

Kali系统下载地址

阿里源下载...

更换PyPI阿里国内源

更换PyPI阿里国内源

找到下列文件~/.pip/pip.conf在上述文件中添加或修改:[global]index-url = https://mirrors.aliyun.com/pypi/simpl...