如何从Linux命令行管理文件

100 阅读3分钟

在像GNOME或KDE这样的图形化桌面中管理文件是一种点和点击的练习。要把一个文件移到一个文件夹里,你可以点击并拖动图标到它的新家。要删除一个文件,你可以把它拖到 "垃圾桶 "图标上。图形化的界面使桌面计算易于使用。

但我们并不总是用图形界面与Linux系统互动。如果你在服务器上工作,你可能需要使用命令行来进行操作。甚至像我这样的桌面用户可能更喜欢通过终端和命令行与他们的系统互动。我倾向于依靠一些命令来从命令行管理我的文件。

用Linux列出文件ls

对于任何使用命令行的人来说,如果不看一下那里有什么,你就走不远。ls 命令列出了一个目录的内容。例如,要看一个网络服务器的文档根目录中的内容,在/var/www/html ,你可以输入。

ls /var/www/html

大多数时候,我使用ls 来查看我所在的目录。要做到这一点,只需输入ls ,就可以列出所有内容。例如,当我在我的网络项目的根目录下时,我可能会看到这个。

$ ls
about  fontawesome      fonts   index.php  styles
docs   fontawesome.zip  images  prism

ls 命令有大约60个命令行选项,可以以各种方式列出文件和目录。一个有用的选项是-l ,提供一个长的或详细的列表,包括权限、文件大小和所有者。

$ ls -l

total 6252
drwxrwxr-x. 2 jhall jhall    4096 Jun 22 16:18 about
drwxr-xr-x. 2 jhall jhall    4096 Jun 25 16:35 docs
drwxr-xr-x. 2 jhall jhall    4096 Jun  7 00:00 fontawesome
-rw-r--r--. 1 jhall jhall 6365962 Jun  2 16:26 fontawesome.zip
drwxrwxr-x. 2 jhall jhall    4096 Jun 22 16:17 fonts
drwxr-xr-x. 2 jhall jhall    4096 Jun 25 13:03 images
-rw-rw-r--. 1 jhall jhall     327 Jun 22 16:38 index.php
drwxrwxr-x. 2 jhall jhall    4096 Jun 22 16:18 prism
drwxrwxr-x. 2 jhall jhall    4096 Jun 22 16:17 styles

文件大小是以字节为单位显示的,如果你看的是非常大的文件,这可能并不有用。要想以对人类有帮助的格式查看文件大小,可以添加-h--human-readable 选项来打印大小,用G 表示 Gigabyte,M 表示 Megabyte,K 表示 Kilobyte。

$ ls -l --human-readable
total 6.2M
drwxrwxr-x. 2 jhall jhall 4.0K Jun 22 16:18 about
drwxr-xr-x. 2 jhall jhall 4.0K Jun 25 16:35 docs
drwxr-xr-x. 2 jhall jhall 4.0K Jun  7 00:00 fontawesome
-rw-r--r--. 1 jhall jhall 6.1M Jun  2 16:26 fontawesome.zip
drwxrwxr-x. 2 jhall jhall 4.0K Jun 22 16:17 fonts
drwxr-xr-x. 2 jhall jhall 4.0K Jun 25 13:03 images
-rw-rw-r--. 1 jhall jhall  327 Jun 22 16:38 index.php
drwxrwxr-x. 2 jhall jhall 4.0K Jun 22 16:18 prism
drwxrwxr-x. 2 jhall jhall 4.0K Jun 22 16:17 styles

现在,ls ,而不是6365962 的文件大小,显示压缩文件为6.1M 或刚刚超过6MB的大小。

用Linux查看文件cat,head, 和tail

列出文件后的下一步是检查每个文件的内容。为此,我使用了几个命令。从我的网络服务器上的docs 目录开始。

$ ls docs
chapter1.tex  chapter4.tex  chapter7.tex  lorem.txt
chapter2.tex  chapter5.tex  chapter8.tex  readme.txt
chapter3.tex  chapter6.tex  chapter9.tex  workbook.tex

这些文件是什么?幸运的是,这个目录有一个readme.txt 文件,我可能认为它包含这个项目目录中的文件描述。如果文件不是太长,我可以用cat 命令来查看。

$ cat docs/readme.txt 
This is the workbook for the C programming self-paced
video series. The main file is the workbook.tex file,
which includes the other chapters.

如果文件非常长,我可以使用head 命令只看前几行。这将显示文件中一定数量的行,通常是前10行,除非你用-n--lines 选项告诉head 。例如,这两个版本的head 命令检查的是lorem.txt 文件的前三行。

$ head -n 3 docs/lorem.txt 
Lorem ipsum dolor sit amet, consectetur adipiscing
elit. Nullam at ligula eget nunc feugiat pharetra. Nullam
nec vulputate augue. Suspendisse tincidunt aliquet
$ head --lines=3 docs/lorem.txt 
Lorem ipsum dolor sit amet, consectetur adipiscing
elit. Nullam at ligula eget nunc feugiat pharetra. Nullam
nec vulputate augue. Suspendisse tincidunt aliquet

如果我想查看文件的最后几行,我可以用同样的方法使用tail 命令。同样,这两条tail 命令分别显示了lorem.txt 文件的最后三行。

$ tail -n 3 docs/lorem.txt 
egestas sodales. Vivamus tincidunt ex sed tellus tincidunt
varius. Nunc commodo volutpat risus, vitae luctus lacus
malesuada tempor. Nulla facilisi.
$ tail --lines=3 docs/lorem.txt 
egestas sodales. Vivamus tincidunt ex sed tellus tincidunt
varius. Nunc commodo volutpat risus, vitae luctus lacus
malesuada tempor. Nulla facilisi.

在检查服务器上的日志文件时,使用headtail 也很有用。我有一个小型的网络服务器,我在家里的网络上运行,在我使网站上线之前测试它们。我最近发现,这个网络服务器的日志相当长,我想知道它有多长。使用head ,我只打印了第一行,看到该日志文件是在2020年12月创建的。

$ ls -l --human-readable /var/log/httpd
total 13M
-rw-r--r--. 1 root root 13M Jun 25 16:23 access_log
-rw-r--r--. 1 root root 45K Jun  2 00:00 error_log
$ sudo head -n 1 /var/log/httpd/access_log
10.0.0.177 - - [05/Dec/2020:14:58:35 -0600] "GET / HTTP/1.1" 403 5564 "-" "Mozilla/5.0 (X11; Fedora; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/87.0.4280.88 Safari/537.36"

用Linux删除文件rm

在我的样本文本文件的目录中,lorem.txt 文件包含Lorem Ipsum文本。这只是印刷业中使用的假文本,所以lorem.txt 文件并不真正属于这个项目。让我们删除它吧。rm 命令可以删除这样的文件。

$ ls docs
chapter1.tex  chapter4.tex  chapter7.tex  lorem.txt
chapter2.tex  chapter5.tex  chapter8.tex  readme.txt
chapter3.tex  chapter6.tex  chapter9.tex  workbook.tex
$ rm docs/lorem.txt 
$ ls docs
chapter1.tex  chapter4.tex  chapter7.tex  readme.txt
chapter2.tex  chapter5.tex  chapter8.tex  workbook.tex
chapter3.tex  chapter6.tex  chapter9.tex

rm 命令是危险的,因为它在没有垃圾桶或回收站的干预下删除了一个文件。安装一个垃圾处理命令要安全得多,比如trashytrash-cli。然后你就可以在永远删除文件之前把它们送到一个暂存区。

$ rm docs/lorem.txt

在命令行上管理文件只需要几个命令。ls 命令列出了一个目录的内容,cat,headtail 显示了文件的内容。使用rm 或一个安全的 "垃圾 "命令来删除你不需要的文件。这五个命令将帮助你在任何Linux系统上管理你的文件。要想了解更多,包括可用的选项,可以使用--help 选项来查看如何使用每个命令的摘要,例如ls --help 来查看如何使用ls 命令。