在上篇文章中,主要是学会了怎么在文件目录之间跳转,其实就是一个 cd 命令,然后要理解相对路径和绝对路径的概念。今天我们继续来学习一些对使用 Linux 系统有帮助的命令。
1. ls
ls 命令前面已经有介绍过,就是用来查看当前目录包含哪些文件和目录的,但是它不是一个简单的命令,它有很多有用的参数,只要我们加上这些参数,就能看到更详细的信息。
打开终端模拟器,输入 ls ,回车后我们就能看到当前目录下包含哪些文件和目录,当然隐藏的目录和文件是看不到的。除此之外,我们还可以在 ls 命令后面跟一个空格,然后加上想要查看的目录的相对路径或者绝对路径就可以查看那个目录下包含的文件和目录了。不光如此,我们还可以同时在 ls 命令后面跟两个路径,用空格隔开,这在比较两个目录下包含的内容的时候挺有用的,下图是例子:
20190323175656813_437827590.png在上图中,我的第一个命令是:ls
,即查看当前目录;第二个命令是:ls ../
,即查看当前目录的上级目录;第三个命令是:ls /usr/ code/
,即同时查看 /usr/
目录和 ./code/
目录,再次提醒:./
可以省略。
1.1. ls -l
这里先说一个题外话,不然我每次介绍命令参数的时候都要说,很累的,就是一种约定:我们在命令后面加参数的时候,一般都是先输入命令,然后输入一个空格,在输入一个 -
,-
后面紧跟命令参数,例如:ls -l
,ls 是命令,空格 + -
是约定,l 是参数。
好了,以后我说命令加什么参数我就不会再强调命令后面要跟空格 + -
了。进入正题,```ls`` 命令后面跟参数 l,是改变 ls 输出的格式为长格式,所谓长格式就是显示的不一样了,信息更多了。如下图:
ls 这个命令有很多的参数,下面我列出几个比较常用的参数,其余的参数大家可以使用 ls --help
和 man ls
来查看,man
命令我们后面会讲到,在 Linux 下有句话叫做:不会的问题就问男人。这里的男人指的就是 man
。
- a:列出目录下所有的文件和目录包括隐藏的.
- A:和 a 参数列出的一样,但是 A 参数列出的不包含
..
和.
两个目录,大家可以试一试,对比一下差异 - h:这个参数很有用,可以和 l 参数结合使用,如:
ls -lh
,大家可以试试没有 h 参数和有参数的区别,是不是有 h 参数更容易看出文件和目录的大小呢? - S:有时我们想查看某个目录中最大的文件是哪一个,就可以加上 S 参数,使输出按照文件大小排序输出。
我常用的参数就是 laAhS
这几个,顺便说一下,l 参数输出的长格式的含义我之前的文章有介绍过,大家可以点击这个链接查看:Linux 文件权限介绍
2. file
前面我们有讲过 Linux 系统下文件的后缀名并不表示文件的类型,所以像 1.jpg
这样的文件我们期望它是一张图片,但是在 Linux 系统下有时并不是这样,所以我们要确认一个文件的类型就需要使用 file 这个命令了。
当我们在 Linux 系统下需要查看一个文件的类型的时候,我们可以像这样:fiel 1.jpg
,如下图:
可以看出,1.jpg
是 JPEG 图片数据,这如我们的期望,那我们再来看看下图,你就知道为什么我们在 Linux 系统下不要光看文件名和后缀来确定文件的类型了,还是要使用 file 命令,用法就是 file 后面跟文件的名字。
看到了吧,2.jpg
居然是一个文本文件,不是图片文件。
3. less 和 more
less 命令和 more 两个命令是用来查看文本文件的工具,我们可以输入 less 或者 more 命令,然后后面跟一个文本文件,就可以上下滚动查看文本文件的内容了。要退出就按一下 q。
下面是 less 命令的一些快捷键:
20190323190543051_369753344.png那 more 命令是什么呢?其实 less 命令是 more 程序的改进版,less is more(色即是空)。
4. 符号链接
符号链接分为软链接和硬链接,我们先来看看软链接,更多关于符号链接的知识,我们后面再讨论,先来看看下图中的文件的长格式:
20190323191142008_188971850.png我们看到权限的第一位是 l,我么之前讲过,第 1 位,有三种取值:普通文件(-)、目录(d),符号链接(l)。所以上图中的 server 是一个符号链接,它真正指向的是 /run/user/1000/gvfs/smb-share:server=192.168.20.204,share=home
。那为什么需要软链接呢?
描绘一下这样的情景:一个程序要求使用某个包含在名为“foo”文件中的共享资源,但是“foo”经常改变版本号。 这样,在文件名中包含版本号,会是一个好主意,因此管理员或者其它相关方,会知道安装了哪个“foo”版本。 这会导致另一个问题。如果我们更改了共享资源的名字,那么我们必须跟踪每个可能使用了 这个共享资源的程序,当每次这个资源的新版本被安装后,都要让使用了它的程序去寻找新的资源名。 这听起来很没趣。
这就是符号链接存在至今的原因。比方说,我们安装了文件 “foo” 的 2.6 版本,它的 文件名是 “foo-2.6”,然后创建了叫做 “foo” 的符号链接,这个符号链接指向 “foo-2.6”。 这意味着,当一个程序打开文件 “foo” 时,它实际上是打开文件 “foo-2.6”。 现在,每个人都很高兴。依赖于 “foo” 文件的程序能找到这个文件,并且我们能知道安装了哪个文件版本。 当升级到 “foo-2.7” 版本的时候,仅添加这个文件到文件系统中,删除符号链接 “foo”, 创建一个指向新版本的符号链接。这不仅解决了版本升级问题,而且还允许在系统中保存两个不同的文件版本。 假想 “foo-2.7” 有个错误(该死的开发者!),那我们得回到原来的版本。 一样的操作,我们只需要删除指向新版本的符号链接,然后创建指向旧版本的符号链接就可以了。
在上面列出的目录(来自于 Fedora 的 /lib 目录)展示了一个叫做 “libc.so.6” 的符号链接,这个符号链接指向一个 叫做 “libc-2.6.so” 的共享库文件。这意味着,寻找文件 “libc.so.6” 的程序,实际上得到是文件 “libc-2.6.so”。
5. 多说一点
今天学会了新的命令,要用起来,不要担心把系统文件弄坏了,今天学习的命令不会改变文件的内容,所以尽情的使用它们查看 Linux 系统下不同目录下的不同内容吧,下面是 Linux 一些比较常用到的目录:
- /
- 根目录,万物起源。
- /bin
- 包含系统启动和运行所必须的二进制程序。
- /boot
- 包含 Linux 内核、初始 RAM 磁盘映像(用于启动时所需的驱动)和 启动加载程序。
- 有趣的文件:
- /boot/grub/grub.conf or menu.lst, 被用来配置启动加载程序。
- /boot/vmlinuz,Linux 内核。
- /dev
- 这是一个包含设备结点的特殊目录。“一切都是文件”,也适用于设备。 在这个目录里,内核维护着所有设备的列表。
- /etc
- 这个目录包含所有系统层面的配置文件。它也包含一系列的 shell 脚本, 在系统启动时,这些脚本会开启每个系统服务。这个目录中的任何文件应该是可读的文本文件。
- 有趣的文件:虽然 /etc 目录中的任何文件都有趣,但这里只列出了一些我一直喜欢的文件:
- /etc/crontab, 定义自动运行的任务。
- /etc/fstab,包含存储设备的列表,以及与他们相关的挂载点。
- /etc/passwd,包含用户帐号列表。
- /home
- 在通常的配置环境下,系统会在 /home 下,给每个用户分配一个目录。普通用户只能在自己的目录下写文件。这个限制保护系统免受错误的用户活动破坏。
- /lib
- 包含核心系统程序所使用的共享库文件。这些文件与 Windows 中的动态链接库相似。
- /lost+found
- 每个使用 Linux 文件系统的格式化分区或设备,例如 ext3 文件系统, 都会有这个目录。当部分恢复一个损坏的文件系统时,会用到这个目录。这个目录应该是空的,除非文件系统 真正的损坏了。
- /media
- 在现在的 Linux 系统中,/media 目录会包含可移动介质的挂载点, 例如 USB 驱动器,CD-ROMs 等等。这些介质连接到计算机之后,会自动地挂载到这个目录结点下。
- /mnt
- 在早些的 Linux 系统中,/mnt 目录包含可移动介质的挂载点。
- /opt
- 这个/opt 目录被用来安装“可选的”软件。这个主要用来存储可能 安装在系统中的商业软件产品。
- /proc
- 这个/proc 目录很特殊。从存储在硬盘上的文件的意义上说,它不是真正的文件系统。 相反,它是一个由 Linux 内核维护的虚拟文件系统。它所包含的文件是内核的窥视孔。这些文件是可读的, 它们会告诉你内核是怎样监管计算机的。
- /root
- root 帐户的家目录。
- /sbin
- 这个目录包含“系统”二进制文件。它们是完成重大系统任务的程序,通常为超级用户保留。
- /tmp
- 这个/tmp 目录,是用来存储由各种程序创建的临时文件的地方。一些配置导致系统每次 重新启动时,都会清空这个目录。
- /usr
- 在 Linux 系统中,/usr 目录可能是最大的一个。它包含普通用户所需要的所有程序和文件。
- /usr/bin
- /usr/bin 目录包含系统安装的可执行程序。通常,这个目录会包含许多程序。
- /usr/lib
- 包含由 /usr/bin 目录中的程序所用的共享库。
- /usr/local
- 这个 /usr/local 目录,是非系统发行版自带程序的安装目录。 通常,由源码编译的程序会安装在 /usr/local/bin 目录下。新安装的 Linux 系统中会存在这个目录, 并且在管理员安装程序之前,这个目录是空的。
- /usr/sbin
- 包含许多系统管理程序。
- /usr/share
- /usr/share 目录包含许多由 /usr/bin 目录中的程序使用的共享数据。 其中包括像默认的配置文件、图标、桌面背景、音频文件等等。
- /usr/share/doc
- 大多数安装在系统中的软件包会包含一些文档。在 /usr/share/doc 目录下, 我们可以找到按照软件包分类的文档。
- /var
- 除了/tmp 和/home 目录之外,相对来说,目前我们看到的目录是静态的,这是说, 它们的内容不会改变。/var 目录存放的是动态文件。各种数据库,假脱机文件, 用户邮件等等,都位于在这里。
- /var/log
- 这个 /var/log 目录包含日志文件、各种系统活动的记录。这些文件非常重要,并且 应该时时监测它们。其中最重要的一个文件是 /var/log/messages。注意,为了系统安全,在一些系统中, 你必须是超级用户才能查看这些日志文件。
好了,今天的分享就到这里。
欢迎关注微信公众号:Linux 漫游之旅。最新文章会在这里首发,免费提供 CSDN 下载服务。
网友评论