命令行星期二

跳转到:导航搜索

命令行星期二

导言

嗨,极客们!

今天我们推出一个新系列,名为“命令行星期二”。为什么叫命令行星期二?因为在这个系列中,像我一样的普通电脑爱好者,将尝试稍微跳出图形用户界面(GUI)文化的界限,这种文化如今已成为“让大众更容易使用”的代名词。

当然,如果你访问过任何与 GNU/Linux 相关的社区论坛,你可能已经读过(我猜测)一场关于哪种方式实际上更容易的激烈辩论。是事事都用 GUI,还是简单地学习和享受命令行界面(CLI)。

openSUSE 终端

关于 GUI 工具的使用,有许多支持或反对的论点。最常被提及的优点之一是,我们是在点击式计算范式中长大的,所以它基本上是一种我们与机器交互的语言形式,或者说是文化。模式大多是重复的,通过点击大按钮来完成我们所需要的一切。

另一方面,我读到的关于命令行优点的最有趣的评论之一是:通过命令行,你可以比使用 GUI 工具更快、更轻松、更迅速地完成更多事情。但有一个问题:你必须学习命令。是的,学习它们,就像学习一首诗一样。现在,对于我们这些半受训的 clueless 用户来说,这听起来都像是无用的极客过度追求和夸大其词,让我用一个寓言来将其人性化。

寓言

我使用 Linux 已经三年多了。我是一名 27 岁的文学专业学生,对任何形式的技术都不太感兴趣。直到高中我才拥有电脑,所以大概在 17 岁左右。这勉强算是十年的电脑使用经验。我用过的唯有三个程序是 BS Player、Winamp 和 Football Manager,偶尔也会用一下 MS Word。三年多前,我在当时一份不太稳定的工作中,一个同事和另一个同事谈论着一个新版本的东西,它立刻吸引了我的注意力,因为它看起来与众不同。我想那是 Ubuntu 的 Natty Narwhal。和他讨论后,他向新人滔滔不绝地讲了我们常说的那些优点,比如无需杀毒软件、启动更快、安全性更好、软件中心等等,最重要的是:其背后的自由开源软件(FOSS)理念。他以一种非常非侵入性、非狂热的方式做到了这一点。

我决定试一试,从那以后就再也没有回头。我是如何在 11.4 版本左右,在第一次尝试 Ubuntu 后不久接触到 openSUSE 的,这得另找时间讲,以及我如何发现它是完美的甜蜜点,这又是另一个完全不同的故事。关键是,我终于进入了 Linux 领域。这很有趣,与众不同,它让我的电脑运行得更好,更稳定。我几乎没有遇到过问题(看来我无意中购买了相当主流的硬件)。Linux 在桌面方面似乎取得了长足的进步,所以我几乎不需要使用终端。但我要说的是,它曾是 Linux 中最可怕、最恐怖、最令人发指的工具之一。如果某个特定操作没有 GUI,我就会立刻感到紧张,因为我不知道从论坛复制/粘贴命令时会遇到什么。随着时间的推移,情况发生了变化。与其他面向消费者的系统不同,发生在我身上的也许有点像人类逆向工程。我不再是消费系统,我觉得在三年里,系统“消费”了我。我学会了如何搜索基本问题、提交错误报告、在论坛上正确提问。每当我遇到问题时,我都会学会更好地提供信息,以便更有能力的人帮助我解决问题。

不久前,我女朋友评论说,她简直不敢相信我使用电脑主要是为了使用电脑本身,而不是为了做其他事情。“你只用它来听音乐和玩你的 Linux 小玩意儿,内纳德。天哪。”这让我深思,而且想得很深入。Linux,特别是 openSUSE 发行版,已经成为我的爱好。绝不是专家级别,这很合理,因为它不是我的专业领域。但我知道足够多的东西来应付,修复小问题,玩弄一些配置文件等等。但我逐渐认识到,随着我对系统玩弄和修修补补越来越多,我真的需要熟悉 CLI。我发现自己玩弄系统却不知道其底层的基本原理。天哪,ETC 到底是什么?!?!? BIN 又是什么?为什么结尾是 .sh?为什么这个文件在这里,那个文件在那里?为什么我必须点击无数个文件夹才能找到要修改的正确文件?然后我读到你可以用一个简单的命令轻松列出某个地方的所有文件。这变得有趣起来。我突然感到一股尝试的冲动。

那就开始吧!
明天,Pinky…

……我们来了。作为 openSUSE 新闻的新贡献者,我将尝试以一种我认为对社区中大部分人有益的方式做出贡献。是时候插上旗帜,一起学习命令行了。如果哲学像我一样吸引你进入 Linux 和 openSUSE,它已经让你走到了这一步。现在是时候更进一步了。Pinky 和 Brain 看,我知道有很多人像我一样。我知道你可能不明白所有那些 90 年代极客的黑屏绿字快速打字让一切爆炸的东西有什么意义。但它在许多方面都很有用。我们将以有趣和社区化的方式学习哪些目录是做什么用的,哪些文件在哪里,最常用的终端命令。当我们学会通过控制台执行任务时,我们的生活会更轻松,当我们遇到问题时,它会更有成就感。它还会让错误修复者更容易,当他们从我们这边收到正确的信息时,它会让我们的爱好无限有趣。我的意思是,天哪,你已经过渡到一个 Dilbert 和 xkcd 实际上很有趣的阶段了。是时候使用终端了!

附言

将使用的参考资料:William Shotts 的《Linux 命令行》以及克罗地亚黑客 Velimir Baksa(又名 Lutherus)关于最常用命令的简短教程。你需要:- 每周一到两小时的空闲时间 – 一品脱冰镇啤酒或任何其他饮料 – 有人指出使用 Gedit 或手动记事本(你知道的,笔和纸,呵呵)对于更轻松的学习会很有帮助。

Shotts 先生的书很棒。但可能存在时间/意志力等问题。通过这种方式,我将尝试使课程更人性化一些,节省你的时间,最重要的是——我指望我们一起学习,互相帮助(评论和论坛,各位!!)并建立一个紧密的 openSUSE 社区!下周这个时候(那时已经是六月了!),我们将学习我们的第一个命令。记住…

…玩得开心!

第一部分

极客们,我们又回来了!抱歉隔了这么久,但我向你们保证,我们已经重回正轨,满怀激情地赶上进度,并且,玩得开心一些:)

现在,整个想法在前两周发布的引言中已经基本总结完毕,所以我们可以开始正事了。正如肖茨先生的书所指导的,我们需要了解什么是 shell,因为我们将在其中操作,以及什么是终端模拟器。

肖茨先生说,我们谈论命令行时,实际上就是指 shell。shell 基本上是一个程序,它将你键盘上的按键传递给你的计算机,某种翻译器,以便你的计算机知道你在说什么。存在许多 shell,但 GNU/Linux 发行版中最广泛使用的 shell 叫做 bash,即 Bourne Again Shell。这是一个巧妙的文字游戏,因为 Bourne 先生创建了 bash 的前身 sh,而 Brian Fox 将其编写为 sh 的免费替代品。啊,GNU 的人们和他们的幽默,非常巧妙:)

Bourne Again Shell

接下来我们需要一个终端模拟器来与 shell 交互。每个 Linux 发行版都带有一个,取决于你使用的桌面环境,所以它应该是 KDE 的 Konsole,Gnome 的 Gnome 终端等等。肖茨先生说你可能会偏爱其中一个,但我大多数时候都使用桌面环境提供给我的。

现在,启动你的终端。你会看到一行,显示你的用户名和机器的主机名。这被称为 shell 提示符。这意味着它已准备好让你输入命令。让我们尝试一些随机的东西。输入任何内容,然后按回车。

呵呵,还记得引言中说我们需要像诗歌一样学习命令吗?瞧,随机输入可不行。

现在,按下向上箭头,你会看到命令重新出现。这是什么魔法?键盘上的向上箭头键用于访问命令历史记录。终端会保存你输入的最多 500 条命令,所以为了不重复输入,你可以用向上/向下箭头查找它们。向左和向右箭头用于在特定行中移动光标,这样你就可以编辑中间的文本。现在还有一件事——Ctrl+V 粘贴文本不起作用。你可以将其设置为某个快捷键,但通常是其他键。检查你的终端模拟器的快捷键!(在 Konsole 中,它是“设置”>“配置快捷键”)

现在,为了避免被“命令未找到”打脸,让我们尝试一些简单的。输入 date。(是的,我之前也不知道有这个命令,所以我也很兴奋:))

日期

你瞧。当你可以启动终端并输入 date,查看今天是星期几时,何必费心去看时钟里内置的日历呢:) 开玩笑而已,正如肖茨先生所说,这是一个简单的命令,更实用/更困难的命令下次再讲。与 date 相关的命令是 cal – 它会显示当前月份的日历。

你也可以尝试 df,它会列出你驱动器上的可用空间。

df

或者 free,显示可用内存量

free

如果你已经处于纯打字模式,你可以输入 exit 命令退出终端模拟器,而不是按下关闭按钮。

…我们本周就到此为止,以免在您已经紧张的日程中摄入过多。总结一下(您可以把这个结论写下来,以便重复),在第一部分中,我们学习了

   what is a shell
   what do we need to communicate with the shell (terminal emulator)
   navigating the terminal commands with cursor buttons and exiting the terminal

四个简单命令

   date – displays the current date
   cal – displays the current month’s calendar
   df – shows the amount of free space on your hard drives
   free – amount of free memory

下周二我们将做什么?

我们将学习文件系统导航(那些 bin 等等文件夹是什么,它们有什么用,如何通过终端导航它们)。在此之前……玩得开心!

第二部分

嘿,极客们!

让我们重温一下记忆。上周,我们略微了解了一些基本命令,知道了 shell 到底是什么,并稳步引入了我们的 CLI 星期二系列。

今天的菜单提供了一些不同的东西:文件系统导航。

现在,我在万维网上找到的最佳图片来自一个名为 devopsbootcamp 的网站。你可以在这里找到他们的教程和其余内容。但无论如何,这里有一张非常清晰的 Linux 根文件系统图。

例如,如上图所示,您的用户目录(您通常存储电影、音乐、文档等的地方)位于 /home 文件夹中。/home 文件夹位于 / 下。然后您有 /etc 文件夹,其中包含大多数配置文件。无论如何,您可以在这里找到详细的描述,因为在我们开始使用和配置它们之前,我们不会深入探讨哪个文件夹用于什么。今天仅限于导航。就此而言,让我们开始今天的第一个命令…


pwd

pwd,即“打印工作目录”,如果你在文件夹中导航时迷失方向,这是一个非常有用的命令。在任何给定时刻,输入 pwd,瞧!出现的将是您到达此文件夹所走的完整路径。那些在《立方体》中的家伙肯定能用上它,那些失败者。

想象一下自己在一间巨大的公寓里从一个房间走到另一个房间,迷失了方向。pwd 就像是带你回到起点的面包屑路径,这样你就不会在文件夹迷宫中迷失方向!cd

现在,借助 pwd 命令的使用,您知道自己位于哪个目录中。现在您想更进一步,移动到另一个目录。假设您的主文件夹中有一个文件夹/目录,您想将您的绝密终端操作重新定位到该文件夹。为此,您可以使用“cd”命令。cd,即“更改目录”,将更改所需目录的位置。如何使用它?很简单,输入 cd 和您的文件夹路径。例如,假设您想进入您主文件夹中的 Hello Kitty 图片集。您输入“cd /home/username/Hello\ Kitty”。

正如你所看到的,我们不仅仅在文件夹名称中使用了空格键。这是因为终端无法识别它。每当你想导航到一个包含空格的文件夹时,你需要用反斜杠字符加上空格来替换它。你也可以不使用反斜杠加空格的选项,只需将整个文件夹名称用引号括起来,例如 cd /home/username/”Hello Kitty”。

亲自试一试。使用 cd 导航到不同的目录,然后在那里输入 pwd,看看是否一切都按预期工作。Shotts 先生的快捷键

Shotts 先生提醒我们也有一些快捷键可用。

如果你只输入 cd,而不带路径,你的终端会将你的工作目录(无论它是什么)更改为你的 /home 文件夹。

同样,如果你输入 cd ~user_name,它会将你带到你所指定特定用户的主文件夹。

Next Week

下周,我们将进入下一章——我们将学习如何列出文件和目录,查看文本文件并对文件内容进行分类,这将比我们习惯的工作量稍大一些,但我希望你们有足够的时间。一个命令一个命令地学习,如果你没有时间自己动手,我们将在几个月内一起学习基础知识!

请记住…


…玩得开心!



附言:感谢 bwl 的评论,我们修正了文本中关于目录名称中空格的错误。

附附言:GreatEmerald 还补充了一些关于文件层次结构的新信息。你可以在评论中阅读。

感谢您的意见/更正。