mirror of
https://github.com/LCTT/TranslateProject.git
synced 2024-12-26 21:30:55 +08:00
Merge remote-tracking branch 'LCTT/master'
This commit is contained in:
commit
6ba1674f16
136
published/20170523 Best Websites to Download Linux Games.md
Normal file
136
published/20170523 Best Websites to Download Linux Games.md
Normal file
@ -0,0 +1,136 @@
|
||||
下载 Linux 游戏的最佳网站
|
||||
======
|
||||
|
||||
> 新接触 Linux 游戏并想知道从哪里来 **下载 Linux 游戏**?我们列出了最好的资源,在这里你既能 **下载免费的 Linux 游戏** ,也能购买优质的 Linux 游戏。
|
||||
|
||||
Linux 和游戏?从前,很难想象这两者走到一起。然而随着时间流逝,很多事情都在变化。到如今,有成千上万在 Linux 上可以玩的游戏,而大公司和独立开发者们正在开发更多的游戏。
|
||||
|
||||
[在 Linux 上玩游戏][1] 现在已经是现实。今天我们将去看看,你在哪里可以找到 Linux 平台游戏、搜索到你喜欢的游戏。
|
||||
|
||||
### 在哪里来下载 Linux 游戏?
|
||||
|
||||
![下载 Linux 游戏的网站][2]
|
||||
|
||||
首先,看看你的 Linux 发行版的软件中心(如果有的话)。在这里你也能找到大量的游戏。
|
||||
|
||||
但是,这不意味着你应该将自己的视野局限于软件中心上。让我们来为你列出一些可以下载 Linux 游戏网站。
|
||||
|
||||
#### 1. Steam
|
||||
|
||||
如果你是老练的玩家,你应该听过 Steam。如果你还不知道的话,没错,Steam 在 Linux 上也是可用的。Steam 推荐运行在 Ubuntu 上,但是它也能运行在其它主要的发行版上。如果你真的对 Steam 很狂热,这里甚至还有一个玩 Steam 游戏的专用操作系统:[SteamOS][3]。我们在上一年 [最佳的 Linux 游戏发行版][4] 文章中提及了它。
|
||||
|
||||
![Steam 商店][5]
|
||||
|
||||
Steam 有最大的 Linux 游戏商店。当写这篇文章的时候,在 Linux 平台上,确切地说有 3487 款游戏,这真的是很多了。你可以从宽广的类型中寻找游戏。至于 [数字版权管理(DRM)][6],大多数的 Steam 游戏都有某种 DRM 。
|
||||
|
||||
对于使用 Steam ,要么你必须在你的 Linux 系统上安装 [Steam 客户端][7],要么使用 SteamOS。Steam 的一个优势是,在初始化安装后,对于大多数的游戏,你不需要担心依赖关系和复杂的安装过程。 Steam 客户端将为你做这些繁重的任务。
|
||||
|
||||
- [Steam 商店][8]
|
||||
|
||||
#### 2. GOG
|
||||
|
||||
如果你只对免 DRM 的游戏感兴趣,GOG 收集了相当多的这种游戏。此刻,GOG 在它们的库中有 1978 种免 DRM 游戏。GOG 因它大量收集了免 DRM 游戏而闻名。
|
||||
|
||||
![GOG 商店][9]
|
||||
|
||||
GOG 游戏官方支持 Ubuntu LTS 版本和 Linux Mint。所以,Ubuntu 和它的衍生版在安装它们时将没有问题。在其他发行版上安装它们时可能需要一些额外的工作,例如,你需要安装正确的依赖关系。
|
||||
|
||||
从 GOG 中下载游戏,你不需要额外的客户端。所有购买的游戏都可在你的账户区内找到。你可以使用你最爱的下载管理器直接下载它们。
|
||||
|
||||
- [GOG 商店][10]
|
||||
|
||||
#### 3. Humble 商店
|
||||
|
||||
Humble 商店是另一个你可以查找各种各样 Linux 游戏的地方。在 Humble 商店中有免 DRM 和非免 DRM 的游戏。非免 DRM 游戏通常来自 Steam。在 Humble 商店中,当前有超过 1826 款 Linux 游戏。
|
||||
|
||||
![Humble 商店][11]
|
||||
|
||||
Humble 商店因另一个原因而著名。它们有一个被称为 [Humble 独立包][12]的活动,其中打包提供了一批游戏,带有令人不可抗拒的限时优惠。关于 Humble 的另一件事是,当你购买时,你的购买金额的 10% 将捐给慈善机构。
|
||||
|
||||
Humble 不需要额外的客户端来下载它们的游戏。
|
||||
|
||||
- [Humble 商店][13]
|
||||
|
||||
#### 4. itch.io 商店
|
||||
|
||||
itch.io 是给独立数字创作者的一个开放市场,其致力于独立视频游戏。itch.io 有一些你能找到的最有趣、最独特的游戏。在 itch.io 的大多数游戏是免 DRM 的。
|
||||
|
||||
![itch.io 商店][14]
|
||||
|
||||
现今,itch.io 在它的商店中有 9514 款 Linux 平台的游戏。
|
||||
|
||||
itch.io 有它自己的 [客户端][15],可以轻松地下载、安装、更新和玩它们的游戏。
|
||||
|
||||
- [itch.io 商店][16]
|
||||
|
||||
#### 5. LGDB
|
||||
|
||||
LGDB 是 <ruby>Linux 游戏数据库<rt>Linux Game DataBase</rt></ruby>的缩写。虽然从技术上说它不是一个游戏商店,它收集有大量的 Linux 游戏,以及关于它们的各种各样的信息。每一款游戏都有你可以在哪里找到它们的链接。
|
||||
|
||||
![Linux 游戏数据库][17]
|
||||
|
||||
如今,在该数据库中有 2046 款游戏。它们也有很长的关于 [模拟器][18]、[工具][19] 和 [游戏引擎][20] 的列表。
|
||||
|
||||
- [LGDB][21]
|
||||
|
||||
#### 6. Game Jolt 商店
|
||||
|
||||
Game Jolt 有一个非常可观的集合,在它的库藏中大约有 5000 个 Linux 独立游戏。
|
||||
|
||||
![Game Jolt 商店][22]
|
||||
|
||||
Game Jolt 有一个(预览版)[客户端][23],可用于轻松地下载、安装、更新和玩游戏。
|
||||
|
||||
- [Game Jolt 商店][24]
|
||||
|
||||
### 其他
|
||||
|
||||
有很多其他的销售 Linux 游戏的商店。也有很多你能找到免费游戏的地方。这是它们中的两个:
|
||||
|
||||
* [Bundle Stars][25]:当前有 814 个 Linux 游戏和 31 个游戏包。
|
||||
* [GamersGate][26]:现在有 595 个 Linux 游戏。既有免 DRM 的,也有非免 DRM 的。
|
||||
|
||||
#### 应用商店、软件中心 & 软件库
|
||||
|
||||
Linux 发行版有它们自己的应用商店或软件库。尽管不是很多,但是在这里你也能找到各种各样的游戏。
|
||||
|
||||
今天到此为止。你知道这里有这么多 Linux 上可玩的游戏吗?你使用一些其他的网站来下载 Linux 游戏吗?与我们分享你的收藏。
|
||||
|
||||
--------------------------------------------------------------------------------
|
||||
|
||||
via: https://itsfoss.com/download-linux-games/
|
||||
|
||||
作者:[Munif Tanjim][a]
|
||||
译者:[robsean](https://github.com/robsean)
|
||||
校对:[wxy](https://github.com/wxy)
|
||||
|
||||
本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出
|
||||
|
||||
[a]: https://itsfoss.com/author/munif/
|
||||
[1]:https://linux.cn/article-7316-1.html
|
||||
[2]:https://itsfoss.com/wp-content/uploads/2017/05/download-linux-games-800x450.jpg
|
||||
[3]:http://store.steampowered.com/steamos/
|
||||
[4]:https://itsfoss.com/linux-gaming-distributions/
|
||||
[5]:https://itsfoss.com/wp-content/uploads/2017/05/Steam-Store-800x382.jpg
|
||||
[6]:https://www.wikiwand.com/en/Digital_rights_management
|
||||
[7]:http://store.steampowered.com/about/
|
||||
[8]:http://store.steampowered.com/linux
|
||||
[9]:https://itsfoss.com/wp-content/uploads/2017/05/GOG-Store-800x366.jpg
|
||||
[10]:https://www.gog.com/games?system=lin_mint,lin_ubuntu
|
||||
[11]:https://itsfoss.com/wp-content/uploads/2017/05/The-Humble-Store-800x393.jpg
|
||||
[12]:https://www.humblebundle.com/?partner=itsfoss
|
||||
[13]:https://www.humblebundle.com/store?partner=itsfoss
|
||||
[14]:https://itsfoss.com/wp-content/uploads/2017/05/itch.io-Store-800x485.jpg
|
||||
[15]:https://itch.io/app
|
||||
[16]:https://itch.io/games/platform-linux
|
||||
[17]:https://itsfoss.com/wp-content/uploads/2017/05/LGDB-800x304.jpg
|
||||
[18]:https://lgdb.org/emulators
|
||||
[19]:https://lgdb.org/tools
|
||||
[20]:https://lgdb.org/engines
|
||||
[21]:https://lgdb.org/games
|
||||
[22]:https://itsfoss.com/wp-content/uploads/2017/05/GameJolt-Store-800x357.jpg
|
||||
[23]:http://gamejolt.com/client
|
||||
[24]:http://gamejolt.com/games/best?os=linux
|
||||
[25]:https://www.bundlestars.com/en/games?page=1&platforms=Linux
|
||||
[26]:https://www.gamersgate.com/games?state=available
|
||||
[27]:https://itsfoss.com/linux-gaming-problems/
|
@ -1,15 +1,15 @@
|
||||
Dbxfs - 在 Linux 中本地挂载 Dropbox 文件夹作为虚拟文件系统
|
||||
dbxfs:在 Linux 中本地挂载 Dropbox 文件夹
|
||||
======
|
||||
|
||||
![](https://www.ostechnix.com/wp-content/uploads/2018/10/dbxfs-720x340.png)
|
||||
|
||||
不久前,我们总结了所有**[在本地挂载 Google Drive][1]**作为虚拟文件系统,并从 Linux 系统访问存储在 Google Drive 中的文件的方法。今天,我们将学习使用 **dbxfs**将 Dropbox 文件夹挂载到本地文件系统中。dbxfs 用于在类 Unix 操作系统中本地挂载 Dropbox 文件夹作为虚拟文件系统。虽然在 Linux 中很容易[**安装 Dropbox 客户端**][2],但这种方法与官方方法略有不同。它是一个命令行 dropbox 客户端,且无需磁盘空间即可访问。dbxfs 是免费、开源的,并且是用 Python 3.5+ 编写的。
|
||||
不久前,我们总结了所有 [在本地挂载 Google Drive][1] 作为虚拟文件系统,并从 Linux 系统访问存储在 Google Drive 中的文件的方法。今天,我们将学习使用 `dbxfs` 将 Dropbox 文件夹挂载到本地文件系统中。`dbxfs` 用于在类 Unix 操作系统中本地挂载 Dropbox 文件夹作为虚拟文件系统。虽然在 Linux 中很容易[安装 Dropbox 客户端][2],但这种方法与官方方法略有不同。它是一个命令行 dropbox 客户端,且无需磁盘空间即可访问。`dbxfs` 是自由开源的,并且是用 Python 3.5+ 编写的。
|
||||
|
||||
### 安装 dbxfs
|
||||
|
||||
dbxfs 官方支持 Linux 和 Mac OS。但是,它应该适用于任何提供 **FUSE 兼容库**或能够挂载 **SMB** 共享的 POSIX 系统。由于它是用 Python 3.5 编写的,因此可以使用 **pip3** 包管理器进行安装。如果尚未安装 PIP,请参阅以下指南。
|
||||
`dbxfs` 官方支持 Linux 和 Mac OS。但是,它应该适用于任何提供 **FUSE 兼容库**或能够挂载 SMB 共享的 POSIX 系统。由于它是用 Python 3.5 编写的,因此可以使用 pip3 包管理器进行安装。如果尚未安装 pip,请参阅以下指南。
|
||||
|
||||
[如何使用 pip 管理 Python 包][13]
|
||||
- [如何使用 pip 管理 Python 包][13]
|
||||
|
||||
并且也要安装 FUSE 库。
|
||||
|
||||
@ -17,21 +17,18 @@ dbxfs 官方支持 Linux 和 Mac OS。但是,它应该适用于任何提供 **
|
||||
|
||||
```
|
||||
$ sudo apt install libfuse2
|
||||
|
||||
```
|
||||
|
||||
在 Fedora 上:
|
||||
|
||||
```
|
||||
$ sudo dnf install fuse
|
||||
|
||||
```
|
||||
|
||||
安装完所有必需的依赖项后,运行以下命令以安装 dbxfs:
|
||||
安装完所有必需的依赖项后,运行以下命令以安装 `dbxfs`:
|
||||
|
||||
```
|
||||
$ pip3 install dbxfs
|
||||
|
||||
```
|
||||
|
||||
### 在本地挂载 Dropbox 文件夹
|
||||
@ -40,29 +37,27 @@ $ pip3 install dbxfs
|
||||
|
||||
```
|
||||
$ mkdir ~/mydropbox
|
||||
|
||||
```
|
||||
|
||||
然后,使用 dbxfs 在本地挂载 dropbox 文件夹,如下所示:
|
||||
然后,使用 `dbxfs` 在本地挂载 dropbox 文件夹,如下所示:
|
||||
|
||||
```
|
||||
$ dbxfs ~/mydropbox
|
||||
|
||||
```
|
||||
|
||||
你将被要求生成一个访问令牌:
|
||||
|
||||
![](https://www.ostechnix.com/wp-content/uploads/2018/10/Generate-access-token-1.png)
|
||||
|
||||
要生成访问令牌,只需在 Web 浏览器中输入上面输出的 URL,然后单击**允许** 以授权 Dropbox 访问。你需要登录 Dropbox 帐户才能完成授权过程。
|
||||
要生成访问令牌,只需在 Web 浏览器中输入上面输出的 URL,然后单击 **允许** 以授权 Dropbox 访问。你需要登录 Dropbox 帐户才能完成授权过程。
|
||||
|
||||
下一个页面将生成新的授权码。复制代码并返回终端将其粘贴到 cli-dbxfs 提示符中以完成该过程。
|
||||
|
||||
然后,系统会要求你保存凭据以供将来访问。无论你是要保存还是拒绝,输入 **Y** 或 **N**。然后,你需要为新的访问令牌输入两次密码。
|
||||
然后,系统会要求你保存凭据以供将来访问。根据你是要保存还是拒绝,输入 `Y` 或 `N`。然后,你需要为新的访问令牌输入两次密码。
|
||||
|
||||
最后,输入 **Y** 接受 **“/home/username/mydropbox”** 作为默认挂载点。如果你要设置不同的路径,输入 **N** 并输入你选择的位置。
|
||||
最后,输入 `Y` 接受 `/home/username/mydropbox` 作为默认挂载点。如果你要设置不同的路径,输入 `N` 并输入你选择的位置。
|
||||
|
||||
[![Generate access token 2][3]][4]
|
||||
![Generate access token 2][4]
|
||||
|
||||
完成了!从现在开始,你可以看到你的 Dropbox 文件夹已挂载到本地文件系统中。
|
||||
|
||||
@ -70,7 +65,7 @@ $ dbxfs ~/mydropbox
|
||||
|
||||
### 更改访问令牌存储路径
|
||||
|
||||
默认情况下,dbxfs 会将 Dropbox 访问令牌存储在系统密钥环或加密文件中。但是,你可能希望将其存储在 **gpg** 加密文件或其他地方。如果是这样,请在 [Dropbox 开发者应用控制台][5]上创建个人应用来获取访问令牌。
|
||||
默认情况下,`dbxfs` 会将 Dropbox 访问令牌存储在系统密钥环或加密文件中。但是,你可能希望将其存储在 gpg 加密文件或其他地方。如果是这样,请在 [Dropbox 开发者应用控制台][5]上创建个人应用来获取访问令牌。
|
||||
|
||||
![](https://www.ostechnix.com/wp-content/uploads/2018/10/access-token.png)
|
||||
|
||||
@ -78,30 +73,27 @@ $ dbxfs ~/mydropbox
|
||||
|
||||
![](https://www.ostechnix.com/wp-content/uploads/2018/10/Create-a-new-app.png)
|
||||
|
||||
创建访问令牌后,使用任何你选择的加密工具对其进行加密,例如 [**Cryptomater**][6]、[**Cryptkeeper**][7]、[**CryptGo**][8]、[**Cryptr**][9]、[**Tomb**][10]、[**Toplip**][11] 和 [**GnuPG**][12] 等,并在你喜欢的位置保存。
|
||||
创建访问令牌后,使用任何你选择的加密工具对其进行加密,例如 [Cryptomater][6]、[Cryptkeeper][7]、[CryptGo][8]、[Cryptr][9]、[Tomb][10]、[Toplip][11] 和 [**GnuPG][12] 等,并在你喜欢的位置保存。
|
||||
|
||||
接下来编辑 dbxfs 配置文件并添加以下行:
|
||||
|
||||
```
|
||||
"access_token_command": ["gpg", "--decrypt", "/path/to/access/token/file.gpg"]
|
||||
|
||||
```
|
||||
|
||||
你可以通过运行以下命令找到 dbxfs 配置文件:
|
||||
|
||||
```
|
||||
$ dbxfs --print-default-config-file
|
||||
|
||||
```
|
||||
|
||||
有关更多详细信息,请参阅 dbxfs 帮助:
|
||||
|
||||
```
|
||||
$ dbxfs -h
|
||||
|
||||
```
|
||||
|
||||
如你所见,使用 dbxfs 在你的文件系统中本地挂载 Dropfox 文件夹没什么大不了的。经过测试,dbxfs 如常工作。如果你有兴趣了解它是如何工作的,请尝试一下,并在下面的评论栏告诉我们你的体验。
|
||||
如你所见,使用 `dbxfs` 在你的文件系统中本地挂载 Dropfox 文件夹并不复杂。经过测试,`dbxfs` 如常工作。如果你有兴趣了解它是如何工作的,请尝试一下,并在下面的评论栏告诉我们你的体验。
|
||||
|
||||
就是这些了。希望这篇文章有用。还有更多好东西。敬请期待!
|
||||
|
||||
@ -116,7 +108,7 @@ via: https://www.ostechnix.com/dbxfs-mount-dropbox-folder-locally-as-virtual-fil
|
||||
作者:[SK][a]
|
||||
选题:[lujun9972](https://github.com/lujun9972)
|
||||
译者:[geekpi](https://github.com/geekpi)
|
||||
校对:[校对者ID](https://github.com/校对者ID)
|
||||
校对:[wxy](https://github.com/wxy)
|
||||
|
||||
本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出
|
||||
|
||||
@ -133,4 +125,4 @@ via: https://www.ostechnix.com/dbxfs-mount-dropbox-folder-locally-as-virtual-fil
|
||||
[10]: https://www.ostechnix.com/tomb-file-encryption-tool-protect-secret-files-linux/
|
||||
[11]: https://www.ostechnix.com/toplip-strong-file-encryption-decryption-cli-utility/
|
||||
[12]: https://www.ostechnix.com/an-easy-way-to-encrypt-and-decrypt-files-from-commandline-in-linux/
|
||||
[13]:https://www.ostechnix.com/manage-python-packages-using-pip/
|
||||
[13]:https://www.ostechnix.com/manage-python-packages-using-pip/
|
@ -1,28 +1,30 @@
|
||||
[#]: collector: (lujun9972)
|
||||
[#]: translator: (geekpi)
|
||||
[#]: reviewer: ( )
|
||||
[#]: publisher: ( )
|
||||
[#]: url: ( )
|
||||
[#]: reviewer: (wxy)
|
||||
[#]: publisher: (wxy)
|
||||
[#]: url: (https://linux.cn/article-10412-1.html)
|
||||
[#]: subject: (Watch YouTube videos at the Linux terminal)
|
||||
[#]: via: (https://opensource.com/article/18/12/linux-toy-youtube-dl)
|
||||
[#]: author: (Jason Baker https://opensource.com/users/jason-baker)
|
||||
|
||||
在 Linux 终端上观看 YouTube 视频
|
||||
======
|
||||
认为视频只能在 GUI 下看么?再想想。
|
||||
|
||||
> 视频只能在 GUI 下看么?再想想。
|
||||
|
||||
![](https://opensource.com/sites/default/files/styles/image-full-size/public/uploads/linux-toy-youtube-dl.png?itok=HYR5vU2a)
|
||||
|
||||
我们即将结束为期 24 天的 Linux 命令行玩具日历。希望你一直在看,如果没有,请回到[这里][1]开始,自己试试。你会发现 Linux 终端有很多游戏,消遣和奇怪的东西。
|
||||
|
||||
虽然你之前可能已经看过我们日历中的一些玩具,但我们希望对每个人至少有一个新事物。
|
||||
|
||||
今天我们要在昨天的玩具 [MPlayer][2] 上再加上一个 [**youtube-dl**][3]。
|
||||
今天我们要在昨天的玩具 [MPlayer][2] 上再加上一个 [youtube-dl][3]。
|
||||
|
||||
正如其名称所暗示的那样,**youtube-dl** 是一个用于下载 YouTube 视频的命令行程序,但它也可以从其他许多站点下载视频,而且它是一个有着[丰富文档][4]的功能齐全的程序,从而使视频获取变得容易。注意:请勿在任何违反你所在司法辖区的版权法的情况下使用 **youtube-dl**。
|
||||
正如其名称所暗示的那样,`youtube-dl` 是一个用于下载 YouTube 视频的命令行程序,但它也可以从其他许多站点下载视频,而且它是一个有着[丰富文档][4]的功能齐全的程序,从而使视频获取变得容易。注意:请勿在任何违反你所在司法辖区的版权法的情况下使用 `youtube-dl`。
|
||||
|
||||
**youtube-dl** 使用的是 [Unlicense][5] 这个公共领域许可,类似于 Creative Common 的 [CC0][6]。这里还有哪些公共领域贡献适用于开源领域的[法律意见][7],但它通常被认为与现有的开源许可证兼容,即使是不推荐使用它的组织也是如此。
|
||||
`youtube-dl` 使用的是 [Unlicense][5] 这个公共领域许可,类似于 Creative Common 的 [CC0][6]。这里还有哪些公共领域贡献适用于开源领域的[法律意见][7],但它通常被认为与现有的开源许可证兼容,即使是不推荐使用它的组织也是如此。
|
||||
|
||||
最简单地,我们将使用 **youtube-dl** 来获取视频以便在终端中播放。首先,使用适用于你发行版的方法[安装][8]它。对我来说,在 Fedora 中,它被打包在我的仓库中,因此安装非常简单:
|
||||
最简单地,我们将使用 `youtube-dl` 来获取视频以便在终端中播放。首先,使用适用于你发行版的方法[安装][8]它。对我来说,在 Fedora 中,它被打包在我的仓库中,因此安装非常简单:
|
||||
|
||||
```
|
||||
$ sudo dnf install youtube-dl
|
||||
@ -34,21 +36,22 @@ $ sudo dnf install youtube-dl
|
||||
$ youtube-dl pec8P5K4s8c -o fireplace.mp4
|
||||
```
|
||||
|
||||
如果你昨天没有安装 [MPlayer][2],请继续安装好,如果你之前没有安装 **libcaca** 则需要安装它。如果你直接用 MPlayer 在命令行中播放视频 ( **$****mplayer fireplace.webm** ),它能够播放,但是会在一个自己的窗口中,这不是我们想要的。
|
||||
如果你昨天没有安装 [MPlayer][2],请继续安装好,如果你之前没有安装 libcaca 则需要安装它。如果你直接用 MPlayer 在命令行中播放视频 ( `$ mplayer fireplace.webm` ),它能够播放,但是会在一个自己的窗口中,这不是我们想要的。
|
||||
|
||||
首先,我设置将 **libcaca** 强制使用 **ncurses** 作为显示驱动,使输出保持在我的终端:
|
||||
首先,我设置将 libcaca 强制使用 ncurses 作为显示驱动,使输出保持在我的终端:
|
||||
|
||||
```
|
||||
$ export CACA_DRIVER=ncurses
|
||||
```
|
||||
|
||||
然后,我放大了终端(“像素”越多越好),并使用以下命令播放文件(强制使用 **libcaca**并静默 MPlayer 的文本输出):
|
||||
然后,我放大了终端(“像素”越多越好),并使用以下命令播放文件(强制使用 libcaca 并静默 MPlayer 的文本输出):
|
||||
|
||||
```
|
||||
$ mplayer -really-quiet -vo caca fireplace.mp4
|
||||
```
|
||||
|
||||
这就完成了!
|
||||
|
||||
![](https://opensource.com/sites/default/files/uploads/linux-toy-youtube-dl.gif)
|
||||
|
||||
你有特别喜欢的命令行小玩具需要我介绍的吗?提交今年的建议有点晚了,但我们仍然希望在新的一年里有一些很酷的命令行玩具。请在下面的评论中告诉我,我会查看的。让我知道你对今天的玩具有何看法。
|
||||
@ -62,14 +65,14 @@ via: https://opensource.com/article/18/12/linux-toy-youtube-dl
|
||||
作者:[Jason Baker][a]
|
||||
选题:[lujun9972][b]
|
||||
译者:[geekpi](https://github.com/geekpi)
|
||||
校对:[校对者ID](https://github.com/校对者ID)
|
||||
校对:[wxy](https://github.com/wxy)
|
||||
|
||||
本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出
|
||||
|
||||
[a]: https://opensource.com/users/jason-baker
|
||||
[b]: https://github.com/lujun9972
|
||||
[1]: https://opensource.com/article/18/12/linux-toy-boxes
|
||||
[2]: https://opensource.com/article/18/12/linux-toy-mplayer
|
||||
[2]: https://linux.cn/article-10393-1.html
|
||||
[3]: https://rg3.github.io/youtube-dl/
|
||||
[4]: https://github.com/rg3/youtube-dl/blob/master/README.md#readme
|
||||
[5]: https://unlicense.org/
|
||||
@ -77,4 +80,4 @@ via: https://opensource.com/article/18/12/linux-toy-youtube-dl
|
||||
[7]: https://opensource.org/faq#public-domain
|
||||
[8]: https://github.com/rg3/youtube-dl/blob/master/README.md#installation
|
||||
[9]: https://www.youtube.com/watch?v=pec8P5K4s8c
|
||||
[10]: https://www.youtube.com/channel/UCwwaepmpWZVDd605MIRC20A
|
||||
[10]: https://www.youtube.com/channel/UCwwaepmpWZVDd605MIRC20A
|
@ -1,12 +1,3 @@
|
||||
[#]: collector: (lujun9972)
|
||||
[#]: translator: (runningwater)
|
||||
[#]: reviewer: ( )
|
||||
[#]: publisher: ( )
|
||||
[#]: subject: (The Rise and Rise of JSON)
|
||||
[#]: via: ( https://twobithistory.org/2017/09/21/the-rise-and-rise-of-json.html)
|
||||
[#]: author: (https://twobithistory.org)
|
||||
[#]: url: ( )
|
||||
|
||||
The Rise and Rise of JSON
|
||||
======
|
||||
JSON has taken over the world. Today, when any two applications communicate with each other across the internet, odds are they do so using JSON. It has been adopted by all the big players: Of the ten most popular web APIs, a list consisting mostly of APIs offered by major companies like Google, Facebook, and Twitter, only one API exposes data in XML rather than JSON. Twitter, to take an illustrative example from that list, supported XML until 2013, when it released a new version of its API that dropped XML in favor of using JSON exclusively. JSON has also been widely adopted by the programming rank and file: According to Stack Overflow, a question and answer site for programmers, more questions are now asked about JSON than about any other data interchange format.
|
||||
@ -89,7 +80,7 @@ via: https://twobithistory.org/2017/09/21/the-rise-and-rise-of-json.html
|
||||
|
||||
作者:[Two-Bit History][a]
|
||||
选题:[lujun9972][b]
|
||||
译者:[runningwater](https://github.com/runningwater)
|
||||
译者:[译者ID](https://github.com/译者ID)
|
||||
校对:[校对者ID](https://github.com/校对者ID)
|
||||
|
||||
本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出
|
||||
|
@ -1,5 +1,5 @@
|
||||
[#]: collector: (lujun9972)
|
||||
[#]: translator: ( )
|
||||
[#]: translator: (bestony)
|
||||
[#]: reviewer: ( )
|
||||
[#]: publisher: ( )
|
||||
[#]: url: ( )
|
||||
|
@ -0,0 +1,53 @@
|
||||
[#]: collector: (lujun9972)
|
||||
[#]: translator: ( )
|
||||
[#]: reviewer: ( )
|
||||
[#]: publisher: ( )
|
||||
[#]: url: ( )
|
||||
[#]: subject: (Computer Laboratory – Raspberry Pi: Lesson 0 Introduction)
|
||||
[#]: via: (https://www.cl.cam.ac.uk/projects/raspberrypi/tutorials/os/introduction.html)
|
||||
[#]: author: (Robert Mullins http://www.cl.cam.ac.uk/~rdm34)
|
||||
|
||||
Computer Laboratory – Raspberry Pi: Lesson 0 Introduction
|
||||
======
|
||||
|
||||
This introductory lesson does not contain a practical element, but exists to explain the basic concepts of what is an operating system, what is assembly code and other important basics. If you just want to get straight into practicals, it should be safe to skip this lesson.
|
||||
|
||||
### 1 Operating Systems
|
||||
|
||||
An operating system is just a very complicated program. It has the job of organising other programs on a computer, including sharing the computer's time, memory, hardware and other resources. Some big families of desktop operating systems that you may have heard of include GNU/Linux, Mac OS X and Microsoft Windows. Other devices also need operating systems such as phones, which may use operating systems such as Android, iOS and Windows Phone.[1]
|
||||
|
||||
Since the operating system has to interact with the hardware on a computer system, it also has to have specific knowledge of the hardware on a system. To allow operating systems to be used on a variety of computers, the concept of **drivers** was invented. Drivers are small bits of code that can be added and removed from the operating system in order to allow the operating system to talk to a particular piece of hardware. In this course, we do not cover how to create such removable drivers, and instead focus on making specific ones for the Raspberry Pi.
|
||||
|
||||
There are all kinds of different designs of operating systems, and this course can only just scratch the surface. In this course we will mainly focus on getting the operating system to interact with a variety of bits of hardware, as this is often the trickiest bit, and the part for which the least documentation and help exists online.
|
||||
|
||||
### 2 Assembly Code
|
||||
|
||||
```
|
||||
A processor can often perform millions of instructions per second, but they must be simple.
|
||||
```
|
||||
|
||||
This course will be written almost exclusively in assembly code. Assembly code is code that is very close to what the computer understands. How a computer really works is that there is a small device called a processor which is capable of performing simple jobs like adding numbers, and there is a set of one or more microchips called the **RAM** which are capable of storing numbers. When a computer has power, the processor works through a sequence of instructions given to it by the programmer, which cause it to change numbers in the RAM, and interact with connected hardware. Assembly code is a translation into human readable text of those commands.
|
||||
|
||||
When programming normally, the programmer writes code in a programming language such as C++, Java, C#, Basic, etc, and then a program called the compiler translates what the programmer wrote into assembly code, which is the further reduced into binary code[2]. Binary code is what the computer actually understands, but it is almost impossible for humans to read. Assembly code is much better, but it can be frustrating how few commands are possible. Remember that every command you write in assembly code is something that the processor understands directly, and so the commands are simple by design, as a physical circuit must process each one.
|
||||
|
||||
![Compiler process][1]
|
||||
|
||||
Just like with ordinary programming, there are many different assembly code languages, however unlike ordinary programming, the reason these exist is due to the fact that there exists many different processors, each designed to understand a different language. Thus a program written in assembly code for one machine, will not work on a different one. For most things, this would be a disaster as each program would have to be rewritten for every system it was used on, but for operating systems this isn't so much of a problem, as it would have to be rewritten anyway due to differing hardware. Nevertheless, most operating systems are written in C++ or C, so that they can be converted more easily, and only the sections that absolutely have to be written in assembly are.
|
||||
|
||||
You're now ready to move on to the first lesson, [Lesson 1: OK01][2]
|
||||
|
||||
--------------------------------------------------------------------------------
|
||||
|
||||
via: https://www.cl.cam.ac.uk/projects/raspberrypi/tutorials/os/introduction.html
|
||||
|
||||
作者:[Robert Mullins][a]
|
||||
选题:[lujun9972][b]
|
||||
译者:[译者ID](https://github.com/译者ID)
|
||||
校对:[校对者ID](https://github.com/校对者ID)
|
||||
|
||||
本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出
|
||||
|
||||
[a]: http://www.cl.cam.ac.uk/~rdm34
|
||||
[b]: https://github.com/lujun9972
|
||||
[1]: https://www.cl.cam.ac.uk/projects/raspberrypi/tutorials/os/images/compiling.png
|
||||
[2]: https://www.cl.cam.ac.uk/projects/raspberrypi/tutorials/os/ok01.html
|
@ -1,135 +0,0 @@
|
||||
How to create a free baby monitoring system with Gonimo
|
||||
======
|
||||
![](https://opensource.com/sites/default/files/styles/image-full-size/public/lead-images/baby.png?itok=7jyDs9vE)
|
||||
|
||||
New and expecting parents quickly learn that there is a long--and expensive--list of equipment that a new baby needs. High on that list is a baby monitor, so they can keep an eye (and an ear) on their infant while they're doing other things. But this is one piece of equipment that doesn't have to eat into your baby fund; Gonimo is a free and open source solution that turns existing devices into a baby monitoring system, freeing up some of your baby budget for any of the thousands of other must-have or trendy items lining the aisles of the nearby big-box baby store.
|
||||
|
||||
Gonimo was born when its developer, an open source fan, had twins and found problems with the existing options:
|
||||
|
||||
* Status-quo hardware baby monitors are expensive, have limited range, and require you to carry extra devices.
|
||||
* There are mobile monitoring apps, but most of the existing iOS/Android baby monitoring apps are unreliable and unsecure, with no obvious open source product in sight.
|
||||
* If you have two young children (e.g., twins), you'll need two monitors, doubling your costs.
|
||||
|
||||
|
||||
|
||||
Gonimo was created as an open source solution to the shortcomings of typical monitors:
|
||||
|
||||
* Expensive? Nope, it is free!
|
||||
* Limited range? No, it works with internet/WiFi, wherever you are.
|
||||
* Download and install apps? Uh-uh, it works in your existing web browser.
|
||||
* Buy new devices? No way, you can use any laptop, mobile phone, or tablet with a web browser and a microphone and/or camera.
|
||||
|
||||
|
||||
|
||||
(Note: Apple iOS devices are unfortunately not yet supported, but that's expected to change very soon--read on for how you can help make that happen.)
|
||||
|
||||
### Get started
|
||||
|
||||
Transforming your devices into a baby monitor is easy. From your device's browser (ideally Chrome), visit [gonimo.com][1] and click Start baby monitor to get to the web app.
|
||||
|
||||
1. **Create family:** On the first-time startup screen, you will see a cute rabbit running on the globe. This is where you create a new family. Hit the **+** button and either accept the randomly generated family name or type in your own choice.
|
||||
|
||||
|
||||
|
||||
![Start screen][3]
|
||||
|
||||
|
||||
Create a new family from the start screen
|
||||
|
||||
1. **Invite devices:** After you've set up your family, the next screen directs you to invite another device to join your Gonimo family. There is a one-time invitation link that you can directly send via email or copy and paste into a message. From the other device, simply open the link and accept the invitation. Repeat this process for any other devices you'd like to invite to your family. Your devices are now in the same family, ready to cooperate as a fully working baby monitor system.
|
||||
|
||||
|
||||
|
||||
![Invite screen][5]
|
||||
|
||||
|
||||
Invite family members
|
||||
|
||||
1. **Start baby station stream:** Next, choose which device will stream the baby's audio and video to the parent station by going to the [Gonimo home screen][6], clicking on the button with the pacifier, and giving the web browser permission to access the device's microphone and camera. Adjust the camera to point at your baby's bed, or turn it off to save device battery (audio will still be streamed). Hit Start. The stream is now active.
|
||||
|
||||
|
||||
|
||||
![Select baby station][8]
|
||||
|
||||
|
||||
Select the baby station
|
||||
|
||||
![Press Start][10]
|
||||
|
||||
|
||||
Press Start to stream video.
|
||||
|
||||
1. **Connect to parent station stream:** To view the baby station stream, go to another device in your Gonimo family --this is the parent station. Hit the "parent" button on the Gonimo home screen. You will see a list of all the devices in the family; next to the one with the active baby station will be a pulsing Connect button. Select Connect, and you can see and hear your baby over a peer-to-peer audio/video stream. A volume bar provides visualization for the transmitted audio stream.
|
||||
|
||||
|
||||
|
||||
![Select parent station][12]
|
||||
|
||||
|
||||
Select parent station
|
||||
|
||||
![Press Connect][14]
|
||||
|
||||
|
||||
Press Connect to start viewing the baby stream.
|
||||
|
||||
1. **Congratulations!** You have successfully transformed your devices into a baby monitor directly over a web browser without downloading or installing any apps!
|
||||
|
||||
|
||||
|
||||
For more information and detailed descriptions about renaming devices, removing devices from a family, or deleting a family, check out the [video tutorial][15] at gonimo.com.
|
||||
|
||||
### Flexibility of the family system
|
||||
|
||||
One of Gonimo's strengths is its family-based system, which offers enormous flexibility for different kinds of situations that aren't available even in commercial Android or iOS apps. To dive into these features, let's assume that you have created a family that consists of three devices.
|
||||
|
||||
* **Multi-baby:** What if you want to keep an eye on your two young children who sleep in separate rooms? Put a device in each child's room and set them as baby stations. The third device will act as the parent station, on which you can connect to both streams and see your toddlers via split screen. You can even extend this use case to more than two baby stations by inviting more devices to your family and setting them up as baby stations. As soon as your parent station is connected to the first baby station, return to the Device Overview screen by clicking the back arrow in the top left corner. Now you can connect to the second (and, in turn, the third, and fourth, and fifth, and so on) device, and the split screen will be established automatically. Voila!
|
||||
|
||||
|
||||
* **Multi-parent:** What if daddy wants to watch the children while he's at work? Just invite a fourth device (e.g., his office PC) to the family and set it up as a parent station. Both parents can check in on their children simultaneously from their own devices, even independently choosing to which stream(s) they wish to connect.
|
||||
|
||||
|
||||
* **Multi-family:** A single device can also be part of several families. This is very useful when your baby station is something that's always with you, such as a tablet, and you frequently visit relatives or friends. Create another family for "Granny's house" or "Uncle John's house," which consists of your baby station device paired with Granny's or Uncle John's devices. You can switch the baby station device among those families, whenever you want, from the baby station device's Gonimo home screen.
|
||||
|
||||
|
||||
|
||||
### Want to participate?
|
||||
|
||||
The Gonimo team loves open source. Code from the community, for the community. Gonimo's users are very important to us, but they are only one part of the Gonimo story. Creative brains behind the scenes are the key to creating a great baby monitor experience.
|
||||
|
||||
Currently we especially need help from people who are willing to be iOS 11 testers, as Apple's support of WebRTC in iOS 11 means we will finally be able to support iOS devices. If you can, please help us realize this awesome milestone.
|
||||
|
||||
If you know Haskell or want to learn it, you can check out [our code at GitHub][16]. Pull requests, code reviews, and issues are all welcome.
|
||||
|
||||
And, finally, please help by spreading the word to new parents and the open source world that the Gonimo baby monitor is simple to use and already in your pocket.
|
||||
|
||||
### About The Author
|
||||
Robert Klotzner;I Am Father Of Twins;A Programmer. Once I Heard That Ordinary People Can Actually Program Computers;I Bought A Page Book About C;Started Learning;I Was Fifteen Back Then. I Sticked With C;For Quite A While;Learned Java;Went Back To C
|
||||
|
||||
--------------------------------------------------------------------------------
|
||||
|
||||
via: https://opensource.com/article/17/9/gonimo
|
||||
|
||||
作者:[Robert Klotzner][a]
|
||||
译者:[译者ID](https://github.com/译者ID)
|
||||
校对:[校对者ID](https://github.com/校对者ID)
|
||||
|
||||
本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出
|
||||
|
||||
[a]:https://opensource.com/users/robert-klotzner
|
||||
[1]:https://gonimo.com/
|
||||
[2]:/file/371256
|
||||
[3]:https://opensource.com/sites/default/files/u128651/start-screen.png (Start screen)
|
||||
[4]:/file/371236
|
||||
[5]:https://opensource.com/sites/default/files/u128651/invite-screen.png (Invite screen)
|
||||
[6]:https://app.gonimo.com/
|
||||
[7]:/file/371231
|
||||
[8]:https://opensource.com/sites/default/files/u128651/baby-select.png (Select baby station)
|
||||
[9]:/file/371226
|
||||
[10]:https://opensource.com/sites/default/files/u128651/baby-screen.png (Press Start)
|
||||
[11]:/file/371251
|
||||
[12]:https://opensource.com/sites/default/files/u128651/parent-select.png (Select parent station)
|
||||
[13]:/file/371241
|
||||
[14]:https://opensource.com/sites/default/files/u128651/parent-screen.png (Press Connect)
|
||||
[15]:https://gonimo.com/index.php#intro
|
||||
[16]:https://github.com/gonimo/gonimo
|
@ -1,89 +0,0 @@
|
||||
bestony translating
|
||||
|
||||
10 killer tools for the admin in a hurry
|
||||
======
|
||||
|
||||
![](https://opensource.com/sites/default/files/styles/image-full-size/public/lead-images/cloud_tools_hardware.png?itok=PGjJenqT)
|
||||
|
||||
Administering networks and systems can get very stressful when the workload piles up. Nobody really appreciates how long anything takes, and everyone wants their specific thing done yesterday.
|
||||
|
||||
So it's no wonder so many of us are drawn to the open source spirit of figuring out what works and sharing it with everyone. Because, when deadlines are looming, and there just aren't enough hours in the day, it really helps if you can just find free answers you can implement immediately.
|
||||
|
||||
So, without further ado, here's my Swiss Army Knife of stuff to get you out of the office before dinner time.
|
||||
|
||||
### Server configuration and scripting
|
||||
|
||||
Let's jump right in.
|
||||
|
||||
**[NixCraft][1]**
|
||||
Use the site's internal search function. With more than a decade of regular updates, there's gold to be found here—useful scripts and handy hints that can solve your problem straight away. This is often the second place I look after Google.
|
||||
|
||||
**[Webmin][2]**
|
||||
This gives you a nice web interface to remotely edit your configuration files. It cuts down on a lot of time spent having to juggle directory paths and `sudo nano`, which is handy when you're handling several customers.
|
||||
|
||||
**[Windows Subsystem for Linux][3]**
|
||||
The reality of the modern workplace is that most employees are on Windows, while the grown-up gear in the server room is on Linux. So sometimes you find yourself trying to do admin tasks from (gasp) a Windows desktop.
|
||||
|
||||
What do you do? Install a virtual machine? It's actually much faster and far less work to configure if you install the Windows Subsystem for Linux compatibility layer, now available at no cost on Windows 10.
|
||||
|
||||
This gives you a Bash terminal in a window where you can run Bash scripts and Linux binaries on the local machine, have full access to both Windows and Linux filesystems, and mount network drives. It's available in Ubuntu, OpenSUSE, SLES, Debian, and Kali flavors.
|
||||
|
||||
**[mRemoteNG][4]**
|
||||
This is an excellent SSH and remote desktop client for when you have 100+ servers to manage.
|
||||
|
||||
### Setting up a network so you don't have to do it again
|
||||
|
||||
A poorly planned network is the sworn enemy of the admin who hates working overtime.
|
||||
|
||||
**[IP Addressing Schemes that Scale][5]**
|
||||
The diabolical thing about running out of IP addresses is that, when it happens, the network's grown large enough that a new addressing scheme is an expensive, time-consuming pain in the proverbial.
|
||||
|
||||
Ain't nobody got time for that!
|
||||
|
||||
At some point, IPv6 will finally arrive to save the day. Until then, these one-size-fits-most IP addressing schemes should keep you going, no matter how many network-connected wearables, tablets, smart locks, lights, security cameras, VoIP headsets, and espresso machines the world throws at us.
|
||||
|
||||
**[Linux Chmod Permissions Cheat Sheet][6]**
|
||||
A short but sweet cheat sheet of Bash commands to set permissions across the network. This is so when Bill from Customer Service falls for that ransomware scam, you're recovering just his files and not the entire company's.
|
||||
|
||||
**[VLSM Subnet Calculator][7]**
|
||||
Just put in the number of networks you want to create from an address space and the number of hosts you want per network, and it calculates what the subnet mask should be for everything.
|
||||
|
||||
### Single-purpose Linux distributions
|
||||
|
||||
Need a Linux box that does just one thing? It helps if someone else has already sweated the small stuff on an operating system you can install and have ready immediately.
|
||||
|
||||
Each of these has, at one point, made my work day so much easier.
|
||||
|
||||
**[Porteus Kiosk][8]**
|
||||
This is for when you want a computer totally locked down to just a web browser. With a little tweaking, you can even lock the browser down to just one website. This is great for public access machines. It works with touchscreens or with a keyboard and mouse.
|
||||
|
||||
**[Parted Magic][9]**
|
||||
This is an operating system you can boot from a USB drive to partition hard drives, recover data, and run benchmarking tools.
|
||||
|
||||
**[IPFire][10]**
|
||||
Hahahaha, I still can't believe someone called a router/firewall/proxy combo "I pee fire." That's my second favorite thing about this Linux distribution. My favorite is that it's a seriously solid software suite. It's so easy to set up and configure, and there is a heap of plugins available to extend it.
|
||||
|
||||
So, how about you? What tools, resources, and cheat sheets have you found to make the workday easier? I'd love to know. Please share in the comments.
|
||||
|
||||
--------------------------------------------------------------------------------
|
||||
|
||||
via: https://opensource.com/article/18/7/tools-admin
|
||||
|
||||
作者:[Grant Hamono][a]
|
||||
选题:[lujun9972](https://github.com/lujun9972)
|
||||
译者:[译者ID](https://github.com/译者ID)
|
||||
校对:[校对者ID](https://github.com/校对者ID)
|
||||
|
||||
本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出
|
||||
|
||||
[a]:https://opensource.com/users/grantdxm
|
||||
[1]:https://www.cyberciti.biz/
|
||||
[2]:http://www.webmin.com/
|
||||
[3]:http://wsl-guide.org/en/latest/
|
||||
[4]:https://mremoteng.org/
|
||||
[5]:https://blog.dxmtechsupport.com.au/ip-addressing-for-a-small-business-that-might-grow/
|
||||
[6]:https://isabelcastillo.com/linux-chmod-permissions-cheat-sheet
|
||||
[7]:http://www.vlsm-calc.net/
|
||||
[8]:http://porteus-kiosk.org/
|
||||
[9]:https://partedmagic.com/
|
||||
[10]:https://www.ipfire.org/
|
@ -1,100 +0,0 @@
|
||||
[#]: collector: (lujun9972)
|
||||
[#]: translator: (geekpi)
|
||||
[#]: reviewer: ( )
|
||||
[#]: publisher: ( )
|
||||
[#]: url: ( )
|
||||
[#]: subject: (Working with tarballs on Linux)
|
||||
[#]: via: (https://www.networkworld.com/article/3328840/linux/working-with-tarballs-on-linux.html)
|
||||
[#]: author: (Sandra Henry-Stocker https://www.networkworld.com/author/Sandra-Henry_Stocker/)
|
||||
|
||||
Working with tarballs on Linux
|
||||
======
|
||||
![](https://images.idgesg.net/images/article/2018/12/tarball-100783148-large.jpg)
|
||||
|
||||
The word “tarball” is often used to describe the type of file used to back up a select group of files and join them into a single file. The name comes from the **.tar** file extension and the **tar** command that is used to group together the files into a single file that is then sometimes compressed to make it smaller for its move to another system.
|
||||
|
||||
Tarballs are often used to back up personal or system files in place to create an archive, especially prior to making changes that might have to be reversed. Linux sysadmins, for example, will often create a tarball containing a series of configuration files before making changes to an application just in case they have to reverse those changes. Extracting the files from a tarball that’s sitting in place will generally be faster than having to retrieve the files from backups.
|
||||
|
||||
### How to create a tarball on Linux
|
||||
|
||||
You can create a tarball and compress it in a single step if you use a command like this one:
|
||||
|
||||
```
|
||||
$ tar -cvzf PDFs.tar.gz *.pdf
|
||||
```
|
||||
|
||||
The result in this case is a compressed (gzipped) file that contains all of the PDF files that are in the current directory. The compression is optional, of course. A slightly simpler command would just put all of the PDF files into an uncompressed tarball:
|
||||
|
||||
```
|
||||
$ tar -cvf PDFs.tar *.pdf
|
||||
```
|
||||
|
||||
Note that it’s the **z** in that list of options that causes the file to be compressed or “zipped”. The **c** specifies that you are creating the file and the **v** (verbose) indicates that you want some feedback while the command is running. Omit the **v** if you don't want to see the files listed.
|
||||
|
||||
Another common naming convention is to give zipped tarballs the extension **.tgz** instead of the double extension **.tar.gz** as shown in this command:
|
||||
|
||||
```
|
||||
$ tar cvzf MyPDFs.tgz *.pdf
|
||||
```
|
||||
|
||||
### How to extract files from a tarball
|
||||
|
||||
To extract all of the files from a gzipped tarball, you would use a command like this:
|
||||
|
||||
```
|
||||
$ tar -xvzf file.tar.gz
|
||||
```
|
||||
|
||||
If you use the .tgz naming convention, that command would look like this:
|
||||
|
||||
```
|
||||
$ tar -xvzf MyPDFs.tgz
|
||||
```
|
||||
|
||||
To extract an individual file from a gzipped tarball, you do almost the same thing but add the file name:
|
||||
|
||||
```
|
||||
$ tar -xvzf PDFs.tar.gz ShenTix.pdf
|
||||
ShenTix.pdf
|
||||
ls -l ShenTix.pdf
|
||||
-rw-rw-r-- 1 shs shs 122057 Dec 14 14:43 ShenTix.pdf
|
||||
```
|
||||
|
||||
You can even delete files from a tarball if the tarball is not compressed. For example, if we wanted to remove tile file that we extracted above from the PDFs.tar.gz file, we would do it like this:
|
||||
|
||||
```
|
||||
$ gunzip PDFs.tar.gz
|
||||
$ ls -l PDFs.tar
|
||||
-rw-rw-r-- 1 shs shs 10700800 Dec 15 11:51 PDFs.tar
|
||||
$ tar -vf PDFs.tar --delete ShenTix.pdf
|
||||
$ ls -l PDFs.tar
|
||||
-rw-rw-r-- 1 shs shs 10577920 Dec 15 11:45 PDFs.tar
|
||||
```
|
||||
|
||||
Notice that we shaved a little space off the tar file while deleting the ShenTix.pdf file. We can then compress the file again if we want:
|
||||
|
||||
```
|
||||
$ gzip -f PDFs.tar
|
||||
ls -l PDFs.tar.gz
|
||||
-rw-rw-r-- 1 shs shs 10134499 Dec 15 11:51 PDFs.tar.gzFlickr / James St. John
|
||||
```
|
||||
|
||||
The versatility of the command line options makes working with tarballs easy and very convenient.
|
||||
|
||||
Join the Network World communities on [Facebook][1] and [LinkedIn][2] to comment on topics that are top of mind.
|
||||
|
||||
--------------------------------------------------------------------------------
|
||||
|
||||
via: https://www.networkworld.com/article/3328840/linux/working-with-tarballs-on-linux.html
|
||||
|
||||
作者:[Sandra Henry-Stocker][a]
|
||||
选题:[lujun9972][b]
|
||||
译者:[译者ID](https://github.com/译者ID)
|
||||
校对:[校对者ID](https://github.com/校对者ID)
|
||||
|
||||
本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出
|
||||
|
||||
[a]: https://www.networkworld.com/author/Sandra-Henry_Stocker/
|
||||
[b]: https://github.com/lujun9972
|
||||
[1]: https://www.facebook.com/NetworkWorld/
|
||||
[2]: https://www.linkedin.com/company/network-world
|
@ -1,5 +1,5 @@
|
||||
[#]: collector: (lujun9972)
|
||||
[#]: translator: ( )
|
||||
[#]: translator: (geekpi)
|
||||
[#]: reviewer: ( )
|
||||
[#]: publisher: ( )
|
||||
[#]: url: ( )
|
||||
|
@ -0,0 +1,252 @@
|
||||
[#]: collector: (lujun9972)
|
||||
[#]: translator: ( )
|
||||
[#]: reviewer: ( )
|
||||
[#]: publisher: ( )
|
||||
[#]: url: ( )
|
||||
[#]: subject: (Linux commands for measuring disk activity)
|
||||
[#]: via: (https://www.networkworld.com/article/3330497/linux/linux-commands-for-measuring-disk-activity.html)
|
||||
[#]: author: (Sandra Henry-Stocker https://www.networkworld.com/author/Sandra-Henry_Stocker/)
|
||||
|
||||
Linux commands for measuring disk activity
|
||||
======
|
||||
![](https://images.idgesg.net/images/article/2018/12/tape-measure-100782593-large.jpg)
|
||||
Linux systems provide a handy suite of commands for helping you see how busy your disks are, not just how full. In this post, we examine five very useful commands for looking into disk activity. Two of the commands (iostat and ioping) may have to be added to your system, and these same two commands require you to use sudo privileges, but all five commands provide useful ways to view disk activity.
|
||||
|
||||
Probably one of the easiest and most obvious of these commands is **dstat**.
|
||||
|
||||
### dtstat
|
||||
|
||||
In spite of the fact that the **dstat** command begins with the letter "d", it provides stats on a lot more than just disk activity. If you want to view just disk activity, you can use the **-d** option. As shown below, you’ll get a continuous list of disk read/write measurements until you stop the display with a ^c. Note that after the first report, each subsequent row in the display will report disk activity in the following time interval, and the default is only one second.
|
||||
|
||||
```
|
||||
$ dstat -d
|
||||
-dsk/total-
|
||||
read writ
|
||||
949B 73k
|
||||
65k 0 <== first second
|
||||
0 24k <== second second
|
||||
0 16k
|
||||
0 0 ^C
|
||||
```
|
||||
|
||||
Including a number after the -d option will set the interval to that number of seconds.
|
||||
|
||||
```
|
||||
$ dstat -d 10
|
||||
-dsk/total-
|
||||
read writ
|
||||
949B 73k
|
||||
65k 81M <== first five seconds
|
||||
0 21k <== second five second
|
||||
0 9011B ^C
|
||||
```
|
||||
|
||||
Notice that the reported data may be shown in a number of different units — e.g., M (megabytes), k (kilobytes), and B (bytes).
|
||||
|
||||
Without options, the dstat command is going to show you a lot of other information as well — indicating how the CPU is spending its time, displaying network and paging activity, and reporting on interrupts and context switches.
|
||||
|
||||
```
|
||||
$ dstat
|
||||
You did not select any stats, using -cdngy by default.
|
||||
--total-cpu-usage-- -dsk/total- -net/total- ---paging-- ---system--
|
||||
usr sys idl wai stl| read writ| recv send| in out | int csw
|
||||
0 0 100 0 0| 949B 73k| 0 0 | 0 3B| 38 65
|
||||
0 0 100 0 0| 0 0 | 218B 932B| 0 0 | 53 68
|
||||
0 1 99 0 0| 0 16k| 64B 468B| 0 0 | 64 81 ^C
|
||||
```
|
||||
|
||||
The dstat command provides valuable insights into overall Linux system performance, pretty much replacing a collection of older tools, such as vmstat, netstat, iostat, and ifstat, with a flexible and powerful command that combines their features. For more insight into the other information that the dstat command can provide, refer to this post on the [dstat][1] command.
|
||||
|
||||
### iostat
|
||||
|
||||
The iostat command helps monitor system input/output device loading by observing the time the devices are active in relation to their average transfer rates. It's sometimes used to evaluate the balance of activity between disks.
|
||||
|
||||
```
|
||||
$ iostat
|
||||
Linux 4.18.0-041800-generic (butterfly) 12/26/2018 _x86_64_ (2 CPU)
|
||||
|
||||
avg-cpu: %user %nice %system %iowait %steal %idle
|
||||
0.07 0.01 0.03 0.05 0.00 99.85
|
||||
|
||||
Device tps kB_read/s kB_wrtn/s kB_read kB_wrtn
|
||||
loop0 0.00 0.00 0.00 1048 0
|
||||
loop1 0.00 0.00 0.00 365 0
|
||||
loop2 0.00 0.00 0.00 1056 0
|
||||
loop3 0.00 0.01 0.00 16169 0
|
||||
loop4 0.00 0.00 0.00 413 0
|
||||
loop5 0.00 0.00 0.00 1184 0
|
||||
loop6 0.00 0.00 0.00 1062 0
|
||||
loop7 0.00 0.00 0.00 5261 0
|
||||
sda 1.06 0.89 72.66 2837453 232735080
|
||||
sdb 0.00 0.02 0.00 48669 40
|
||||
loop8 0.00 0.00 0.00 1053 0
|
||||
loop9 0.01 0.01 0.00 18949 0
|
||||
loop10 0.00 0.00 0.00 56 0
|
||||
loop11 0.00 0.00 0.00 7090 0
|
||||
loop12 0.00 0.00 0.00 1160 0
|
||||
loop13 0.00 0.00 0.00 108 0
|
||||
loop14 0.00 0.00 0.00 3572 0
|
||||
loop15 0.01 0.01 0.00 20026 0
|
||||
loop16 0.00 0.00 0.00 24 0
|
||||
```
|
||||
|
||||
Of course, all the stats provided on Linux loop devices can clutter the display when you want to focus solely on your disks. The command, however, does provide the **-p** option, which allows you to just look at your disks — as shown in the commands below.
|
||||
|
||||
```
|
||||
$ iostat -p sda
|
||||
Linux 4.18.0-041800-generic (butterfly) 12/26/2018 _x86_64_ (2 CPU)
|
||||
|
||||
avg-cpu: %user %nice %system %iowait %steal %idle
|
||||
0.07 0.01 0.03 0.05 0.00 99.85
|
||||
|
||||
Device tps kB_read/s kB_wrtn/s kB_read kB_wrtn
|
||||
sda 1.06 0.89 72.54 2843737 232815784
|
||||
sda1 1.04 0.88 72.54 2821733 232815784
|
||||
```
|
||||
|
||||
Note that **tps** refers to transfers per second.
|
||||
|
||||
You can also get iostat to provide repeated reports. In the example below, we're getting measurements every five seconds by using the **-d** option.
|
||||
|
||||
```
|
||||
$ iostat -p sda -d 5
|
||||
Linux 4.18.0-041800-generic (butterfly) 12/26/2018 _x86_64_ (2 CPU)
|
||||
|
||||
Device tps kB_read/s kB_wrtn/s kB_read kB_wrtn
|
||||
sda 1.06 0.89 72.51 2843749 232834048
|
||||
sda1 1.04 0.88 72.51 2821745 232834048
|
||||
|
||||
Device tps kB_read/s kB_wrtn/s kB_read kB_wrtn
|
||||
sda 0.80 0.00 11.20 0 56
|
||||
sda1 0.80 0.00 11.20 0 56
|
||||
```
|
||||
|
||||
If you prefer to omit the first (stats since boot) report, add a **-y** to your command.
|
||||
|
||||
```
|
||||
$ iostat -p sda -d 5 -y
|
||||
Linux 4.18.0-041800-generic (butterfly) 12/26/2018 _x86_64_ (2 CPU)
|
||||
|
||||
Device tps kB_read/s kB_wrtn/s kB_read kB_wrtn
|
||||
sda 0.80 0.00 11.20 0 56
|
||||
sda1 0.80 0.00 11.20 0 56
|
||||
```
|
||||
|
||||
Next, we look at our second disk drive.
|
||||
|
||||
```
|
||||
$ iostat -p sdb
|
||||
Linux 4.18.0-041800-generic (butterfly) 12/26/2018 _x86_64_ (2 CPU)
|
||||
|
||||
avg-cpu: %user %nice %system %iowait %steal %idle
|
||||
0.07 0.01 0.03 0.05 0.00 99.85
|
||||
|
||||
Device tps kB_read/s kB_wrtn/s kB_read kB_wrtn
|
||||
sdb 0.00 0.02 0.00 48669 40
|
||||
sdb2 0.00 0.00 0.00 4861 40
|
||||
sdb1 0.00 0.01 0.00 35344 0
|
||||
```
|
||||
|
||||
### iotop
|
||||
|
||||
The **iotop** command is top-like utility for looking at disk I/O. It gathers I/O usage information provided by the Linux kernel so that you can get an idea which processes are most demanding in terms in disk I/O. In the example below, the loop time has been set to 5 seconds. The display will update itself, overwriting the previous output.
|
||||
|
||||
```
|
||||
$ sudo iotop -d 5
|
||||
Total DISK READ: 0.00 B/s | Total DISK WRITE: 1585.31 B/s
|
||||
Current DISK READ: 0.00 B/s | Current DISK WRITE: 12.39 K/s
|
||||
TID PRIO USER DISK READ DISK WRITE SWAPIN IO> COMMAND
|
||||
32492 be/4 root 0.00 B/s 0.00 B/s 0.00 % 0.12 % [kworker/u8:1-ev~_power_efficient]
|
||||
208 be/3 root 0.00 B/s 1585.31 B/s 0.00 % 0.11 % [jbd2/sda1-8]
|
||||
1 be/4 root 0.00 B/s 0.00 B/s 0.00 % 0.00 % init splash
|
||||
2 be/4 root 0.00 B/s 0.00 B/s 0.00 % 0.00 % [kthreadd]
|
||||
3 be/0 root 0.00 B/s 0.00 B/s 0.00 % 0.00 % [rcu_gp]
|
||||
4 be/0 root 0.00 B/s 0.00 B/s 0.00 % 0.00 % [rcu_par_gp]
|
||||
8 be/0 root 0.00 B/s 0.00 B/s 0.00 % 0.00 % [mm_percpu_wq]
|
||||
```
|
||||
|
||||
### ioping
|
||||
|
||||
The **ioping** command is an altogether different type of tool, but it can report disk latency — how long it takes a disk to respond to requests — and can be helpful in diagnosing disk problems.
|
||||
|
||||
```
|
||||
$ sudo ioping /dev/sda1
|
||||
4 KiB <<< /dev/sda1 (block device 111.8 GiB): request=1 time=960.2 us (warmup)
|
||||
4 KiB <<< /dev/sda1 (block device 111.8 GiB): request=2 time=841.5 us
|
||||
4 KiB <<< /dev/sda1 (block device 111.8 GiB): request=3 time=831.0 us
|
||||
4 KiB <<< /dev/sda1 (block device 111.8 GiB): request=4 time=1.17 ms
|
||||
^C
|
||||
--- /dev/sda1 (block device 111.8 GiB) ioping statistics ---
|
||||
3 requests completed in 2.84 ms, 12 KiB read, 1.05 k iops, 4.12 MiB/s
|
||||
generated 4 requests in 3.37 s, 16 KiB, 1 iops, 4.75 KiB/s
|
||||
min/avg/max/mdev = 831.0 us / 947.9 us / 1.17 ms / 158.0 us
|
||||
```
|
||||
|
||||
### atop
|
||||
|
||||
The **atop** command, like **top** provides a lot of information on system performance, including some stats on disk activity.
|
||||
|
||||
```
|
||||
ATOP - butterfly 2018/12/26 17:24:19 37d3h13m------ 10ed
|
||||
PRC | sys 0.03s | user 0.01s | #proc 179 | #zombie 0 | #exit 6 |
|
||||
CPU | sys 1% | user 0% | irq 0% | idle 199% | wait 0% |
|
||||
cpu | sys 1% | user 0% | irq 0% | idle 99% | cpu000 w 0% |
|
||||
CPL | avg1 0.00 | avg5 0.00 | avg15 0.00 | csw 677 | intr 470 |
|
||||
MEM | tot 5.8G | free 223.4M | cache 4.6G | buff 253.2M | slab 394.4M |
|
||||
SWP | tot 2.0G | free 2.0G | | vmcom 1.9G | vmlim 4.9G |
|
||||
DSK | sda | busy 0% | read 0 | write 7 | avio 1.14 ms |
|
||||
NET | transport | tcpi 4 | tcpo stall 8 | udpi 1 | udpo 0swout 2255 |
|
||||
NET | network | ipi 10 | ipo 7 | ipfrw 0 | deliv 60.67 ms |
|
||||
NET | enp0s25 0% | pcki 10 | pcko 8 | si 1 Kbps | so 3 Kbp0.73 ms |
|
||||
|
||||
PID SYSCPU USRCPU VGROW RGROW ST EXC THR S CPUNR CPU CMD 1/1673e4 |
|
||||
3357 0.01s 0.00s 672K 824K -- - 1 R 0 0% atop
|
||||
3359 0.01s 0.00s 0K 0K NE 0 0 E - 0% <ps>
|
||||
3361 0.00s 0.01s 0K 0K NE 0 0 E - 0% <ps>
|
||||
3363 0.01s 0.00s 0K 0K NE 0 0 E - 0% <ps>
|
||||
31357 0.00s 0.00s 0K 0K -- - 1 S 1 0% bash
|
||||
3364 0.00s 0.00s 8032K 756K N- - 1 S 1 0% sleep
|
||||
2931 0.00s 0.00s 0K 0K -- - 1 I 1 0% kworker/u8:2-e
|
||||
3356 0.00s 0.00s 0K 0K -E 0 0 E - 0% <sleep>
|
||||
3360 0.00s 0.00s 0K 0K NE 0 0 E - 0% <sleep>
|
||||
3362 0.00s 0.00s 0K 0K NE 0 0 E - 0% <sleep>
|
||||
```
|
||||
|
||||
If you want to look at _just_ the disk stats, you can easily manage that with a command like this:
|
||||
|
||||
```
|
||||
$ atop | grep DSK
|
||||
$ atop | grep DSK
|
||||
DSK | sda | busy 0% | read 122901 | write 3318e3 | avio 0.67 ms |
|
||||
DSK | sdb | busy 0% | read 1168 | write 103 | avio 0.73 ms |
|
||||
DSK | sda | busy 2% | read 0 | write 92 | avio 2.39 ms |
|
||||
DSK | sda | busy 2% | read 0 | write 94 | avio 2.47 ms |
|
||||
DSK | sda | busy 2% | read 0 | write 99 | avio 2.26 ms |
|
||||
DSK | sda | busy 2% | read 0 | write 94 | avio 2.43 ms |
|
||||
DSK | sda | busy 2% | read 0 | write 94 | avio 2.43 ms |
|
||||
DSK | sda | busy 2% | read 0 | write 92 | avio 2.43 ms |
|
||||
^C
|
||||
```
|
||||
|
||||
### Being in the know with disk I/O
|
||||
|
||||
Linux provides enough commands to give you good insights into how hard your disks are working and help you focus on potential problems or slowdowns. Hopefully, one of these commands will tell you just what you need to know when it's time to question disk performance. Occasional use of these commands will help ensure that especially busy or slow disks will be obvious when you need to check them.
|
||||
|
||||
Join the Network World communities on [Facebook][2] and [LinkedIn][3] to comment on topics that are top of mind.
|
||||
|
||||
--------------------------------------------------------------------------------
|
||||
|
||||
via: https://www.networkworld.com/article/3330497/linux/linux-commands-for-measuring-disk-activity.html
|
||||
|
||||
作者:[Sandra Henry-Stocker][a]
|
||||
选题:[lujun9972][b]
|
||||
译者:[译者ID](https://github.com/译者ID)
|
||||
校对:[校对者ID](https://github.com/校对者ID)
|
||||
|
||||
本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出
|
||||
|
||||
[a]: https://www.networkworld.com/author/Sandra-Henry_Stocker/
|
||||
[b]: https://github.com/lujun9972
|
||||
[1]: https://www.networkworld.com/article/3291616/linux/examining-linux-system-performance-with-dstat.html
|
||||
[2]: https://www.facebook.com/NetworkWorld/
|
||||
[3]: https://www.linkedin.com/company/network-world
|
@ -0,0 +1,186 @@
|
||||
[#]: collector: (lujun9972)
|
||||
[#]: translator: ( )
|
||||
[#]: reviewer: ( )
|
||||
[#]: publisher: ( )
|
||||
[#]: url: ( )
|
||||
[#]: subject: (How To Display Thumbnail Images In Terminal)
|
||||
[#]: via: (https://www.ostechnix.com/how-to-display-thumbnail-images-in-terminal/)
|
||||
[#]: author: (SK https://www.ostechnix.com/author/sk/)
|
||||
|
||||
How To Display Thumbnail Images In Terminal
|
||||
======
|
||||
![](https://www.ostechnix.com/wp-content/uploads/2019/01/lsix-720x340.png)
|
||||
|
||||
A while ago, we discussed about [**Fim**][1], a lightweight, CLI image viewer application used to display various type of images, such as bmp, gif, jpeg, and png etc., from command line. Today, I stumbled upon a similar utility named **‘lsix’**. It is like ‘ls’ command in Unix-like systems, but for images only. The lsix is a simple CLI utility designed to display thumbnail images in Terminal using **Sixel** graphics. For those wondering, Sixel, short for six pixels, is a type of bitmap graphics format. It uses **ImageMagick** , so almost all file formats supported by imagemagick will work fine.
|
||||
|
||||
### Features
|
||||
|
||||
Concerning the features of lsix, we can list the following:
|
||||
|
||||
* Automatically detects if your Terminal supports Sixel graphics or not. If your Terminal doesn’t support Sixel, it will notify you to enable it.
|
||||
* Automatically detects the terminal background color. It uses terminal escape sequences to try to figure out the foreground and background colors of your Terminal application and will display the thumbnails clearly.
|
||||
* If there are more images in the directory, usually >21, lsix will display those images one row a a time, so you need not to wait for the entire montage to be created.
|
||||
* Works well over SSH, so you can manipulate images stored on your remote web server without much hassle.
|
||||
* It supports Non-bitmap graphics, such as.svg, .eps, .pdf, .xcf etc.
|
||||
* Written in BASH, so works on almost all Linux distros.
|
||||
|
||||
|
||||
|
||||
### Installing lsix
|
||||
|
||||
Since lsix uses ImageMagick, make sure you have installed it. It is available in the default repositories of most Linux distributions. For example, on Arch Linux and its variants like Antergos, Manjaro Linux, ImageMagick can be installed using command:
|
||||
|
||||
```
|
||||
$ sudo pacman -S imagemagick
|
||||
```
|
||||
|
||||
On Debian, Ubuntu, Linux Mint:
|
||||
|
||||
```
|
||||
$ sudo apt-get install imagemagick
|
||||
```
|
||||
|
||||
lsix doesn’t require any installation as it is just a BASH script. Just download it and move it to your $PATH. It’s that simple.
|
||||
|
||||
Download the latest lsix version from project’s github page. I am going to download the lsix archive file using command:
|
||||
|
||||
```
|
||||
$ wget https://github.com/hackerb9/lsix/archive/master.zip
|
||||
```
|
||||
|
||||
Extract the downloaded zip file:
|
||||
|
||||
```
|
||||
$ unzip master.zip
|
||||
```
|
||||
|
||||
This command will extract all contents into a folder named ‘lsix-master’. Copy the lsix binary from this directory to your $PATH, for example /usr/local/bin/.
|
||||
|
||||
```
|
||||
$ sudo cp lsix-master/lsix /usr/local/bin/
|
||||
```
|
||||
|
||||
Finally, make the lsbix binary executable:
|
||||
|
||||
```
|
||||
$ sudo chmod +x /usr/local/bin/lsix
|
||||
```
|
||||
|
||||
That’s it. Now is the time to display thumbnails in the terminal itself.
|
||||
|
||||
Before start using lsix, **make sure your Terminal supports Sixel graphics**.
|
||||
|
||||
The developer has developed lsix on an Xterm in **vt340 emulation mode**. However, the he claims that lsix should work on any Sixel compatible Terminal.
|
||||
|
||||
Xterm supports Sixel graphics, but it isn’t enabled by default.
|
||||
|
||||
You can launch Xterm with Sixel mode enabled using command (from another Terminal):
|
||||
|
||||
```
|
||||
$ xterm -ti vt340
|
||||
```
|
||||
|
||||
Alternatively, you can make vt340 the default terminal type for Xterm as described below.
|
||||
|
||||
Edit **.Xresources** file (If it not available, just create it):
|
||||
|
||||
```
|
||||
$ vi .Xresources
|
||||
```
|
||||
|
||||
Add the following line:
|
||||
|
||||
```
|
||||
xterm*decTerminalID : vt340
|
||||
```
|
||||
|
||||
Press **ESC** and type **:wq** to save and close the file.
|
||||
|
||||
Finally, run the following command to apply the changes:
|
||||
|
||||
```
|
||||
$ xrdb -merge .Xresources
|
||||
```
|
||||
|
||||
Now Xterm will start with Sixel mode enabled at every launch by default.
|
||||
|
||||
### Display Thumbnail Images In Terminal
|
||||
|
||||
Launch Xterm (Don’t forget to start it with vt340 mode). Here is how Xterm looks like in my system.
|
||||
![](https://www.ostechnix.com/wp-content/uploads/2019/01/xterm-1.png)
|
||||
|
||||
Like I already stated, lsix is very simple utility. It doesn’t have any command line flags or configuration files. All you have to do is just pass the path of your file as an argument like below.
|
||||
|
||||
```
|
||||
$ lsix ostechnix/logo.png
|
||||
```
|
||||
|
||||
![](https://www.ostechnix.com/wp-content/uploads/2019/01/lsix-4.png)
|
||||
|
||||
If you run it without path, it will display the thumbnail images in your current working directory. I have few files in a directory named **ostechnix**.
|
||||
|
||||
To display the thumbnails in this directory, just run:
|
||||
|
||||
```
|
||||
$ lsix
|
||||
```
|
||||
|
||||
![](https://www.ostechnix.com/wp-content/uploads/2019/01/lsix-1.png)
|
||||
|
||||
See? The thumbnails of all files are displayed in the terminal itself.
|
||||
|
||||
If you use ‘ls’ command, you would just see the filenames only, not thumbnails.
|
||||
|
||||
![][3]
|
||||
|
||||
You can also display a specific image or group of images of a specific type using wildcards.
|
||||
|
||||
For example, to display a single image, just mention the full path of the image like below.
|
||||
|
||||
```
|
||||
$ lsix girl.jpg
|
||||
```
|
||||
|
||||
![](https://www.ostechnix.com/wp-content/uploads/2019/01/lsix-2.png)
|
||||
|
||||
To display all images of a specific type, say PNG, use the wildcard character like below.
|
||||
|
||||
```
|
||||
$ lsix *.png
|
||||
```
|
||||
|
||||
![][4]
|
||||
|
||||
For JPEG type images, the command would be:
|
||||
|
||||
```
|
||||
$ lsix *jpg
|
||||
```
|
||||
|
||||
The thumbnail image quality is surprisingly good. I thought lsix would just display blurry thumbnails. I was wrong. The thumbnails are clearly visible just like on the graphical image viewers.
|
||||
|
||||
And, that’s all for now. As you can see, lsix is very similar to ‘ls’ command, but it only for displaying thumbnails. If you deal with a lot of images at work, lsix might be quite handy. Give it a try and let us know your thoughts on this utility in the comment section below. If you know any similar tools, please suggest them as well. I will check and update this guide.
|
||||
|
||||
More good stuffs to come. Stay tuned!
|
||||
|
||||
Cheers!
|
||||
|
||||
|
||||
|
||||
--------------------------------------------------------------------------------
|
||||
|
||||
via: https://www.ostechnix.com/how-to-display-thumbnail-images-in-terminal/
|
||||
|
||||
作者:[SK][a]
|
||||
选题:[lujun9972][b]
|
||||
译者:[译者ID](https://github.com/译者ID)
|
||||
校对:[校对者ID](https://github.com/校对者ID)
|
||||
|
||||
本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出
|
||||
|
||||
[a]: https://www.ostechnix.com/author/sk/
|
||||
[b]: https://github.com/lujun9972
|
||||
[1]: https://www.ostechnix.com/how-to-display-images-in-the-terminal/
|
||||
[2]: data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7
|
||||
[3]: http://www.ostechnix.com/wp-content/uploads/2019/01/ls-command-1.png
|
||||
[4]: http://www.ostechnix.com/wp-content/uploads/2019/01/lsix-3.png
|
@ -0,0 +1,265 @@
|
||||
[#]: collector: (lujun9972)
|
||||
[#]: translator: ( )
|
||||
[#]: reviewer: ( )
|
||||
[#]: publisher: ( )
|
||||
[#]: url: ( )
|
||||
[#]: subject: (Using Yarn on Ubuntu and Other Linux Distributions)
|
||||
[#]: via: (https://itsfoss.com/install-yarn-ubuntu)
|
||||
[#]: author: (Abhishek Prakash https://itsfoss.com/author/abhishek/)
|
||||
|
||||
Using Yarn on Ubuntu and Other Linux Distributions
|
||||
======
|
||||
|
||||
**This quick tutorial shows you the official way of installing Yarn package manager on Ubuntu and Debian Linux. You’ll also learn some basic Yarn commands and the steps to remove Yarn completely.**
|
||||
|
||||
[Yarn][1] is an open source JavaScript package manager developed by Facebook. It is an alternative or should I say improvement to the popular npm package manager. [Facebook developers’ team][2] created Yarn to overcome the shortcomings of [npm][3]. Facebook claims that Yarn is faster, reliable and more secure than npm.
|
||||
|
||||
Like npm, Yarn provides you a way to automate the process of installing, updating, configuring, and removing packages retrieved from a global registry.
|
||||
|
||||
The advantage of Yarn is that it is faster as it caches every package it downloads so it doesn’t need to download it again. It also parallelizes operations to maximize resource utilization. Yarn also uses [checksums to verify the integrity][4] of every installed package before its code is executed. Yarn also guarantees that an install that worked on one system will work exactly the same way on any other system.
|
||||
|
||||
If you are [using nodejs on Ubuntu][5], probably you already have npm installed on your system. In that case, you can use npm to install Yarn globally in the following manner:
|
||||
|
||||
```
|
||||
sudo npm install yarn -g
|
||||
```
|
||||
|
||||
However, I would recommend using the official way to install Yarn on Ubuntu/Debian.
|
||||
|
||||
### Installing Yarn on Ubuntu and Debian [The Official Way]
|
||||
|
||||
![Yarn JS][6]
|
||||
|
||||
The instructions mentioned here should be applicable to all versions of Ubuntu such as Ubuntu 18.04, 16.04 etc. The same set of instructions are also valid for Debian and other Debian based distributions.
|
||||
|
||||
Since the tutorial uses Curl to add the GPG key of Yarn project, it would be a good idea to verify whether you have Curl installed already or not.
|
||||
|
||||
```
|
||||
sudo apt install curl
|
||||
```
|
||||
|
||||
The above command will install Curl if it wasn’t installed already. Now that you have curl, you can use it to add the GPG key of Yarn project in the following fashion:
|
||||
|
||||
```
|
||||
curl -sS https://dl.yarnpkg.com/debian/pubkey.gpg | sudo apt-key add -
|
||||
```
|
||||
|
||||
After that, add the repository to your sources list so that you can easily upgrade the Yarn package in future with the rest of the system updates:
|
||||
|
||||
```
|
||||
sudo sh -c 'echo "deb https://dl.yarnpkg.com/debian/ stable main" >> /etc/apt/sources.list.d/yarn.list'
|
||||
```
|
||||
|
||||
You are set to go now. [Update Ubuntu][7] or Debian system to refresh the list of available packages and then install yarn:
|
||||
|
||||
```
|
||||
sudo apt update
|
||||
sudo apt install yarn
|
||||
```
|
||||
|
||||
This will install Yarn along with nodejs. Once the process completes, verify that Yarn has been installed successfully. You can do that by checking the Yarn version.
|
||||
|
||||
```
|
||||
yarn --version
|
||||
```
|
||||
|
||||
For me, it showed an output like this:
|
||||
|
||||
```
|
||||
yarn --version
|
||||
1.12.3
|
||||
```
|
||||
|
||||
This means that I have Yarn version 1.12.3 installed on my system.
|
||||
|
||||
### Using Yarn
|
||||
|
||||
I presume that you have some basic understandings of JavaScript programming and how dependencies work. I am not going to go in details here. I’ll show you some of the basic Yarn commands that will help you getting started with it.
|
||||
|
||||
#### Creating a new project with Yarn
|
||||
|
||||
Like npm, Yarn also works with a package.json file. This is where you add your dependencies. All the packages of the dependencies are cached in the node_modules directory in the root directory of your project.
|
||||
|
||||
In the root directory of your project, run the following command to generate a fresh package.json file:
|
||||
|
||||
It will ask you a number of questions. You can skip the questions r go with the defaults by pressing enter.
|
||||
|
||||
```
|
||||
yarn init
|
||||
yarn init v1.12.3
|
||||
question name (test_yarn): test_yarn_proect
|
||||
question version (1.0.0): 0.1
|
||||
question description: Test Yarn
|
||||
question entry point (index.js):
|
||||
question repository url:
|
||||
question author: abhishek
|
||||
question license (MIT):
|
||||
question private:
|
||||
success Saved package.json
|
||||
Done in 82.42s.
|
||||
```
|
||||
|
||||
With this, you get a package.json file of this sort:
|
||||
|
||||
```
|
||||
{
|
||||
"name": "test_yarn_proect",
|
||||
"version": "0.1",
|
||||
"description": "Test Yarn",
|
||||
"main": "index.js",
|
||||
"author": "abhishek",
|
||||
"license": "MIT"
|
||||
}
|
||||
```
|
||||
|
||||
Now that you have the package.json, you can either manually edit it to add or remove package dependencies or use Yarn commands (preferred).
|
||||
|
||||
#### Adding dependencies with Yarn
|
||||
|
||||
You can add a dependency on a certain package in the following fashion:
|
||||
|
||||
```
|
||||
yarn add <package_name>
|
||||
```
|
||||
|
||||
For example, if you want to use [Lodash][8] in your project, you can add it using Yarn like this:
|
||||
|
||||
```
|
||||
yarn add lodash
|
||||
yarn add v1.12.3
|
||||
info No lockfile found.
|
||||
[1/4] Resolving packages…
|
||||
[2/4] Fetching packages…
|
||||
[3/4] Linking dependencies…
|
||||
[4/4] Building fresh packages…
|
||||
success Saved lockfile.
|
||||
success Saved 1 new dependency.
|
||||
info Direct dependencies
|
||||
└─ [email protected]
|
||||
info All dependencies
|
||||
└─ [email protected]
|
||||
Done in 2.67s.
|
||||
```
|
||||
|
||||
And you can see that this dependency has been added automatically in the package.json file:
|
||||
|
||||
```
|
||||
{
|
||||
"name": "test_yarn_proect",
|
||||
"version": "0.1",
|
||||
"description": "Test Yarn",
|
||||
"main": "index.js",
|
||||
"author": "abhishek",
|
||||
"license": "MIT",
|
||||
"dependencies": {
|
||||
"lodash": "^4.17.11"
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
By default, Yarn will add the latest version of a package in the dependency. If you want to use a specific version, you may specify it while adding.
|
||||
|
||||
As always, you can also update the package.json file manually.
|
||||
|
||||
#### Upgrading dependencies with Yarn
|
||||
|
||||
You can upgrade a particular dependency to its latest version with the following command:
|
||||
|
||||
```
|
||||
yarn upgrade <package_name>
|
||||
```
|
||||
|
||||
It will see if the package in question has a newer version and will update it accordingly.
|
||||
|
||||
You can also change the version of an already added dependency in the following manner:
|
||||
|
||||
You can also upgrade all the dependencies of your project to their latest version with one single command:
|
||||
|
||||
```
|
||||
yarn upgrade
|
||||
```
|
||||
|
||||
It will check the versions of all the dependencies and will update them if there are any newer versions.
|
||||
|
||||
#### Removing dependencies with Yarn
|
||||
|
||||
You can remove a package from the dependencies of your project in this way:
|
||||
|
||||
```
|
||||
yarn remove <package_name>
|
||||
```
|
||||
|
||||
#### Install all project dependencies
|
||||
|
||||
If you made any changes to the project.json file, you should run either
|
||||
|
||||
```
|
||||
yarn
|
||||
```
|
||||
|
||||
or
|
||||
|
||||
```
|
||||
yarn install
|
||||
```
|
||||
|
||||
to install all the dependencies at once.
|
||||
|
||||
### How to remove Yarn from Ubuntu or Debian
|
||||
|
||||
I’ll complete this tutorial by mentioning the steps to remove Yarn from your system if you used the above steps to install it. If you ever realized that you don’t need Yarn anymore, you will be able to remove it.
|
||||
|
||||
Use the following command to remove Yarn and its dependencies.
|
||||
|
||||
```
|
||||
sudo apt purge yarn
|
||||
```
|
||||
|
||||
You should also remove the Yarn repository from the repository list:
|
||||
|
||||
```
|
||||
sudo rm /etc/apt/sources.list.d/yarn.list
|
||||
```
|
||||
|
||||
The optional next step is to remove the GPG key you had added to the trusted keys. But for that, you need to know the key. You can get that using the apt-key command:
|
||||
|
||||
Warning: apt-key output should not be parsed (stdout is not a terminal) pub rsa4096 2016-10-05 [SC] 72EC F46A 56B4 AD39 C907 BBB7 1646 B01B 86E5 0310 uid [ unknown] Yarn Packaging
|
||||
|
||||
Warning: apt-key output should not be parsed (stdout is not a terminal) pub rsa4096 2016-10-05 [SC] 72EC F46A 56B4 AD39 C907 BBB7 1646 B01B 86E5 0310 uid [ unknown] Yarn Packaging yarn@dan.cx sub rsa4096 2016-10-05 [E] sub rsa4096 2019-01-02 [S] [expires: 2020-02-02]
|
||||
|
||||
The key here is the last 8 characters of the GPG key’s fingerprint in the line starting with pub.
|
||||
|
||||
So, in my case, the key is 86E50310 and I’ll remove it using this command:
|
||||
|
||||
```
|
||||
sudo apt-key del 86E50310
|
||||
```
|
||||
|
||||
You’ll see an OK in the output and the GPG key of Yarn package will be removed from the list of GPG keys your system trusts.
|
||||
|
||||
I hope this tutorial helped you to install Yarn on Ubuntu, Debian, Linux Mint, elementary OS etc. I provided some basic Yarn commands to get you started along with complete steps to remove Yarn from your system.
|
||||
|
||||
I hope you liked this tutorial and if you have any questions or suggestions, please feel free to leave a comment below.
|
||||
|
||||
|
||||
--------------------------------------------------------------------------------
|
||||
|
||||
via: https://itsfoss.com/install-yarn-ubuntu
|
||||
|
||||
作者:[Abhishek Prakash][a]
|
||||
选题:[lujun9972][b]
|
||||
译者:[译者ID](https://github.com/译者ID)
|
||||
校对:[校对者ID](https://github.com/校对者ID)
|
||||
|
||||
本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出
|
||||
|
||||
[a]: https://itsfoss.com/author/abhishek/
|
||||
[b]: https://github.com/lujun9972
|
||||
[1]: https://yarnpkg.com/lang/en/
|
||||
[2]: https://code.fb.com/
|
||||
[3]: https://www.npmjs.com/
|
||||
[4]: https://itsfoss.com/checksum-tools-guide-linux/
|
||||
[5]: https://itsfoss.com/install-nodejs-ubuntu/
|
||||
[6]: https://i2.wp.com/itsfoss.com/wp-content/uploads/2019/01/yarn-js-ubuntu-debian.jpeg?resize=800%2C450&ssl=1
|
||||
[7]: https://itsfoss.com/update-ubuntu/
|
||||
[8]: https://lodash.com/
|
138
sources/tech/20190103 How to create presentations with Beamer.md
Normal file
138
sources/tech/20190103 How to create presentations with Beamer.md
Normal file
@ -0,0 +1,138 @@
|
||||
[#]: collector: (lujun9972)
|
||||
[#]: translator: ( )
|
||||
[#]: reviewer: ( )
|
||||
[#]: publisher: ( )
|
||||
[#]: url: ( )
|
||||
[#]: subject: (How to create presentations with Beamer)
|
||||
[#]: via: (https://opensource.com/article/19/1/create-presentations-beamer)
|
||||
[#]: author: (Moshe Zadka https://opensource.com/users/moshez)
|
||||
|
||||
How to create presentations with Beamer
|
||||
======
|
||||
Beamer brings LaTeX's powerful typesetting features and ecosystem to creating slides.
|
||||
![](https://opensource.com/sites/default/files/styles/image-full-size/public/lead-images/bus_presentation.png?itok=CQeyO61b)
|
||||
|
||||
[Beamer][1] is a LaTeX package for generating presentation slide decks. One of its nicest features is that it can take advantage of LaTeX's powerful typesetting system and all the other packages in its ecosystem. For example, I often use LaTeX's [listings][2] package in Beamer presentations that include code.
|
||||
|
||||
### Starting a presentation
|
||||
|
||||
To begin a Beamer document, enter:
|
||||
|
||||
```
|
||||
\documentclass{beamer}
|
||||
```
|
||||
|
||||
As you would with any other LaTeX document, add any packages you want to use. For example, to use the **listings** package, enter:
|
||||
|
||||
```
|
||||
\usepackage{listings}
|
||||
```
|
||||
|
||||
Place all content inside the **document** environment:
|
||||
|
||||
```
|
||||
\begin{document}
|
||||
```
|
||||
|
||||
Beamer documents are usually a sequence of **frame** environments. Frames that contain code should be marked **fragile** :
|
||||
|
||||
```
|
||||
\begin{frame}[fragile]
|
||||
```
|
||||
|
||||
Begin your frames with a title:
|
||||
|
||||
```
|
||||
\frametitle{Function to Do Stuff}
|
||||
```
|
||||
|
||||
### Testing your code before you present it
|
||||
|
||||
One of the worst feelings in the world is giving a talk and realizing, as you walk through the code, that there is a glaring bug in it—maybe a misspelled keyword or an unclosed brace.
|
||||
|
||||
The solution is to test code that is presented. In most presentation environments, this means creating a separate file, writing tests, then copying and pasting.
|
||||
|
||||
However, with Beamer, there is a better way. Imagine you have a file named **do_stuff.py** that contains code. You can write tests for the **do_stuff.py** code in a second file, which you call **test_do_stuff.py** , and can exercise it with, say, [pytest][3]. However, most of the lines in **do_stuff.py** lack pedagogic value, like defining helper functions.
|
||||
|
||||
To simplify things for your audience, you can import just the lines you want to talk about into the frame in your presentation :
|
||||
|
||||
```
|
||||
\lstinputlisting[
|
||||
language=Python,
|
||||
firstline=8,
|
||||
lastline=15
|
||||
]{do_stuff.py}
|
||||
```
|
||||
|
||||
Since you will be talking through those lines (from 8 to 15), you don't need any other content on the slide. Close the frame:
|
||||
|
||||
```
|
||||
\end{frame}
|
||||
```
|
||||
|
||||
On the next slide, you want to show a usage example for the **do_stuff()** function you just presented:
|
||||
|
||||
```
|
||||
\begin{frame}[fragile]
|
||||
\frametitle{Calling Function to Do Stuff}
|
||||
\lstinputlisting[
|
||||
language=Python,
|
||||
firstline=17,
|
||||
lastline=19
|
||||
]{do_stuff.py}
|
||||
\end{frame}
|
||||
```
|
||||
|
||||
You use the same file, but this time you show the lines that call the function. Finally, close the document:
|
||||
|
||||
```
|
||||
\end{document}
|
||||
```
|
||||
|
||||
Assuming you have an appropriate Python file in **do_stuff.py** , this will produce a short two-slide presentation.
|
||||
|
||||
Beamer also supports necessary features such as progressive revelation, showing only one bullet at a time to prevent the audience from being distracted by reading ahead.": **\pause** inside a list will divide bullets into pages:
|
||||
|
||||
```
|
||||
\begin{frame}
|
||||
Remember:
|
||||
\begin{itemize}
|
||||
\item This will show up on the first slide. \pause
|
||||
\item This will show up on the
|
||||
second slide, as well as the preceding point. \pause
|
||||
\item Finally, on the third slide,
|
||||
all three bullets will show up.
|
||||
\end{frame}
|
||||
```
|
||||
|
||||
### Creating handouts
|
||||
|
||||
My favorite feature in Beamer is that you can set it to ignore everything outside a frame with **\documentclass[ignorenonframetext]{beamer}**. When I prepare a presentation, I leave off the top (where the document class is declared) and auto-generate two versions of it: one with Beamer that ignores all text outside any frame, which I use for my presentation, and one with a header like:
|
||||
|
||||
```
|
||||
\documentclass{article}
|
||||
\usepackage{beamerarticle}
|
||||
```
|
||||
|
||||
which generates a handout—a PDF that has all the frames and all the text between them.
|
||||
|
||||
When a conference organizer asks me to publish my slides, I include the original slide deck as a reference, but the main thing I like people to have is the handout, which has all the explanatory text that I don't want to include on the slide deck itself.
|
||||
|
||||
When creating presentation slides, people often wonder whether it's better to optimize their materials for the presentation or for people who want to read them afterward. Fortunately, Beamer provides the best of both worlds.
|
||||
|
||||
--------------------------------------------------------------------------------
|
||||
|
||||
via: https://opensource.com/article/19/1/create-presentations-beamer
|
||||
|
||||
作者:[Moshe Zadka][a]
|
||||
选题:[lujun9972][b]
|
||||
译者:[译者ID](https://github.com/译者ID)
|
||||
校对:[校对者ID](https://github.com/校对者ID)
|
||||
|
||||
本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出
|
||||
|
||||
[a]: https://opensource.com/users/moshez
|
||||
[b]: https://github.com/lujun9972
|
||||
[1]: https://www.overleaf.com/learn/latex/Beamer
|
||||
[2]: https://www.overleaf.com/learn/latex/Code_listing
|
||||
[3]: https://docs.pytest.org/en/latest/
|
@ -1,140 +0,0 @@
|
||||
最好的下载 Linux 游戏的网站
|
||||
======
|
||||
简述:新接触 Linux 游戏并想知道从哪里来 **下载 Linux 游戏** ?我们列出最好的资源,你既能 **下载免费的 Linux 游戏** ,也能购买优质的 Linux 游戏。
|
||||
|
||||
Linux 和游戏?从前,很难想象这两者走到一起。然而时间流逝,很多事情发生。快进到现在,有成千上万对 Linux 可用的游戏,更多的游戏正在被大公司和独立开发者开发。
|
||||
|
||||
[在 Linux 上的游戏][1] 现在是真是,今天我们将去看看,你在哪里可以找到 Linux 平台游戏,和搜索到你喜欢的游戏。
|
||||
|
||||
### 在哪里来下载 Linux 游戏?
|
||||
|
||||
![下载 Linux 游戏的网站][2]
|
||||
|
||||
首先,看看你的 Linux 发行版的软件中心(如果它有)。在这里你也能找到大量的游戏。
|
||||
|
||||
但是,这不意味着你应该限制你自己到软件中心。让我们列出为你列出网站来下载 Linux 游戏。
|
||||
|
||||
#### 1. Steam
|
||||
|
||||
如果你是老练的游戏者,你应该听过 Steam 。是的,如果你还不知道它,Steam 对 Linux 是可用的。Steam 推荐 Ubuntu ,但是它也能运行在其它主要的发行版上。如果你真的对 Steam 兴奋起来,这里甚至有一个玩 Steam 游戏的专用操作系统 - [SteamOS][3]。我们在上一年 [最佳的 Linux 游戏发行版][4] 文章中国包括它。
|
||||
|
||||
![Steam 商店][5]
|
||||
|
||||
Steam 有最大的 Linux 游戏商店。当写这篇文章的时候,在 Linux 平台上,确切地有 3487 款游戏,这真的是庞大的。你可以从宽广的类型范围中查找游戏。。说起 [数字版权管理][6],大多数的 Steam 游戏有各种 DRM 。
|
||||
|
||||
对于使用 Steam ,要么你将不得不在你的 Linux 系统上安装 [Steam 客户端][7],要么使用 SteamOS。Steam 的一个优势是,在初始化安装后,对于大多数的游戏,你不需要担心依赖关系和复杂的安装过程。 Steam 客户端将为你做重要的任务。
|
||||
|
||||
[Steam 商店][8]
|
||||
|
||||
#### 2. GOG
|
||||
|
||||
如果你完全对 自由-DRM 游戏感兴趣,GOG 有它的相当多的收集。在这一时刻,GOG 在它们的库中有1978中 自由-DRM 游戏。 GOG 因它的 自由-DRM 游戏的大量的收集而著名。
|
||||
|
||||
![GOG 商店][9]
|
||||
|
||||
官方的,GOG 游戏支持 Ubuntu LTS 版本和 Linux Mint。所以,Ubuntu 和它的衍生物在安装它们时将没有问题。在其他发行版上安装它们可能需要一些额外的工作,例如 - 安装正确的依赖关系。
|
||||
|
||||
从 GOG 中下载游戏,你将不需要一些额外的客户端。所有购买的游戏将在你的账户部分可用。你可以使用你最爱的下载管理器直接下载它们。
|
||||
|
||||
[GOG 商店][10]
|
||||
|
||||
#### 3. Humble 商店
|
||||
|
||||
Humble
|
||||
商店是另一个你可以查找 Linux 的各种各样游戏的地方。在 Humble 商店中有 自由-DRM 和 非-自由-DRM 的可用的游戏。非-自由-DRM 游戏通常来自 Steam。在 Humble 商店中,当前有超过1826款 Linux 游戏。
|
||||
|
||||
![Humble 商店][11]
|
||||
|
||||
Humble 商店因另一个原因而著名。它们有一个被称为 [**Humble 内部包**][12]的程序,在程序它们提供游戏的一个包,在限定时间中带有令人不可抗拒的优惠。 Another thing about关于 Humble 的另一件事是,当你制作一个优惠时,,你的优惠的10%的税收将去慈善机构。
|
||||
|
||||
Humble 没有一些额外的客户端来下载它们的游戏,
|
||||
|
||||
[Humble 商店][13]
|
||||
|
||||
#### 4. itch.io
|
||||
|
||||
itch.io 对于致力于独立视频游戏的独立数字创造者是一个开放市场。itch.io 有一些你能找到的最感兴趣的和独特的游戏。在 itch.io 的大多数游戏是 自由-DRM 。
|
||||
|
||||
![itch.io 商店][14]
|
||||
|
||||
现在,itch.io 在它们的商店中有9514款 Linux 平台可用游戏。
|
||||
|
||||
itch.io 有它们自己的 [客户端][15] 来不费力地下载,安装,更新和玩它们的游戏。
|
||||
|
||||
[itch.io 商店][16]
|
||||
|
||||
#### 5. LGDB
|
||||
|
||||
LGDB 是 Linux 游戏数据库的缩写。虽然技术上不是一个游戏商店,它有x大量的 Linux 游戏收藏,以及关于它们的各种各样的信息。每一款游戏被用你可以找到它们的链接记录。
|
||||
|
||||
![Linux 游戏数据库][17]
|
||||
|
||||
从现在起,在数据库中有2046款游戏入口。[Emulators][18],[Tools][19] 和 [Game Engines][20]也有很长的列表
|
||||
|
||||
[LGDB][21]
|
||||
|
||||
[令人讨厌的体验,每一个 Linux 游戏者从不想要!][27]
|
||||
|
||||
#### 6. Game Jolt
|
||||
|
||||
Game Jolt 有一个非常可观的收集,在 belt 的区域下大约有5000个 Linux 游戏。
|
||||
|
||||
![GameJolt Store][22]
|
||||
|
||||
Game Jolt 有一个(预览版) [client][23] 用于轻松地下载,安装,更新和玩游戏。
|
||||
|
||||
[Game Jolt Store][24]
|
||||
|
||||
### 其他
|
||||
|
||||
这里有很多其他的卖 Linux 游戏的商店。这里也有很多你能找到免费游戏的地方。这是它们中的两个:
|
||||
|
||||
* [**Bundle Stars**][25]: Bundle Stars 当前有814个 Linux 游戏和31个游戏包。
|
||||
* [**GamersGate**][26]: GamersGate 现在有595个 Linux 游戏。它们都是 DRM-free and non-DRM-free games.
|
||||
|
||||
|
||||
|
||||
#### 应用商店,软件中心 & 存储库
|
||||
|
||||
Linux 发行版有它们自己的应用程序商店或存储库。尽管不是很多,但是在这里你也能找到各种各样的游戏。
|
||||
|
||||
今天到此为止。你知道这里有这么多 Linux 可用的游戏吗?你使用一些其他的网站来下载 Linux 游戏?与我们分享你的收藏。
|
||||
|
||||
--------------------------------------------------------------------------------
|
||||
|
||||
via: https://itsfoss.com/download-linux-games/
|
||||
|
||||
作者:[Munif Tanjim][a]
|
||||
译者:[robsean](https://github.com/robsean)
|
||||
校对:[校对者ID](https://github.com/校对者ID)
|
||||
|
||||
本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出
|
||||
|
||||
[a]: https://itsfoss.com/author/munif/
|
||||
[1]:https://itsfoss.com/linux-gaming-guide/
|
||||
[2]:https://itsfoss.com/wp-content/uploads/2017/05/download-linux-games-800x450.jpg
|
||||
[3]:http://store.steampowered.com/steamos/
|
||||
[4]:https://itsfoss.com/linux-gaming-distributions/
|
||||
[5]:https://itsfoss.com/wp-content/uploads/2017/05/Steam-Store-800x382.jpg
|
||||
[6]:https://www.wikiwand.com/en/Digital_rights_management
|
||||
[7]:http://store.steampowered.com/about/
|
||||
[8]:http://store.steampowered.com/linux
|
||||
[9]:https://itsfoss.com/wp-content/uploads/2017/05/GOG-Store-800x366.jpg
|
||||
[10]:https://www.gog.com/games?system=lin_mint,lin_ubuntu
|
||||
[11]:https://itsfoss.com/wp-content/uploads/2017/05/The-Humble-Store-800x393.jpg
|
||||
[12]:https://www.humblebundle.com/?partner=itsfoss
|
||||
[13]:https://www.humblebundle.com/store?partner=itsfoss
|
||||
[14]:https://itsfoss.com/wp-content/uploads/2017/05/itch.io-Store-800x485.jpg
|
||||
[15]:https://itch.io/app
|
||||
[16]:https://itch.io/games/platform-linux
|
||||
[17]:https://itsfoss.com/wp-content/uploads/2017/05/LGDB-800x304.jpg
|
||||
[18]:https://lgdb.org/emulators
|
||||
[19]:https://lgdb.org/tools
|
||||
[20]:https://lgdb.org/engines
|
||||
[21]:https://lgdb.org/games
|
||||
[22]:https://itsfoss.com/wp-content/uploads/2017/05/GameJolt-Store-800x357.jpg
|
||||
[23]:http://gamejolt.com/client
|
||||
[24]:http://gamejolt.com/games/best?os=linux
|
||||
[25]:https://www.bundlestars.com/en/games?page=1&platforms=Linux
|
||||
[26]:https://www.gamersgate.com/games?state=available
|
||||
[27]:https://itsfoss.com/linux-gaming-problems/
|
@ -0,0 +1,133 @@
|
||||
如何用Gonimo创建一个免费的婴儿监视系统
|
||||
======
|
||||
![](https://opensource.com/sites/default/files/styles/image-full-size/public/lead-images/baby.png?itok=7jyDs9vE)
|
||||
|
||||
新父母和准父母很快就会知道将会有一个长且昂贵的新生儿所需设备的清单,清单中的首位是一个婴儿监视器,借此他们可以在做其他事情时照看自己的婴儿,但这儿有一件不必消耗你的婴儿经费的设备,Gonimo 是一个可以将现有的设备转换成婴儿监控系统的免费的开源解决方案,为附近大型婴儿用品商店的过道中数以千计的其他必备或时尚物品中的任何一个腾出一些婴儿的预算。
|
||||
|
||||
Gonimo诞生时,它的开发者,一个有双胞胎的开源粉丝,发现现有选择存在问题:
|
||||
|
||||
* 现有硬件婴儿监视器价格昂贵,范围有限,需要您携带额外的设备。
|
||||
* 虽然有移动监控应用程序,但大多数现有的iOS / Android婴儿监控应用程序都不可靠且不安全,没有明显的开源产品。
|
||||
* 如果您有两个小孩(例如双胞胎),您将需要两台监视器,使您的成本翻倍。
|
||||
|
||||
|
||||
|
||||
Gonimo是作为一个典型监视器缺点的开源解决方案而创建的:
|
||||
|
||||
* 昂贵? 不,它是免费的!
|
||||
* 范围有限? 不,它适用于互联网/ WiFi,无论您身在何处。
|
||||
* 下载并安装应用程序? 噢不,它适用于您现有的网络浏览器。
|
||||
* 购买新设备? 不用,你可以使用任何笔记本电脑,手机或平板电脑与网络浏览器和麦克风和/或相机。
|
||||
|
||||
|
||||
|
||||
(注意:遗憾的是,Apple iOS设备尚不支持,但预计很快就会发生变化 - 请继续阅读,了解如何帮助实现这一目标。)
|
||||
|
||||
### 开始
|
||||
|
||||
将您的设备转换为婴儿监视器很容易。 从您设备的浏览器(理想情况下为Chrome),访问 [gonimo.com] [1]并单击启动婴儿监视器以访问Web应用程序。
|
||||
|
||||
1. **创建家庭:** 在第一次启动屏幕上,你会看到一只可爱的兔子在地球上奔跑。 这是您创建新家庭的地方。 单击 **+** 按钮并接受随机生成的姓氏或键入您自己的选择。
|
||||
|
||||
|
||||
|
||||
![Start screen][3]
|
||||
|
||||
|
||||
从开始屏幕创建一个新家庭
|
||||
|
||||
1. **邀请设备:** 建立完家庭以后,下个屏幕将指示您邀请其他设备加入你的Gonimo家庭。您可以通过电子邮件直接发送一次性邀请链接,也可以将其复制并粘贴到邮件中。对其他设备,只需打开链接并接受邀请。对您要邀请的任何其他设备重复此过程。 您的设备现在属于同一家庭,可以作为一个完全正常工作的婴儿监视器系统进行配合。
|
||||
|
||||
|
||||
|
||||
![Invite screen][5]
|
||||
|
||||
|
||||
邀请家庭成员
|
||||
|
||||
1. **启动婴儿工作站流:** 接下来,通过转到 [Gonimo home screen][6],点击带有奶嘴的按钮,并允许网络浏览器访问设备的麦克风和摄像头,选择将婴儿的音频和视频流式传输到父母的设备。 调整相机以指向宝宝的床,或关闭它以节省设备电池(音频仍将流式传输)。 点击开始。 该流现在处于活动状态。
|
||||
|
||||
|
||||
|
||||
![Select baby station][8]
|
||||
|
||||
|
||||
选择婴儿站
|
||||
|
||||
![Press Start][10]
|
||||
|
||||
|
||||
按“Start”开始以流式传输视频
|
||||
|
||||
1. **连接到双亲站流:** 要查看婴儿站流,请转到Gonimo家族中的其他设备 - 这是双亲站。 点击Gonimo主屏幕上的“Parent”按钮。 您将看到该系列中所有设备的列表; 旁边有一个活跃的婴儿站将是一个短时连接按钮。 选择连接,您可以通过点对点音频/视频流看到和听到您的宝宝。 音量条为传输的音频流提供可视化。
|
||||
|
||||
|
||||
![Select parent station][12]
|
||||
|
||||
|
||||
选择双亲站
|
||||
|
||||
![Press Connect][14]
|
||||
|
||||
|
||||
按下“Connect”开始观看婴儿流。
|
||||
|
||||
1. **恭喜!** 您已成功将设备直接通过网络浏览器转换为婴儿监视器,无需下载或安装任何应用程序!
|
||||
|
||||
|
||||
|
||||
有关重命名设备,从系列中删除设备或删除系列的详细信息和详细说明,请查看 [video tutorial][15] 在 gonimo.com。
|
||||
|
||||
### 家庭系统的灵活性
|
||||
|
||||
Gonimo的优势之一是其基于家庭的系统,它为即使在商业Android或iOS应用中也无法提供的各种情况提供了极大的灵活性。 要深入了解这些功能,我们假设您创建了一个由三个设备组成的系列。
|
||||
|
||||
* **多婴儿:** 如果你想留意你在两个不同房间睡觉的两个小孩怎么办? 将设备放在每个孩子的房间,并将其设置为婴儿站。 第三个设备将充当双亲站,您可以在其上连接到两个流并通过分屏查看您的幼儿。 您甚至可以通过向家人提供更多设备并将其设置为婴儿站来将此用例扩展到两个以上的婴儿站。 只要您的父母站连接到第一个婴儿站,请单击左上角的后退箭头返回“设备概述”屏幕。 现在您可以连接到第二个(以及依次为第三个,第四个,第五个和第五个等)设备,并自动建立分屏。酷!
|
||||
|
||||
|
||||
* **多亲:** 如果爸爸想在他上班的时候看孩子怎么办? 只需邀请第四个设备(例如,他的办公室PC)到家庭并将其设置为父母站。 父母双方都可以通过他们自己的设备同时检查他们的孩子,甚至可以独立地选择他们希望连接的孩子。
|
||||
|
||||
|
||||
* **多户:** 单个设备也可以是几个系列的一部分。 当您的婴儿站与您一起时,如平板电脑,您经常访问亲戚或朋友时,这非常有用。 为“奶奶的房子”或“约翰叔叔的房子”创建另一个家庭,其中包括您的婴儿站设备与Granny's或Uncle John的设备配对。 您可以随时通过婴儿站设备的Gonimo主屏幕在这些家庭中切换婴儿站设备。
|
||||
|
||||
|
||||
|
||||
### 想要参加吗?
|
||||
|
||||
Gonimo团队喜欢开源。 社区代码,社区代码。 Gonimo的用户对我们非常重要,但它们只是Gonimo故事的一部分。 幕后有创意的大脑是创造出色婴儿监视器体验的关键。
|
||||
|
||||
目前我们特别需要那些愿意成为iOS 11测试者的人的帮助,因为Apple在iOS 11中对WebRTC的支持意味着我们最终将能够支持iOS设备。 如果可以,请帮助我们实现这个令人敬畏的里程碑。
|
||||
|
||||
如果您了解Haskell或想要了解它,您可以查看 [our code at GitHub][16]. 欢迎拉取请求,审查代码以及提出问题。
|
||||
最后,请通过向新父母和开源世界宣传Gonimo婴儿监视器是易于使用并且便携的。
|
||||
|
||||
### 关于作者
|
||||
Robert Klotzner;我是双胞胎的父亲;一个程序员。当我听到普通人可以给计算机编程时;我买了一本关于C的书页;开始学习;我当时十五岁。我坚持用C;相当长的一段时间;学习了java;回归到C
|
||||
|
||||
--------------------------------------------------------------------------------
|
||||
|
||||
via: https://opensource.com/article/17/9/gonimo
|
||||
|
||||
作者:[Robert Klotzner][a]
|
||||
译者:[lintaov587](https://github.com/lintaov587)
|
||||
校对:[校对者ID](https://github.com/校对者ID)
|
||||
|
||||
本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出
|
||||
|
||||
[a]:https://opensource.com/users/robert-klotzner
|
||||
[1]:https://gonimo.com/
|
||||
[2]:/file/371256
|
||||
[3]:https://opensource.com/sites/default/files/u128651/start-screen.png (Start screen)
|
||||
[4]:/file/371236
|
||||
[5]:https://opensource.com/sites/default/files/u128651/invite-screen.png (Invite screen)
|
||||
[6]:https://app.gonimo.com/
|
||||
[7]:/file/371231
|
||||
[8]:https://opensource.com/sites/default/files/u128651/baby-select.png (Select baby station)
|
||||
[9]:/file/371226
|
||||
[10]:https://opensource.com/sites/default/files/u128651/baby-screen.png (Press Start)
|
||||
[11]:/file/371251
|
||||
[12]:https://opensource.com/sites/default/files/u128651/parent-select.png (Select parent station)
|
||||
[13]:/file/371241
|
||||
[14]:https://opensource.com/sites/default/files/u128651/parent-screen.png (Press Connect)
|
||||
[15]:https://gonimo.com/index.php#intro
|
||||
[16]:https://github.com/gonimo/gonimo
|
@ -0,0 +1,97 @@
|
||||
10 个供管理员快速使用的杀手工具
|
||||
======
|
||||
|
||||
![](https://opensource.com/sites/default/files/styles/image-full-size/public/lead-images/cloud_tools_hardware.png?itok=PGjJenqT)
|
||||
|
||||
当工作负载累计时,管理网络和系统变得富有压力。没有人能真正意识到需要花费多长时间,每个人都希望在昨天能够完成他们的具体事务。
|
||||
|
||||
所以难怪我们这么多人都被致力于找出有效的方法并与大家分享的开源精神所吸引。因为,当截止日期来临,并且当天没有足够多的时间时,如果你可以找到立刻施行的免费答案,那会非常有帮助。
|
||||
|
||||
So, without further ado, here's my Swiss Army Knife of stuff to get you out of the office before dinner time.
|
||||
|
||||
因此,闲话少叙,下述是我的瑞士军刀,可以保证你在晚饭前离开办公室。
|
||||
|
||||
### 服务器配置和脚本
|
||||
|
||||
让我们看一看!
|
||||
|
||||
**[NixCraft][1]**
|
||||
用于网站内部的搜索功能。经过十多年的定期更新,这里有黄金!有用的脚本和方便的提示可以立刻解决你的问题。这是我一般使用 Google 后的第二个选项。
|
||||
|
||||
**[Webmin][2]**
|
||||
它提供给你了一个很好的 Web 界面来帮助你远程编辑配置问卷。它减少了大量花费在处理目录路径和 `sudo nano` 上的时间,在你处理多个客户时,非常方便。
|
||||
|
||||
**[Windows 下的 Linux 子系统][3]**
|
||||
|
||||
现代工作场所的现实是大多数员工都运行着 Windows,而服务器机房中增长的设备则运行着 Linux 。因此,有些时候你会发现尝试在 Windows 桌面上执行管理任务。
|
||||
|
||||
你怎么做?装一个虚拟机?如果安装目前 Windows 10 中免费提供的 Linux 子系统的兼容层,实际上要快得多,配置文件要少的多。
|
||||
|
||||
这为你提供了一个 Bash 终端窗口,你可以在这个窗口中执行本地计算机上的 Bash 脚本和 Linux 二进制问卷,可以完全访问 Windows 和 Linux 问卷系统,以及安装网络驱动器。它包含 Ubuntu 、OpenSUSE、SLES、Debian和 Kali 发行版。
|
||||
|
||||
**[mRemoteNG][4]**
|
||||
当你有 100 + 服务器需要去管理时,这会是一个出色的 SSH 和远程桌面客户端。
|
||||
|
||||
### 设置网络,这样你就无需再这样做了。
|
||||
|
||||
一个考虑不周的网络是厌恶加班管理员的死敌。
|
||||
|
||||
**[可拓展的 IP 寻址方案][5]**
|
||||
|
||||
IP 地址耗尽的可怕之处在于,当 IP 地址耗尽时,网络已经变的足够大,而新的寻址方案是众所周知的昂贵、令人痛苦的耗时。
|
||||
|
||||
没有人有时间做这件事!
|
||||
|
||||
到了某个时候,IPv6 终将到来,来拯救这世界。在那之前,无论世界向我们扔了多少可穿戴设备、平板电脑、智能锁、灯、安全摄像头、VoIP耳机和浓缩咖啡机,这些一刀切的IP 寻址方案都应该让我们继续前行。
|
||||
|
||||
|
||||
**[Linux Chmod 权限备忘录][6]**
|
||||
|
||||
一个简短但是有用的 Bash 命令备忘录可以帮助你通过网络设置权限。所以,客户服务部的账单落入到勒索软件骗局时,你可以只恢复他们的文件,而不是整个公司的文件。
|
||||
|
||||
**[VLSM 子网计算器][7]**
|
||||
|
||||
只需要输入你想要从地址空间中创建的网络的数量,以及每个网络所需要的主机数量,它就可以计算出所有的子网掩码应该是什么。
|
||||
|
||||
### 单一用途的 Linux 发行版
|
||||
|
||||
需要一个只一件事的 Linux 容器?如果其他人已经在操作系统上花了很多钱,它可以帮助你快速安装并准备好一个操作系统。
|
||||
|
||||
下面这些每一个都使得我的工作变得轻松了许多。
|
||||
|
||||
**[Porteus Kiosk][8]**
|
||||
这个工具用来帮你在一台锁定的电脑上打开一个浏览器。通过稍稍一些调整,你甚至可以把浏览器锁定在一个特定的网站上。它对于公共访问机器来说非常方便。它可以与触摸屏或键盘鼠标配合使用。
|
||||
|
||||
**[Parted Magic][9]**
|
||||
这是一个你可以从 USB 驱动器启动的可以用来划分磁盘驱动器、恢复数据并运行基准测试工具的操作系统。
|
||||
|
||||
**[IPFire][10]**
|
||||
|
||||
啊哈~我还是不敢相信有人吧路由器/防火墙/代理组合成为“我尿火”(译者注:IPFire 和 “I pee Fire“ 同音)。这是我在这个 Linux 发行版中第二喜欢的东西。我最喜欢的是它是一个非常可靠的软件套件,设置和配置十分容易,而且有一系列的插件可以拓展它。
|
||||
|
||||
那么,你呢?你发现了哪些工具、资源和备忘录可以让我们的工作日更加的轻松?
|
||||
|
||||
我很高兴知道,请在评论中分享您的工具。
|
||||
|
||||
--------------------------------------------------------------------------------
|
||||
|
||||
via: https://opensource.com/article/18/7/tools-admin
|
||||
|
||||
作者:[Grant Hamono][a]
|
||||
选题:[lujun9972](https://github.com/lujun9972)
|
||||
译者:[bestony](https://github.com/bestony)
|
||||
校对:[校对者ID](https://github.com/校对者ID)
|
||||
|
||||
本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出
|
||||
|
||||
[a]:https://opensource.com/users/grantdxm
|
||||
[1]:https://www.cyberciti.biz/
|
||||
[2]:http://www.webmin.com/
|
||||
[3]:http://wsl-guide.org/en/latest/
|
||||
[4]:https://mremoteng.org/
|
||||
[5]:https://blog.dxmtechsupport.com.au/ip-addressing-for-a-small-business-that-might-grow/
|
||||
[6]:https://isabelcastillo.com/linux-chmod-permissions-cheat-sheet
|
||||
[7]:http://www.vlsm-calc.net/
|
||||
[8]:http://porteus-kiosk.org/
|
||||
[9]:https://partedmagic.com/
|
||||
[10]:https://www.ipfire.org/
|
100
translated/tech/20181217 Working with tarballs on Linux.md
Normal file
100
translated/tech/20181217 Working with tarballs on Linux.md
Normal file
@ -0,0 +1,100 @@
|
||||
[#]: collector: (lujun9972)
|
||||
[#]: translator: (geekpi)
|
||||
[#]: reviewer: ( )
|
||||
[#]: publisher: ( )
|
||||
[#]: url: ( )
|
||||
[#]: subject: (Working with tarballs on Linux)
|
||||
[#]: via: (https://www.networkworld.com/article/3328840/linux/working-with-tarballs-on-linux.html)
|
||||
[#]: author: (Sandra Henry-Stocker https://www.networkworld.com/author/Sandra-Henry_Stocker/)
|
||||
|
||||
在 Linux 上使用 tarball
|
||||
======
|
||||
![](https://images.idgesg.net/images/article/2018/12/tarball-100783148-large.jpg)
|
||||
|
||||
“tarball” 一词通常用于描述备份一组选择的文件并将它们打包在一个文件中的一种文件格式。该名称来自 **.tar** 文件扩展名和 **tar** 命令,它用于将文件打包到一个文件中,然后压缩该文件,使其在移动到其他系统时更小。
|
||||
|
||||
tarballs 通常用于备份个人或系统文件来创建存档, 特别是在进行可能需要撤消的更改之前。例如,Linux 系统管理员通常会在更改应用之前创建包含一系列配置文件的 tarball,以防必须撤消这些更改。从 tarball 中解压文件通常比在备份中搜索文件快。
|
||||
|
||||
### 如何在 Linux 上创建 tarball
|
||||
|
||||
使用如下命令,你可以在单条命令中创建并压缩文件。
|
||||
|
||||
```
|
||||
$ tar -cvzf PDFs.tar.gz *.pdf
|
||||
```
|
||||
|
||||
这里最后是一个压缩文件 (gzip),其中包含了当前目录中的所有 PDF 文件。当然,压缩是可选的。一个稍微简单的只是将 PDF 文件打包成未压缩 tarball 的命令:
|
||||
|
||||
```
|
||||
$ tar -cvf PDFs.tar *.pdf
|
||||
```
|
||||
|
||||
注意,选项中的 **z** 将文件变成压缩的。 **c** 表明正在创建文件,**v** (详细)表示你在命令运行时需要一些反馈。如果你不想查看列出的文件,请忽略 **v**。
|
||||
|
||||
另一个常见的命名约定是给压缩的 tarball 命名成 **.tgz** 而不是双扩展名 **.tar.gz**,如下所示:
|
||||
|
||||
```
|
||||
$ tar cvzf MyPDFs.tgz *.pdf
|
||||
```
|
||||
|
||||
### 如何从 tarball 中解压文件
|
||||
|
||||
要从 gzip 压缩包中解压所有文件,你可以使用如下命令:
|
||||
|
||||
```
|
||||
$ tar -xvzf file.tar.gz
|
||||
```
|
||||
|
||||
如果使用 .tgz 命名约定,该命令将如下所示:
|
||||
|
||||
```
|
||||
$ tar -xvzf MyPDFs.tgz
|
||||
```
|
||||
|
||||
要从 gzip 包中解压单个文件,你可以执行几乎相同的操作,只需添加文件名:
|
||||
|
||||
```
|
||||
$ tar -xvzf PDFs.tar.gz ShenTix.pdf
|
||||
ShenTix.pdf
|
||||
ls -l ShenTix.pdf
|
||||
-rw-rw-r-- 1 shs shs 122057 Dec 14 14:43 ShenTix.pdf
|
||||
```
|
||||
|
||||
如果未压缩 tarball,你甚至可以从 tarball 中删除文件。例如,如果我们想从 PDFs.tar.gz 中删除我们上面解压的文件,我们会这样做:
|
||||
|
||||
```
|
||||
$ gunzip PDFs.tar.gz
|
||||
$ ls -l PDFs.tar
|
||||
-rw-rw-r-- 1 shs shs 10700800 Dec 15 11:51 PDFs.tar
|
||||
$ tar -vf PDFs.tar --delete ShenTix.pdf
|
||||
$ ls -l PDFs.tar
|
||||
-rw-rw-r-- 1 shs shs 10577920 Dec 15 11:45 PDFs.tar
|
||||
```
|
||||
|
||||
请注意,我们在删除 ShenTix.pdf 后,缩小了一点 tar 文件占用的空间。如果我们想要,我们可以再次压缩文件:
|
||||
|
||||
```
|
||||
$ gzip -f PDFs.tar
|
||||
ls -l PDFs.tar.gz
|
||||
-rw-rw-r-- 1 shs shs 10134499 Dec 15 11:51 PDFs.tar.gzFlickr / James St. John
|
||||
```
|
||||
|
||||
丰富的命令行选项使得 tarball 使用起来简单方便。
|
||||
|
||||
在 [Facebook][1] 和 [LinkedIn][2] 中加入 Network World 社区来评论主题。
|
||||
|
||||
--------------------------------------------------------------------------------
|
||||
|
||||
via: https://www.networkworld.com/article/3328840/linux/working-with-tarballs-on-linux.html
|
||||
|
||||
作者:[Sandra Henry-Stocker][a]
|
||||
选题:[lujun9972][b]
|
||||
译者:[geekpi](https://github.com/geekpi)
|
||||
校对:[校对者ID](https://github.com/校对者ID)
|
||||
|
||||
本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出
|
||||
|
||||
[a]: https://www.networkworld.com/author/Sandra-Henry_Stocker/
|
||||
[b]: https://github.com/lujun9972
|
||||
[1]: https://www.facebook.com/NetworkWorld/
|
||||
[2]: https://www.linkedin.com/company/network-world
|
Loading…
Reference in New Issue
Block a user