2021年9月

萨尔瓦多正式将比特币作为法币

萨尔瓦多将于当地时间 9 月 7 日将比特币正式作为法币。该国总统说,此举将为生活在国外的萨尔瓦多人节省数百万美元的汇款佣金。但民意调查显示,很多萨尔瓦多人对使用比特币持怀疑态度,他们担心加密货币的波动性。周一早些时候,萨尔瓦多总统表示已经购买了第一批 200 个比特币,当天晚些时候说现在持有 400 个比特币。这些比特币当前大约价值 2000 万美元。

这是第一个将比特币作为法定货币的国家,比特币正在经历其 12 年历史上最大的考验。

Linus Torvalds 指责 GitHub 的合并功能

前天我们报道过,Paragon 公司向 Linux 内核提交了 NTFS3 驱动。但 Linus Torvalds 对该申请并不满意。Linus 说,“对于 GitHub 账户,我真的希望拉取请求是一个签名标签……这应该是一个我可以通过信任链直接追踪到你的 PGP 签名。”虽然为了加快合入,Linus 表示这次就不追究了。但是他对 GitHub 在合并方面的做法非常不满意,他表示,“这是另一个我非常不希望看到的事情 —— GitHub 创造了绝对无用的垃圾合并,你绝不应该使用 GitHub 的界面来合并任何东西。”他认为 GitHub 的合并提交没有适当的提交信息,并且还使用了一个假的 “github.com” 提交者。

封装了底层细节的 GitHub 更关注的是易用性,不知道 GitHub 或其它 Git 托管商会不会因此而改变自己的合并功能。

研究称比特币挖矿耗电仅相当于美国住宅制冷年用电量的三分之一

一项最新研究显示,比特币挖矿每年消耗约 91 太瓦时(万亿瓦时)的电力,相当于全球电力消费总量的约 0.5%,超过了 550 万人口的芬兰的用电量,是 Google 全球业务用电量的七倍多。但这也只相当于美国华盛顿州每年的用电量,或略超美国住宅制冷年用电量的三分之一。在过去 5 年间,比特币挖矿的耗电量增长了 10 倍。

无论支持还是反对,比特币也必将存在下去。至于耗费的电力值不值,就仁者见仁智者见智了。

无论新手老手,这 20 个 Linux 命令都能让你的操作更轻松。

 title=

在黝黑的终端窗口中输入命令,这样的方式对某些人群来说可能好像过时了,但对许多专业计算机人员来说,这几乎是计算机完成能够执行的所有任务的最有效、最简便和最清晰的方式。如今,一些项目将开源命令引入了 macOS 和 Windows 等非开放平台,因此终端命令不仅仅是针对 Linux 和 BSD 用户,更是与每个人都息息相关。你可能会惊讶地发现,在一台普通的 POSIX 计算机上安装了数千个命令,当然,其中很多命令并不是真的有用,至少不是直接或经常性被使用。而其中的一部分命令虽然不是有效终端必须使用的命令,但相比其他命令而言使用频率较高,值得大家学习一下。

以下是终端用户最可能会使用的前 20 个命令:

cd

在终端外,你可以单击图标从一个文件夹移动到另一个文件夹,但在终端中,你需要使用 cdcd 命令代表 变更目录 change directory ,是用户在 Linux 系统中移动的方式。这是 Linux 中从一个地方到另一个地方最快、最直接的路线。

例如,在桌面上,当你想从你的主目录(你保存所有文件夹的地方)移动到一个名为 presentations 的文件夹时,你首先要打开你的 Documents 文件夹,然后打开一个名叫 work 的文件夹,然后是 projects 文件夹,然后是 conference 文件夹,最后是 presentations 文件夹,里面存放的是 LibreOffice Impress 幻灯片。这个过程包含了很多次的双击操作。同时屏幕上还需要许多鼠标移动动作,这取决于新窗口出现的位置,以及大脑需要跟踪的许多路径点。许多人通过将 所有文件 都放在桌面上来避免这个看似微不足道的任务。

而终端用户只需键入以下内容即可避免此问题:

$ cd ~/Documents/work/projects/conference/presentations

一些有经验的终端用户甚至都懒得输入所有这些,而是使用 Tab 键自动完成单词填充。更甚者,有时你都不必依赖自动完成,而是改用通配符:

$ cd ~/Doc*/work/*/conf*/p*

pwd

用 Buckaroo Banzai 的话来说:“无论你走到哪里,你就在那里。”

当你想弄清楚确切位置时,就可以使用 pwd 命令。pwd 代表 打印工作目录 print working directory ,这正是它的作用。--physical(在某些情况时缩写为 -P)显示解析所有符号链接后的确切位置。

$ pwd
/home/tux/presentation

$ pwd --physical
/home/tux/Documents/work/projects/conference/presentations

sed

流编辑器 sed 更广为人知的是一个强大的批量 查找和替换 命令,但它同时也是一个正当合理的文本编辑器。你可以通过阅读我的 介绍性文章 来学习使用它,然后通过我的 高级教程和备忘录 成为老手。

grep

grep 命令使用很普遍,以至于经常被用作动词(例如 “我会对一些文件进行 grep”)和动名词(例如 “grep 一些输出”)。无论是查看日志文件还是解析其他命令的输出,它都是在 shell 中解析文本时的关键组件。这是忙碌的用户专注于特定信息的一种方式。考虑一下计算世界中的数据量,grep 命令的流行就见怪不怪了。你可以通过阅读我的 介绍性文章 了解 grep,然后下载 备忘录 学习。

file

当你需要知道文件包含什么类型的数据时,请使用 file 命令:

$ file example.foo
example.foo: RIFF (little-endian) data, Web/P image [...]

$ file example.bar
example.bar: ELF 64-bit LSB executable, x86-64 [...]

当然,file 命令并不神奇。它只不过是根据文件如何标识自身而进行输出的,并且文件可能是错误的、损坏的或伪装的。使用 hexdump 进行严格检查的方式确定性更强,但对于日常使用而言,file 命令非常方便。

awk

awk 不仅仅是一个命令,它还是一种字面意义上的 编程语言点此下载我们的免费 Awk 电子书 进行学习,你可能会写出远超你想象的脚本。

curl

curl 命令是用于终端的 非交互式 Web 浏览器。它是面向 Web 和 API 开发人员的 开发工具。它是一个复杂灵活的命令,但如果你想从你的终端顺利地与 Web 服务交互,该命令是很值得学习的。

下载我们免费的 curl 备忘录,你可以从中学会 curl 的许多选项。

ps

管理系统资源主要由内核负责,当你更喜欢或更需要手动管理时,可以使用 ps 命令。读者可以在我的 使用 procps-ng 监控 Linux 系统 文章中了解 ps

cat

cat 命令 连接 concatenate 的缩写,它曾因为能将若干小文件合并而显得非常有用,这些小文件可能是由于大小限制而(使用 split 命令)拆分的。如今,cat 主要是用来将文本文件的内容转储到终端中以供快速阅读,除非你为此专门去使用 headtailmoreless 等命令。

尽管它的原始用途几乎已被弃用,并且其他几个命令也主要提供了其次要功能,但 cat 仍然是一个有用的工具。例如,它可以是复制(cp)命令的替代品:

$ cat myfile.ogg > /backups/myfile.ogg

它可以显示文件中不便观察的隐形字符。例如,使用 --show-tabs 选项,分割 YAMLTab 字符就会显示为 ^I

$ cat --show-tabs my.yaml

---

- hosts: all
  tasks:
  - name: Make sure the current version of 'sysstat' is installed.
    dnf:
     name:
^I- sysstat
^I- httpd
^I- mariadb-server
     state: latest

它还可以用 --show-nonprinting 显示非打印字符,用 --show-ends 标记行尾,用 --number 提供行号,等等。

find

find 命令可以用来查找文件,但它还有许多选项,这些选项可以帮助你通过各种过滤器和参数查找文件。读者可以从我的 介绍性文章 中学习该命令的基础知识。

如果你一直想知道为什么最基本的、不起眼的 ls 命令,不在本文列表中,那是因为 find 的灵活性。它不仅可以列表文件:

$ find .
./bar.txt
./baz.xml
./foo.txt
[...]

它还可以提供包含详细信息的长列表功能:

$ find . -ls
3014803  464 -rw-rw-r--   1 tux users  473385 Jul 26 07:25 ./foo.txt
3014837  900 -rwxrwxr-x   1 tux users  918217 Nov  6  2019 ./baz.xml
3026891  452 -rw-rw-r--   1 tux users  461354 Aug 10 13:41 ./foo.txt
[...]

这是一个技术问题,但也是很一个巧妙的技巧。

tar

人们有时会引用 BSD 的 tar 语法来拿 Linux 命令开玩笑。尽管有这样的名声,但 tar 命令实际上非常直观。读者可以阅读我的 如何解压缩 tar.gz 文件 文章,了解在需要时使用 tar 命令的简单知识。

more、less 和 most

这些统称为分页命令。分页命令与 cat 类似,但前者会在屏幕底部暂停输出,直到你向下滚动查看更多内容。这些命令比较简单,但每个之间都有细微差别。用户是用箭头键还是空格键滚动?是必须手动退出,还是在显示的文件末尾自动退出?用户的首选搜索行为是什么样的?选择你最喜欢的分页命令并将其设置在 .bashrc 中吧!

ssh 和 scp

OpenSSH 不仅有助于保护与远程系统的连接安全,还可以用于启用其他命令。例如,对于许多用户来说,有了 .ssh 目录,他们才能与 Git 存储库顺利交互、将更新发布到网站、登录云控制平台。

mv

mv 命令有双重作用:它既可以 移动文件 又可以 重命名文件。它有几个可用的保护措施,例如 --interactive--no-clobber 选项避免破坏现有文件,--backup 命令确保数据在新位置验证之前被保留,以及 --update 选项确保旧版本不会替换新版本文件。

sudo

当某个用户账户的用户名已知,且具有 全部 系统权限时,该用户很快就会成为黑客攻击的目标。sudo 命令消除了对字面上 root 用户的需求,从而优雅地移除了有关系统的重要信息。不过这还不是全部,使用 sudo 你还可以轻松地管理单个命令、用户和组的权限。你可以在选定的命令上启用无密码执行、记录用户会话、使用摘要验证来验证命令,等等

alias

使用 alias 命令将长命令变成易于记忆的快捷方式:

$ alias ls='ls --classify --almost-all --ignore-backups --color'

clear

有时终端会显得很混乱,输入 clear(或在某些 shell 中按 Ctrl+L)后,你就能得到漂亮、刷新的屏幕了。

setfacl

传统上,POSIX 文件权限由 chownchmod 决定。然而,如今系统变得更加复杂,因此有一个灵活性更高的命令。setfacl 命令允许创建一个 访问控制列表(ACL),可以配置任意用户所需权限,并可以为文件夹及其中创建的内容设置默认权限。

netcat

可能需要使用 netcatnc)的人不多,但这些使用它的人确离不开它。nc 命令是一个通用的网络连接工具。

它可以连接到一个端口,类似于 telnet 命令:

$ nc -u 192.168.0.12 80

它可以 ping 一个端口,类似于 ping 命令:

$ nc -zvn 192.168.0.12 25

它可以探测开放端口,类似于 nmap 命令:

$ nc -zv 192.168.0.12 25-80

以上仅是该命令的一小部分用途。

你自己构建的命令

在某种程度上,Linux 终端是一个创造性解决问题的平台。当你学习命令时,你也在学习可用于创建自己的命令的组块。我的 shell 历史 中的许多命令都是自己编写的 shell 脚本,从而实现了根据自己想要的工作方式定制工作流程。你为自己的效率和舒适度而设计的命令也可以作为 shell 中的基本命令。花些时间了解一些很棒的命令,然后试着构建自己的命令吧。当你构建出的命令非常好用时,把它开源,这样就可以与他人分享你的想法啦!


via: https://opensource.com/article/21/9/essential-linux-commands

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

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

从黑客玩具到席卷互联网

今年是 Linux 诞生 30 周年,我还依稀记得我在好多年前第一次接触 Linux 时,它还只是一个小众而新奇的操作系统。二十多年前,那时候 Windows 95 还在流行,IBM 的 OS/2 尚能见到影子,而不起眼的 Linux 还只是黑客们的一个新奇玩具。

似乎转瞬间,Linux 已经席卷了整个互联网,而与之伴生的开源也成为了主流的软件和信息行业的时髦法则。从最初计算机诞生时的开源文化,到 IBM、微软和甲骨文等商业软件企业所奉行的闭源,再到包括 IBM、微软在内软件巨头转身拥抱开源和 Linux,历史仿佛又走了一个轮回。

我用的第一个 Linux 发行版是 Slackware Linux,这最早的 Linux 发行版之一,而且也是最长寿的 Linux 发行版之一,至今仍在持续发展。我还记得第一次安装它时,由于要做双引导,结果因为当时所使用的引导程序 LILO 不能引导超过 1024 柱面的分区,因而在安装后首次重启时就刷了满屏的 0101010……,甚至看到没有一行有用的错误信息。而那时,虽然 Google 已经诞生,但是我还尚不知道它,所以面对这种情况,让人不知所措。

就是这样的一个玩具一样的操作系统,30 年来,经过无数人的努力,已经诞生了数百个分属不同系列的 Linux 发行版,并拥有数万自由及开源软件,林林总总,几乎肯定可以满足你的任何需求。

CentOS 大变局

作为一个从业互联网多年的技术人员,我几乎都是在使用 Linux 来作为软件基础设施。从早期的 RedHat Linux,到后来的 CentOS,它基本上是我用来部署服务器操作系统的不二选择。Linux 作为服务器操作系统,主要有两大系列:Debian/Ubuntu 系、CentOS/SUSE 系。不知道出于什么原因,国内在服务器端使用 CentOS、RHEL、SUSE 等红帽系的 Linux 发行版比较多。所以,无论是企业环境、云环境,还是系统运维工程师们,都对 CentOS 等红帽系的 Linux 青睐有加。

不过,意外总是在你意想不到的地方出现。

今年,作为 CentOS Linux 背后的支持者,红帽公司突然宣布,CentOS 将 终止既定的维护计划。 CentOS 8 原本计划维护 10 年, 一直支持到 2029 年 5 月 31 日,却将在今年年底停止支持。而它的上一个版本 CentOS 7 都能维护到 2024 年。

当然,我们理解红帽公司做出这样的决定的 原因,但是其后果就是,原本将产品建筑于具有 10 年维护期的 CentOS 8 的各个企业,纷纷发现他们面临一个严重的危机。这就是,当红帽不再提供免费的 CentOS 之后,其产品和服务底层的操作系统缺失了维护,将给其带来巨大的不确定性。

当然,也并不是没有解决方案。比如说,像 Facebook 这样的大组织,就可以基于 CentOS Stream 定制自己的 Linux 发行版来使用。又比如说,可以考虑购买/订阅红帽的 RHEL 商业服务。再比如说,可以迁移到 Debian/Ubuntu,乃至于 *BSD 上。但是,对于广大中小企业来说,这些选择都存在一定的阻碍。

因此,也有人站出来,秉承 CentOS 原本的宗旨,继续发行和维护一个类似 CentOS 的 Linux 发行版,比如说 Rocky LinuxAlma Linux 等等。虽然,目前这些替代品得到很多肯定,但是,就像被红帽收购之前的 CentOS 一样,谁也不知道这些替代品发行版及其支持服务能有多久。

还有更好的选择么?

我认为有。

其实,在 CentOS 停服之后,国内一些互联网大厂也纷纷考虑将自己原本自用的内部 Linux 发行版打造成公开可用的 Linux 发行版。但是,各家对此事的重视程度不同。我曾经开玩笑地点评过,有的是以战略的方式去打造,有的是按战术的方式去考虑,而有的可能只是以战斗级的规模去尝试。以上就知名不具了。我就说说,我对其中一个 Linux 发行版的认识吧,以及,为什么我认为它是一个更好的选择。

先揭晓我的答案,它就是欧拉(openEuler)操作系统

为什么欧拉是更好的选择?

欧拉可以更好的继承和兼容 CentOS 基础设施

欧拉最初发轫于华为内部的 Euler 操作系统,这是一个定制的 Linux 发行版。其采用和继承了红帽系的一些标志性技术,比如,它们都采用了相同的包管理系统(虽然据称欧拉也在考虑增加新的包管理系统),它们都采用了类似的文件系统布局和同一种安装程序等等。

因此,如果你现有的操作系统使用的是 CentOS ,那么迁移到 欧拉 还是比较轻松的,而且,欧拉还提供了专门的迁移向导程序。

旁注:欧拉 是 CentOS 的下游发行版吗?

可能社区存在一些认识误区,认为欧拉就是基于 CentOS Linux 衍生,并在此基础上定制的。不是。欧拉与 CentOS 的关系,类似于 openSUSE 和 CentOS 的关系,即采用类似的包管理系统和文件系统布局;而不是类似 Oracle Linux 和 CentOS 的关系,即替换和增补部分组件和内核的方式。

结论:欧拉是一个沿袭了红帽系的技术和惯例,但是独立发展的 Linux 发行版。

牵一发而动全身,欧拉已经成为华为的技术基座

就像前面说的,市面上并不乏类似于 CentOS 的发行版,但是,并不能给人以充足的信心。我们知道,开发并维护一个 Linux 发行版,其投入非常大,而且持续的维护也很辛苦。这一点可以从其他几个主要 Linux 发行版的情况可以看出来,有的 Linux 发行版供应商几年来多次卖身、有的转向以云服务为重心、有的几年才能推出一个重大版本。

而据我了解,欧拉在推出伊始,就得到了华为的鼎力支持,不但投入了华为操作系统实验室的技术高手,而且在产品、资金、宣传和人员方面也不吝投入。或许你觉得这只是宣传,但我觉得有一些事例可见一斑:欧拉在推出不久就拥有了诸多下游发行版,比如 UOS(原深度 Linux)、麒麟,甚至连 SUSE 都基于欧拉推出了下游发行版。试想,如果这些发行版认为欧拉只是昙花一现的 KPI 项目,它们会押注欧拉吗?

既然如此,那我就对欧拉能得到持续而稳定的投入和支持拥有信心。所以,是否采用欧拉作为你的基础设施,想必你也有一个判断了吧?

欧拉有丰富而庞大的支持社区和支持企业

说实话,作为一个浸淫 Linux 开源圈子多年的技术人,我这些年见惯了技术社区的起起落落。但是我从来没见过一个技术社区能如欧拉社区一样迅速崛起并壮大。2019 年底,华为正式开源了欧拉操作系统,邀请社区开发者共同来贡献。才仅仅一年半后,截止到 2021 年 9 月,欧拉社区 就已经拥有了 14 万社区用户,6 千多名社区贡献者,8 千多款社区软件,91 个特别兴趣组(SIG)以及 9 个下游的商业发行版。不仅如此,欧拉还在操作系统之外,开源了虚拟化平台 StratoVirt、容器引擎 iSula 等重量级软件。

所以,有这么庞大的支持社区和这么多的生态企业,你觉得需要担心支持吗?

为什么我们还需要一个独立的 Linux 发行版?

我们可以看到,虽然现在的 Linux 发行版不少,但是真正能在企业级使用并不多。而以前,这些企业级的 Linux 操作系统往往是由国外的企业进行支持的。我们说,开源是无国界的,但是企业是有国界的,谁也不敢保证企业是否会受制于某个国家的法案而终止服务。因此,有一个国产的 Linux 发行版供应商至关重要。

这些年来,中国已经有一些 Linux 发行版供应商。如今,在国家的持续支持下,它们也得到了不同程度的发展。不过,相对于中国迅猛发展的信息技术基础设施,我们还需要更多、更有力的企业和社区的支持。此外,考虑到中国对芯片产业的迫切需求,我们也需要有一个符合中国发展的独立 Linux 发行版来更好的支持这些国产的芯片和指令集。

虽然在企业运维中或多或少会使用英语等外语,但是就国内普遍的运维群体而言,对英语的娴熟使用程度上尚有较大的欠缺,因此,这就需要有一个具有更熟悉的语言环境的本土技术社区,才能真正促进国内运维技术人群的发展。当然,这并不是说我们只采用中文,而是会在满足中文沟通和支持的基础上,立足国际化,让源于中国的 Linux 发行版走向世界。

而在这方面,欧拉已经做了一系列工作:

比如,对多种计算架构的支持。典型的,Linux 都会支持不同的技术架构,这包括 x86、ARM 等等。而国内诸多发力于处理器芯片的厂家也打造出了林林总总的不同特性的芯片,但是这些芯片要得到主流操作系统的支持,则需要更广泛的认可和漫长的时间。如今的欧拉不但可以完美的运行在华为自家的鲲鹏处理器上,更是可以支撑国内多家的 ARM 服务器。作为一个拥有多家下游商业发行版的 Linux 操作系统,如果能在欧拉上得到适配支持,无异于可以在更广泛的用户群体里提供对国产芯片的直接支持。

再比如,对新技术需求的支持。近些年各种新技术层出不穷,如云边端融合、以新的容器技术为代表的云原生计算等等。这些都迫切需要在操作系统层面得到支持,由操作系统提供一个创新的平台,才能够给这些新的技术突破提供成长的土壤。欧拉首先是一个 Linux 操作系统,但是它也是一个孵化新技术的“Apache 基金会”,在欧拉之上,已经有可以运行于多种边缘设备的容器引擎 iSula、相对 QEMU 资源占用减少了 80% 的 StratoVirt 等等新技术。

结语

回到我们最初的问题,30 年过去了,我们还需要一个新的 Linux 发行版吗?我的答案是,需要。而且,我们已经提交了一份正在不断丰满的蓝图。

Sci-Hub 诞生十周年,将恢复上传新论文

有科学海盗湾之称的论文共享网站 Sci-Hub 诞生于 2011 年。Sci-Hub 基本上是 Elbakyan 一个人的项目,资金主要来自捐赠,现在依赖于比特币捐赠,每个月花在服务器上的开支大约数千美元。Sci-Hub 今年 7 月为了遵守印度法庭的命令而同意停止接收新的论文。Sci-Hub 现在表示论文上传的限制已经过期了,将上传 2 百万篇新论文来庆祝十周年纪念日。Sci-Hub 目前提供的论文超过 8500 万篇。鉴于 Sci-Hub 日渐困难的处境,网友四个月前还自发发起了拯救 Sci-Hub 和开放科学的行动。

究竟科学知识是开放领域的,还是属于出版商的?

Linux 5.15 将默认将所有警告都视作编译错误

在近日的 Linux 5.15 内核合并中,Linus Torvalds 引入一项重要更改,所有内核构建将默认启用 -Werror 编译器标记。该标记会将所有警告都视作编译错误,以迫使开发者提起重视并优先处理,否则将中断编译过程。此外,作为一个旁路出口,还添加了 Kconfig 开关 WERROR,若新版编译器引入了内核无法立即修复的新警告、或其它选择性问题,开发者可以通过这个开关来禁用该标记。

虽然很多编译警告都让人烦不胜烦,但是每一条警告其实都是一个隐患。

谷歌时钟闹钟因 Bug 未能响起致人失业

几乎所有安卓手机都安装了的谷歌时钟应用,多年来一直存在一个严重的 Bug,导致大量用户都错过了预设时间,甚至导致一位用户错过了两个早上的课程,失去了教学工作。该问题似乎从 2018 年一直持续到了现在,尽管愤怒的用户已经多年给了它 1 星差评,但是这个问题一直迟迟没有得到解决。在一个上万人的投票中,遇到该问题的用户超过了六成。

虽然这是个简单问题,但是似乎谷歌解决起来挺费劲。所以究竟是用户错觉还是软件 bug?

使用 ncurses 在 Linux 屏幕上的特定位置放置文本,可以带来更友好的用户界面体验。

 title=

大多数的 Linux 实用程序仅仅只在屏幕的底部滚动文本。如果你想在屏幕中放置你的文本,例如一个游戏或者一个数据展示,你可以试试 ncurses。

curses 是一个旧的 Unix 库,它可以在文本终端界面控制光标。curses 的名称就来自于术语 “ 光标控制 cursor control ”。多年以后,其他人编写了新的 curses 版本用来添加新的功能,新版本被叫做 “new curses” 或者 “ncurses”。你可以在每个流行的 Linux 发行版中找到 ncurses。尽管默认情况下可能未安装开发库、头文件和文档。例如,在 Fedora 上,你需要使用以下命令安装 ncurses-devel 包:

$ sudo dnf install ncurses-devel

在程序中使用 ncurses

要在屏幕上直接寻址,你首先需要初始化 ncurses 库。大部分程序会通过以下三行来做到这一点:

  • initscr():初始化窗口对象和 ncurses 代码,返回代表整个屏幕的窗口对象
  • cbreak():禁用缓冲并使键入的输入立即可用
  • noecho():关闭回显,因此用户输入不会显示在屏幕上

这些函数定义在 curses.h 头文件中,你需要在你的程序中通过以下方式将其包含进来:

#include <curses.h>

初始化终端后,你可以自由使用任何 ncurses 函数,我们将在示例程序中探讨其中的一些函数。

当你使用完 ncurses 并想返回到常规终端模式下时,使用 endwin() 重置一切。此命令可以重置任何屏幕颜色,将光标移动到屏幕的左下角,并使光标可见。通常在退出程序之前执行此操作。

在屏幕上寻址

关于 ncurses 首先需要知道的是屏幕的坐标分为行和列,左上角的是 0,0 点。ncurses 定义了两个全局变量来帮助你识别屏幕:LINES 是屏幕的行数,COLS 是屏幕的列数。屏幕右下角的位置是 LINES-1,COLS-1

例如,如果你想要移动光标到第 10 行和第 30 列,你可以使用 move() 函数,移动到此坐标:

move(10, 30);

之后显示的任何文本都将从屏幕的该位置开始。要显示单个字符,请对单个字符使用 addch(c) 函数。要显示字符串,将对字符串使用 addstr(s) 函数。对于类似于 printf 的格式化输出,请使用带有常用选项的 printw(fmt, ...)

移动到屏幕指定位置和显示文本是一件很常见的事情,ncurses 提供了同时执行这两项操作的快捷方式。mvaddch(row, col, c) 函数将在屏幕第 row 行,第 col 列的位置显示一个字符。而 mvaddstr(row, col, s) 函数将在屏幕第 row 行,第 col 列的位置显示一个字符串。举个更直接的例子,在程序中使用 mvaddstr(10, 30, "Welcome to ncurses"); 函数将从屏幕的第 10 行和第 30 列开始显示文本 Welcome to ncurses。使用 mvaddch(0, 0, '+') 函数将在屏幕的左上角第 0 行和第 0 列处显示一个加号(+)。

在终端屏幕上绘制文本会对某些系统产生性能影响,尤其是在较旧的硬件终端上。因此 ncurses 允许你“堆叠”一堆文本以显示在屏幕上,然后使用 refresh() 函数使所有这些更改对用户可见。

让我们来看一个将以上所有内容整合在一起的简单示例:

#include <curses.h>

int
main()
{
  initscr();
  cbreak();
  noecho();

  mvaddch(0, 0, '+');
  mvaddch(LINES - 1, 0, '-');
  mvaddstr(10, 30, "press any key to quit");
  refresh();

  getch();

  endwin();
}

程序的开始初始化了一个终端窗口,然后在屏幕的左上角打印了一个加号,在左下角打印了一个减号,在第 10 行和第 30 列打印了 press any key to quit 文本。程序通过使用 getch() 函数接收了键盘输入的单个字符,接着,使用 endwin() 函数在程序完全退出前重置了终端。

getch() 是一个很有用的函数,你可以使用它来做很多事情。我经常使用它在我退出程序前用来暂停。与大多数 ncurses 函数一样,还有一个名为 mvgetch(row, col)getch() 版本,用于在等待字符输入之前移动到屏幕位置的第 row 行,第 col 列。

使用 ncurses 编译

如果你尝试以通常的方式编译该示例程序,例如 gcc pause.c,你可能会从链接器中获得大量错误列表。那是因为 GNU C 编译器不会自动链接 ncurses 库。相反,你需要使用 -l ncurses 命令行选项加载它以进行链接。

$ gcc -o pause pause.c -lncurses

运行新程序将打印一条简单的 press any key to quit消息,该消息差不多位于屏幕中央:

centered message in a program window

图 1:程序中居中的 “press any key to quit” 消息。

使用 ncurses 构建更好的程序

探索 ncurses 库函数以了解在屏幕上显示文本的其它方法。你可以在 ncurses 的手册页中找到所有 ncurses 函数的列表。这给出了 ncurses 的一般概述,并提供了不同 ncurses 函数的类似表格的列表,并参考了包含完整详细信息的手册页。例如,在 curs_printw(3X) 手册页中描述了 printw,可以通过以下方式查看:

$ man 3x curs_printw

更简单点:

$ man curs_printw

使用 ncurses,你可以创建更多有趣的程序。通过在屏幕上的特定位置打印文本,你可以创建在终端中运行的游戏和高级实用程序。


via: https://opensource.com/article/21/8/ncurses-linux

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

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

今天,几乎每个家庭都有一台台式电脑或笔记本电脑。这是因为计算机已经成为一个非常重要的要求。此外,不管是为了工作还是学习,许多人需要创建电子版的文档和演示文稿。因此,办公套件是几乎所有计算机上的必备应用程序。本文将介绍一些你可以在 Fedora Linux 上使用的开源办公套件。这些软件你可能需要安装。如果你不熟悉如何在 Fedora Linux 中添加软件包,请参阅我之前的文章 安装 Fedora 34 工作站后要做的事情。下面是满足日常需求的办公套件类的应用程序列表。

LibreOffice

LibreOffice 是 GNU/Linux 用户中最流行的办公套件。它的用户界面和用户体验类似于微软 Office。这使得 LibreOffice 对于那些刚刚从微软 Office 迁移过来的人来说很容易学习。LibreOffice 有完整的功能,可以满足你在文档和演示方面的工作需要。它由六个应用程序组成:Writer、Calc、Impress、Draw、Math 和 Base。

第一个应用程序是 Writer,用于创建各种类型的文档,如信件、传真、议程、会议记录等。它是一个全功能的文字处理和桌面出版工具。第二个应用程序是 Calc,它是一个电子表格程序,非常适合以表格形式呈现数据和记录数据。Calc 可以创建简单的表格或进行专业的数据分析。第三个应用程序是 Impress,它是一个易于使用的演示应用程序。你可以很容易地选择你在演示幻灯片中想要的功能,如文本、图像、表格、图表等。

LibreOffice Writer

LibreOffice Calc

LibreOffice Impress

前面提到的三个 LibreOffice 应用程序是创建文档和演示文稿中最常用的应用程序。然而,LibreOffice 提供的其他三个应用程序也非常有用。第一个是 Draw,它可以用来创建从简单到复杂的图纸和图表。下一个应用程序是 Math,它可以帮助我们做出完美格式的数学和科学公式。最后一个是 Base,这是一个用于处理数据库的应用程序。

LibreOffice Draw

LibreOffice Math

LibreOffice Base

更多信息请见此链接:https://www.libreoffice.org/

ONLYOFFICE

ONLYOFFICE 是一款与微软 Office 高度兼容的办公套件应用程序。因此,我们与使用微软 Office 的同事协作时就不必担心了,因为它可以读取各种文件格式,如 docx、xlsx 和 pptx。

ONLYOFFICE 提供了三种具有简洁和现代外观的应用程序。我们可以很容易地找到我们需要的功能和工具。虽然功能没有 LibreOffice 那么齐全,但也足以帮助我们创建良好的文档和演示文稿。

第一个应用程序是文档编辑器,它的功能与 LibreOffice 的 Writer 相同。它具有文字处理器所需的所有基本功能,如管理字体和样式、格式化文本、调整行距和段距、插入页眉和页脚、自定义页面布局和设置页边距。第二个应用程序是电子表格编辑器,它是一个用于处理数据并将其创建为表格格式的文件的应用程序。它是一个具有与 Calc 相同功能的应用程序。最后一个是演示文稿编辑器,它是一个演示文稿应用程序,其功能类似于 Impress。

不幸的是,ONLYOFFICE 在官方的 Fedora Linux 软件库中并没有提供。但是你仍然可以使用 Flatpak 或 Appimages 在 Fedora Linux 上安装它。

ONLYOFFICE Documents Editor

ONLYOFFICE Spreadsheets Editor

ONLYOFFICE Presentations Editor

更多信息请见此链接:https://www.onlyoffice.com/desktop.aspx

Calligra

Calligra 是一个由 KDE 创建的办公套件。因此,这个应用程序实际上更适合于 KDE Plasma 桌面环境的用户。但它仍然可以在其他桌面环境中良好运行,例如使用 GNOME 的 Fedora 工作站。

Calligra 提供的几个应用程序的外观与 LibreOffice 或 ONLYOFFICE 略有不同。对于那些习惯于主流办公套件应用程序的人来说,可能需要一些适应。然而,Calligra 仍然是一个可靠的办公套件,足以支持我们的日常需求。

第一个应用程序是 Words,它是一个具有桌面出版功能的直观的文字处理器。它具有帮助我们进行文档创作的全面功能。第二个应用程序是 Sheets,它具有与 Calc 和电子表格编辑器相同的功能,是一个功能齐全的电子表格应用程序。第三个应用程序是 Stage,它可以帮助我们制作演示幻灯片。

Calligra Words

Calligra Sheets

Calligra Stage

这三个 Calligra 应用程序是创建文档和演示文稿最常用的应用程序。另外还有三个应用程序也非常有用。第一个是 Karbon,它可以用来创建从简单到复杂的图纸和图表。下一个应用程序是 Plan,这是一个项目管理应用程序,可以帮助管理具有多种资源的中等规模的项目。最后一个是 KEXI,它是一个可视化数据库应用程序的创建器。

Calligra Karbon

Calligra Plan

Calligra Kexi

更多信息请见此链接:https://calligra.org/

总结

这篇文章介绍了 3 个可以在 Fedora Linux 上使用的办公套件,以满足你的日常需要。如果你想拥有具有一套完整功能的办公套件,那么 LibreOffice 可能是正确的选择。如果想与微软 Office 有良好的兼容性,那么你可以选择 ONLYOFFICE。然而,如果你想要一个不同的用户界面和创建文档和演示文稿的体验,你可以试试 Calligra。希望这篇文章能帮助你选择合适的办公套件。如果你有使用这些应用程序的经验,请在评论中分享你的经验。


via: https://fedoramagazine.org/apps-for-daily-needs-part-2-office-suites/

作者:Arman Arisman 选题:lujun9972 译者:wxy 校对:wxy

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