Seth Kenlon 发布的文章

通过编写函数来减少代码的冗余和维护。

在编程时,实际上是在定义要由计算机执行的 过程 procedure 例程 routine 。一个简单的类比是将计算机编程与烤面包进行比较:你一次列出了要组建工作环境的配料,然后列出了烤面包所必须采取的步骤。在编程和烘烤中,必须以不同的间隔重复执行某些步骤。例如,在烤面包中,这可能是酵母培养的过程:

STIR=100
SNOOZE=86400

function feed_culture {
  remove_from(pantry)
  add(flour, water)
  stir($STIR)
  sleep($SNOOZE)
}

然后,揉面和醒发面团:

KNEAD=600
SNOOZE=7200

function process_dough {
  remove_from(proofing_drawer)
  knead($KNEAD)
  return_to_drawer($SNOOZE)
}

在编程中,这些 子例程 subroutines 可以表示为 函数 function 。函数对程序员很重要,因为它们有助于减少代码中的冗余,从而减少了所需的维护量。例如,在以编程方式烤制面包的假想场景中,如果你需要更改面团醒发的用时,只要你之前使用函数,那么你只需更改一次用时,或使用变量(在示例代码中为 SNOOZE)或直接在处理面团的子程序中更改用时。这样可以节省你很多时间,因为你不必通过你的代码库遍历每个可能正在醒发的面团,更不用说担心错过一个。许多 bug 是由未更改的缺失的值或执行不正确的 sed 命令引起的,它们希望捕获所有可能而不必手动寻找。

Bash 中,无论是在编写的脚本或在独立的文件中,定义函数和使用它们一样简单。如果将函数保存到独立的文件中。那么可以将它 source 到脚本中,就像 include C 语言或 C++ 中的库或将模块 import 到 Python 中一样。要创建一个 Bash 函数,请使用关键字 function

function foo {
# code here
}

这是一个如何在函数中使用参数的例子(有些人为设计,因此可能会更简单):

#!/usr/bin/env bash
ARG=$1

function mimic {
  if [[ -z $ARG ]]; then
    ARG='world'
  fi
  echo "hello $ARG"
}

mimic $ARG

结果如下:

$ ./mimic
hello world
$ ./mimic everybody
hello everybody

请注意脚本的最后一行,它会执行该函数。对于编写脚本的新手来说,这是一个普遍的困惑点:函数不会自动执行。它们作为潜在的例程存在,直到被调用。

如果没有调用该函数,那么函数只是被定义,并且永远不会运行。

如果你刚接触 Bash,请尝试在包含最后一行的情况下执行示例脚本一次,然后在注释掉最后一行的情况下再次执行示例脚本。

使用函数

即使对于简单的脚本,函数也是很重要的编程概念。你越适应函数,在面对一个不仅需要声明性的命令行,还需要更多动态的复杂问题时,你就会越容易。将通用函数保存在单独的文件中还可以节省一些工作,因为它将帮助你建立常用的程序,以便你可以在项目间重用它们。看看你的脚本习惯,看是否适合使用函数。


via: https://opensource.com/article/20/6/bash-functions

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

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

值此周年纪念之际,来通过这些深度文章和实践项目了解下 Kubernetes。

在云原生的成长期,开发者们发现在一个小型的、原子化的、精简的 Linux 镜像里编写应用程序很方便,这些镜像与它们所运行的服务器共享资源。从技术上讲,这些基于内核命名空间的小环境定义被称为容器。随着容器的激增,系统管理员们很快意识到,开发一个不仅能帮助他们管理容器,还能帮助他们管理下面的虚拟化基础设施的工具变得至关重要。于是,Kubernetes 应运而生。

Kubernetes 是一个可扩展开源平台,用于管理容器。它可以帮助管理员和开发者们围绕容器管理工作负载、服务和进程。它促进了声明式配置,更容易实现自动化。在它相对较短的生命周期中,它已经催生了一个迅速成长的生态系统,其中包括来自大量公司和项目的服务、支持和工具。

如果你想对这项重要的云技术有更多的了解,这里有一些能帮忙你更深入学习的文章。还有 5 个项目可以帮你把学到的东西付诸实践。

遏制容器乱象

2016 年,我们发布了《使用 Kubernetes 遏制容器乱象》,这是一篇由 Terry Ryan 写的关于 Kubernetes 的介绍性文章,讲述了 Kubernetes 如何帮助管理员和架构师们努力应对容器。如果你想找一篇从底层介绍容器是做什么的以及 Kubernetes 是如何实现容器管理的,那么你应该先读下本文。本文适合零基础的读者,解释了所有重要的概念,因此你能迅速了解相关技术。

如果想进阶了解内核层面发生的一些神奇的事情,请阅读 Jessica Cherry 对 Kubernetes 命名空间的解释。

延伸阅读:

Kubernetes:为什么它很重要?

Kubernetes 提供了 基础设施即服务 Infrastructure-as-a-Service (IaaS)解决方案(类似 OpenStack)的便利和一个完整的 平台即服务 Platform as a Service (PaaS)。它为你提供了管理基础设施的抽象能力,以及在裸金属基础层面进行故障排除所需的工具。如果你执着于使用单一的裸金属服务器,你可能需要阅读下 Tim Potter 写的《你为什么需要 Kubernetes》。他的文章对比了 IaaS 和 PaaS,解释了为什么 Kubernetes 如此广泛地被使用。你可能并不是一定需要 Kubernetes 或容器,但是重要的是知道什么情况下需要。

延伸阅读:

在树莓派上运行 Kubernetes

熟悉 Kubernetes 的最好方法莫过于自己运行它。不幸的是,不是每个人都有一个云服务基层设施(或者有足够的钱来租用一个)可供其支配。而幸运的是,Chris Collins 提供了《在树莓派上运行 Kubernetes》的教程。结合他的另外几篇关于《Cloud-init》和《Cloud-init 服务》的教程(也是在树莓派上运行),你可以搭建任何你想要的家庭实验室,这样你就可以学习如何管理属于自己的开放混合云。

Kubernetes 命令

一旦你运行起 Kubernetes 后,可以看看 Jessica Cherry 的文章和附带的备忘清单,这个清单列出了所有的基本的 Kubernetes 命令。在她的文章中,她解释了 kubectl 命令的语法,简单讲述了每个命令和子命令是用来做什么的。

有趣的 Kubernetes 项目

没有什么比拥有技术却不知道该怎么用它更令人沮丧的了。例如,在你的办公桌上有一个树莓派是一回事,但是决定它的 CPU 应该用来做什么工作却完全是另一回事。我们发布了很多教程,来指导你完成你的 Kubernetes 之路的探索:

最重要的,花点时间来熟悉容器和 Kubernetes。不论你先把容器化的应用放到服务器、云上还是桌面,它们都是能帮助你理解的重要的范例,因为它们是一个强大的构造,可以让 Linux 的应用变得更好、更健壮、鲁棒性更好、更简单。一定要投入精力去学习它们,你不会后悔的。


via: https://opensource.com/article/20/6/kubernetes-anniversary

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

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

本文介绍了 Linux 提供的拆分终端的方法,它能够帮助你完成多任务工作。那么,你最喜欢哪一款终端复用工具呢?

没有什么问题是不能用一个 Linux 终端解决的,如果不行,那就用两个。

很早以前,终端其实是一个物理设备,而现在的终端实际上是在计算机上被模拟出来的一个应用程序。当你使用终端和计算机进行交互的时候,就会发现,只打开一个终端是不够用的。在进行编译、数据处理等长时间任务的时候,你不得不打开一个新终端或新 选项卡 tab 来同时进行其它工作。

如果你是系统管理员,你就需要更多的终端窗口,以便连接到多个不同的主机上并行工作了。

在 Linux 系统中,终端应用程序在很久之前就已经开始带有选项卡功能了。而现在的终端应用程序里,选项卡已经是标配功能了,这是非常流行的趋势。尽管如此,工作的时候在多个选项卡之间来回切换,或多或少也会分散我们的注意力,甚至带来不便。

而最好的解决方案就是将整个屏幕划分为多个部分,这样多个终端就可以在同一个终端应用程序窗口中同时存在。Linux 发行版中也有很多相关的工具可以实现这一功能。

Shell、终端和控制台

在此之前,我们首先要明确 Shell、 终端 terminal 控制台 console 这三个概念。想要详细了解的话,请参阅 Enable Sysadmin 博客上的相关文章。

简而言之:

  • Shell 是带有 命令提示符 prompt 的用于输入、输出的界面。准确地说,POSIX 桌面底层也运行着一个 Shell,即使这个 Shell 对用户不可见,因为用户会话就是由这个 Shell 启动的。
  • 终端是在图形界面服务器(例如 X11 或 Wayland)中运行的应用程序,其中加载了一个 Shell。只有在终端窗口启动之后,才算是运行了一个终端。终端可以认为是操作 Shell 的一个入口。
  • 控制台(或称“虚拟控制台”)通常表示在桌面环境以外使用的 Shell,你可以通过 Alt+Ctrl+F2 进入控制台,通常情况下从 F3F7 都是不同的控制台,其中桌面环境有可能是 F1 或者 F7,这在不同的发行版中可能会有所不同。

因此,有些应用程序提供的功能是拆分 Shell 或者控制台,有些应用程序的功能则是拆分终端。

tmux

 title=

tmux 可以说是最灵活、最强大的屏幕拆分工具了,它通过键盘控制对多个终端的复用,因此你可以将一个控制台叠放在另一个控制台上面,并在两个控制台之间切换。你还可以将整个屏幕等分为多个控制台,以便同时观察不同控制台上的状况。

tmux 的所有操作都是通过键盘完成的,这就意味着你的手不需要离开键盘去寻找鼠标。为此,你需要记住一些按键组合。

如果你只用 tmux 来做屏幕拆分,那你只需要记住一下这些命令:

  • Ctrl-B % 竖直拆分屏幕(两个 Shell 分别位于左右)
  • Ctrl-B " 水平拆分屏幕(两个 Shell 分别位于上下)
  • Ctrl-B O 切换到另一个 Shell
  • Ctrl-B ? 查看帮助
  • Ctrl-B d 断开 tmux 并让其在后台运行(可以使用 tmux attach 重新进入)

tmux 的一大好处是,在一台计算机上启动 tmux 会话之后,也可以从另一台计算机上进入到这个会话,由此可以看出,tmux 对 Shell 进行了 守护进程化 daemonize

例如,当我在树莓派上运行 tmux,我就可以从计算机上连接到树莓派并登录 IRC,当我断开连接时,树莓派上的 tmux 会继续运行,并等待我的下一次连接,在此期间 IRC 是处于持续登录状态的。

GNU Screen

 title=

GNU Screen 也是一个 Shell 复用工具,类似于 tmux,你可以在断开一个活动会话后重连到其中,它也支持竖直或水平拆分屏幕。

screen 的灵活性比 tmux 要弱一些。它默认的绑定按键组合是 Ctrl-A,和 Bash 中光标移动到行首的快捷键是一样的。因此,当你正在运行 screen 的时候,如果想要将光标移动到行首,就需要多按一次 Ctrl-A。而我自己的做法是,在 $HOME/.screenrc 文件中将绑定按键组合重新设置为 Ctrl-J

escape ^jJ

尽管 screen 在屏幕拆分功能上做得很好,但 tmux 上的一些缺点在 Screen 上也同样存在。例如在拆分 Shell 时,在一个新的面板中不会启动新的 Shell ,而是需要使用 Ctrl-A Tab 导航到另一个面板(如果你按照我的方式重新设置了按键组合,需要对应地把 Ctrl-A 改为 Ctrl-J),然后通过 Ctrl-A C 手动创建一个新的 Shell。

tmux 不同的是,screen 在退出一个 Shell 的时候,屏幕拆分状态不会改变,这样的设计在某些情况下是比较适合的,但麻烦之处在于需要手动管理屏幕拆分状态。

尽管如此,screen 还是一个相当可靠灵活的应用程序,在无法使用 tmux 的时候,你可以选择 screen 作为备选方案。

在默认按键方案下,screen 常用的基本命令包括:

  • Ctrl-A | 竖直拆分屏幕(两个 Shell 分别位于左右)
  • Ctrl-A S 水平拆分屏幕(两个 Shell 分别位于上下)
  • Ctrl-A Tab 切换到另一个 Shell
  • Ctrl-A ? 查看帮助
  • Ctrl-A d 断开 screen 并让其在后台运行(可以使用 screen -r 重新进入)

Konsole

 title=

Konsole 是 KDE Plasma 桌面使用的终端应用程序。和 KDE 一样,Konsole 也以高度可定制、功能强大的特点而著称。

tmux、GNU Screen 类似,Konsole 也具有拆分屏幕的功能。由于 Konsole 是图形界面的终端,因此还可以用鼠标来控制它的屏幕拆分。

Konsole 的屏幕拆分功能在“ 查看 View ”菜单中。它也支持竖直和水平方向的拆分,只要点击鼠标就可以切换到另一个面板上。每个面板都是一个独立的终端,因此都可以拥有独立的主题和标签页。

Konsole 和 tmux、GNU Screen 最大的不同之处在于不能断开和重新连接 Konsole。除非使用远程桌面软件,否则只能在打开 Konsole 时使用,这一点和大多数图形界面应用程序是一样的。

Emacs

 title=

严格来说,Emacs 并不算是一个终端复用工具,但它的使用界面支持拆分和调整大小,同时还带有一个内建的终端。

如果 Emacs 是你日常使用的文本编辑器,你就可以在不关闭编辑器的情况下,在不同的应用程序之间轻松互相切换。由于 Emacs eshell 模块是通过 eLISP 实现的,因此你可以在 Emacs 中使用相同的命令进行交互,让一些繁琐的操作变得更为简单。

如果你是在图形界面中使用 Emacs,还可以使用鼠标进行操作。例如通过点击切换面板、用鼠标调整拆分屏幕的的大小等等。尽管如此,键盘的操作速度还是更快,因此记住一些键盘快捷键还是很有必要的。

Emacs 的一些重要快捷键包括:

  • Ctrl-X 3 竖直拆分屏幕(两个 Shell 分别位于左右)
  • Ctrl-X 2 水平拆分屏幕(两个 Shell 分别位于上下)
  • Ctrl-X O (大写字母 O)切换到另一个 Shell(你也可以使用鼠标操作)
  • Ctrl-X 0 (数字 0)关闭当前面板

如果你运行了 emacs-client 的话,就可以像 tmux 和 GNU Screen 一样断开和重新连接到 Emacs 了。

窗口管理器

 title=

除了文本编辑器之外,一些 Linux 桌面也同样具有拆分屏幕、加载终端这样的功能。例如 RatpoisonHerbsluftwm、i3、Awesome,甚至是启用了特定设置的 KDE Plasma 桌面,都可以将多个应用程序在桌面上分块显示。

这些桌面可以让各个应用程序占据屏幕的固定位置,而不是浮在你的桌面“之上”,因此你可以在多个应用程序窗口之间轻松切换。你还可以打开多个终端,排布成网格,就像终端复用工具一样。更进一步,你还可以在你的桌面复用工具中加载一个终端复用工具。

而且,没有什么可以阻止你在里面载入 Emacs 并分割缓冲区。没有人知道,如果你把它更进一步,会发生什么,大多数 Linux 用户不会外传这种秘密。

tmux、GNU Screen 不同,你在断开与桌面的连接后无法重新连接到同一个桌面会话,除非你使用了远程桌面软件进行连接。

更多选择

除了上面介绍到的工具以外,还有诸如 Tilix、Terminator 这样的终端模拟器,它们同样可以实现屏幕拆分、嵌入终端组件等功能。欢迎在评论区分享你喜欢的终端拆分工具。


via: https://opensource.com/article/20/5/split-terminal

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

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

防火墙是你的计算机防止网络入侵的第一道屏障。为确保你的安全,请下载我们的备忘单。

合理的防火墙是你的计算机防止网络入侵的第一道屏障。你在家里上网,通常互联网服务提供会在路由中搭建一层防火墙。当你离开家时,那么你计算机上的那层防火墙就是仅有的一层,所以配置和控制好你 Linux 电脑上的防火墙很重要。如果你维护一台 Linux 服务器,那么知道怎么去管理你的防火墙同样重要,只要掌握了这些知识你才能保护你的服务器免于本地或远程非法流量的入侵。

安装防火墙

很多 Linux 发行版本已经自带了防火墙,通常是 iptables。它很强大并可以自定义,但配置起来有点复杂。幸运的是,有开发者写出了一些前端程序来帮助用户控制防火墙,而不需要写冗长的 iptables 规则。

在 Fedora、CentOS、Red Hat 和一些类似的发行版本上,默认安装的防火墙软件是 firewalld,通过 firewall-cmd 命令来配置和控制。在 Debian 和大部分其他发行版上,可以从你的软件仓库安装 firewalld。Ubuntu 自带的是 简单防火墙 Uncomplicated Firewall (ufw),所以要使用 firewalld,你必须启用 universe 软件仓库:

$ sudo add-apt-repository universe
$ sudo apt install firewalld

你还需要停用 ufw:

$ sudo systemctl disable ufw

没有理由不用 ufw。它是一个强大的防火墙前端。然而,本文重点讲 firewalld,因为大部分发行版都支持它而且它集成到了 systemd,systemd 是几乎所有发行版都自带的。

不管你的发行版是哪个,都要先激活防火墙才能让它生效,而且需要在启动时加载:

$ sudo systemctl enable --now firewalld

理解防火墙的域

Firewalld 旨在让防火墙的配置工作尽可能简单。它通过建立 zone 来实现这个目标。一个域是一组的合理、通用的规则,这些规则适配大部分用户的日常需求。默认情况下有九个域。

  • trusted:接受所有的连接。这是最不偏执的防火墙设置,只能用在一个完全信任的环境中,如测试实验室或网络中相互都认识的家庭网络中。
  • homeworkinternal:在这三个域中,接受大部分进来的连接。它们各自排除了预期不活跃的端口进来的流量。这三个都适合用于家庭环境中,因为在家庭环境中不会出现端口不确定的网络流量,在家庭网络中你一般可以信任其他的用户。
  • public:用于公共区域内。这是个偏执的设置,当你不信任网络中的其他计算机时使用。只能接收选定的常见和最安全的进入连接。
  • dmz:DMZ 表示隔离区。这个域多用于可公开访问的、位于机构的外部网络、对内网访问受限的计算机。对于个人计算机,它没什么用,但是对某类服务器来说它是个很重要的选项。
  • external:用于外部网络,会开启伪装(你的私有网络的地址被映射到一个外网 IP 地址,并隐藏起来)。跟 DMZ 类似,仅接受经过选择的传入连接,包括 SSH。
  • block:仅接收在本系统中初始化的网络连接。接收到的任何网络连接都会被 icmp-host-prohibited 信息拒绝。这个一个极度偏执的设置,对于某类服务器或处于不信任或不安全的环境中的个人计算机来说很重要。
  • drop:接收的所有网络包都被丢弃,没有任何回复。仅能有发送出去的网络连接。比这个设置更极端的办法,唯有关闭 WiFi 和拔掉网线。

你可以查看你发行版本的所有域,或通过配置文件 /usr/lib/firewalld/zones 来查看管理员设置。举个例子:下面是 Fefora 31 自带的 FedoraWorkstation 域:

$ cat /usr/lib/firewalld/zones/FedoraWorkstation.xml
<?xml version="1.0" encoding="utf-8"?>
<zone>
  <short>Fedora Workstation</short>
  <description>Unsolicited incoming network packets are rejected from port 1 to 1024, except for select network services. Incoming packets that are related to outgoing network connections are accepted. Outgoing network connections are allowed.</description>
  <service name="dhcpv6-client"/>
  <service name="ssh"/>
  <service name="samba-client"/>
  <port protocol="udp" port="1025-65535"/>
  <port protocol="tcp" port="1025-65535"/>
</zone>

获取当前的域

任何时候你都可以通过 --get-active-zones 选项来查看你处于哪个域:

$ sudo firewall-cmd --get-active-zones

输出结果中,会有当前活跃的域的名字和分配给它的网络接口。笔记本电脑上,在默认域中通常意味着你有个 WiFi 卡:

FedoraWorkstation
  interfaces: wlp61s0

修改你当前的域

要更改你的域,请将网络接口重新分配到不同的域。例如,把例子中的 wlp61s0 卡修改为 public 域:

$ sudo firewall-cmd --change-interface=wlp61s0 --zone=public

你可以在任何时候、任何理由改变一个接口的活动域 —— 无论你是要去咖啡馆,觉得需要增加笔记本的安全策略,还是要去上班,需要打开一些端口进入内网,或者其他原因。在你凭记忆学会 firewall-cmd 命令之前,你只要记住了关键词 changezone,就可以慢慢掌握,因为按下 Tab 时,它的选项会自动补全。

更多信息

你可以用你的防火墙干更多的事,比如自定义已存在的域,设置默认域,等等。你对防火墙越了解,你在网上的活动就越安全,所以我们创建了一个备忘单便于速查和参考。


via: https://opensource.com/article/20/2/firewall-cheat-sheet

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

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

这篇文章是 Linux 桌面 24 天特别系列的一部分。如果你想来一次有趣的时光之旅,ROX 桌面非常值得一试。

ROX 桌面已经不再积极开发,而它的遗留问题至今仍然存在,但即使在它活跃开发的时候,它也是一个另类的 Linux 桌面。当其他的桌面感觉与旧式的 Unix 或 Windows 界面大致相似时,ROX 则属于 BeOS、AmigaOS 和 RISC OS 桌面阵营。

它专注于拖放式操作(这使得它的可访问性对某些用户来说并不理想)、点击式操作、弹出式上下文菜单,以及一个独特的应用程序目录系统,无需安装即可运行本地应用程序。

安装 ROX

如今,ROX 基本上都被遗弃了,只剩下一点残渣碎片留给用户自己去收集整理。幸运的是,这个难题相对来说比较容易解决,但是当你在发行版的软件仓库中找到 ROX 桌面的碎片时,不要被迷惑了,因为那并不是 ROX 桌面全部的碎片。ROX 常用的部分 —— 文件管理器(ROX-Filer)和终端(ROXTerm) —— 似乎在大多数流行的发行版软件仓库中都有存在,你可以将它们作为独立的应用程序安装(并使用)。然而,要运行 ROX 桌面,你必须同时安装 ROX-Session 和它所依赖的库。

我在 Slackware 14.2 上安装了 ROX,但它应该可以在任何 Linux 或 BSD 系统上运行。

首先,你必须从其版本库中安装 ROX-lib2。你要安装 ROX-lib2,按照它的理念,只需下载tarball、解压,然后将 ROX-lib 目录移动到 /usr/local/lib 下就行。

接下来,你要安装 ROX-Session。这可能需要从源码中编译,因为它很可能不在你的软件仓库中。编译过程需要编译工具,这些工具在 Slackware 上是默认提供的,但在其他发行版中往往会被省略,以节省初始下载空间。根据你的发行版不同,你必须安装的包的名称也不同,所以请参考文档来了解具体内容。例如,在 Debian 发行版中,你可以在 Debian 的 wiki 中了解构建需求,而在 Fedora 发行版中,请参考 Fedora 的文档。安装了构建工具后,执行自定义的 ROX-Session 构建脚本。

$ ./AppRun

这个脚本会自己管理构建和安装,并提示你需要 root 权限,以在你的登录屏上将其添加为一个选项。

如果你还没有从你的软件库中安装 ROX-Filer,请在继续之前安装。

这些组件共同组成了一个完整的 ROX 桌面。要登录到新桌面,请从当前桌面会话中注销。默认情况下,你的会话管理器(KDM、GDM、LightDM 或 XDM,视你的设置而定)会继续登录到你之前的桌面,所以在登录前必须覆盖。

使用 SDDM:

使用 GDM:

ROX 桌面特性

ROX 桌面默认情况下很简单,屏幕底部有一个面板,桌面上有一个通往主目录的快捷方式图标。面板中包含了一些常用位置的快捷方式。这就是 ROX 桌面的全部功能,至少在安装后就是这样。如果你想要时钟、日历或系统托盘,你需要找到提供这些功能的应用程序。

 title=

虽然没有任务栏,但当你将窗口最小化时,它就会成为桌面上的一个临时图标。你可以点击该图标,将其窗口恢复到以前的大小和位置。

面板也可以进行一些修改。你可以在其中放置不同的快捷方式,甚至可以创建自己的小程序。

它没有应用菜单,也没有上下文菜单中的应用快捷方式。相反,你可以手动导航到 /usr/share/applications,或者你可以将你的应用目录或目录添加到 ROX 面板中。

 title=

ROX 桌面的工作流程集中在鼠标驱动上,让人联想到 Mac OS 7.5 和 8 系统。通过 ROX-filer,你可以管理权限、文件管理、 内省 introspection 、脚本启动、后台设置,以及几乎所有你能想到的东西,只要你有足够的耐心,就可以实现点击式的交互。对于高级用户来说,这似乎很慢,但 ROX 设法让它变得相对无痛,而且非常直观。

应用程序目录、AppRun 和 AppImage

ROX 桌面有一个优雅的惯例,按照此惯例,包含一个名为 AppRun 的脚本的目录就可以像一个应用程序一样被执行。这意味着,要制作一个 ROX 应用程序,你所要做的就是将代码编译到一个目录中,将一个名为AppRun 的脚本放在该目录的根目录下,来执行你所编译的二进制文件,然后将该目录标记为可执行即可。ROX-Filer 会按照你设置的方式来显示一个目录,并以特殊的图标和颜色显示一个目录。当你点击一个应用程序目录,ROX-Filer 会自动运行里面的 AppRun 脚本。它的外观和行为就像一个已经安装好的应用程序,但它是在用户的主目录下的本地目录,不需要特殊的权限。

这是一个方便的功能,但它是那些你使用时感觉很好的小功能之一,因为它很容易做到。它绝不是必要的,它只是比在本地建立一个应用程序,将目录隐藏在某个不显眼的地方,并建立一个快速的 .desktop 文件作为你的启动器,要领先了几步。然而,应用程序目录的概念已经当做灵感被 AppImage 打包系统所 借鉴

为什么应该试试 ROX 桌面

把 ROX 设置好并使用是有些困难的,它似乎真的被抛弃了。然而,它的遗产在今天以多种方式继续存在,它是 Linux 历史上的一段迷人而有趣的历史。它可能不会成为你的主要桌面,但如果你想来一次有趣的回溯之旅,那么 ROX 非常值得一试。探索它、定制它,看看它包含了哪些巧妙的想法。也许还有一些隐藏的宝石可以让开源社区受益。


via: https://opensource.com/article/19/12/linux-rox-desktop

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

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

在 Git 15 周年之际,了解为什么 Git 是保持软件行业运行的重要组成部分。

如果说过去二十年来有什么东西改变了软件,那么 Git 肯定位列榜首。

如果你没有亲自使用过 Git,你可能会认为它只是一种技术时尚,只是因为它是由 Linux 项目的创始人创建的,所以在开发者中只是一个偶然的宠儿。这或许有一定的道理,但 Git 确实取得了一些其他行业所没有的成就。有了 Git,分布在世界各地的开发者们可以在同一时间对同一段代码进行工作,并记录下每一次修改的历史,然后将所有的工作合并到一起,形成一个成品。由于这件事情非常复杂,所以这个工具本身也会变得很复杂,但归根结底,它是维持软件行业运行的重要组成部分。

无论你是否了解 Git,如果你足够深入的研究开源软件,或者进入计算机科学领域,都有可能遇到它。无论你使用 Git 只是为了下载一个安装包,还是每天与它交互来管理代码,了解更多关于它的知识,都会对你有很大的启发和帮助。

Git 术语

与任何专业工具一样,Git 中也有很多行话。像“ 克隆 clone ”、“ 合并 merge ”和“ 变基 rebase ”这样的术语,最起码也是神秘的,而更糟的情况下会令人感到排斥。试图理解这些术语的含义可能会让人不知所措,但如果你从 Matthew Broberg 的优秀文章《Git 术语基础》中得到一点指导,就不会这样了。只需快速阅读一下,你就能真正理解地听懂关于 Git 的对话。

Git 入门

如果你需要知道如何使用 Git,那么我自己的关于使用 Git 的入门文章系列是一个很好的开始。这些文章已经有几年的历史了,但就像许多 Linux 和 UNIX 技术一样,它的界面并没有发生很大的变化,所以这些文章和我写这些文章那时一样,在今天还是很有意义的。这一系列文章向你介绍了 Git 最基本的概念,并带领你完成创建仓库、提交文件、恢复文件、合并分支等过程。

常见的 Git 服务

Git 最常见的用途之一是公共的 Git 托管服务,比如 GitLab 和 GitHub。Kedar Vijay Kulkarni 在他的《如何在 Git 中克隆、修改、添加和删除文件》一文中,演示了大多数开发者使用 Git 执行的日常任务。这不是非开发者的必读书目,但对于任何想在公共 Git 托管服务上为项目做贡献的人来说,这篇文章是必读的。这篇文章专门针对的是 Github,因为它是当今最常见的平台之一,但其原理也适用于任何 Git 服务的 Web 前端,包括 GitLabGogsGitea 等流行的开源框架。

试试这个 Git 演练

与其漫无目的的探索,你是不是更喜欢在导游的带领下学习?有时候,学习一件事最简单的方法就是模仿别人的准确步骤。你知道最终的结果是肯定成功的,所以你在进行练习的时候会有信心,而你的大脑和手指也会得到重复的好处,从而建立起记忆。如果这是你的学习风格,那就跟着 Alan Formy-Duvall 的《Git 的实用学习练习》,找出成功的 Git 课程的感觉。

Git 应用程序

信不信由你,Git 的界面比你在终端输入的文字更多。显然,在线托管的 Git 有 Web 界面,但是你也可以在计算机上使用 Git 客户端。如果想获得更多的帮助,请阅读 Jesse Duffield 关于 Lazygit 的文章或 Olaf Anders 关于 Tig 的文章。要获得完整的图形应用程序体验,请阅读我有关 Git-colaSparkleshare 以及其它应用的文章。是的,甚至还有用于你的移动设备的界面

了解更多关于 Git 的信息

知识就是力量,所以不要让 Git 对你来说像个谜。无论你是直接使用它,还是只知道它的名字,或者你以前从未听说过它,现在都是了解 Git 的好时机。这里有很多资源可以帮助你了解它的工作原理、工作原理以及人们为什么这么喜欢它。潜入其中,按照自己的节奏来学习,并学会爱上 Git 吧!


via: https://opensource.com/article/20/4/get-started-git

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

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