标签 文件 下的文章

熟悉了 复制命令,下一个相关的命令就是 mv 命令。当你想要将文件从一个位置移动到另一个地方并且不想复制它,那么mv 命令是完成这个任务的首选。

初识 mv 命令

mv 命令是一个与cp类似的命令,但是它并非创建文件或目录的复制品/副本。不管你在使用什么版本的Linux系统,mv 都默认安装在你的Linux系统上了。来看一下 mv 命令在日常操作中的一些例子。

1.移动文件

移动文件时需要注意的是文件的源地址和目标地址必须不同。这里有个例子,想要将file\_1.txt文件从当前目录移动到其它目录,以/home/pungki/为例,语法应该如下:

$ mv file_1.txt /home/pungki/office

mv command

如我们所见,当我们移动 file\_1.txt 文件时,先前目录的 file\_1.txt 就被删除了

2.移动多个文件

如果想一次移动多个文件,我们可以将他们放在一行并用空格分开。

$ mv file_2.txt file_3.txt file_4.txt /home/pungki/office

Move multiple files

如果你的文件有规律可循的话那么你就可以使用通配符。比如,为了移除所有以.txt为扩展名的文件,我们可以用下面的命令:

$ mv *.txt /home/pungki/office

Move using pattern

3.移动目录

不同于复制命令,用 mv 命令移动目录相当直接。移动目录你可以使用不带选项的 mv 命令。看下面的截图就一目了然了。

Moving directory

4.重命名文件或目录

我们也用 mv 命令来重命名文件或目录。不过目标位置和源位置必须相同才可以。然后文件名必须不同。

假定我们当前所在目录为/home/pungki/Documents,而我们想将file\_1.txt重命名为file\_2.txt。那么命令应该如下:

$ mv file_1.txt file_2.txt

如果是绝对路径,它应该像下面这样:

$ mv /home/pungki/Documents/file_1.txt /home/pungki/Documents/file_2.txt

Renaming file

5. 重命名目录

上一段的规则同样适用于目录。请看这个例子:

$ mv directory_1/ directory_2/

Renaming directory

6. 打印移动信息

当你移动或重命名一大堆文件或目录时,你可能会想在不去目标位置去查看的情况下知道你自己的命令是否成功地执行了。这就要用到-v选项了。

$ mv -v *.txt /home/pungki/office

mv with verbose mode

该方法同样适用于目录。

mv directory with verbose mode

7. 使用交互模式

当你将文件移动到其它位置,而那个位置恰好有同样的文件,这时 mv 命令会覆盖掉原来的文件。对于mv的这一行为一般不会有什么提示。如果想产生一个关于覆盖文件的提示,我们可以使用-i选项。(译注:通常发行版会通过alias命令,将-i作为默认选项,所以会有提示。)

假设我们想将 file\_1.txt 移动到 /home/pungki/office。同时,/home/pungki/office 目录下已经有file\_1.txt文件了。

$ mv -i file_1.txt /home/pungki/office

mv with interactive mode

这个提示会让我们知道目标位置处file\_1.txt的存在。如果我们按y键,那么那个文件将会被删除,否则不会。

8. 使用更新选项

-i 选项会提示我们关于覆盖文件的提示,而 -u 则只在源文件比目标文件新时才执行更新。让我们看一看下面的例子:

Update only newer

假如 file\_1.txt 和 file\_2.txt有如下特点:

File_1.txt has 84 bytes file size and it last modified time is 12:00
File_2.txt has 0 bytes file size and it last modified time is 11:59

我们想将它们移动到 /home/pungki/office 目录下。但是目标地址已经有file\_1.txt和file\_2.txt了。

我们用下面的命令将file\_1.txt 和file\_2.txt从当前目录移动到/home/pungki/office

$ mv -uv *.txt /home/pungki/office

可以看到这些文件被移动了。能移动这些文件是因为它们最近的修改时间戳比 /home/pungki/office 目录中的文件新。

9.不要覆盖任何已存在的文件

如果-i选项询问我们是否要覆盖文件,那么 -n 选项将不会允许我们覆盖任何已存在的文件。

继续使用第8点中的例子,如果我们将-u 换成 -n同时加上-v选项,那么我们会看到没有任何文件移动到了 /home/pungki/office 目录下。

$ mv -vn *.txt /home/pungki/office

No overwrite

10. 复制时创建备份

默认情况下,移动文件将会覆盖已存在的目标文件。但是如果我们移动错了文件而目标文件已经被新的文件覆盖了,这时应该怎么办才好呢?有没有一种方法可以恢复之前的文件呢?答案是肯定的。我们可以用-b选项。该选项会在新文件覆盖旧文件时将旧文件做备份。这里我们还以第8点为例。

$ mv -bv *.txt /home/pungki/office

Backup option

如截图中所见,在 /home/pungki/office 目录下出现了名为file\_1.txt~file\_2.txt~ 的文件。那个波浪符号(~)意味着这些文件是备份文件。从它们的属性中我们可以看到,这些文件比file\_1.txt和file\_2.txt要旧。

11. 无条件覆盖已经存在的文件

(译注:这一节是译者补充的,原文遗漏了这个重要选项)

当你希望无论如何都覆盖已经存在的文件或目录时,你可以使用 -f 选项。如果同时指定了 -f 选项和 -i 或 -n 选项,则 -f 选项会覆盖它们——即不进行任何提示而覆盖,所以,在使用此参数时,知道你在做什么。

$ mv -f *.txt /home/pungki/office

总结

移动文件和目录命令是Linux系统的基本命令。通常你可以通过man mv 或者 mv --help显示mv的手册页以了解更多详细信息。


via: http://linoxide.com/linux-command/mv-command-linux/

译者:Linchenguang 校对:wxy

本文由 LCTT 原创翻译,Linux中国 荣誉推出

拷贝文件和目录是每一个操作系统的基本指令。备份行为基本上是创建文件和目录的副本。在Linux系统下,我们可以用cp命令来实现。

copy 命令是什么

正如我们在上文提到的,cp是一个用来创建文件和目录副本的命令。在这里我们提供了一些在日常操作中可能用到的cp命令的实例。

1. 不带任何参数下,运行cp

这是 cp 命令最基础的使用。 拷贝名为 myfile.txt 从一个位置到另一个位置,我们可以像这样子输入:

$ cp myfile.txt /home/pungki/office

Copy without options

如果我们没有输入绝对路径,这意味着我们正在当前目录下拷贝一个文件。在上面的实例中,myfile.txt位于/home/pungki/Documents目录下。如果我们当前目录正是/home/pungki/Documets,那么没有必要输入/home/pungki/Documents/myfile.txt来拷贝文件。当/home/pungki/office是一个目录,则文件会拷贝到里面。

2. 同时拷贝多个文件

要在同时拷贝多个文件,我们只需要将多个文件用空格隔开。如下示例:

$ cp file_1.txt file_2.txt file_3.txt /home/pungki/office

Copying multiple files

3. 拷贝一个目录

要拷贝一个目录的话会有点棘手。你需要添加 -r 或者 -R 选项来实现。-r-R 选项表明递归操作。无论该目录是否为空目录,这个选项都是必要的。如下示例:

$ cp -r directory_1 /home/pungki/office

Copy directory

需要注意的一件事,你需要移除在目录名尾部的斜杠。否则你会收到类似的错误信息cp: omitting directory‘directory\_1/

Copy directory error

如果你收到错误信息,则目录不会被拷贝到目标文件夹。

4. 创建文件的硬链接,而不是拷贝它们

拷贝文件意味着你必须使用一些存储空间来储存拷贝的文件。有时候出于某种原因,你可能想要创建“快捷方式”或者链接到文件,而不是拷贝它们。要做到这一点,我们可以使用-l选项。

$ cp -l file_4.txt /home/pungki/office

Copy hardlinks

从上图看出,我们看到file\_4.txt的硬链接已经拷贝到/home/pungki/office/file\_4.txt。标记有同样的 inode, 835386。但是请注意,硬链接不能用来创建目录。下面让我们看一个例子。

原目录 directory\_1 的 inode 值是 278230

Inode number of original directory

原文件 file\_5.txt 的 inode 值是 279231

Original inode number of file

对 directory\_1 执行 cp 命令

Copy using -rl options

拷贝的 directory\_1副本的 inode 值是 274800

Inode number of copied directory

拷贝的 file\_5.txt副本的 inode 值是 279231。跟它的原文件一样

Inode number of copied file

5. 创建文件的符号链接

也有一种链接叫做 软链接符号链接。我们用 -s 选项来实现。下面是命令的示例。

$ cp -s /home/pungki/Documents/file_6.txt file_6.txt

创建符号链接只能在当前目录下进行。在上面的截图中,我们想要创建符号链接 /home/pungki/office/file6.txt 指向原文件 /home/pungki/Documents/file6.txt。但是为了创建符号链接,我必须在将/home/pungki/office作为目标目录。一旦我设法进入目录,我就可以向上面一样运行 cp -s 命令。

现在你列出文件详情,你会看到/home/pungki/office/file\_6.txt指向了原文件。在其文件名后标记了箭头符号。

Symbolic links

6. 不随符号链接拷贝原文件

[译注:意思是只拷贝符号链接文件]

我们可以用 -P 选项来实现。当对符号链接使用 cp 命令,它会照原样拷贝它自身。来看看下面的示例。

$ cp -P file_6.txt ./movie

Copy using -P option

如你所见,cp 命令照原样拷贝file\_6.txt自身。文件类型仍然是一个符号链接。

7. 随符号链接拷贝原文件

现在我们可以试一下-L选项。基本上,这个刚好与上面的 -P 选项 相反。下面是个示例:

$ cp -L file_6.txt ./movie

Copy using -L option

使用这个选项,拷贝的文件将会和file\_6.txt原文件一样。我们可以从文件大小看出来。拷贝的文件有50 字节而当file\_6.txt作为符号链接时文件大小只有33 字节

8. 文件归档

当我们去拷贝一个目录时,我们会用-r或者-R选项。但是我们也可以用-a选项来归档文件。这样会创建文件和目录的准确套录,如果有的话也可以包括符号链接。下面是示例:[译注:-a 会保留原文件或目录的属性]

$ cp -a directory_1/ /home/pungki/office

Copy using -a option

上列的命令会拷贝一个名为 directory1 的目录到/home/pungki/office目录下。如你所见,**file6.txt**依然作为符号链接被复制。

9. 显示正在做什么

默认情况下,当拷贝作业成功时,我们仅仅会再次看到命令提示符。如果你想了解在拷贝文件时都发生了什么,我们可以用 -v 选项。

$ cp -v *.txt /home/pungki/office

Verbose option

当我们从当前目录下拷贝所有的 txt 文件到 /home/pungki/office 目录,-v选项会显示正在操作的过程。这些额外的信息会帮助我们了解更多拷贝过程。

10. 当原文件较目标文件新时拷贝

我们用 -u选项来实现。下面是具体示例:

$ cp -vu *.txt /home/pungki/office

Copy only if newer

起初我们看到file\_1.txt 是0字节大小。然后我们用 vi 编辑,加入一些内容并保存。接下来,我们发现文件大小已经变为了 36 个字节。 与此同时在/home/pungki/office目录中,我们已经包含了所有txt文件。当我们用 -u 选项,结合 -v 选项来查看具体操作,cp 命令会只拷贝比目标目录下新的文件。因此,我们看到只有 file\_1.txt 拷贝到 /home/pungki/office 目录下

11. 使用交互模式

交互模式下会询问是否覆盖目标目录下的文件。使用 -i 选项,启用交互模式。

$ cp -ir directory_1/ /home/pungki/office/

Interactive mode

12. 创建备份文件

当目标目录已经含有同名文件,默认情况下 cp 命令会覆盖目标目录下的同名文件。使用 --backup 选项,cp 命令会为每一个现有的目标文件做一个备份。../office 相对于 /home/pungki/office 。下面是示例:

$ cp --backup=simple -v *.txt ../office

Backup option

正如我们看到的,--backup=simple 选项会创建一个在文件名末尾用波浪符标记(~)的备份文件。--backup 选项也有一些其他控制:

  • none, off:从不备份(即使给出 --backup)
  • numbered, t:用编号备份
  • existing, nil :如果编号备份存在则使用编号备份,否者用简易备份[译注:也就是用波浪号]
  • simple, never :总是使用简易备份

13. 只拷贝文件属性

cp 命令也提供给我们 --attributes-only 选项。顾名思义,这个选项只会拷贝文件名及其属性,不会拷贝任何数据。下面是示例:

$ cp --attributes-only file_6.txt -v ../office

Copy attributes only

从上图看出, 原文件 file\_6.txt 有 50 字节大小。用了 --attributes-only选项,拷贝的文件只有0字节大小。这是因为文件内容并没有拷贝。

14. 强制拷贝

用了 -f 选项会强制进行拷贝操作。如果目标文件不能打开,可以用 -f 尝试一下。

$ cp -f *.txt -v ../office

Copy with force

15. 在拷贝之前先删除目标

我们可以用,--remove-destination 选项 实现。这个选项与上面的-f选项形成对照。如果 cp 命令在目标目录下发现同名文件, cp 命令会先删除目标文件,然后再拷贝一份新的。下面是示例:

$ cp --remove-destination *.txt -v ../office

Remove destination option

总结

cp 命令是 Linux 下最基础的命令之一。对于那些想要学习 Linux 的人,必须得把这个命令掌握。当然你也可以在你的终端下键入 man cp 或者 cp --help 来显示更多帮助信息。


via: http://linoxide.com/linux-command/linux-cp-command/

译者:Luoxcat 校对:Mr小眼儿

本文由 LCTT 原创翻译,Linux中国 荣誉推出

如果你已经习惯了在Linux系统上工作,那你一定会发现在Linux世界中存在着大量的文本文件。配置文件和日志文件通常都采用文本格式。这些文件通常都有很长的内容,不能在一屏内全部显示。所以在处理这种文件时,我们需要分页显示。这时我们可以用上more命令。

more是干嘛的

more是一个用来分页显示大文本文件的命令,它默认是内置在各个Linux发行版中的。

怎么用more

使用more命令,只需要键入:

$ more file_name

比如,我们想检查/var/log目录下的日志文件syslog,只需要键入:

$ more /var/log/syslog

more命令

然后我们可以看到在屏幕左下角有个提示,告诉我们当前的显示比例为0%。看上去这个文件相当大,所以第一页是全部页数的0%。使用空格键可以往下翻页,然后就可以看到提示的百分比会增加。

Scroll page

限制每页显示的行数

在执行more命令的时候,它会占用你终端窗口的全部空间用于显示。但是你可以通过参数-数字来限制每页显示的行数。

例如,你希望每页限制显示12行,可以通过下面的命令:

$ more -12 /var/log/syslog

限制每页显示12行

现在,你会看到每页只显示12行,在按下空格键后,就会翻页显示后面的12行。

Display user message

我们知道,more命令会在显示区域的左下角提示当前内容所占的百分比。对于第一次使用more命令的人来说,他或她可能会想知道怎么才能往下翻页。为了避免这种情况,我们可以在执行时增加-d参数,这样就会额外显示一行用户信息“[按空格键继续,‘q‘推出.]”

More with -d option

如果用户按了‘空格‘或’q‘之外的按键,more会显示一行帮助信息“ [按‘h’键查看提示。]”

More displaying help message

如果按下h键,会显示一个帮助信息:

Display help

一个有意思的指令是b按钮,b按钮允许你退回到前面的页面。换句话说,b按钮可以允许向前翻页

你可以通过左上角的...前1页信息来确认当前显示的是前面的页面。

在more中往前翻页

禁止滚动

通过参数-c,more命令不会滚动页面,而是直接清除之前的内容,替换为下一页的内容。 With -c option, more will not scroll the page. It will clear the previous page and put the next page or lines there.

$ more -10 -c lynis.log

Suppress scroll

如果按下空格键,下一页会仍然有相同的大小。

Suppress scroll

忽略多余的空白行

使用参数-s来忽略多余的空白行,下面是个例子:

多个空白行的文件

当我们增加参数-s后:

$ more -s doc_30.txt

忽略了多余空白行

查找字符串

如果你的日志文件非常大,那么在其中查找你想要的字符串并不是那么容易。more命令的查找功能可以帮你,通过参数+/string可以用来搜索字符串,找到的关键字会显示在第一行。比如我们要在/var/logs/syslog文件中搜索“dhclient”,那more命令的格式:

$ more +/dhclient /var/log/syslog

查找字符串

然后,如果要在文件中继续搜索下一个,只需要按下/按钮,后面跟有关键字dhclient。

从指定行开始显示

你也可以通过参数+数字来指定开始显示的行,例如,我们有一个15行的文件:

多行文件

然后我们想从第5行开始显示这个文件的内容,命令看起来会是这个样子:

$ more +5 doc_30.txt

从指定行开始显示

可以显示二进制文件吗?

答案是不行. more命令会提示这样的信息,例如:

显示二进制文件

结论

more是一个用来查看文本文件的基础工具,它不能用来显示二进制文件。通常,我们可以通过命令man more或者more --help来获取更多关于more怎么使用的信息。


via: http://linoxide.com/linux-command/linux-more-command/

译者:zpl1025 校对:wxy

本文由 LCTT 原创翻译,Linux中国 荣誉推出

目前,随着因特网的广泛普及,对文件管理的需求变得更多。对很多人来说,用一个应用程序来有效管理你在网络上的文件是必不可少的。因此,下面列出你会用到的10个最好的开源的基于WEB的文件管理器。

  1. eXtplorer: 这个程序为你提供了移动、复制、编辑、搜索、删除、下载和上传功能。此外,你也能用 eXtplorer 创建和提取档案,文件夹和新文件。它的主要功能是让你通过 FTP 访问文件。你可以选择 Mozilla 公共许可或者 GPL 协议。为了正常使用这个文件管理器,服务器的PHP最低版本要求为 PHP 4.3 并且必须更新JavaScript。
  2. AjaXplorer: 绝大多数浏览器都支持这个文件管理器,并且它能很轻易地自动适应类似于手机一样的小屏幕浏览。目前iOS版的程序已经被开发出来了,安卓版的也将很快完成。要运行 AjaXplorer:,你所需要的是一个支持 PHP5.1 或者更高版本的WEB服务器来。它允许你直接从服务器流式传输视频内容。
  3. KFM: 这个免费和开源文件管理器可以作为 FCKedition、CKeditor、Tiny MCE 之类的富文本编辑器的插件。如果您正在使用一个基于 Linux 的操作系统,那么你需要 PHP 5.2 或更高版本,而 Mac OS X 和 Windows 分别需要 MySQL 4.1 或更高版本和 MySQL 5.0 或更高版本。它有一个自己的搜索引擎,附带了一个文本编辑器,可以高亮显示语法。它还带有 mp3 播放和视频播放选项。
  4. PAFM: 这个文件管理器可以让用户完全控制文件,还允许使用 CodePress 来编辑源代码。文件管理器的主要特色来自 CodePress,它提供了即时的语法高亮显示。
  5. QuiXplorer: 这个文件管理器可用于在互联网和局域网管理和共享文件。它还提供了一种多用户模式,每个用户可以定制自己的设置。
  6. BytesFall Explorer: 这个使用 PHP 和 JavaScript 编写的管理器在 GPL 下发布。它的 UI 非常类似于 Windows 资源管理器,但是它被用在 GeSHi、LiveTree、Shell 命令、FCKeditor 等项目。因为它有一组不同的功能。
  7. NavPHP: 这个文件管理器是使用PHP和AJAX编写的,并且提供了WindowsXP风格的导航。和 QuiXplorer 一样,这个管理器也有一个多用户模式,并有自己的代码编辑器。此外,它还可以使用Deflate和Gzip来压缩传输网页。你也可以使用这个功能来以zip格式下载文件或文件夹。
  8. iDC File Manager: 这是一个多用户系统,可以安装在基于 Linux 或 Windows 的网页服务器上。它提供了热键功能并支持社交网络,还可以监视用户活动。它的数据库是 MySQL。
  9. FileMan: 这个文件管理器带有一个所见即所得编辑器,可以编辑和创建 HTML 文件。除了 HTML 编辑器,它还具有其他很多有用的功能。
  10. Relay: 这个文件管理器使用 GPL 协议发布,并支持 AJAX。如果你使用大量的目录和文件,那么这个管理器对你来说非常理想。

via: http://www.efytimes.com/e1/fullnews.asp?edid=126569

译者:kingname 校对:Caroline

本文由 LCTT 原创翻译,Linux中国 荣誉推出

在“大数据”时代,我们会经常遇到有大文本文件(上 GB 或更大)的情况。假设需要我们手工的搜索和编辑这些大文件,或者为了解决一些特定的问题而需要手工分析多个上 GB 的日志文件。传统的文本编辑软件对处理这样的大文件不太有效,当我们试图打开一个大文件时会经常由于内存不足而郁闷的不行。

如果你是一个精明的系统管理员,你也许会用 cat、tail、grep、sed、awk 等这些命令的组合来打开和编辑一个文本文件。在这篇教程里,我将会谈论关于如何在 Linux 中打开(并编辑)一个大文本文件的更友好的方式方法。

Vim 的 LargeFile 插件

Vim文本编辑器拥有大量的插件(或脚本),它们能扩展 VIM 的功能。其中的一个Vim插件是 LargeFile 插件

LargeFile 插件可以使大文件更迅速的被加载和编辑,它是通过关闭 VIM 的一些像事件、回退、语法高亮等功能来实现的。

要在 VIM 上安装 LargeFile 插件,首先要确认是否已经安装 VIM。

在 Debian、 Ubuntu 或 Linux Mint 系统中:

$ sudo apt-get install vim 

在 Fedora、CentOS 或 RHEL 系统中:

$ sudo yum install vim-enhanced 

可以从 Vim website 上下载 LargFile 插件,最新版本号是5,下载的文件将会保存为 Vimball 格式(以 .vba 结尾)。

要在你的 home 目录下安装插件,用 VIM 打开 .vba 文件,如下所示。

$ gunzip LargeFile.vba.gz
$ vim LargeFile.vba 

在 VIM 窗体上输入 “:so %”,然后按回车键,就可以在你的 home 目录下安装这个插件了。

完成后,输入 “:q” 退出 VIM。

这个插件将会被安装在 ~/.vim/plugin/LargeFile.vim 下。现在可以像平常一样使用 VIM 了。

当在 VIM 中装载一个“大”文件的时候,这个插件起的作用就是关掉事件、回退、语法高亮等功能。默认情况下大于 100MB 的文件就会被插件认为是“大文件”。要改变也个默认设置,你可以编辑 ~/.vimrc 文件(如果不存在就创建一个)。

如要把大文件的标准最小定为 10MB 的话,可以在 ~/.vimrc 中添加

let g:LargeFile=10

虽然 LargeFile 可以加速文件装载的速度,但 VIM 自身对编辑相当大的文件支持不太好,因为它会一下子把整个文件都加载进内存。例如,用 VIM 装载 1G 大小的文件,它就会占很多内存和交换空间,如下图所示的顶部输出。

所以如果你的文件明显大于你 Linux 系统的物理内存的话,就要考虑其它的选择,如下所述。

glogg 日志资源管理器

如果你只需要查看一个文本文件,并不对它做编辑,可以考虑下 glogg。它是一款基于图形用户界面的独立日志分析器。这个 glogg 分析器支持通过正则表达式和通配符来对要打开的文本文件进行过滤和筛选,使用户只看到其真正关注的内容。

在 Debian (Wheezy 版本或更高版本)、Ubuntu 或 Linux Mint 系统中安装 glogg : 

$ sudo apt-get install glogg 

在 Fedora (17 版本或更高版本) 系统中安装 glogg :

$ sudo yum install glogg 

用 glogg 打开文本文件 :

$ glogg test.log 

glogg 能很快的打开一个大文本文件。我花了大约 12 秒就打开了一个 1G 的日志文件。

在 "Text" 区域,你可以输入正则表达式,然后点击 "Search" 按纽,它支持表达式大小写敏感搜索以及自动刷新功能。搜索后,在窗体底部会显示出筛选的结果内容。

从装载文件来跟 VIM 对比, glogg 显得更轻量级,在加载完一个 1G 的日志文件后,它仅仅只使用了 83M 的物理内存。

JOE 文体编辑器

JOE 是GPL下发布的一个轻量级的基于终端的文本编辑器。JOE 是一款少有的支持大文件的文本编辑器,可以打开和编辑比物理内存大的文件。

此外,JOE支持各种功能强大的文本编辑功能,如非破坏性编辑,用正则表达式搜索和替换,无限次的撤销/重做,语法高亮等。

在 Debian、Ubuntu 或 Linux Mint 系统中安装 JOE:

$ sudo apt-get install joe 

在 Fedora、CentOS 或 RHEL 系统中安装 JOE:

$ sudo yum install joe 

要打开编辑文本文件,请运行:

$ joe test.log 

相比上面提到的 glogg 来说,用 JOE 加载一个大文本文件会有点卡,加载一个 1G 的文件要用将近 30 秒的时间,不过考虑到要对文件进行全文编辑,这还能忍受。一旦文件加载完成,就可以在相当快捷的终端模式中编辑此文件。

JOE的内存消耗令人印象深刻。加载并编辑一个1GB的文本文件,只花费47MB的物理内存。

如果你还知道在 Linux 中打开/编辑大文本文件的其它方法的话,请跟我们分享!


via: http://xmodulo.com/2013/12/open-large-text-file-linux.html

译者:runningwater 校对:jasminepeng

本文由 LCTT 原创翻译,Linux中国 荣誉推出

在Linux系统中,大多数配置文件、日志文件,甚至shell脚本都使用文本文件格式,因此,Linux系统存在着多种文本编辑器,但当你仅仅想要查看一下这些文件的内容时,可使用一个简单的命令-cat。

cat手册里这样描述:

cat命令读取文件内容,并输出到标准设备上面

cat是一条linux内置命令. 几乎所有linux发行版都内置(译注:或者说我从未听说过不内置cat命令的发行版)。接下来,让我们开始学习如何使用.

1. 显示文件内容

最简单的方法是直接输入‘cat file\_name’.

# cat /etc/issue

CentOS release 5.10 (Final)
Kernel \r on an \m

2. 同时显示行号

当在读取内容很多的配置文件时,如果同时显示行号将会使操作变简单,加上-n参数可以实现.

# cat -n /etc/ntp.conf

1 # Permit time synchronization our time resource but do not
2 # permit the source to query or modify the service on this system
3 restrict default kod nomodify notrap nopeer noquery
4 restrict -6 default kod nomodify notrap nopeer noquery
5
6 # Permit all access over the loopback interface. This could be
7 # tightened as well, but to do so would effect some of the
8 # administration functions
9 restrict 127.0.0.1
10 restrict -6 ::1

3. 在非空格行首显示行号

类似于-n参数,-b也可以显示行号。区别在于-b只在非空行前显示行号。

#cat -b /etc/ntp.conf

1 # Permit time synchronization our time resource but do not
2 # permit the source to query or modify the service on this system
3 restrict default kod nomodify notrap nopeer noquery
4 restrict -6 default kod nomodify notrap nopeer noquery

5 # Permit all access over the loopback interface. This could be
6 # tightened as well, but to do so would effect some of the
7 # administration functions
8 restrict 127.0.0.1
9 restrict -6 ::1

4. 显示tab制表符

当你想要显示文本中的tab制表位时. 可使用-T参数. 它会在输入结果中标识为 ^I .

# cat -T /etc/hosts

# Do not remove the following line, or various programs 
# that require network functionality will fail.
127.0.0.1^I^Ilocalhost.localdomain localhost
::1^I^Ilocalhost6.localdomain6 localhost6

5. 显示换行符

-E参数在每行结尾使用 $ 表示换行符。如下所示 :

# cat -E /etc/hosts

# Do not remove the following line, or various programs$
# that require network functionality will fail.$
127.0.0.1 localhost.localdomain localhost$
::1 localhost6.localdomain6 localhost6$

6. 同时显示制表符及换行符

当你想要同时达到-T及-E的效果, 可使用-A参数.

# cat -A /etc/hosts

# Do not remove the following line, or various programs$
# that require network functionality will fail.$
127.0.0.1^I^Ilocalhost.localdomain localhost$
::1^I^Ilocalhost6.localdomain6 localhost6$

7. 分屏显示

当文件内容显示超过了你的屏幕大小, 可结合cat命令与其它命令分屏显示。使用管道符 ( | )来连接。

# cat /proc/meminfo | less

# cat /proc/meminfo | more

在less与more显示结果的区别在于less参数可pageup及pagedown上下翻滚。而more仅能使用空格向下翻屏。

8. 同时查看2个文件中的内容

位于/root文件夹里有两个文件取名linux及desktop,每个文件含有以下内容 :

Linux : ubuntu, centos, redhat, mint and slackware

Desktop : gnome kde, xfce, enlightment, and cinnamon

当你想同时查看两文件中的内容时,可按如下方法 :

# cat /root/linux /root/desktop

ubuntu
centos
redhat
mint
slackware
gnome
kde
xfce
enlightment
cinnamon

9. 排序显示

类似. 你也可以结合cat命令与其它命令来进行自定义输出. 如结合 sort ,通过管道符对内容进行排序显示。举例 :

# cat /root/linux | sort

centos
mint
redhat
slackware
Ubuntu

10. 输入重定向

你也可将显示结果输出重定向到屏幕或另一个文件。 只需要使用 > 符号(大于号)即可输出生成到另一个文件。

# cat /root/linux > /root/linuxdistro

以上命令会生成一个与/root/linux内容一模一样的叫linuxdistro的文件.

11. 新建文件

Linux下有多种方法新建文件。其中使用cat就是方法之一.

# cat > operating_system

Unix
Linux
Windows
MacOS

当你输入cat > operatingsystem,它会生成一个operatingsystem的文件。然后下面会显示空行。此时你可输入内容。比如我们输入Unix, Linux, Windows 和 MacOS, 输入完成后,按Ctrl-D存盘退出cat。此时你会发现当前文件夹下会生成一个包含你刚才输入内容的叫 operating\_system的文件。

12.向文件中追加内容

当你使用两个 > 符时, 会将第一个文件中的内容追加到第二个文件的末尾。 举例 :

# cat /root/linux >> /root/desktop

# cat /root/desktop

它会将 /root/linux的内容追加到/root/desktop文件的末尾。

第二个文件的内容将会变成这样:

gnome
kde
xfce
enlightment
cinnamon
ubuntu
centos
redhat
mint
slackware

13. 重定向输入

你可使用 <命令(小于号)将文件输入到cat中.

# cat < /root/linux

上面命令表示 /root/linux中的内容作为cat的输入。屏幕上显示如下 :

ubuntu
centos
redhat
mint
slackware

为了更清楚表示它的意义,我们使用以下命令 :

# cat < /root/linux | sort > linux-sort

此命令这样理解: 从/root/linux中读取内容,然后排序,将结果输出并生成linux-sort新文件

然后我们看看linux-sort中的内容 :

centos
mint
redhat
slackware
ubuntu

以上是一些cat命令的日常基本应用. 更多相关你可从cat命令手册中学到并记得经常练习它们.


via: http://linoxide.com/linux-command/13-cat-command-examples/

译者:hongchuntang 校对:Caroline

本文由 LCTT 原创翻译,Linux中国 荣誉推出