2016年12月

在 Linux 终端下处理文件时,有时我们想直接清空文件的内容但又不必使用任何 Linux 命令行编辑器 去打开这些文件。那怎样才能达到这个目的呢?在这篇文章中,我们将介绍几种借助一些实用的命令来清空文件内容的方法。

注意:在我们进一步深入了解这些方法之前,请记住: 由于在 Linux 中一切皆文件,你需要时刻注意,确保你将要清空的文件不是重要的用户文件或者系统文件。清空重要的系统文件或者配置文件可能会引发严重的应用失败或者系统错误。

前面已经说道,下面的这些方法都是从命令行中达到清空文件的目的。

提示:在下面的示例中,我们将使用名为 access.log 的文件来作为示例样本。

1. 通过重定向到 Null 来清空文件内容

清空或者让一个文件成为空白的最简单方式,是像下面那样,通过 shell 重定向 null (不存在的事物)到该文件:

# > access.log

Empty Large File Using Null Redirect in Linux

在 Linux 下使用 Null 重定向来清空大文件

2. 使用 ‘true’ 命令重定向来清空文件

下面我们将使用 : 符号,它是 shell 的一个内置命令,等同于 true 命令,它可被用来作为一个 no-op(即不进行任何操作)。

另一种清空文件的方法是将 : 或者 true 内置命令的输出重定向到文件中,具体如下:

# : > access.log
或 
# true > access.log

Empty Large File Using Linux Commands

使用 Linux 命令清空大文件

3. 使用 cat/cp/dd 实用工具及 /dev/null 设备来清空文件

在 Linux 中, null 设备基本上被用来丢弃某个进程不再需要的输出流,或者作为某个输入流的空白文件,这些通常可以利用重定向机制来达到。

所以 /dev/null 设备文件是一个特殊的文件,它将清空送到它这里来的所有输入,而它的输出则可被视为一个空文件。

另外,你可以通过使用 cat 命令 显示 /dev/null 的内容然后重定向输出到某个文件,以此来达到清空该文件的目的。

# cat /dev/null > access.log

Empty File Using cat Command

使用 cat 命令来清空文件

下面,我们将使用 cp 命令 复制 /dev/null 的内容到某个文件来达到清空该文件的目的,具体如下所示:

# cp /dev/null access.log

Empty File Content Using cp Command

使用 cp 命令来清空文件

而下面的命令中, if 代表输入文件,of 代表输出文件。

# dd if=/dev/null of=access.log

Empty File Content Using dd Command

使用 dd 命令来清空文件内容

4. 使用 echo 命令清空文件

在这里,你可以使用 echo 命令 将空字符串的内容重定向到文件中,具体如下:

# echo "" > access.log
或者
# echo > access.log

Empty File Using echo Command

使用 echo 命令来清空文件

注意:你应该记住空字符串并不等同于 null 。字符串表明它是一个具体的事物,只不过它的内容可能是空的,但 null 则意味着某个事物并不存在。

基于这个原因,当你将 echo 命令 的输出作为输入重定向到文件后,使用 cat 命令 来查看该文件的内容时,你将看到一个空白行(即一个空字符串)。

要将 null 做为输出输入到文件中,你应该使用 -n 选项,这个选项将告诉 echo 不再像上面的那个命令那样输出结尾的那个新行。

# echo -n "" > access.log

Empty File Using Null Redirect

使用 Null 重定向来清空文件

5. 使用 truncate 命令来清空文件内容

truncate 可被用来将一个文件缩小或者扩展到某个给定的大小

你可以利用它和 -s 参数来特别指定文件的大小。要清空文件的内容,则在下面的命令中将文件的大小设定为 0:

# truncate -s 0 access.log

Truncate File Content in Linux

在 Linux 中截断文件内容

我要介绍的就是这么多了。在本文中,我们介绍了几种通过使用一些简单的命令行工具和 shell 重定向机制来清除或清空文件内容的方法。

上面介绍的这些可能并不是达到清空文件内容这个目的的所有可行的实践方法,所以你也可以通过下面的评论栏告诉我们本文中尚未提及的其他方法。


via: http://www.tecmint.com/empty-delete-file-content-linux/

作者:Aaron Kili 译者:FSSlc 校对:jasminepeng

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

在这篇教程中,我们将会走完在电脑上安装 Fedora 25 workstation 的每一步。该指南包括整个安装过程中的每一步截图,因此,请认真跟着操作。

Fedora 25 Workstation 有哪些新特性?

正如大家所期待的那样,Fedora 的这个最新版本在基础组件上做了很多的改变以及修复大量的 bug,除此之外,它带来了很多新的功能强大的软件,如下所示:

  • GNOME 3.22,可以重命名多个文件,重新设计的键盘布局工具以及一些用户界面上的改进。
  • 使用 Wayland 代替 X11 系统,以满足现代图形硬件设备。
  • 支持 MP3 格式解码。
  • Docker 1.12。
  • Node.js 6.9.1。
  • 支持 Rust 系统编程语言。
  • 支持多个版本的 Python 编程语言,包括 Python2.6、2.7、3.3、3.4 和 3.5。
  • 不再检查 GNOME Shell 扩展与当前的 GNOME Shell 版本的兼容性等等。

注意:如果电脑上已安装了前一个版本 Fedora 24,或许你可以考虑使用更简单的几个步骤将 Fedora 24 升级到 Fedora 25 以避免全新的安装过程。

安装 Fedora 25 Workstation 版本

从下面的链接下载 ISO 系统镜像开始,本安装教程将使用 64 位的镜像来安装。

下载完 Fedora 25 的系统镜像后,第一步是创建一个可启动设备(DVD 或 USB 设备),使用 Unetbootin 和 dd 命令来制作 USB 启动工具,或使用其它你想用的方法也行。

1、 创建完成启动设备后,插入并从该设备(DVD/USB)启动,此时,你应该看到如下图所示的 Fedora Workstation Live 的启动界面。

选择 “Start Fedora-Workstation-Live 25” 选项,然后单点回车。

Fedora 25 Boot Menu

Fedora 25 启动菜单

2、 接下来,你会进入到登录界面,单击“Live System User”以 Live 用户身份进入系统。

Fedora 25 Live User Login

Fedora 25 Live 用户登录

3、 登入系统后,几秒钟后桌面上会出现下面的欢迎界面,如果你想在安装前试用 Fedora 系统,单击 “Try Fedora”,否则单击 “Install to Hard Disk” 进入到全新安装过程。

Fedora 25 Welcome Screen

Fedora 25 欢迎界面

4、 在下面的界面中,选择想要使用的安装语言,然后单击“ 继续 Continue ”按钮进入到安装总结页面。

Select Installation Language Type

选择安装语言类型

5、 下图是安装总结界面,显示默认的区域及系统设置内容。你可以根据自己的位置和喜好来定制区域及系统设置。

从键盘设置开始。单击“ 键盘 KEYBOARD ”进入到键盘布局自定义设置界面。

Fedora 25 Installation Summary

Fedora 25 安装总结

6、 在这个界面中,根据你电脑之前的设置使用+号来添加你需要的键盘布局,然后单击“ 完成 Done "返回到安装总结界面。

Set Keyboard Layout

设置键盘布局

7、 下一步,单击“ 时间与日期 TIME & DATA ”调整系统时间和日期。输入所在地区和城市来设置时区,或者从地图上快速选择。

注意你可以从右上角启用或者停用网络时间同步。设置完系统时间和日期后,单击“ 完成 Done ”返回到安装总结界面。

Set System Timezone

设置系统时区

8、 返回到安装总结界面,单击“ 网络与主机名 NETWORK & HOSTNAME ”设置网络和主机名。

主机名设置完成后,单击“ 应用 Apply ”来检查主机名是否可用,如果可用,单击“ 完成 Done ”。

Set Hostname for Fedora 25

设置 Fedora 25 的主机名

9、 此时,在安装总结界面,单击“ 安装目标 INSTALLATION DESTINATION ”来为系统文件划分安装空间。

在“ 其它存储选项 Other Storage Options ”上选择“ 我要配置分区 I will configure partitioning ”来执行手动分区,然后单击 “ 完成 Done ” 前进至手动分区界面。

Select Installation Destination Drive

选择安装位置

10、 下面是手动分区界面,选择“ 标准分区 Standard Partition ”为新的分区模式来安装。

Manual Partitioning Selection

手动配置分区

11、 现在通过点+号增加一个挂载点来创建一个/root分区。

  • 挂载点: /root
  • 建议容量: 合适即可(比如 100 GB)

之后,单击“ 增加挂载点 Add mount point ”添加刚刚创建的分区/挂载点。

Create New Root Partition

创建新的 Root 分区

下图展示了 /root 分区设置。

Root Partition Settings

Root 分区设置

12、 下一步,通过+号创建 交换分区 swap

交换分区是硬盘上的一个虚拟的磁盘空间,用于临时存放那些当前 CPU 不使用的内存数据。

  • 挂载点: swap
  • 建议容量:合适即可(比如 4 GB)

单击“ 增加挂载点 Add mount point ”添加交换分区。

Create Swap Partition

创建交换分区

Swap Partition Settings

交换分区设置

13、 创建完 root 分区和 swap 分区后,单击“ 完成 Done ”按钮来查看这些要对磁盘进行的更改。单击 “ 接受调整 Accept Changes ” 允许执行所有的分区调整。

Accept Partition Changes

接受分区调整

14、 你最后的安装总结内容应该跟下图显示的差不多。单击“ 开始安装 Begin Installation ”开始真正安装系统。

Final Installation Summary

最后的安装总结内容

15、 系统文件安装开始后,你可以在下面的界面中,创建一个常用的系统用户,并为 root 账号设置密码。

User Configuration Settings

用户配置设置

16、 之后,单击“ ROOT 密码 ROOT PASSWORD ”来设置 root 账号密码。像之前一样,单击“ 完成 Done ”返回到用户配置界面。

Set Root Account Password

设置 root 账号密码

17、 之后,在用户配置界面单击“ 创建用户 USER CREATION ”按钮来创建一个常用的系统用户。你也可以勾选“ 将该用户作为管理员 Make the user administrator ”选项把该用户提升为系统管理员。

再次单击“ 完成 Done ”按钮继续。

Create System User Account

创建系统用户账号

18、 安装过程将会持续一段时间,你可以去休息会了。安装完成之后,单击“ 退出 Quit ”重启系统,并弹出你使用的启动设备。终于,你可以登录进入新的 Fedora 25 Workstation 了。

Fedora 25 Login Screen

Fedora 25 登录界面

Fedora 25 Workstation Desktop

Fedora 25 Workstation 桌面

就写到这里吧!请在下面提出相关的问题并发表评论。


via: http://www.tecmint.com/fedora-25-installation-guide/

作者:Aaron Kili 译者:rusking 校对:jasminepeng

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

你可以在 Linux 的生态系统中找到很多网络监控工具,它们可以为你生成出网络中所有设备的摘要,包括它们的 IP 地址等信息。

然而,实际上有时候你只需要一个简单的命令行工具,运行一个简单的命令就能提供同样的信息。

本篇教程会向你展示如何找出所有连接到给定网络的主机的 IP 地址。这里我们会使用 Nmap 工具来找出所有连接到相同网络的设备的IP地址。

Nmap (Network Mapper 的简称)是一款开源、强大并且多功能的探查网络的命令行工具,用来执行安全扫描、网络审计查找远程主机的开放端口等等。

如果你的系统中还没有安装 Nmap,在你的发行版中运行合适的命令来安装:

$ sudo yum install nmap     [在基于 RedHat 的系统中]
$ sudo dnf install nmap     [在基于Fedora 22+ 的版本中]
$ sudo apt-get install nmap [在基于 Debian/Ubuntu 的系统中]

安装完成后,使用的语法是:

$ nmap  [scan type...]  options  {target specification}

其中,{target specification}这个参数可以用主机名、IP 地址、网络等来替代。

所以要列出所有连接到指定网络的主机 IP 地址,首先要使用 ifconfig 命令或者ip 命令来识别网络以及它的子网掩码:

$ ifconfig
或者
$ ip addr show

Find Network Details in Linux

在 Linux 中查找网络细节

接下来,如下运行 Nmap 命令:

$ nmap  -sn  10.42.0.0/24

Find All Live Hosts on Network

查找网络中所有活跃的主机

上面的命令中:

  • -sn - 是扫描的类型,这里是 ping 方式扫描。默认上,Nmap 使用端口扫描,但是这种扫描会禁用端口扫描。
  • 10.42.0.0/24 - 是目标网络,用你实际的网络来替换。

要了解全面的信息,查看 Nmap 的手册:

$ man nmap

或者不带任何参数直接运行 Nmap 查看使用信息摘要:

$ nmap

此外,对于有兴趣学习 Linux 安全扫描技术的人,可以阅读 Nmap in Kali Linux 这篇实践指导。

好了,就是这样了,记得在下面的回复区给我们发送问题或者评论。你也可以跟我们分享其他列出指定网络已连接设备的 IP 地址的方法。


via: http://www.tecmint.com/find-live-hosts-ip-addresses-on-linux-network/

作者:Aaron Kili 译者:geekpi 校对:jasminepeng

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

 title=

即使对于熟练的开发人员,想要去为一个项目贡献代码,正确的安装和配置一个集成开发环境、 工作区 workspace 和构建工具,都是一个十分艰难和浪费时间的任务。Codenvy 的CEO,Tyler Jewell,也面临着这个问题。当他养好了一些小病,又处理了一些管理工作之后,试图建立一个简单的 Java 项目来找回他曾经的编程技能。经过多天的努力,Jewell 的项目依然无法工作,但这就是给予了他灵感。他想做个可以让“任何人,任何时候都可以为安装软件的项目做贡献”的东西。

正是这个想法引发了 Eclipse Che 的发展。

Eclipse Che 是一个基于 Web 的集成开发环境(IDE)和工作区。Eclipse Che 将工作区与合适的运行时 软件环境 stack 捆绑在一起,全都紧密结合起来。在这些工作空间中的项目具有运行所需的一切工具,开发人员不用做什么事情,只需要创建工作空间时选择正确的软件环境。

Eclipse Che 已经就绪的捆绑软件环境支持绝大多数现代流行语言。现在已经支持 C++、Java、Go、PHP、 Python、 .NET、Node.js、 Ruby on Rails,和 Android 开发等。 软件环境库 Stack Library 提供了多种选择,如果这样还不够,还可以选择创建一个提供自定义的环境的定制软件环境。

Eclipse Che 是一个功能齐全的 IDE,而不是一个基于 Web 的简易文本编辑器。它构建于 Orion 和 JDT 之上。支持 智能感知 Intellisense 和调试,并集成了 Git 和 Subversion 版本控制软件。IDE 甚至可以由多个用户共享,进行结对编程。只需一个 Web 浏览器,开发人员就可以编写和调试他们的代码。但是,如果开发人员更喜欢使用基于桌面的 IDE,也可以使用 SSH 连接到工作空间。

Eclipse Che 底层所采用的主要技术之一是 Linux 容器 - Docker。工作空间是同样是使用 Docker 构建的,安装 Eclipse Che 的本地副本只需要 Docker 和一个小脚本文件。只需在第一次运行时,第一次运行 che.sh start 时,就会下载和运行必需的 Docker 容器。但是,如果你觉得设置 Docker 来安装 Eclipse Che 依然太麻烦,Codenvy 还提供在线托管的方法。甚至,他们为开源项目的每个贡献者都提供了 4GB 的工作区。使用 Codenvy 的托管选项或者其它的在线托管方式,只需要提供一个 URL 给潜在贡献者,就会自动创建一个包含项目代码的工作区,所有这些只需轻轻点击一下。

除了 Codenvy 之外,Eclipse Che 的贡献者还包括微软、红帽、IBM、三星和许多其它的人或组织。很多贡献者正在致力于开发 Eclipse Che 的定制版本以用于其特定用途。例如,三星的 Artik IDE 项目用于物联网领域。基于 Web 的 IDE 可能会让一些人失业,但 Eclipse Che 提供很多的机会,并且有很多业内的大公司需要,值得一试。


via: https://opensource.com/life/16/11/introduction-eclipse-che

作者:Joshua Allen Holm 译者:Vic020 校对:wxy

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

自从修改了我的路由器的 WiFi 网络密码后,我的 Arch Linux 测试机就不能连接到网络了。由于我的 Arch Linux 测试机没有图形化桌面环境,我不得不在终端上更改 WiFi 密码。在图形化操作界面中,更改 WiFi 密码是很容易的。我仅仅需要打开网络管理器,就能很快更改 WiFi 网络密码。但是,我从来没有在 Arch Linux 终端上用命令行来更改 WiFi 密码。我开始在 google 上搜索相关资料,并且在 Arch Linux 论坛找到了一个好的解决办法。如果你也面临同样的问题,读完这篇文章吧,这个方法并没有那么难。

在终端更改 WiFi 网络密码

修改了路由器的 WiFi 密码之后,我尝试运行 wifi-menu 命令来更新 WiFi 密码,但是它一直报如下错误。

sudo wifi-menu

它显示了可用的 WiFi 列表。

我的 WiFi 网络名为 Murugs9376。我选中了我的 WiFi 网络,然后在 OK 处按下回车。它没有让我输入新的 WiFi 密码(我以为它会先问我是否密码已经更改),却显示了下面的错误。

Interface 'wlp9s0' is controlled by netctl-auto
WPA association/authentication failed for interface 'wlp9s0'

在 Arch 发行版上,我没有太多的经验。因此我去了 Arch Linux 论坛希望能找到解决方法。感天谢地,之前有人发了同样问题的帖子并从一位 Arch 老司机那里得到了解决办法。

网络相关的配置文件都是存放在 /etc/netctl/ 文件夹下。例如,下面是我的 Arch Linux 测试机上该文件夹下的内容:

ls /etc/netctl/

Sample Output:

examples    ostechnix         'wlp9s0-Chendhan Cell Service'  wlp9s0-Pratheesh
hooks       wlp9s0            wlp9s0-Murugu9376
interfaces  wlp9s0-AndroidAP  wlp9s0-none

我如果想要更改密码,只需要删除我的 WiFi 网络配置文件 (这里是 wlp9s0-Murugs9376) 并且重新运行 wifi-menu 命令。

因此,用下面的命令来删除原来的 WiFi 配置文件:

sudo rm /etc/netctl/wlp9s0-Murugu9376

删除配置文件之后,运行 wifi-menu 命令来更新 WiFi 密码。

sudo wifi-menu

选择 WiFi 网络,并且按回车键。

为新配置文件输入一个新名字。

最后,输入 WiFi 新密码到配置文件中,并且按下回车键。

这样就完成了。现在,我们已经更新了我们的 WiFi 网络密码。像你所看到的一样,在 Arch Linux 终端里面更新 WiFi 密码并不是件很难的事情。任何人都能在几秒钟以内完成它。

如果您觉得这个教程很有帮助,希望您能分享到您的社交网络中来支持我们。

谢谢!


via: https://www.ostechnix.com/update-wifi-network-password-terminal-arch-linux/

作者:SK 译者:chenzhijun 校对:jasminepeng

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

Android 2.1——动画的大发现(以及滥用)时代

安卓 2.1 随着 Nexus One 的发布一同到来,这时距安卓 2.0 的发布仅仅过了三个月。新系统并不是一个大的更新升级,所以它仍然使用 Éclair(泡芙)这个名称。安卓的开发以一种闻所未闻的步伐急速进行,在过去的 15 个月中,谷歌平均每两个半月就发布一个新版本。

绝大部分得益于威瑞森在市场营销上的努力以及“Droid”产品线,安卓日益流行起来。即便如此,这个系统还是被人觉得丑,这时的安卓工程师看起来就几乎没有接受过正式的设计培训,在安卓 2.1 中,他们尝试着通过在所有能用上的地方大量使用动画效果,想让东西看起来更整齐一点。这么做的结果就是系统看起来拼命想要证明它可以实现动画效果。许多新增的部分感觉更像是技术的演示而不是为了用户体验的改善。

安卓2.1和2.0中的锁屏和主屏幕。

安卓 2.1 和 2.0 中的锁屏和主屏幕。 [Ron Amadeo 供图]

安卓 2.0 的旋转拨号式锁屏在仅仅在一个版本之后就被踢到路边去了,取而代之的是和来电界面使用的相同的拉动式标签式解锁。锁屏时钟尝试使用了一种独特的安卓字体,但是相比其它字体来说,它真是丑得可以。

安卓 2.1 最大的特色之一是“动态壁纸”——可互动的或是动态图片可以被设置为壁纸。默认的动态壁纸是个灰色正方形组成的大方阵,不断有蓝色,红色,黄色以及绿色的光点拖着尾巴穿越屏幕。点击屏幕会使光点以你点击的位置为中心向四个方向射出。尽管动态壁纸看起来很棒(并且相对 iPhone 而言是个独特的特性),但动画背景对电池和处理器而言可不是什么好事。它似乎让整个系统的运行都变得有点慢了。

在主屏幕上,默认的谷歌搜索小部件周围有了更多空间,并且现在它位于所在行的正中央。页面指示器现在出现在屏幕底部的左右角落,主屏幕的页数也从 3 页变成了 5 页。底部的应用抽屉标签被替换为一个正方形方阵组成的图标,这个(对应用列表的)暗喻直到今天谷歌也还在使用。

图片展示了安卓2.1和2.0中的应用抽屉设计以及应用的选择。

图片展示了安卓 2.1 和 2.0 中的应用抽屉设计以及应用的选择。 [Ron Amadeo 供图]

和新应用抽屉图标一同到来的还有全新的应用抽屉。应用抽屉不再是以前从屏幕底部上拉的带标签容器的样子,新界面显示为一个全屏界面。原先的碳纤维编织纹理被去掉了,变成了一个纯黑背景——这个改变会一直持续到 KitKat。

谷歌决定添加一个浮动的、半透明的 home 图标到应用抽屉的底部,好让人们方便地退出全屏的应用列表界面。这个可以看作是安卓 4.0 中引入的虚拟 home 键的前身。

应用抽屉同样有个俗气的图形效果。在滚动的时候,在应用列表顶部和底部的图标会向内弯曲并且看起来像是向手机深处移动一样,有点像星球大战开场的滚动字幕。

应用的图标也有不多的改变。“Amazon MP3”和“Alarm Clock”(闹钟)都去掉了前面那个单词,然后他们就从按字母排序的列表的前两个位置退了下来。出现了两个新的应用:新闻和天气,以及 Google Voice,这是谷歌的通信服务。由于 Nexus One 不是威瑞森的定制机,威瑞森的可视语音邮件被去掉了。

修改后的时钟应用。

修改后的时钟应用。 [Ron Amadeo 供图]

不止是名称的更改,时钟应用还迎来了整体上的重制。点击时钟快捷方式不再会打开闹钟页面;取而代之的是去到“桌面时钟”界面(上方左图),它带有一个和壁纸一致的背景。时钟使用和锁屏一样的字体,并从新的新闻和天气应用中获取天气。

新的闹钟页面清除了许多旧版本中奇怪的设计。模拟时钟和可选择的时钟样式已经不见了。复选框已经被一个带绿色亮光的开关所取代,它比“灰色勾选/绿色勾选”更容易理解。尽管可能从快照很难看出来,旧的闹钟设计在时间旁同时显示 AM 和 PM。2.1 的设计里取消了这一项,只显示相关的 AM/PM 标记。底部放置了一个数字时钟,点击时钟图标会将你带回桌面时钟界面。

安卓2.1和2.0中的相册和单独图片查看界面。

安卓 2.1 和 2.0 中的相册和单独图片查看界面。 [Ron Amadeo 供图]

谷歌想要改进安卓外观的欲望在 2.1 的相册中最为明显,这里几乎都是大量使用的动画效果和半透明。当应用打开的时候,单独的图片从屏幕顶部飞下并且打乱成小堆组成相册。当打开相册的时候,图片堆各自分离,照片滑开形成方阵的形式。所有你触摸的东西会弹开,压缩,以及拉伸,就像是果冻的弹簧片一样。

相册这里没有一个“标准”的背景。它会从屏幕上随机选择一张图片并深度模糊,然后作为背景图片使用。当这张图片滑出屏幕显示范围后,它会重新选择一张背景图片,所以背景色调总是会和你的图片相匹配。

屏幕的左上角放置了面包屑导航栏。它显示你当前的位置,以及你所在位置和主界面之间的任何文件夹——它可以被看作是在安卓 3.0 中即将推出的“向上”按钮的前身。在右上角是一个相机的链接,这还留着相同的在安卓 1.6 中登场的人造皮革设计——两个设计截然不同。

而相机是另一个奇怪的、一次性的设计,从来没有哪个安卓应用间的随意的 UI 设计差距能有和新的相册应用间这么明显。它并没有采用安卓的按钮、菜单、或任何现有的 UI 规范。它甚至在每个界面隐藏了状态栏——你几乎不能分辨出你正在盯着的是安卓。

在单张照片查看视图,你终于可以在图片之间滑动切换,从而去掉了短粗的左右箭头。出于某种原因,这个界面并没有颜色匹配的背景。它是应用中唯一一个背景为黑色的部分。缩放控制在右上方(仍然没有两指捏合缩放),可用命令沿着屏幕的底部排成一行。点击“菜单”按钮(虚拟或实体键)并不会像所有其他的应用一样出现一个 2×3 格的方阵——仅仅是底部的一行选项从两个变成了另外三个选项。

充满动画效果的相册应用。

充满动画效果的相册应用。 [Ron Amadeo 供图]

上面第一张图片,显示了一个相册视图。大型相册的话你可以水平滚动,或使用在屏幕底部的快速滚动条。长按图片(虽然有点奇怪,或者可以按实体菜单按钮)会弹出一个“复选框”界面,这时你可以点击几张照片同时选中它们。你选中照片之后,你可以批量分享、删除或旋转照片。

这个界面和接下来的单张照片查看界面的菜单是半透明对话气泡式的,点击各个按钮时它们会跳出来。再重复一遍,这和你所看到的正常的安卓体验规范大相径庭。相册还是第一个拥有越界效果(overscroll)的应用之一。当你到达照片墙的底部时,整个界面会向滚动的方向扭曲。

2.1 的相册是第一个能同时显示您云存储的 Picasa 照片以及本地照片的客户端。这些照片缩略图的左下角有白色相机快门图标。这后来成为了 Google+ Photos。

之前或之后任何安卓应用程序看起来都不像这个相册。有很好的理由解释这是为什么——它不是谷歌做的!这个应用外包给了 Cooliris,他们看样子并没有打算花费精力遵循任何一条现有的安卓 UI 规范。尽管应用是可用的,所有的动画和效果使它看起来像是只注重风格而不注重实质的产物。

“新闻和天气”应用展示了……新闻和天气。

“新闻和天气”应用展示了……新闻和天气。 [Ron Amadeo 供图]

来比较下相册应用和另一个全新的安卓 2.1 应用:新闻和天气。相册是个充满透明动画效果的汇聚,而新闻和天气则全是深色渐变和对比色。这个应用提供了桌面时钟的天气显示,它甚至还带着一个主屏幕小部件。第一张图显示的是当前位置的天气和六天的预报。沿着屏幕顶部排列着一些标签,城市名称旁有个小小的“i”按钮,点击它会打开温度和降水图。你可以在图上滑动以得到指定时间的精确温度和降水信息。

这个应用里最大的创新在于可滑动标签,这个想法最终将成为一个标准的安卓 UI 规范。在天气之后是一些可由用户定制的新闻标签,除了点击标签切换之外,你还可以在屏幕上水平滑动,标签也会跟着切换。新闻标签都显示着一个新闻标题列表,它们几乎总是正好截断到你弄不明白这条新闻讲了什么的程度。当你从这个应用打开一个网页时,它并不会启动浏览器。相反,它会在应用内打开新闻,带着个奇怪的白色边框。

谷歌地图的一些实验性功能,新的小部件设计,Google Voice里我们能接触到的唯一一个界面,以及新的带标签的音乐界面设计。

谷歌地图的一些实验性功能,新的小部件设计,Google Voice 里我们能接触到的唯一一个界面,以及新的带标签的音乐界面设计。 [Ron Amadeo 供图]

安卓 2.1 里的小部件全部经过了重新设计,几乎所有东西都带有黑色渐变,空间利用上也更加合理。时钟变回了一个圆,日历的顶部加上了蓝色,着让它和应用变得更加相似。Google Voice 可以启动,但是登录已经失效了——这是你现在能看到的所有东西了。

人们经常忽视的音乐应用有个小更新。四个按钮的主界面被完全去除,并且在屏幕顶部添加了每个音乐显示模式的标签。这意味着在打开应用的时候,你就能直接看到音乐列表,而不是一个导航页。不同于新闻和天气应用里的标签,这些新增的标签不能滑动切换。

Android 2.1, update 1——无尽战争的开端

谷歌是第一代 iPhone 的主要合作伙伴——公司为苹果的移动操作系统提供了谷歌地图、搜索,以及 Youtube。在那时,谷歌 CEO 埃里克·施密特是苹果的董事会成员之一。实际上,在最初的苹果发布会上,施密特是在史蒂夫·乔布斯之后第一个登台的人,他还开玩笑说两家公司如此接近,都可以合并成“AppleGoo”了。

当谷歌开发安卓的时候,两家公司间的关系慢慢变得充满争吵。然而,谷歌很大程度上还是通过拒 iPhone 关键特性于安卓门外,如双指缩放,来取悦苹果。尽管如此,Nexus One 是第一部不带键盘的直板安卓旗舰机,设备被赋予了和 iPhone 相同的外观因素。Nexus One 结合了新软件和谷歌的品牌,这是压倒苹果的最后一根稻草。根据沃尔特·艾萨克森为史蒂夫·乔布斯写的传记,2010 年 1 月在看到了 Nexus One 之后,这位苹果的 CEO 震怒了,说道:“如果需要的话我会用尽最后一口气,以及花光苹果在银行里的 400 亿美元,来纠正这个错误……我要摧毁安卓,因为它完全是偷窃来的产品。我愿意为此发起核战争。”

所有的这些都在秘密地发生,仅在 Nexus One 发布后的几年后才公诸于众。公众们最早在安卓 2.1——推送给 Nexus One 的一个称作 “2.1 update 1” 的更新,发布后一个月左右捕捉到谷歌和苹果间愈演愈烈的分歧气息。这个更新添加了一个功能,正是 iOS 一直居于安卓之上的功能:双指缩放。

尽管安卓从 2.0 版本开始就支持多点触控 API 了,但系统的默认应用在乔布斯的命令下依然和这项实用的功能划清界限。在关于 Nexus One 的和解会议谈崩了之后,谷歌再也没有理由拒双指缩放于安卓门外了。谷歌给设备推送了更新,安卓终于补上了不足之处。

随着谷歌地图、浏览器以及相册中双指缩放的全面启用,谷歌和苹果的智能手机战争也就此拉开序幕。在接下来的几年中,两家公司会变成死敌。双指缩放功能更新的一个月后,苹果开始了它的征途,起诉了所有使用安卓的公司。HTC、摩托罗拉以及三星都被告上法庭,直到现在都还有一些诉讼还没解决。施密特也辞去了苹果董事会的职务。谷歌地图和 Youtube 被从 iPhone 中移除,苹果甚至开始打造自己的地图服务。今天,这两位选手几乎是 “AppleGoo” 竞赛的唯一选手,涉及领域十分广泛:智能手机、平板、笔记本、电影、TV 秀、音乐、书籍、应用、邮件、生产力工具、浏览器、个人助理、云存储、移动广告、即时通讯、地图以及机顶盒……以及不久它们将会在汽车智能、穿戴设备、移动支付,以及客厅娱乐等进行竞争。


Ron Amadeo / Ron 是 Ars Technica 的评论编缉,专注于安卓系统和谷歌产品。他总是在追寻新鲜事物,还喜欢拆解事物看看它们到底是怎么运作的。 @RonAmadeo


via: http://arstechnica.com/gadgets/2016/10/building-android-a-40000-word-history-of-googles-mobile-os/12/

译者:alim0x 校对:wxy

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