分类 技术 下的文章

学习如何在 FreeDOS 中对目录和文件执行创建、移除、复制等任务。

 title=

DOS 的开源实现 FreeDOS 提供了一个轻量级的操作系统,可以在现代硬件(或模拟器)上用于运行历史遗留下来的应用程序,可以更新硬件供应商不兼容于 Linux 的固件闪存。熟悉 FreeDOS 不仅是一种对旧计算机时代的有趣考古,也是一种获取有用的计算机技能的投入。在这篇文章中,我将介绍一些在 FreeDOS 系统上工作所需要知道的基本命令。

基本的命令和文件命令

FreeDOS 在硬盘驱动器上使用目录来组织文件。这意味着你需要使用目录命令来创建一个结构,用于存储和查找你在其中存储的文件。你所需要的用于管理目录结构的命令有:

  • MD (或 MKDIR) 创建一个新的目录或子目录。
  • RD (或 RMDIR) 移除(删除) 一个目录或子目录。
  • CD (或 CHDIR) 从当前工作目录更改到另一个命令。
  • DELTREE 删除一个目录,包括其包含的任意文件或子目录。
  • DIR 列出当前工作目录的内容。

因为使用目录是 FreeDOS 的主要工作,所有的这些命令(除 DELTREE 以外)是包含在 COMMAND.COM 中的内部命令。因此,它们将被加载到内存之中,并在你启动(即使是从启动盘启动)时随时可用。前三个命令有两个版本:一个版本是两个字母的短名,一个版本是长名。在实践中没有区别,因此,我将在这篇文章中使用短名。

使用 MD 创建一个目录

FreeDOS 的 MD 命令会创建一个新的目录或子目录。(实际上,由于 \ 是根目录,从技术上讲,所有的目录都是子目录,因此,我更喜欢在所有的示例中使用“子目录”的说法)。有一个可选的参数是你所想要创建目录的路径,但是如果不包含路径,将在当前工作子目录中创建子目录。

例如,为在你的当前位置创建一个名称为 letters 的子目录:

C:\HOME\>MD LETTERS

这会创建子目录 C:\letters

通过包含一个路径,你可以在任意位置创建一个子目录:

C:\>MD C:\HOME\LETTERS\LOVE

这和先移动到 C:\HOME\LETTERS ,然后在其中创建一个子目录的结果相同:

C:\CD HOME\LETTERS
C:\HOME\LETTERS\>MD LOVE
C:\HOME\LETTERS\>DIR
LOVE

一个路径描述不能超过 63 个字符,包括反斜杠在内。

使用 RD 移除一个目录

FreeDOS 的 RD 命令会移除一个子目录。这个子目录必须是空的。如果它包含文件或其它是子目录,你将会得到错误信息。它也有一个可选的路径参数,语法与 MD 的相同。

你不能移除你的当前工作子目录。为移除此目录,你必须 CD 到其父目录,然后再移除不需要的子目录。

使用 DELTREE 删除文件和目录

RD 命令可能会让人有点迷糊,因为在该命令中内置了保护 FreeDOS 的措施。例如,你不能删除一个包含内容的子目录是一种安全措施。DELTREE 就是解决方案。

DELTREE 命令会删除整个子目录“树”(子目录)、其包含的所有的文件,以及其包含的所有的子目录及其包含的所有的文件等等,上述的一切都在一个简单的命令中完成。有时,它可能有点 容易了,因为它可以如此快速地擦除数据。它是忽略文件属性的,因此你可以擦除隐藏、只读,和未知的系统文件。

你甚至可以在命令中具体指定多个目录树来擦除它们。这条命令将在一个命令中擦除这两个目录中的所有子目录:

C:\>DELTREE C:\FOO C:\BAR

这是那些使用前需要三思的命令中的其中一个。毫无疑问,它自然有其价值。我仍然对转到每个子目录,删除个别文件,检查每个子目录的内容,一次删除一个子目录, 然后再跳转到上一层目录,重复上述过程的乏味而记忆犹新。DELTREE 在你需要时是非常省时。但是我从不会将其用于日常维护,因为一此失误都能造成重大的损失。

格式化一个硬盘驱动器

FORMAT 命令也可以用于准备一个空白的硬盘驱动器来将文件写入其中。这将格式化 D: 驱动器:

C:\>FORMAT D:

复制文件

COPY 命令,顾名思义,将文件从一个位置复制到另一个位置。所需要的参数是:将要被复制的文件、要将其复制到的路径和文件。开关选项包含:

  • /Y 当一个文件要被覆盖时,避免出现提示。
  • /-Y 当一个文件要被覆盖时,需要出现提示。
  • /V 验证副本的内容。

这将从 C: 上的工作目录中复制文件 MYFILE.TXTD: 驱动器的根目录,并将其重命名为 EXAMPLE.TXT

C:\>COPY MYFILE.TXT D:\EXAMPLE.TXT

这将从 C: 上的工作目录中复制文件 EXAMPLE.TXTC:\DOCS\ 目录,接下来验证文件的内容来确保副本是完整的:

C:\>COPY EXAMPLE.TXT C:\DOCS\EXAMPLE.TXT /V

你也可以使用 COPY 命名来合并和追加文件。这个命令将合并两个文件 MYFILE1.TXTMYFILE2.TXT ,并将其放置到一个新的名称为 MYFILE3.TXT 的文件之中:

C:\>COPY MYFILE1.TXT+MYFILE2.TXT MYFILE3.TXT

使用 XCOPY 复制目录

XCOPY 命令将复制整个目录以及它们的所有的子目录和这些子目录中包含的所有的文件。参数是将要复制的文件和其路径,以及将要复制到的目的地。重要的开关选项是:

  • /S 复制当前目录及其子目录中的所有文件。
  • /E 复制子目录,即使它们是空的。这个选项必须和 /S 一起使用。
  • /V 验证其所制作的副本。

这是一个非常强大和有用的命令,尤其是用于备份目录或整个硬盘驱动器。

这个命令将复制目录 C:\DOCS 的全部内容,包括所有的子目录及其内容(除了空的子目录以外),并将其放置到驱动器 D: 的目录 D:\BACKUP\DOCS\ 之中:

C:\>XCOPY C:\DOCS D:\BACKUP\DOCS\ /S

使用 FreeDOS

FreeDOS 是一个有趣的、轻量的、开源的操作系统。不管你正在使用它来更新你的主板的固件,还是给予旧计算机新生,它都能提供很多有用的实用程序,可以使你能够很好地使用它工作。学习 FreeDOS 的基本知识。你都可能会被它的多才多艺所惊讶。


via: https://opensource.com/article/21/4/freedos-commands

作者:Kevin O'Brien 选题:lujun9972 译者:robsean 校对:wxy

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

SoundConverter 是一个有用的应用,它不仅能做到它的名字所说的那样,而且它是分批和并行地做的。

 title=

有许多用于存储数字音频的文件格式,它们适用于不同的目的。当然,数字音频只是声音的一种表现形式,是一种声波的呈现,它由解码器和一组扬声器转化为声音。一些音频格式,一般被称为 无损 lossless 格式,旨在将音频编码为接近其原始模拟形式。然而,在现实世界中有大量的数据,而迄今为止,数字形式只能对其进行近似处理,而且需要非常大的文件。其他的音频格式,被称 有损 lossy 格式,可以在文件大小与声音的合理表现之间取得平衡。

有很多很好的终端命令可以用于音频转换:有 soxffmpeg,以及一些特定格式的编码器,如 opusencflacoggencfdkaacwavpack 和无数的其他编码器。

在 Linux 上安装 SoundConverter

SoundConverter 在大多数 Linux 发行版上都可以通过你的包管理器获得。在 Fedora、Mageia 和类似的发行版上:

$ sudo dnf install kdenlive

在 Elementary、Mint 和其他基于 Debian 的发行版上:

$ sudo apt install kdenlive

然而,我使用使用 Flatpak 安装 SoundConverter。

转换音频

一旦你把音频编码成有损格式,你就丢失了数据。这些数据是否重要取决于其听众的耳朵。有些人听不出低比特率的 MP3 和全质量的 FLAC 文件之间的区别,即使那些能听出来的人,也常常注意不到 320kbps 的 Ogg Vorbis 播客和 128kbps 的 Ogg Vorbis 播客之间的区别。将音频从压缩格式转换为非压缩格式并不能恢复丢失的数据,但需要将音频从一种格式转换为另一种格式的情况并不少见。你可能想把文件上传到只接受特定格式的网站,或者你的移动设备可能只能播放特定的格式,或者用电子邮件发送一个对你的邮件主机来说太大的文件,或者你可能只是想节省硬盘上的空间。

SoundConverter 可以让你轻松地分批转换音频。要用 SoundConverter 转换音频:

  1. 从你的应用或活动菜单中启动 SoundConverter。
  2. 点击 SoundConverter 窗口左上角的“ 添加文件 Add Files ”按钮,并选择你要转换的文件。
  3. 添加了文件后,点击窗口右上角的“ 偏好 Preferences ”按钮(齿轮图标),并选择你想转换的格式。你还可以设置文件命名规则、目标文件夹和其他选项。
  4. 当你准备好了,点击左上角的“ 转换 Convert ”按钮。

 title=

并行处理

SoundConverter 是一个有用的应用,它不仅完全做了它的名字所说的事情,而且它是分批和并行地做的。因为现代计算机不仅仅有一个 CPU 核心,把每个文件放在一个队列中逐一编码,是对能源和时间的浪费。SoundConverter 可以同时处理几个文件,并对它们进行编码,这意味着转换 12 个文件所需的时间和通常一个接一个地转换两个文件所需的时间是一样的。你可以用一个好的终端命令做同样的事情,但前提是你要了解如何 启动并行进程

 title=

你也可以将立体声音频转换为单声道文件。这对播客和有声读物特别有用。这些通常由一个人从一个单一的位置(麦克风)说话组成,不需要空间位置感。事实上,将立体声文件减少到单声道,如果你只有一个耳塞,就能更容易听到音频,并将文件大小减半。

SoundConverter 的优势

为音频提供不同的文件格式是一个很好的功能,但似乎每当我以一种格式保存音频时,我都不可避免地需要另一种格式。有几个很棒的 Linux 命令可以 转换音频文件,但有时你可能想要一个可以在桌面上打开并拖放文件的应用,这就是 SoundConverter 的用场。SoundConverter 是一个简单的而用途单一的应用程序,它的作用和它的名字一样:把声音从一种格式转换为另一种格式。


via: https://opensource.com/article/21/12/soundconverter-linux

作者:Seth Kenlon 选题:lujun9972 译者:geekpi 校对:wxy

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

学习 find 命令的原因有很多。

不管我决心如何组织文件,似乎总有无法找到文件的时候。有时是因为我不记得最初的文件名,其他时候,我知道名字,但我不记得在哪里保存它了。甚至有时我需要一个我最初就没有创建的文件。但是,无论遇到什么困难,我知道在 POSIX 系统 上,总是有 find 命令可以帮助我。

安装 find

find 命令由 POSIX 规范 定义,它创建了一个用于衡量 POSIX 系统的开放标准,这包括 Linux、BSD 和 macOS。简而言之,只要你运行的是 Linux、BSD 或 macOS,那么 find 已经安装了。

但是,并非所有的 find 命令都完全相同。例如,GNU 的 find 命令有一些 BSD、Busybox 或 Solaris 上 find 命令可能没有或有但实现方式不同的功能。本文使用 findutils 包中的 GNU find,因为它很容易获得且非常流行。本文演示的大多数命令都适用于 find 的其他实现,但是如果你在 Linux 以外的平台上尝试命令并得到非预期结果,尝试下载并安装 GNU 版本。

按名称查找文件

你可以借助正则表达式使用完整或部分的文件名来定位文件。find 命令需要你给出想搜索的目录;指定搜索属性选项,例如,-name 用于指定区分大小写的文件名;然后是搜索字符串。默认情况下,搜索字符串按字面意思处理:除非你使用正则表达式语法,否则 find 命令搜索的文件名正是你在引号之间输入的字符串。

假设你的 Documents 目录包含四个文件:Foofoofoobar.txtfoo.xml。以下是对 foo 的字面搜索:

$ find ~ -name "foo"
/home/tux/Documents/examples/foo

你可以使用 -iname 选项使其不区分大小写来扩大搜索范围:

$ find ~ -iname "foo"
/home/tux/Documents/examples/foo
/home/tux/Documents/examples/Foo

通配符

你可以使用基本的 shell 通配符来扩展搜索。例如,* 表示任意数量的字符:

$ find ~ -iname "foo*"
/home/tux/Documents/examples/foo
/home/tux/Documents/examples/Foo
/home/tux/Documents/examples/foo.xml
/home/tux/Documents/examples/foobar.txt

? 表示单个字符:

$ find ~ -iname "foo*.???"
/home/tux/Documents/examples/foo.xml
/home/tux/Documents/examples/foobar.txt

这不是正则表达式语法,因此 . 在示例中只表示字母“点”。

正则表达式

你还可以使用正则表达式。与 -iname-name 一样,也有区分大小写和不区分大小写的选项。但不一样的是,-regex-iregex 搜索应用于整个路径,而不仅仅是文件名。这意味着,如果你搜索 foo,你不会得到任何结果,因为 foo/home/tux/Documents/foo 不匹配。相反,你必须要么搜索整个路径,要么在字符串的开头使用通配符:

$ find ~ -iregex ".*foo"
/home/tux/Documents/examples/foo
/home/tux/Documents/examples/Foo

查找近一周修改过的文件

要查找近一周修改的文件,使用 -mtime 选项以及过去的天数(负数):

$ find ~ -mtime -7
/home/tux/Documents/examples/foo
/home/tux/Documents/examples/Foo
/home/tux/Documents/examples/foo.xml
/home/tux/Documents/examples/foobar.txt

查找近几天修改的文件

你可以结合使用 -mtime 选项来查找近几天范围内修改的文件。对于第一个 -mtime 参数,表示上一次修改文件的最近天数。第二个参数表示最大天数。例如,搜索修改时间超过 1 天但不超过 7 天的文件:

$ find ~ -mtime +1 -mtime -7

按文件类型限制搜索

指定查找文件的类型来优化 find 的结果是很常见的。如果你不确定要查找的内容,则不应该使用此选项。但如果你知道要查找的是文件而不是目录,或者是目录而不是文件,那么这可能是一个很好的过滤器。选项是 -type,它的参数是代表不同类型数据的字母代码。最常见的是:

  • d - 目录
  • f - 文件
  • l - 链接文件
  • s - 套接字
  • p - 命名管道(用于 FIFO)
  • b - 块设备(通常是硬盘)

下面是一些例子:

$ find ~ -type d -name "Doc*"
/home/tux/Documents
$ find ~ -type f -name "Doc*"
/home/tux/Downloads/10th-Doctor.gif
$ find /dev -type b -name "sda*"
/dev/sda
/dev/sda1

调整范围

find 命令默认是递归的,这意味着它会在指定的目录中层层搜索结果。这在大型文件系统中可能会变得不堪重负,但你可以使用 -maxdepth 选项来控制搜索深度:

$ find /usr -iname "*xml" | wc -l
15588
$ find /usr -maxdepth 2 -iname "*xml" | wc -l
15

也可以使用 -mindepth 设置最小递归深度:

$ find /usr -mindepth 8 -iname "*xml" | wc -l
9255

下载速查表

本文仅介绍 find 的基本功能,它是一个很好的搜索工具,但对于强大的 Parallel 命令来说,它也是一个非常有用的前端。学习 find 的原因有很多,所以 下载我们免费的 find 速查表 吧,它可以帮助你了解有关该命令的更多信息。


via: https://opensource.com/article/21/9/linux-find-command

作者:Seth Kenlon 选题:lujun9972 译者:MjSeven 校对:wxy

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

Homebrew(家酿),也被称为 Brew,是一个主要为 macOS 创建的命令行包管理器。

Homebrew 在 macOS 用户中相当流行,因为更多的开发者创造了可以用 Homebrew 轻松安装的命令行工具。

这种流行导致了 Linuxbrew 的诞生,它是 Homebrew 的一个 Linux 移植版。由于它主要是 Git 和 Ruby 组成的,而 Linux 和 macOS 都是类 Unix 的系统,所以 Brew 在两种操作系统上都能很好地工作。

Linuxbrew 项目最终与 Homebrew 项目合并,现在只有一个 Brew 项目,叫做 Homebrew。

为什么我叫它 Brew,而不是 Homebrew?因为命令以 brew 开头。你会在后面的章节中看到它的详细内容。

当你已经有了 apt、dnf、snap 时,为什么还要在 Linux 上使用 Homebrew 包管理器?

我知道这种感觉。你已经有一个由你的发行版提供的好的 包管理器。除此之外,你还有 Snap、Flatpak 和其他通用软件包系统。

在你的 Linux 系统上你真的需要 Homebrew 包管理器吗?答案取决于你的需求。

你看,除了发行版的包管理器和通用包管理器,你会遇到需要其他包管理器的情况,比如 Pip (用于 Python 应用)和 Cargo (用于 Rust 软件包)。

想象一下,你遇到了一个很好的命令行工具,想试试。它的软件库提到它可以使用 brew 或源代码来安装。在这种情况下,在你的系统上有 brew 可能会有帮助。毕竟,都 2021 了,从源代码安装 并不时髦(也不舒服)。

换句话说,如果你遇到一些有趣的命令行工具只提供 brew 安装选项,你会有一个额外的选择。

在 Ubuntu 和其他 Linux 发行版上安装 Homebrew

安装是相当容易的。你只需要确保你已经有了所有的依赖项。

步骤 1:安装依赖项

你需要有相对较新版本的 gcc 和 glibc。你可以 在 Ubuntu 上安装 build-essential 包 来获得它们。除此之外,你还需要 安装 Git、Curl 和 procps(用于监控系统进程)。

在基于 Ubuntu 和 Debian 的系统中,你可以像这样一起安装所有这些东西:

sudo apt-get install build-essential procps curl file git

Iinstall dependencies for Homebrew in Ubuntu/Debian

对于其他发行版,请使用你的包管理器并安装这些依赖项。

步骤 2:安装 Homebrew

你可以看到为什么你需要 安装 Curl。它允许你 在终端下载安装脚本文件

只要输入这个命令:

/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"

当要求输入回车键时,请按下回车。

Installing Homebrew on Ubuntu

在脚本最后,它建议运行几个命令,将其添加到 PATH 变量中。Homebrew 实际上是安装在你的主目录中,然后软链接到 /usr/local 目录中。

Run the suggested command under Next steps to add Homebrew to PATh variable

你可以 在终端方便地复制和粘贴。只要选择它所建议的命令,按 Ctrl+Shift+C 复制,按 Ctrl+Shift+V 粘贴。

或者,你也可以直接复制粘贴这个命令:

echo 'eval "$(/home/linuxbrew/.linuxbrew/bin/brew shellenv)"' >> $HOME/.bash_profile

然后是这个:

eval "$(/home/linuxbrew/.linuxbrew/bin/brew shellenv)"

Adding brew commands to the PATH

步骤 3:验证 brew 的安装

就快完成了。只需通过使用 brew doctor 命令来验证 brew 命令是否可以运行:

brew doctor

brew doctor 命令会告诉你是否有任何问题。

你可以通过安装示例 hello 项目再次验证:

brew install hello

如果你没有看到任何错误,你可以在 Linux 上享用家酿了。

使用 brew 命令来安装、删除和管理软件包

让我快速告诉你几个可以用来安装、删除和管理软件包的 brew 命令。

由于 Homebrew 安装在你的主目录中,你不需要 sudo 来运行它(就像 Pip 和 Cargo)。

要用 brew 安装一个软件包,请使用安装选项:

brew install package_name

这里没有自动完成软件包名称的功能。你需要知道确切的软件包名称。

要删除一个 brew 软件包,你可以使用 removeuninstall 选项。两者的作用是一样的。

brew remove package_name

你也可以用这个命令列出已安装的 brew 软件包:

brew list

你也可以用 autoremove 选项删除不需要的依赖:

brew autoremove

在下一张截图中,我只用 brew 安装了两个软件包,但它也显示了这些软件包的依赖关系。即使在移除软件包后,依赖关系仍然存在。autoremove 终于把它们删除了。

Listing and removing brew apckages

还有很多 brew 命令选项,但这不在本教程的范围内。你可以随时 翻阅它的文档 并进一步探索。

从 Linux 中删除 Homebrew

如果不加入从你的 Linux 系统中删除 Homebrew 的步骤,本教程就不完整。

根据 GitHub 仓库中提到的步骤,你必须下载并使用这个命令运行卸载脚本:

/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/uninstall.sh)"

你会被要求输入 Y 键来确认删除。

Removing Homebrew from Linux

当 Homebrew 的卸载完成后,它会列出它所遗留的文件和目录:

Remaining files after Homebrew removal

让你自己去删除这些文件和目录。

总结

正如我前面解释的,Homebrew 为你已经有的东西提供了一个扩展。如果你偶然发现一个只有 brew 安装方式的应用,在你的 Linux 系统上安装 Homebrew 会很方便。

你对这个话题有什么要补充的,或者分享你的问题或意见?请在评论区留言。


via: https://itsfoss.com/homebrew-linux/

作者:Abhishek Prakash 选题:lujun9972 译者:geekpi 校对:wxy

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

终端常常让新用户感到害怕。然而,一旦你了解了它,你就会逐渐开始喜欢上它。好吧,这事往往发生在大多数 Linux 用户身上。

即使你使用 Ubuntu 作为桌面系统,你可能有时也要进入终端。新用户往往对很多事情毫无头绪,在这种情况下,一些基本的 Linux 命令的知识总是有帮助的,但这篇文章不是关于这个。

这篇文章的重点是解释关于使用终端的一些小的、基本的、经常被忽视的东西。这应该可以帮助 Ubuntu 桌面的新用户了解终端,并以更高的效率使用它。

你看到的“ 终端 terminal ”只是 各种终端应用程序 中的一个。毕竟终端只是一个 GUI 工具,它可以让你进入一个可以运行命令的 Shell 。

不同的终端应用程序(正确地应该被称为“ 终端仿真器”)看起来有些稍微不同的功能和特点(如不同的键盘快捷键、颜色组合、字体等)。

本文特别关注 Ubuntu 的默认终端,它是 “GNOME 终端”的一个实现。

1、用键盘快捷方式打开终端

你可以 在 Ubuntu 中打开终端,在系统菜单中寻找到它。然而,我最喜欢的方式是使用 Ubuntu 中的键盘快捷键Ctrl+Alt+T

2、终端、Shell、提示符和命令行

在你看其他内容之前,你应该知道这些不同术语之间的区别,这些术语经常被(不正确地)互换使用。

终端、提示符和命令

“终端”是图形化的应用程序,默认情况下运行 Shell。

Shell 很难与终端分开进行可视化。终端运行着一个 Shell,在 Ubuntu 中通常默认为 Bash shell。和终端一样,也有各种 Shell。Bash 是其中最受欢迎的,也是大多数 Linux 发行版上的默认 Shell。

你输入的命令是由 Shell 解释的。通常人们认为他们在终端看到的屏幕就是 Shell。这适合理解这个概念。

“提示符”是你在输入命令的空格前看到的东西。对于提示符没有固定的标准。在一些旧的终端中,只是在你可以输入命令的地方有一个闪烁的光标而已。在 Ubuntu 终端中,提示符给了你一些信息,你会在本文后面的章节中看到这些信息的细节。

“命令行”不是 Linux 特有的东西。很多操作系统都有一个命令行界面。许多编程语言也都有命令行界面。它是一个术语,用来指你可以运行和执行命令的界面。

Luke Smith 的 这个视频 用例子详细解释了它。言归正传,我在这里就不多说了。

3、了解提示符

你现在已经知道了。你在输入命令的空格前看到的东西叫做“提示符”。它是可配置的,在不同的发行版、终端应用程序和 Shell 中提示符看起来是不同的。

Ubuntu 终端对提示符进行了配置,让你看到一些东西。你可以一目了然地得到以下信息:

  • 用户名
  • 主机名(计算机的名称)
  • 当前工作目录

还有一些你可能想知道的惯例。

提示符中的冒号(:)是一个分隔符,常用来区分主机名和当前位置。

波浪号(~)表示当前用户的主目录。

对于普通用户,提示符以美元($)符号结束。对于 root 用户来说,它以英镑或哈希(#)符号结束。因此有一个笑话说,英镑比美元强。

你是否注意到,当我切换到 root 用户时,命令提示符看起来不一样,没有任何颜色?这又一次提醒了我,提示符不是一个标准,是要明确配置的。对于普通用户来说,Ubuntu 对提示符的配置与 root 用户不同。

像这样的简单信息间接地帮助了我们。在一个多用户环境中,你可以很容易地弄清楚你现在使用的是哪个用户,以及它是否是 root 用户。其显示的路径位置也是有帮助的。

4、目录和文件

在 Linux 中你听到最多的两个术语是目录和文件。

你可能知道什么是文件,但你可能会对“ 目录 directory ”这个术语感到困惑。目录就是“ 文件夹 folder ”。它把文件和文件夹放在里面。

你可以进入目录,但你不能进入文件。当然,你可以读取文件。

你可以用“文件夹”这个词来表示目录,应该没有问题。然而,最好使用“目录”,因为你会在各种教程、文件等中看到引用这个词。你甚至会发现像 rmdirmkdir 这样的命令,暗示它们是处理目录的。

补充说明:在 Linux 中,所有东西都是文件。甚至目录也是一种特殊的文件,里面有文件和目录的地址。我已经在我的关于 硬链接的文章 中解释了这一点。如果你想了解更多关于这个主题的信息,可以参考一下。

5、路径:绝对路径和相对路径

Linux 中的目录结构 类似于一棵树的根。所有的东西都从根部开始,并从那里向外扩散。

如果你要访问一个文件或目录,你需要通过提供它的“路径”来说明如何到达它的位置。这个路径是由目录名和分隔符(/)组成的。如果一个路径以 /(即根)开头,它就是一个绝对路径,否则就是一个相对路径。

路径

绝对路径从根开始,可以很容易地从系统的任何地方引用。相对路径则取决于你在目录结构中的当前位置。

绝对路径与相对路径

如果你在 /home/abhishek 这个位置,有一个名为 scripts 的目录,里面有一个文件 my_script.sh,你想知道这个文件的路径,它的绝对路径将是:

/home/abhishek/scripts/my_script.sh

它的相对路径将是:

scripts/my_script.sh

如果你改变所在位置,文件的绝对路径保持不变。但是,相对路径会改变,因为它是相对于你当前的路径而言的。

相对路径随位置变化但绝对路径保持不变的真实例子

6、 . 和 ..

在使用 Linux 终端时,你可能经常会遇到 ... 符号。

单点(.)表示当前目录。

双点(..)表示父目录(比当前位置高一个目录)。

你经常在相对路径中使用双点(..),或者用于改变目录。单点(.)也用于相对路径中,但更重要的是,你可以在指定当前位置的命令中使用它。

 . 和 .. 的使用

7、理解命令的结构

一个典型的 Linux 命令由一个命令名和选项及参数组成。

命令名 [选项] 参数

“选项”,顾名思义,是可选的。当使用时,它们可能会根据其属性来改变输出。

例如,cat 命令是用来查看文件的。你可以添加选项 -n,它也会显示行数。

选项不是标准化的。通常情况下,它们是由单字母和单破折号(-)组成的。它们也可能是两个破折号(--)和一个单词的形式。

同样的选项在不同的命令中可能有不同的含义。如果你在 head 命令中使用 -n,表明你想看行数,而不是行号。

同样的选项 -n 在 cat 和 head 命令中有不同的用途

在命令文档中,如果你看到方括号([])之间有什么东西,它表示括号中的内容是可选的

同样地,“参数”也没有标准化。有些命令希望用文件名作为参数,有些则希望用目录名或正则表达式。

8、获得帮助

当你开始使用命令时,你可能会记住一些经常使用的命令的选项,但你根本不可能记住所有命令的所有选项。

为什么呢?因为一条命令可能有十多个或二十多个选项。

那么,当你无法记住所有的选项时,你该怎么办呢?你需要“帮助”。我所说的帮助,并不是指在 Linux 论坛 上提问。我指的是使用命令的帮助选项。

每个标准的 Linux 命令都有一个快速帮助页面,可以用 -h—help 来访问。

命令名 -h

它可以让你快速了解命令的语法、常用选项及其含义,在某些情况下还有命令的例子。

cat 命令的帮助页

如果你需要更多的帮助,你可以参考 手册页,即命令的手册。

man 命令名

它涉及到所有的细节,阅读和理解起来可能会让人难以承受。另外,你也可以在网上搜索 “Linux 中 xyz 命令的例子”。

9、Linux 是区分大小写的

Linux 是区分大小写的。你在终端中输入的所有东西都是区分大小写的。如果你不考虑这一点,你会经常遇到 “bash: command not found” 或 “file not found” 的错误。

在主目录中,你的所有文件夹名称以大写字母开头的。如果你要切换到 Documents 目录,你必须把第一个字母保持为 D,而不是 d

Linux 是区分大小写的

你可以有两个分别名为 file.txtFile.txt 的文件,因为对于 Linux 来说,fileFile 是不一样的。

10、运行 Shell 脚本

你可以通过指定 Shell 来 运行一个 Shell 脚本

bash script.sh

或者你可以像这样执行 Shell 脚本。

./script.sh

第二种方法只有在文件有执行权限时才会起作用。更多关于 Linux 文件权限参考这里

运行bash脚本

11、使用制表符补完而不是全部输入

Ubuntu 的终端已经预先配置了制表符补完功能。这意味着如果你开始在终端上输入,然后点击 tab ,它会尝试自动完成它,或者在有多个可能的匹配时提供选项。

它既适用于命令,也适用于参数和文件名。

Tab 完成示例

这可以节省大量的时间,因为你不需要把所有的东西都写完整。

12、Ctrl+C 和 Ctrl+V 不是用来在终端复制粘贴的。

Ctrl+CCtrl+V 可能是复制粘贴的“通用”键盘快捷键,但它在 Linux 终端中不行。

Linux 继承了 UNIX 的很多东西,在 UNIX 中,Ctrl+C 被用来停止一个正在运行的进程。

由于 Ctrl+C 已经被用于停止一个命令或进程,所以它不能再用于复制粘贴。

13、你当然可以在终端复制粘贴

别担心。你仍然可以 在终端中复制粘贴。同样,复制-粘贴的键盘快捷键没有固定的规则,因为它取决于你使用的终端程序或你的配置。

在 Ubuntu 终端中,复制的默认键盘快捷键是 Ctrl+Shift+C,粘贴则是 Ctrl+Shift+V

你可以使用 Ctrl+C 从终端外(如网页浏览器)复制文本和命令,并使用 Ctrl+Shift+V 将其粘贴。同样,你可以高亮显示文本,用 Ctrl+Shift+C 从终端复制文本,用 Ctrl+V 粘贴到编辑器或其他应用程序。

14、避免在终端中使用 Ctrl+S

另一个初学者常犯的错误是使用“通用”的 Ctrl+S 键盘快捷键来保存。如果你在终端中使用 Ctrl+S,你的终端会被“冻结”。

这来自于传统的计算机,在那里没有向上滚动的滚动条。因此,如果有大量的输出行,Ctrl+S 被用来停止屏幕,以便可以阅读屏幕上的文字。

你可以用 Ctrl+Q 来解除终端的冻结。但还是要避免在终端中使用 Ctrl+S

15、注意命令例子中的 $ 和 <>

如果你参考一些在线教程或文档,你会看到一些命令例子中的文本在 <> 内。这表明你需要用一个合适的值来替换与 <> 一起的内容。

例如,如果你看到一个这样的命令:

grep -i <搜索内容> <文件名>

你应该把 <搜索内容><文件名> 换成各自的实际值。(LCTT 译注:不要输入 <>

这表明该命令只是一个例子,你必须用实际值来完成它。

这里需要注意的另一件事是,有些教程显示的命令例子是以 $ 开头的,比如这样:

命令开头的美元符号

这是表明它们是命令(而不是命令输出)的一种方式。但是,许多新的 Linux 用户把前面的 $ 和实际的命令一起复制,当他们把它粘贴到终端时,显然会出现错误。

所以,当你复制一些命令时,如果开头有 $,就不要复制它。你也应该避免复制随机网站的随机命令,特别是当你不了解它的作用时。

既然你正在阅读关于复制命令的文章,当你看到多行的命令在一起时,你应该一次复制一行,然后逐一运行。

避免将多个命令复制在一起

下一节将告诉你如何一次性运行多个命令。

16、你可以同时运行多个命令

你可以 一次运行多个命令 而不需要用户干预。作为 Ubuntu 用户,你可能已经在这个命令的形式中看到了它:

sudo apt update && sudo apt upgrade

在终端中,有三种不同的方法来组合命令:

;命令 1 ; 命令 2先运行命令 1,再运行命令 2
&&命令 1 && 命令 2只有命令 1 成功结束才运行命令 2
` ``命令 1 命令 2`只有命令 1 失败时才运行命令 2

17、停止一个正在运行的 Linux 命令

如果一个 Linux 命令在前台运行,也就是说,它正在显示输出,或者说你不能输入任何其他命令,你可以用 Ctrl+C 键停止它。

我以前讨论过它。它来自于 UNIX 的传统计算时代。

所以,下次你看到像 topping 这样的命令在持续运行,而你想恢复终端控制,只需使用这两个键:Ctrl+C

在 Linux 中用 Ctrl+C 停止一个正在运行的程序

18、清除终端

当我发现我的屏幕被不同类型的输出弄得太杂乱时,我会在开始其他工作之前清除终端屏幕。这只是一种习惯,但我发现它很有帮助。

要清除终端,请使用以下命令:

clear

你也可以使用 终端快捷键 Ctrl+L

19、退出终端

在少数情况下,我看到有人关闭终端程序来退出会话。你可以这样做,但退出终端的正确方法是使用退出命令:

exit

你也可以使用 Ubuntu 终端的键盘快捷键 Ctrl+D

总结

即使你对终端完全陌生,你也可以在终端中做很多额外的事情。你可以:

如果你想了解更多,看看这些 Linux 命令技巧,可以像专家一样使用终端

说实话,要谈的东西太多了。很难确定哪些应该被认为是绝对的基础知识,哪些应该被排除在外。例如,我想避免包括关于路径的信息,因为它需要详细的解释,但在一个地方讲得太详细可能会让人不知所措。

我已经过了在终端中的小东西曾经让我困惑的阶段。如果你是 Linux 终端的新手,或者你还记得你最初使用 Linux 时的挣扎,请随时提出建议对列表进行补充。我可能会根据你的意见更新这个列表。

如果你学到了新的东西,请在评论中提及。我想看看这篇文章是否值得一读 ?


via: https://itsfoss.com/basic-terminal-tips-ubuntu/

作者:Abhishek Prakash 选题:lujun9972 译者:wxy 校对:wxy

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

学习如何使用 FDCONFIG.SYS 来配置 FreeDOS 。

 title=

FreeDOS 是主配置文件是在根目录中的名称为 FDCONFIG.SYS 的文件。这个文件包含一系列的行,每行都设置一个诸如 LASTDRIVE=ZFILES=40 的值。例如,在 FreeDOS 1.3 RC4 中的默认 FDCONFIG.SYS ,看起来像这样:

SET DOSDIR=C:\FDOS

!COUNTRY=001,858,C:\FDOS\BIN\COUNTRY.SYS
!LASTDRIVE=Z
!BUFFERS=20
!FILES=40
!MENUCOLOR=7,0

MENUDEFAULT=1,5
MENU 1 - Load FreeDOS with JEMMEX, no EMS (most UMBs), max RAM free
MENU 2 - Load FreeDOS with JEMM386 (Expanded Memory)
MENU 3 - Load FreeDOS low with some drivers (Safe Mode)
MENU 4 - Load FreeDOS without drivers (Emergency Mode)

12?DOS=HIGH
12?DOS=UMB
12?DOSDATA=UMB
1?DEVICE=C:\FDOS\BIN\JEMMEX.EXE NOEMS X=TEST I=TEST NOVME NOINVLPG
234?DEVICE=C:\FDOS\BIN\HIMEMX.EXE
2?DEVICE=C:\FDOS\BIN\JEMM386.EXE X=TEST I=TEST I=B000-B7FF NOVME NOINVLPG
34?SHELL=C:\FDOS\BIN\COMMAND.COM C:\FDOS\BIN /E:1024 /P=C:\FDAUTO.BAT
12?SHELLHIGH=C:\FDOS\BIN\COMMAND.COM C:\FDOS\BIN /E:1024 /P=C:\FDAUTO.BAT

但是,这些指令行都表示什么意思?为什么一些指令行有一个问号(?)或一个叹号(!),而其它的命令行却没有?

一个简单的配置

让我们从一个简单的配置开始,像这样,我们就可以看到我们的配置做了什么。做出这个非常简单的 FDCONFIG.SYS 文件:

LASTDRIVE=Z
BUFFERS=20
FILES=40
DEVICE=C:\FDOS\BIN\HIMEMX.EXE
SHELL=C:\FDOS\BIN\COMMAND.COM C:\FDOS\BIN /E:1024 /P=C:\FDAUTO.BAT

这个配置文件仅包含几个指令:

  1. LASTDRIVE=Z
  2. BUFFERS=20
  3. FILES=40
  4. DEVICE=C:\FDOS\BIN\HIMEMX.EXE
  5. SHELL=C:\FDOS\BIN\COMMAND.COM C:\FDOS\BIN /E:1024 /P=C:\FDAUTO.BAT

第一行指令告诉 FreeDOS 在存储器中保留多少驱动器字母。(DOS 使用字母来表示附属于系统的每个驱动器,LASTDRIVE=Z 表示预留从 AZ 的所有驱动器字母)。 LASTDRIVE 会影响系统可以识别的 逻辑驱动器 的数量。你可能没有任何的逻辑驱动器;FreeDOS 安装器不会默认设置这些逻辑驱动器。在任何情况下,在任何 FreeDOS 系统上设置 LASTDRIVE=Z 都是没有害处的。

BUFFERS 行设置文件缓冲区预留存储器。缓冲区 有助于加速某些需要存储空间的进程,例如复制文件。如果你为 BUFFERS 设置一个较大的值,那么 FreeDOS 将预留更多的存储器。同理反之。大多数的用户将会设置其为 BUFFERS=20BUFFERS=40 ,取决于他们在系统上读写文件的频率。

FILES 设置决定 DOS 允许你一次打开多少文件。如果你运行的一个应用程序需要一次打开很多文件,例如打开一个谱系数据库,你可能需要为 FILES 设置一个较大的值。对于大多数的用户来说,FILES=40 是一个合理的值。

DEVICE 是一个特殊的指令,用于加载 设备驱动器 。DOS 需要针对某些硬件或配置文件的设备驱动器。这行 DEVICE=C:\FDOS\BIN\HIMEMX.EXE 来加载 HimemX 设备驱动,这样,DOS 可以利用超出前 640 KB 的扩展存储器。

最后的指令行告诉 FreeDOS 的内核在哪里找到命令行 shell 。默认情况下,内核将从 COMMAND.COM 开始查找 shell ,但是你可以使用 SHELL 指令来更改它。在这个示例中, SHELL=C:\FDOS\BIN\COMMAND.COM 说明 shell 是 COMMAND.COM 程序,位于 C 驱动器上的 \FDOS\BIN 目录之中。

SHELL 结尾处的其它文件表示选项为 COMMAND.COM 的 shell 。FreeDOS 的 COMMAND.COM 支持一些启动选项来修改它的行为,包括:

  • C:\FDOS\BINCOMMAND.COM 程序的完整的路径
  • /E:1024:环境(E)大小,以字节为单位。/E:1024 告诉 COMMAND.COM 来预留 1024 字节,或者说是 1 KB ,来存储它的环境变量。
  • /P=C:\FDAUTO.BAT/P 选项表示 shell 是一个永久性的(P)shell ,因此用户不能通过输入 EXIT 来退出 shell(附加文本 =C:\FDAUTO.BAT 告诉 COMMAND.COM 在启动时执行 C:\FDAUTO.BAT 文件,而不再执行默认的 AUTOEXEC.BAT 文件)

通过这个简单的配置文件,你应该能够理解 FreeDOS 1.3 RC4 安装的 FDCONFIG.SYS 文件中的一些东西。

启动菜单

FreeDOS 支持一种有序的功能:在一个系统上使用多个配置文件,使用一个“启动菜单”来选择你想要的配置。FDCONFIG.SYS 文件包含一些定义菜单的行:

!MENUCOLOR=7,0

MENUDEFAULT=1,5
MENU 1 - Load FreeDOS with JEMMEX, no EMS (most UMBs), max RAM free
MENU 2 - Load FreeDOS with JEMM386 (Expanded Memory)
MENU 3 - Load FreeDOS low with some drivers (Safe Mode)
MENU 4 - Load FreeDOS without drivers (Emergency Mode)

MENUCOLOR 指令定义启动菜单的文本颜色和背景颜色。这些值通常在 0 到 7 的范围之内, 并代表这些颜色:

  • 0 黑色
  • 1 蓝色
  • 2 绿色
  • 3 品蓝
  • 4 红色
  • 5 品红
  • 6 棕色
  • 7 白色

因此,MENUCOLOR=7,0 的定义意味着显示一个黑色背景(0)白色文本(7)的菜单。如果你想使用一个蓝色背景白色文本,你可以将其定义为 MENUCOLOR=7,1

在行头部的叹号(!)意味着:不管你选择哪个菜单,这个指令都将会执行。

MENUDEFAULT=1,5 行告诉内核等待用户多长时间来选择启动菜单项,或者如果用户没有选择的话,使用那个默认菜单项。MENUDEFAULT=1,5 标示着系统将等待 5 秒钟;如果用户不在这段时间内尝试选择一个菜单的话,内核将选择启动菜单 “1” 。

 title=

在其后的 MENU 行至不同启动菜单配置的标签。它们是按顺序排列的,因此,菜单项目 “1” 是第一个,接下来的 “2” 是第二个,以此类推。

 title=

FDCONFIG.SYS 中的接下来的一行中,你将在一个问号(?)前看到一些数字。这标示“针对这几个数字的启动菜单项,使用这行命令”。例如,如果用户选择启动菜单项 “2”、“3” 或 “4” 的话,那么带有 234? 的这行命令才将加载 HimemX 设备驱动器。

234?DEVICE=C:\FDOS\BIN\HIMEMX.EXE

这里有很多方法来使用 FDCONFIG.SYS 以配置你的 FreeDOS 系统。我们在这里只介绍基本的东西,最重用的方法是定义你的 FreeDOS 内核设置。更多的信息,探索 FreeDOS 帮助系统(在命令行中输入 HELP)来学习如何使用 FreeDOS 的 FDCONFIG.SYS 选项:

  • SWITCHES:启动时处理过程行为
  • REM;:注释(在 FDCONFIG.SYS 中将被忽略)
  • MENUCOLOR:启动菜单文本颜色和背景颜色
  • MENUDEFAULT:启动菜单默认值
  • MENU:启动菜单选项
  • ECHOEECHO:显示信息
  • BREAK:设置打开或关闭扩展的 Ctrl+C 检查
  • BUFFERSBUFFERSHIGH:分配多少磁盘缓冲区
  • COUNTRY:设置国际化行为
  • DOS:告诉 FreeDOS 内核如何将其自身加载到存储器之中
  • DOSDATA:告诉 FreeDOS 加载内核到上位存储器之中
  • FCBS:设置文件控制块(FCB)的数量
  • KEYBUF:在存储器中重新指定键盘缓冲区
  • FILESFILESHIGH:一次可以打开多少个文件
  • LASTDRIVELASTDRIVEHIGH:设置可以使用的最后一个驱动器字母
  • NUMLOCK:设置打开或关闭键盘数字锁
  • SHELLSHELLHIGHCOMMAND:设置命令行 shell
  • STACKSSTACKSHIGH:添加堆栈以处理硬件中断
  • SWITCHAR:重新定义命令行选项开关字符
  • SCREEN:设置在屏幕上的行数
  • VERSION:设置向程序报告的 DOS 版本
  • IDLEHALT:激活节能功能,在某些系统上有用
  • DEVICEDEVICEHIGH:加载一个驱动程序到存储器之中
  • INSTALLINSTALLHIGH:加载一个 “存储器驻留”(TSR)程序
  • SET:设置一个 DOS 环境变量

以纯文本方式配置 FreeDOS

像 Linux 和 BSD 一样,FreeDOS 配置以纯文本的方式进行。不需要特殊指定的编辑工具,因此,深入研究,看看哪些选项最适合你。它很简单,但是功能很强大!


via: https://opensource.com/article/21/6/freedos-fdconfigsys

作者:Jim Hall 选题:lujun9972 译者:robsean 校对:wxy

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