分类 技术 下的文章

使用 lpr 命令在终端中打印文件。

 title=

在 Linux 上打印很容易,但有时感觉要做很多工作,比如启动应用程序、打开文件、在菜单中找到打印选项,单击确认按钮等等。当你是一个终端用户时,通常希望使用简单的触发器执行复杂的操作。打印很复杂,但没有什么比 lpr 命令更简单了。

使用 lpr 命令打印

使用 lpr 命令在终端打印文件:

$ lpr myfile.odt

如果失败的话,你需要设置默认打印机或手动指定打印机。

设置默认打印机

根据我在 1984 年印刷的 Berkeley 4.2 手册的旧版本中找到的资料,lpr 命令会分页并将文件发送到打印机池,后者将数据传输到称为 行式打印机 line printer 的东西。

显示 LPR 命令信息的页面

现在,最初的 lpr 命令已经无法满足,因为现代计算机可以访问多台打印机,而且是那些比点阵行式打印机复杂得多的打印机。现在有一个称为 通用 Unix 打印系统 Common Unix Printing System (CUPS)子系统,可以跟踪你的计算机可以访问的所有打印机,计算机应该使用哪个驱动程序与每台打印机通信,默认使用哪台打印机等等。 CUPS 捆绑提供的 lpr.cupslpr-cups 命令通常以符号链接到 lpr,允许你首先借助 CUPS 配置从终端打印。

使用 lpr 打印文件,你应该首先设置默认打印机。你可以在系统的打印机设置中设置:

设置默认打印机对话框

或者,你也可以使用 lpadmin 命令设置:

$ sudo lpadmin -d HP_LaserJet_P2015_Series
$ lpstat -v
device for HP_LaserJet_P2015_Series: ipp://10.0.1.222:631/printers/HP_LaserJet_P2015_Series

使用环境变量设置

你不能在没有管理员账户的系统上设置默认打印机,因为更改打印机默认设置是一项特权任务。在 lpr 借助 CUPS 找到目标打印机前,它会在系统中查询 PRINTER 环境变量

在本例中,HP_LaserJet_P2015_Series 是打印机的名称。将 PRINTER 设置为该值:

$ PRINTER=HP_LaserJet_P2015_Series
$ export PRINTER

一旦设置了 PRINTER 变量,你就可以打印了:

$ lpr myfile.pdf

获取连接的打印机列表

你可以使用 lpstat 命令查看所有连接到系统接受打印任务的打印机:

$ lpstat -a
HP_LaserJet_P2015_Series accepting requests since Sun 1 Aug 2021 10:11:02 PM NZST
r1060 accepting requests since Wed 18 Aug 2021 04:43:57 PM NZST

打印到任意一台打印机

将打印机添加到系统后,并且现在你知道如何识别它们了,你可以打印到其中任何一台,无论你是否设置了默认打印机:

$ lpr -P HP_LaserJet_P2015_Series myfile.txt

如何定义打印机

CUPS 有一个友好的前端页面,可通过 Web 浏览器如 Firefox 访问。虽然它使用 Web 浏览器作为用户界面,但它实际上是在本机(一个称为 localhost 的位置)的 631 端口上提供服务。CUPS 管理连接到计算机的打印机,并将其配置存储在 /etc/cups/priters.conf 中。

printers.conf 文件包含详细描述计算机可以访问的打印设备的定义。不要直接编辑它,但如果你想这样做,你必须先停止 cupsd 守护进程。

一个典型的文件定义如下所示:

<Printer r1060>
  Info Ricoh 1060
  Location Downstairs
  MakeModel Ricoh Aficio 1060 - CUPS+Gutenprint v5.2.6
  DeviceURI lpd://192.168.4.8
  State Idle
  StateTime 1316011347
  Type 12308
  Filter application/vnd.cups-raw 0 -
  Filter application/vnd.cups-raster 100 rastertogutenprint.5.2
  Accepting Yes
  Shared No
  JobSheets none none
  QuotaPeriod 0
  PageLimit 0
  KLimit 0
  OpPolicy default
  ErrorPolicy stop-printer
</Printer>

在本例中,打印机的名称是 r1060,即 “Ricoh Aficio 1060”。

MakeModel 属性是从 lpinfo 命令中提取的,该命令列出了系统上所有可用的打印机驱动程序。假设你知道要打印到 Ricoh Aficio 1060,那么你会发出以下命令:

$ lpinfo -m | grep 1060
gutenprint.5.2://brother-hl-1060/expert Brother HL-1060 - CUPS+Gutenprint v5.2.11
gutenprint.5.2://ricoh-afc_1060/expert Ricoh Aficio 1060 - CUPS+Gutenprint v5.2.11

它会列出已安装的相关驱动程序。

MakeModel 属性是结果的后半部分。在本例中为 Ricoh Aficio 1060 - CUPS+Gutenprint v5.2.11

DeviceURI 属性标识打印机在网络上的位置(或物理位置,例如 USB 端口)。在本例中,它是 lpd://192.168.4.8,因为我使用 lpd 协议将数据发送到一台网络打印机。在我的另一个系统上,我有一个通过 USB 连接的 HP LaserJect 打印机,因此 DeviceURIhp:/usb/HP_LaserJet_P2015_Series?serial=00CNCJM26429

在终端中打印

将作业发送到打印机是一个简单的过程,只要你了解连接到系统的设备以及如何识别它们。在终端打印非常快速、高效,并且易于编写脚本或作为批处理作业完成。试试看!


via: https://opensource.com/article/21/9/print-files-linux

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

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

为网页上的缩略图和横幅图片生成经过调整和优化的图片。

 title=

以前我在处理网页工作时,我对图像敬而远之。处理和优化图像既不精确又费时。

后来我发现了一些命令,改变了我的想法。为了创建网页,我使用 Jekyll,所以我在说明中包括了它。然而,这些命令也可以用于其他静态网站生成器。

Linux 上的图像命令

对我来说有用的命令是 optipngjpegoptim,当然还有古老的 imagemagick。它们一起使处理图像变得容易管理,甚至可以自动化。

下面是我如何使用这些命令实现我的解决方案的概述。我把文章图片放在我的 static/images 文件夹中。在那里,我生成了所有 PNG 和 JPG 图片的两个副本:

  1. 一个裁剪过的缩略图版本,尺寸为 422×316
  2. 一个更大的横幅版本,尺寸为 1024×768

然后,我把每个副本(缩略图和横幅)放入自己的文件夹,并利用 Jekyll 的自定义变量来确定文件夹路径。下面我将更详细地介绍这些步骤中的每一步。

安装

要跟上我的解决方案,请确保你已经安装了所有的命令。在 Linux 上,你可以使用软件包管理器安装 optipngjpegoptimimagemagick

在 Fedora、CentOS、Mageia 和类似系统上:

$ sudo dnf install optipng jpegoptim imagemagick

在 Debian、Elementary、Mint 和类似系统上:

$ sudo apt install optipng jpegoptim imagemagick

在 macOS 上,使用 MacPortsHomebrew

brew install optipng jpegoptim imagemagick

在 Windows 上,使用 Chocolatey

为缩略图和横幅创建文件夹

安装完这些命令后,我在 static/images 下创建了新的文件夹。生成的缩略图放在 img-thumbs,横幅放在 img-normal

$ cd static/images
$ mkdir -p img-thumbs img-normal

创建了文件夹后,我把所有的 GIF、SVG、JPG 和 PNG 文件复制到这两个文件夹。我把 GIF 和 SVG 原封不动地用于缩略图和横幅图片。

$ cp content/*.gif img-thumbs/; cp content/*.gif img-normal/
$ cp content/*.svg img-thumbs/; cp content/*.svg img-normal/
$ cp content/*.jpg img-thumbs/; cp content/*.jpg img-normal/
$ cp content/*.png img-thumbs/; cp content/*.png img-normal/

处理缩略图

为了调整和优化缩略图的大小,我使用了三个命令。

我使用 ImageMagickmogrify 命令来调整 JPG 和 PNG 的大小。因为我希望缩略图是 422×316,所以命令看起来像这样:

$ cd img-thumbs
$ mogrify -resize 422x316 *.png
$ mogrify -format jpg -resize 422x316 *.jpg

现在我用 optipng 优化 PNG,用 jpegoptim 优化 JPG:

$ for i in *.png; do optipng -o5 -quiet "$i"; done
$ jpegoptim -sq *.jpg

在上述命令中:

  • 对于 optipng-o5 开关设置了优化的级别,0 是最低的。
  • 对于jpegoptim-s 剥离所有图像元数据,-q 设置安静模式。

处理横幅

我处理横幅图片的方法与处理缩略图的方法基本相同,除了尺寸外,横幅图片的尺寸为 1024×768。

$ cd ..
$ cd img-normal
$ mogrify -resize 1024x768 *.png
$ mogrify -format jpg -resize 1024x768 *.jpg
$ for i in *.png; do optipng -o5 -quiet "$i"; done
$ jpegoptim -sq *.jpg

配置 Jekyll 中的路径

img-thumbs 目录现在包含我的缩略图,img-normal 包含横幅。为了更轻松一些,我在Jekyll的 _config.yml 中把它们都设置为自定义变量。

content-images-path: /static/images/img-normal/
content-thumbs-images-path: /static/images/img-thumbs/

使用这些变量很简单。当我想显示缩略图时,我把 content-thumbs-images-path 加到图片上。当我想显示完整的横幅时,我在前面添加 content-images-path

{% if page.banner_img %}
 <img src="{{ page.banner_img | prepend: site.content-images-path | \
prepend: site.baseurl | prepend: site.url }}" alt="Banner image for \
{{ page.title }}" />
{% endif %}

总结

我可以对我的优化命令做几个改进。

使用 rsync 只复制改变过的文件到 img-thumbsimg-normal 是一个明显的改进。这样一来,我就不会一次又一次地重新处理文件。将这些命令添加到 Git 提交前钩子 或 CI 流水线中是另一个有用的步骤。

调整和优化图像以减少其大小,对用户和整个网页来说都是一种胜利。也许我减少图片尺寸的下一步将是 webp

更少的字节通过电线传输意味着更低的碳足迹,但这是另一篇文章。目前,用户体验的胜利已经足够好了。

本文原载于作者的博客,已获授权转载。


via: https://opensource.com/article/21/12/optimize-web-images-linux

作者:Ayush Sharma 选题:lujun9972 译者:geekpi 校对:wxy

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

Apache ShardingSphere 是一个开源的分布式数据库,它还有一个用户和开发人员需要的生态系统,为之提供了定制和云原生的体验。

 title=

Apache ShardingSphere 是一个开源的分布式数据库,它还有一个用户和开发人员需要的生态系统,为之提供了定制和云原生的体验。在加入 Apache 基金会的三年里,ShardingSphere 核心团队与社区一起努力工作,创建了一个开源的、强大的、分布式的数据库和一个支持性生态系统。

ShardingSphere 并不完全符合业界通常的简单分布式数据库中间件解决方案的模式。ShardingSphere 重新创建了分布式可插拔系统,使实际的用户实施方案得以蓬勃发展,并为社区和数据库行业贡献有价值的解决方案。

ShardingSphere 的目标是 Database Plus 概念。

Database Plus

Database Plus 的出发点是在零散的数据库基本服务之上建立一个标准层和生态系统层。统一的、标准化的数据库使用规范为上层应用提供了保障,尽可能的减少了企业因底层数据库碎片化而面临的挑战。为了连接数据库和应用,它使用了流量和数据的渲染和解析。它为用户提供了增强的核心功能,如分布式数据库、数据安全、数据库网关和压力测试。

ShardingSphere 为 Database Plus 使用了可插拔的内核架构。这意味着模块化,这为用户提供了灵活性。它有几个不同的层:

  • 基础层: 提供各种访问终端和访问形式,满足用户在不同场景下的需求。
  • 插件层: 通过实现可扩展性提供基础设施支持。
  • 功能层: 提供各种满足用户需求的功能插件,使用户在选择和组合插件时具有高度的灵活性。
  • 产品层: 这是终端用户看到的层。这为他们提供了面向行业和特定场景的产品。换句话说,它为用户提供了适合他们所做的任何工作的工具。

 title=

(Trista Pan, CC BY-SA 4.0

用 DistSQL 进行标准化的集群管理

Apache ShardingSphere 采用独特的 SQL 方言 DistSQL(分布式 SQL)来连接 ShardingSphere 生态系统的所有元素。作为 ShardingSphere 分布式数据库生态系统的标准交互语言,DistSQL 允许用户使用一个 SQL 命令来创建、修改或删除分布式数据库表或对其进行加密或解密。DistSQL 还支持分布式调度管理。

 title=

(Trista Pan, CC BY-SA 4.0

多访问终端

ShardingSphere JDBC 和 ShardingSphere Proxy 经过两年的打磨和测试,目前已经可以投入生产。许多社区用户提供了相关的生产社区案例。

多亏共享核心架构,以及不同的 ShardingSphere 适配器,如果用户的生产环境需要,可以选择混合适配器部署(如下图所示)。

 title=

(Trista Pan, CC BY-SA 4.0

分布式治理

在 ShardingSphere 生态系统中,计算和存储是分开的,因此具备对数据库进行分布式治理的能力,所以你可以维护许多存储节点、计算节点,实施断路器,并确保高可用性。

 title=

(Trista Pan, CC BY-SA 4.0

使用 Grafana 监控

ShardingSphere 也有状态指标来监控你的基础设施。代理动态加载机制为你提供了指标和跟踪指标,方便您将 APM 系统与 Grafana 仪表板集成。

 title=

(Trista Pan, CC BY-SA 4.0

分布式社区的分布式数据库

社区正在继续优化 ShardingSphere,并整合新的想法和行业场景。社区构建了它,而开发的主要动力之一是用户反馈。这是开源的一个特点,但也是这个团队的实践方法。ShardingSphere 社区的核心团队成员很乐意指导任何对开源感兴趣的人,并为有兴趣帮助开发的学生提供实践问题。团队也希望有新的朋友或贡献者加入社区,促进思想的开放交流,创造一个真正的全球开发者社区。


via: https://opensource.com/article/21/12/apache-shardingsphere

作者:Trista Pan 选题:lujun9972 译者:geekpi 校对:wxy

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

谈到 Linux 和 UNIX 时,你一定听说过 “TTY” 这个术语,但是,这玩意是什么?

作为一个桌面用户,它对你有用吗?你需要它吗?你能用它做什么?

在本文中,让我向你介绍这些,帮助你熟悉 Linux 中的 TTY。

注意:这个问题没有明确的答案,但它与过去的输入/输出设备的交互方式有关。因此,你必须了解一些历史,才能清楚地了解情况。

“TTY” 背后的历史

一切始于 19 世纪 30 年代的 电传打印机 Teleprinter

电传打印机可以让你通过电线发送或接受消息,它取代了摩尔斯电码通信,那是一种需要两个操作员才能有效地相互通信的方式。

一台电传打印机只需要一个操作员就可以轻松地传递消息。虽然它没有现代布局的键盘,但它的系统后来由 Donald Murray 在 1901 年进行了改良,包括了一个类似打字机的键盘。

Murray 电码减少了操作员发送消息的工作量。这才使得电传打印机在 1908 年有了发展成为商业 电传打字机 Teletypewriter 的可能。TTY 即是电传打字机的缩写。

二战期间在伦敦实际使用的电传打字机 | 图片来源于维基百科

电传打字机和普通 打字机 typewriter 的区别在于,电传打字机连接到通信设备,直接发送输入的消息。

电传打字机使人类在没有计算机的情况下通过电线进行更快的通信成为可能

从这时起,“TTY” 一词就存在了。

(相对)现代的概念

现在,你一定想知道,它是如何进入现代计算机和 Linux 的?

最初是当电传打字机进入了市场,几年后半导体晶体管发展起来,然后演变成微处理器,为计算机的出现做好了准备。

最初的计算机没有键盘的概念, 打孔卡 Punch card 就是输入的方法。

一种插入计算机而不是通过键盘(TTY)输入的打孔卡计算机程序 | 图片来源于维基百科

随着计算机的发展,批量输入的打孔卡最终被电传打字机取代,成为一种方便的输入/输出设备。

1956 年的 LGP-30 计算机,附带 TTY

随着技术的进步,电传打字机被电子技术“虚拟化”了。因此,你不需要一个物理的、机械的 TTY,而是一个虚拟的电子 TTY。

早期的计算机甚至没有视频屏幕。字符被打印在纸上而不是显示在屏幕上。因此,你会看到“ 打印 print ”这个术语而不是“ 显示 display ”。随着技术的进步,视频显示后来被添加到终端中。

换句话说,你可能听说过把它们称为“视频终端”。或者,你可以称它们为“物理”终端。

后来,它们演变成具有更强的能力和功能的软件仿真的终端。

这就是所谓的“ 终端仿真器 terminal emulator ”,如 GNOME 终端或 Konsole,或者其他 你在 Linux 上找到的各种终端仿真器

所以,Linux 中的 TTY 到底是什么?

在 Linux 或 UNIX 中,TTY 变为了一个抽象设备。有时它指的是一个物理输入设备,例如串口,有时它指的是一个允许用户和系统交互的虚拟 TTY(参考此处)。

TTY 是 Linux 或 UNIX 的一个子系统,它通过 TTY 驱动程序在内核级别实现进程管理、行编辑和会话管理。

在编程的场景下,你还需要深入研究。但是考虑到本文的范围,这可能是一个容易理解的定义。

如果你好奇的话,你可以查看一个有点旧的资源(TTY 揭秘),它尽可能的澄清了 Linux 和 UNIX 系统中的 TTY 的各种技术细节。

事实上,每当你在系统中启动一个终端仿真器或使用任何类型的 shell 时,它都会与虚拟 TTY(也被称为 伪 TTY pseudo-TTY ,即 PTY)进行交互。

你可以在终端仿真器中输入 tty 来找到相关联的 PTY。

如何在 Linux 中访问 TTY?

在 Linux 中很容易访问 TTY。事实上,当我不知道它是什么时,我不小心打开了它,于是对要做什么、如何摆脱它感到恐慌。

在大多数 发行版 中,你可以使用以下键盘快捷键来得到 TTY 屏幕:

  • CTRL + ALT + F1 – 锁屏
  • CTRL + ALT + F2 – 桌面环境
  • CTRL + ALT + F3 – TTY3
  • CTRL + ALT + F4 – TTY4
  • CTRL + ALT + F5 – TTY5
  • CTRL + ALT + F6 – TTY6

你最多可以访问六个 TTY。但是,前两个快捷方式指向发行版的锁定屏幕和桌面环境。

而其他快捷方式将会让你进入一个命令行界面。

什么时候应该使用 TTY?

TTY 不仅是一个技术宝藏,即使像我这样不是开发人员的用户,它也很有用。

在图形桌面环境冻结的情况下,它应该可以派上用场。在某些情况下,从 TTY 重建桌面环境能帮助解决程序问题。

或者,你也可以选择在 TTY 中执行任务,例如更新 Linux 系统等。在这些情况下,你不希望显示问题中断你的进程。

最坏的情况是,如果图形用户界面失去响应,你可以进入 TTY 并重新启动计算机。

有些用户还喜欢在 TTY 的帮助下传输大文件(我不是其中之一)。

Linux 中的 TTY 命令

当你在终端模拟器中输入 tty 时,它将打印连接到标准输入的终端文件名,就像手册页描述的一样。

换句话说,要知道你连接的 TTY 编号,只需输入 tty。并且,如果有多个用户远程连接到 Linux 机器,你可以使用 who 命令来检查其他用户连接到的是哪个 TTY。


via: https://itsfoss.com/what-is-tty-in-linux/

作者:Ankush Das 选题:lujun9972 译者:MjSeven 校对:wxy

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

如果你已经熟悉了 Linux 命令行,尝试这些命令有助于轻松地进入 FreeDOS 。

 title=

如果你已经尝试过 FreeDOS ,你可能已经被命令行所吓倒。DOS 命令可能稍微不同于你所使用的 Linux 命令行,因此,使用它的命令行上需要学习一些新的命令。

但是对于 Linux 用户来说,它不是一种 “全新的” 体验。在 FreeDOS 中,除了 DOS 命令之外,我们还包含一些已经熟悉的标准的 Unix 命令。因此,如果你已经熟悉了 Linux 命令行,尝试这些命令有助于轻松地进入 FreeDOS :

在四周走走

在 FreeDOS 文件系统中使用 cd 命令来 更改目录 。在 FreeDOS 上的用法在 Linux 上的用法基本相同。要更改到一个名称为 apps 的子目录,输入 cd apps 。要回到先前的目录,输入 cd ..

在 FreeDOS 上导航浏览目录和路径是仅有的不同点,目录分隔符是 \(“反斜杠”)而不是你在 Linux 上使用的 / (“正斜杠”)。例如,让我们假设你在 \devel 目录之中,你想移动到 \fdos 目录。这两个目录相对于 目录而言是处于相同的 “层次” 之中的。因此,你可以输入 cd ..\fdos 来 “向后返回” 一个目录层次(使用 ..) ,然后再 “转到” fdos 目录。

要更改到一个新的目录,你可以使用先前提到的反斜杠来替换需要给出的完整的路径。如果你已经深入了另外一个路径之中,并且只是像立即切换到新的位置,那么这会是非常方便的。例如,要更改到 \temp 目录,你可以输入 cd \temp

C:\>cd apps
C:\APPS>cd ..
C:\>cd devel
C:\DEVEL>cd ..\fdos
C:\FDOS>cd \temp
C:\TEMP>_

在 FreeDOS 中,像大多数的 DOS 系统一样,你可以在DOS 提示符中看到你的当前路径。在 Linux 上,你的提示符可能类似于 $ 。在 FreeDOS 上,提示符会列出当前的驱动器及其当前的路径,接下来使用 > 作为提示符(看做 Linux 上的 $)。

列出和显示文件

在 Linux 上,列出当前目录中文件的标准命令是 ls 命令。在 FreeDOS ,它是一个不同的命令: dir 。但是你可以创建一个 别名 来获取一种与 ls 类似的行为。

要为另外一个命令创建一个别名,使用内置的 alias 命令。例如,使用此命令来为 ls 定义一个别名,这个别名将显示一个目录列表,与在 Linux 上使用 ls 类似:

C:\>alias ls=dir /one /w /b /l
C:\>ls
[apps]    command.com   [devel]  fdauto.bat   fdconfig.sys
[fdos]    kernel.sys    [src]    [temp]
C:\>

在 FreeDOS 上的命令选项格式与 Linux 稍微不同。在 Linux 上, 你使用一个连字符号(-)表示选项。但是在 FreeDOS 上,你使用一个正斜杠来表示选项。上面的 alias 命令使用斜杆杠字符 — 它们是 dir 的选项。/one 可选择项告诉 dir 以某种方式排序(o):先按名称(n)再按扩展名(e)来排序一些文件和目录。/w 使用一个 “宽” 目录列表,/b 使用一种不带有 dir 通常提供的其它信息的 “裸” 显示,/l 指示 dir 以小写字母的形式显示文件和目录。

注意,针对于 FreeDOS 的 dir 命令的命令行选项与针对于 Linux 的 ls 命令的命令行选项截然不同,因此,你不能像你在 Linux 上一样精确地使用这个 ls 别名。例如,在 FreeDOS 上使用此别名输入 ls -l 将产生一条 “文件未找到” 的错误,因为底层的 FreeDOS 的 dir 命令不能找到一个名称为 -l 的文件。不过,对于基本的 “查看在我的系统上有哪些文件” 来说,这个 ls 别名已经足够帮助 Linux 用户开始使用 FreeDOS 了。

类似地,你可以为 FreeDOS 的 type 命令创建一个别名,来像 Linux 的 cat 命令一样工作。两个重新都会显示一个文本文件的内容。虽然 type 不支持你可能在 Linux 下使用的命令行选项,但是显示一单个文件的基本用法是相同的。

C:\FDOS>alias cat=type
C:\FDOS>cat version.fdi
PLATFORM=FreeDOS
VERSION=1.3-RC4
RELEASE=2021-04-30
C:\FDOS>

其它的类 Unix 命令

FreeDOS 包含一些精选的其它常见的类 Unix 命令,因此 Linux 用户将不会感觉到拘束。为在 FreeDOS 上使用这些 Linux 命令,你可能需要从 “FreeDOS Installer” - “My Package List Editor Software (FDIMPLES)” 软件包管理器来安装 “Unix Like Tools” 软件包。

 title=

(Jim Hall, CC-BY SA 4.0)

并不是所有的类 Unix 实用程序都能像在 Linux 上对应的实用程序一样 一致地 工作。这就是我们称其为 类 Unix 的原因。如果你将要使用一些深层次的命令行选项,你可能需要检查其兼容性,不过,对于典型的用法是没有问题的。开始在 FreeDOS 上使用这些类 Unix 命令:

cal 命令是标准的 Unix 的日历程序。例如,为显示当前月份的日历,只需要输入 cal 。为查看一个具体指定的月份,将月份和年份作为参数予以给定:

C:\>cal 6 1994

      June 1994    
Su Mo Tu We Th Fr Sa
          1  2  3  4
 5  6  7  8  9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30      

使用 du 命令来查看你的磁盘使用情况。这是 Linux 的 du 命令的简单版本,并且不支持路径以外的任何命令行选项。

C:\>du -s apps
usage: du (start path)
C:\>du apps
    158784 C:\APPS\FED
         0 C:\APPS
Total from C:\APPS is 158784
C:\>

head 命令显示一个文件的前几行。例如,这是一种确定一个文件是否包含正确数据的简单方法。

C:>head fdauto.bat
@ECHO OFF
set DOSDIR=C"\FDOS
set LANG=EN
set TZ=UTC
set PATH=%dosdir%\BIN
if exist %dosdir%\LINKS\NUL set PATH=%path%;%dosdir%\LINKS
set NLSPATH=%dosdir%\NLS
set HELPPATH=%dosdir%\HELP
set TEMP=%dosdir%\TEMP
set TMP=%TEMP%
C:\>

要查看一个完整的文件,使用 more 命令,在 FreeDOS 上的默认文件查看器。这将一次显示一屏的文件,然后在显示下一屏的信息前,打印一个按下一次按键的提示。more 命令是一个非常简单的文件查看器;在 Linux 上你可能已经使用过一个功能更全面的查看器,可以尝试一下 less 命令。less 命令提供 “向后” 滚动一个文件的能力,以防你错过一些东西。你还可以搜索具体指定的文本。

C:\>less fdauto.bat
@ECHO OFF
set DOSDIR=C"\FDOS
set LANG=EN
set TZ=UTC
set PATH=%dosdir%\BIN
if exist %dosdir%\LINKS\NUL set PATH=%path%;%dosdir%\LINKS
set NLSPATH=%dosdir%\NLS
set HELPPATH=%dosdir%\HELP
set TEMP=%dosdir%\TEMP
set TMP=%TEMP%
[...]

如果在你的程序路径变量(PATH)中有很多的目录,并且不确定某个程序是从哪里运行的,你可以使用 which 命令。这个命令将扫描程序路径变量,并且将打印出你正在查找的程序的完整的位置。

C:\>which less
less    C:\>FDOS\BIN\LESS.EXE
C:\>_

FreeDOS 1.3 RC4 包含其它的类 Unix 命令,你可能会在其它更特殊的情况下使用。这些命令包括:

  • bc:任意精度数字处理语言
  • sed:流编辑器
  • grepxgrep:使用正则表达式搜索一个文本文件
  • md5sum:生成一个文件的一个 MD5 签名
  • nro:简单排版,使用 nroff 宏
  • sleep:暂停系统几秒钟
  • tee:保存一个命令行流的副本
  • touch:修改一个文件的时间戳
  • trch:转换单个字符(像 Linux 的 tr 一样)
  • uptime:报告你 FreeDOS 系统已经运行多长的时间

在你控制下的 FreeDOS

FreeDOS ,像 Linux 和 BSD 一样,是开源的。不管你是想通过学习一种新的命令行交互方式来挑战你自己,还是想再去熟悉令人舒适的类 Unix 工具,FreeDOS 都是一款有趣的值得尝鲜的操作系统。尝试一下!


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

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

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

我是如何通过链接每个页面回到其原始源代码来保持我的网站开放的。

 title=

我是一个开源的超级粉丝。

我支持这项事业的一个小方法是从一开始就保持我的个人博客网站开放。我这样做的部分原因是让人们看到每个页面背后的变化历史。还因为当我开始使用 Jekyll 时,我没有找到很多开源的 Jekyll 博客可以学习。我希望保持我的网站开放并公开我的尝试和错误,可以为其他人节省很多时间。

Jekyll 的 page.path 变量

我实现这一目标的方法之一是将我发布的每一个条目链接到其原始的 MarkdownJekyll 的变量 中正好有一个需要的工具:page.path。这个变量包含每个页面的原始文件系统路径。官方的描述甚至强调了它的作用是链接回源!

在一篇文章的 Markdown 文件中打印 {{page.path }},可以得到类似这样的结果:

_posts/2021-10-10-example.md

假设该文章的源代码存在于这个路径:

https://example.com/ayushsharma-in/-/blob/master/_posts/2021-10-10-example.md

如果你在任何文章的 page.path 前加上 https://example.com/ayushsharma-in/-/blob/master/,它就会生成一个返回其源码的链接。

在 Jekyll 中,生成这个完整的链接看起来像这样:

<a href="{{ page.path | prepend: site.content.blog_source_prefix }}" target="_blank">View source</a>

就是这么简单。

Jekyll 和开放 Web

现代 Web 是一种错综复杂的多层次技术,但这并不意味着它必须让人摸不清。有了 Jekyll 的变量,你可以确保你的用户可以,了解更多关于你是如何建立你的网站的,如果他们愿意的话。

你可以在我的个人博客上看到真实的例子:滚动到底部的查看源码链接。

本文改编自 ayush sharma 的笔记,并经许可转载。


via: https://opensource.com/article/21/12/reveal-source-code-jinja2-git

作者:Ayush Sharma 选题:lujun9972 译者:geekpi 校对:wxy

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