2014年7月

对,你也许已经猜到了又是我们相见的时候了。这一次我们将会学习如何使用命令工作。因此,事不宜迟,我们直入正题吧。

肖茨先生指出,到现在为止,我们学习了一些神奇的命令及其参数和选项,而今天正是我们揭开他们那神秘面纱一角的一天。我们将会学习如下的一些命令及其作用:type, which, help和man。但是在此之前,我么先学习一下——

什么是命令?

我们可以将命令分为四个种类。

1)可执行的程序:命令可以是一个可执行程序。如果你在前面的课程中有遍历过你的系统,这也是你应该做的。你也许已经发现了/user/bin这个目录,你看到很多的像transmission-gtk, deluge-gtk等的名字。对我们新手来说,现在这些可以编译成二进制文件或者用脚本语言编写的可执行程序具体是什么并不太重要。重点是,他们是可执行文件,你可以运行它们。找到/user/bin这个目录,列出里面的文件,随便挑一个去运行它。

2)shell内置命令: bash提供了一系列的shell内置命令,例如,cd命令就是一个shell内置命令。

3)shell函数:内置于系统环境中的小型的shell脚本。现在我们简单的提及一下它,因为在后面的几个星期中我们将要学习它。

4)别名:你可以基于其他命令定义你自己的命令。我们也会在后面的课程中学习到。

现在,知道我们要处理的命令的哪一类是有意义的。我们可以使用type命令查看。

type

你可以使用type + command来查看你要使用的命令属于什么类型。你只要输入type command就可以得到命令类型的输出,如下:

type mkdir

或者

type ls

从上面例子可以看出‘ls’命令实际上是‘\_ls’的别名。(LCTT译注:不同机器上的别名定义可能不同,比如RedHat/Centos系列上,ls实际上是‘ls --color=auto’的别名,而这个‘\_ls’想必是openSUSE上的情况。)

which

有时(虽然在桌面系统中很少会出现这种情况),在一台机器中存在一个可执行程序的多个版本。为了找到某个可执行程序的准确位置,我们可以使用which命令。which命令只对可执行程序有用。

which transmission-gtk

如今,多数的命令都会附带说明文档,因此,当你在没有网络的的情况下使用命令行时,你不能在论坛或者IRC上提问,但是你又必须要知道某个命令的准确用法。此时你有两种解决方法,第一个是——

help

help命令对shell内置命令有用(在上面的第二类中我们有提到过)。所以,你可以选择一个shell内置命令为例,如cd,简单的输入help cd即可。你会得到一个有用的页面,去试一下看cd为我们提供了什么功能。该页面列出了该命令的用法和可选项(选项列在方括号中,表明它们是可选的,如果方括号中有垂直分隔符分隔某些选项,则这些选项是互斥的,不要同时使用他们!)

--help

(LCTT译注:Linux上的命令中,通常单字符参数前使用一个破折号,而多个字符的长参数则使用两个破折号,原文此处用的是“-help”,实际上这种情况很少,所以修正为“--help”)

help只对shell内置命令有用。但是很多的可执行程序有--help选项。其作用类似于help命令,但是你必须在你要查看帮助的命令后输入 --help。例如,transmission-gtk --help。试一下看在改该可执行程序中有什么可选项可以使用。

man

多数的可执行程序都提供一个正式发说明文档。你可以使用man命令查看这份说明文档。试一下只输入man program,看有什么输出。在你的系统中随便找一个程序去尝试一下。例如,我们试一下man transmission-gtk。你会打开了一个由目录分割的文件。这个文件包含该程序是什么、做什么和你可以怎样去使用它等的信息。但是这个文件并没有提供使用范例,因为它不是一个指导手册。(LCTT译注,man里面有时候也会带有一些范例,但是往往不会很详细,另外还有一个info命令,通常能得到更多的使用帮助。不过真正理解每个命令的各种用户,还是要多查阅各种资料,并亲自试验才行。)

这周我们就到先讲这里了。

我想再花一分钟来感谢大家对本节的建议和贡献。是你们让这个系列的文章变得越来越好,我希望在你们的帮助下,我们这些新用户在夏季结束前可以使用基本的命令行工具。你们是最棒的。像我一样的新用户们,我们都会感到失落,坚持到底,我们的付出总会有回报的!


via: https://news.opensuse.org/2014/07/15/command-line-tuesdays-part-five/

译者:cvsher 校对:wxy

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

除了免费的流媒体音乐外,我最喜欢Spotify的地方就是它的歌词插件了。有时候我听不懂一首歌里面的所有歌词,尤其是rap。TuneWiki插件在这种情况下就派得上用场了。但TuneWiki仅有支持Windows和iTune的插件,那我们在linux桌面上有什么选择呢?

如果你使用过一段时间Linux桌面,你也许听过OSD Lyrics。它是一个显示桌面歌词的小程序。你可以借助一些音乐播放器来使用它,比如 Rythmbox,BansheeClementine等等。

在Ubuntu 14.04和Linux mint 17上安装OSD Lyrics

两年以前 OSD Lyrics 它的官方仓库还在积极地维护,但现在对它的开发已经停止了。尽管这个PPA已经不可用,但可以通过网络下载OSD Lyrics的安装包。虽然这些安装执行文件最初是为 Ubuntu 12.02 设计的,但这些文件也能在 Ubuntu 14.04 上良好地工作。我们一起看看怎么在 Ubuntu 14.04 和 Linux mint 17 上安装OSD Lyrics。

前往下载页下载OSDLyrics,根据你是使用32位还是64位的ubuntu来下载相应的.deb 文件。你会在网页的上方找到这些文件。

下载完成后,双击它通过使用Ubuntu软件中心来安装。另外,你也可以使用Gdebi 来快速地安装.deb安装包。

怎样在 Ububtu 和 linux mnit 上使用 OSD Lyrics 显示歌词

安装完成后,你可以从Unity Dash运行OSD Lyrics :

首次运行时,OSD Lyrics会检测你的系统中能被它支持的播放器。你可以设定一个默认播放器,以后当你运行OSD Lyrics时它就会自动启动 。

有一件事值得注意,那就是OSD Lyrics不像Shazam等软件一样,它不是通过音频来寻找歌词,而是通过比如名称,专辑,艺术家等信息来关联音乐文件。所以你得确保你的音乐文件的来源正当,或者是你得保持你的音乐文件的信息是正确并且是已经更新后的。

如果OSD Lyrics辨认出了音乐文件,它就会用卡拉OK格式在桌面上显示歌词了:(译者注:OSD Lyrics可以自动在千千静听和虾米歌词站点在线下载歌词,这对我们中文用户来说是个福音)

OSD Lyrics有大量设置选项,你可以改变歌词字体,文字大小等等。

你认为 OSD Lyrics 怎么样?你还使用其它歌词插件吗?欢迎您和我们分享。


via: http://itsfoss.com/display-song-lyrics-desktop-ubuntu-1404/

译者:Love-xuan 校对:Caroline

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

Ncdu (NCurses Disk Usage) 是一个基于Ncurses库的du命令的界面。它通过大家熟知的du命令,为用户提供一个快速且容易被使用的界面。它可以显示磁盘使用的百分比,且允许你使用ncurses库的方式在目录之间导航。

安装

ncdu已经被移植到大多数linux发行版本,可从官方资源库中安装.

Arch / Manajaro 及其衍生版:

sudo pacman -S ncdu

Ubuntu / Debian / Linux Minut 及其衍生版:

sudo apt-get install ncdu

Fedora 及其衍生版:

sudo yum install ncdu

这里可以找到其他的发行版。

使用 ncdu

键盘操作:

  • up, k — 向上移动光标
  • down, j – 向下移动光标
  • right/enter — 打开选定的目录
  • left, <, h — 打开父目录
  • n — 按文件名排序(升序/降序)
  • s — 按文件大小排序(升序/降序)
  • C – 按项目数排序(升序/降序)
  • d – 删除选定的文件或目录
  • t — 排序时将目录放在文件前面
  • g – 以图形方式显示百分比

为使用ncdu,请打开终端并且运行

ncdu

开始扫描目录.

当扫描完成后,你能够很容易的看到文件/目录的大小.

确认删除文件:

这里 阅读ncdu命令手册或运行:

man ncdu

荣誉: 有两位读者BasketCaseSama Vim在阅读“Linux基础:如何在命令行中查看目录的大小”之后 向我们推荐了这个Ncdu工具。

Enjoy!


via: http://www.unixmen.com/ncdu-ncurses-disk-usage-analyzer/

译者:hunanchenxingyu 校对:wxy

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


当软件出现问题的时候,它应该以一种很容易引起注意的方式马上终止。这种“快速终止”的方式值得借鉴,我们会在这期专栏里谈谈这个重要的概念。

一开始,“快速终止”看上去是一种会影响可靠性的不好的实践——为什么一个系统在还可以继续运行的时候要崩溃(或者说终止)?对于这个,我们需要理解,快速终止是和Heisenbugs(对于不易复现bug的一种称呼)紧密联系在一起的。

考虑一下Bohrbugs(对于能够重现的bug的一种称呼),它们在一个给定输入的条件下总是会出现,比如,访问空指针。这类问题很容易测试、复现并修复。而如今,所有有经验的程序员应该都面对过这样的情形:导致崩溃的bug在重启软件后就不再出现了。不管花多少时间或努力去重现问题,那个bug就是跟我们捉迷藏。这种bug被称为Heisenbugs。

花在寻找、修复和测试Heisenbugs上的努力比起Bohrbugs来说,要高出一个数量级。一种避免Heisenbugs的策略是将它们转化为Bohrbugs。怎么做呢?预测可能导致Heisenbugs的因素,然后尝试将它们变成Bohrbugs。是的,这并不简单,而且也并不是一定可行,但是让我们来看一个能产生效果的特殊例子。

并发编程是Heisenbugs经常出现的一个典范。我们的例子就是一个Java里和并发相关的问题。在遍历一个Java集合的时候,一般要求只能通过Iterator的方法对集合进行操作,比如remove()方法。而在遍历期间,如果有另一个线程尝试修改底层集合(因为编程时留下的错误),那么底层集合就可能会被破坏(例如,导致不正确的状态)。

类似这种不正确的状态会导致不确定的错误——假如我们幸运的话(实际上,这很不幸!),程序可以继续执行而不会崩溃,但是却给出错误的结果。这种bug很难重现和修复,因为这一类的程序错误都是不确定的。换句话说,这是个Heisenbug。

幸运的是,Java Iterators会尝试侦测这种并发修改,并且当发现时,会抛出异常ConcurrentModificationException,而不是等到最后再出错——那样也是没有任何迹象的。换句话说,Java Iterators也遵从了“快速终止”的方法。

如果一个ConcurrentModificationException异常在正式版软件中发生了呢?根据在Javadoc里对这个异常的说明,它“只应该被用于侦测bug”。换句话说,ConcurrentModificationException只应该在开发阶段监听和修复,而不应该泄漏到正式代码中。

好吧,如果正式软件确实发生了这个异常,那它当然是软件中的bug,应当报告给开发者并修复。至少,我们能够知道曾经发生过一次针对底层数据结构的并发修改尝试,而这是软件出错的原因(而不是让软件产生错误的结果,或是以其他现象延后出错,这样就很难跟踪到根本原因)。

“防止崩溃”的途径就意味着开发健壮的代码。一个很好的编写容错代码的例子就是使用断言。很可惜的是,关于断言的使用有大量不必要的公开争论。其中主要的批评点是:它在开发版本中使用,而在发布版中却被关掉的。

不管怎么样,这个批评是错误的:从来没有说要用断言来替代应该放到发布版软件中的防御式检查代码。例如,断言不应该用来检查传递给函数的参数是否为空。相应的,应该用一个if语句来检查这个参数是否正确,否则的话抛出一个异常,或是提前返回,来适合上下文。然而,断言一般可以用于额外检查代码中所作出的假设,这些假设应该一直为真才正常。例如,用一个语句来检查在进行了入栈操作后,栈应该不是空的(例如,对“不变量”的检查)。

所以,快速终止,随时中断,那么你就走在开发更加健壮代码的道路上了。

这是写给Liunx新用户的一系列文章中的第一篇,在这系列文章我将会写一些对新用户来说非常好用的Linux基础命令

注意:本文的目标读者是仅有小量甚至是没有任何Linux命令行使用经验的读者。

作为一个Linux的新用户,我怎样可以在命令行终端中查看某个目录的属性?

要求

唯一的要求是du命令行工具。du基本上是所有Linux发行版本默认提供的工具。用以下的命令来检查你的系统中是否可以使用du命令:

man du

du 命令用于输出文件的空间使用情况。

使用du

不带任何参数的运行du命令会显示当前工作目录以及其子目录的文件名和所占用的空间大小(以字节为单位)。

du

使用-h参数以对用户友好的方式输出文件大小,即分别以K, MG来表示Kb,MbGb

du -h

若想查看某个特定目录的文件大小,则在du命令中指定要查看的目录名,如下:

du -h Mapmaker

使用 -c 参数来查看目录所占用磁盘空间的总大小

du -ch

使用 -s 参数只输出指定目录占用空间的大小

du -sh Mapmaker Sandbox

使用 man du 查看du命令更多参数的用法

man du

知道du命令更多的用法?请分享给我和其他人。


via: http://www.unixmen.com/linux-basics-find-size-directory-commands/

译者:cvsher 校对:wxy

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

(LCTT译注:这里,我们姑且认为您身处能够访问Internet的地方!)

为什么会有人要从终端搜索互联网上的东西?我不清楚,这里头可能有许多的原因。但是,因为没人要求答案总比没人知道答案少令人失望一点。这里,列出了一些流行的搜索引擎的命令行工具,可以让你们通过Linux终端来访问它们。

1. Google

让我们从一个巨头开始吧:Bing!好吧,只是开个玩笑,事实上应该是Google。坦白讲,你根本不需要使用命令行工具来进行Google搜索。只需要简简单单的一个命令:

$ xdg-open https://www.google.com/search?q="[query]"

它会打开网页浏览器,并转到合适的搜索页面。然而,如果你想要的是从终端窗口查看搜索结果,而不是打开什么网页浏览器,那么我推荐你使用cli-google。它是一个超级老古董了(最后一次更新是在2009年),但我喜欢它。这是一个简单而直接的应用,它会忠实地干好它应该干的事。

安装完cli-google后,你就可以开始用它来搜索了,它的输出是那样的五彩斑斓。你也可以调整搜索结果的数量和你想要的语言,你只需要在终端中敲入:

$ google 

就可以看到所有的选项了。

2. YouTube

关于Google,有太多的东西要放进列表来。我会尽量简明扼要,但绝不会放过该有的。对于许多人而言,YouTube是他们快速查找相关内容视频的首选。要在终端中完成此事,我则钟情于mps-youtube。这个软件可以让你在终端中搜索、下载视频,创建播放列表,以及查看关于视频的评论。安装完mps-youtube后,你可以使用下面的命令来启动:

$ mpsyt 

然后,输入 h 来查看选项。要查看简明用法,你可以像下面这样:

/[query] 

来搜索你想知道的一切,然后输入视频的编号来听听它的声音,或者输入:

i [video-number]

来看看相关信息,也可以输入:

d [video-number]

来下载它。如果你觉得光听还不过瘾,这里还有更好玩的:

set player mplayer
set show_video True 

现在,你可以在另外一个窗口里头用mplayer来播放视频了。

3. 维基百科

与Google一样,对于维基百科,我也喜欢一个古老的脚本,它干的不赖:cliWiki。安装完后,赶紧运行一下看看:

$ cliwiki 

然后,你就可以输入你想要搜索的内容了。如果有直接匹配的条目,终端中就会显示相关页面了。哈,输出内容可真够长的,建议你还是用less命令来看吧。当然,这不是最高效的方法,但你的母的只是想要查看与关键词相关的文本,那这就是你想要的。

4. 海盗湾

现在,让我们聊聊龌龊的东西。网上有很多意想不到的(也许你不觉得)工具,可以帮助你在命令行下查找海盗湾上的种子。而在这其中,pirate-get是我的最爱。它里面蕴藏了大量的选项,你可以通过下面的命令来发现它们:

$ pirate-get -h

但是还是简单一些吧:

$ pirate-get --color -c [category] [query]

以上命令会返回与查询内容相关的特定搜索类目中的结果,输出结果也是彩色的!那里头,程序会提示你输入你想要的结果的编号,输入后就可以从磁链上下载种子了。简单又容易,仅限于没有版权的资料哦!

5. Twitter

Twitter是迎合潮流的一个很好的搜索引擎。我们已经在如何在命令行中访问Twitter一文中介绍了它的用法,但是我个人更喜欢TTYtter。该工具及其强大,它应该有它自身的一席之地,而不再仅仅用于简单搜索了。但在这里,我只想把它当作搜索引擎使用。安装并配置完后,你就可以登陆进去,并使用下面的命令来搜索了:

/search [query] 

界面在视觉上有点粗糙,但是你很快会习惯的。注意,这里头只能用普通的文字,也可以用哈希标记。

最后来小结一下吧,这里列出了我认为人们使用最多5大搜索引擎,这些搜索引擎都可以通过命令行来访问。这里Google图像和Google地图可能缺席了,但我想这些可能不能很好适应控制台环境吧。我也想要寻找一个音乐搜索引擎,但是没有找到对于本列表“有价值的”。就像你可能已经注意到的那样,列表中的工具在功能和选项上是良莠不齐的:其中一些很简单,而另外一些则功能很复杂。但不管怎么说,最后它们都还是完成了它们的任务。

列表中错失了哪些搜索引擎?你还知道哪些没有提到过的工具呢?请在文章评论中告诉我们吧。


Adrien Brochard

我是一位来自法国的Linux爱好者。在尝试了多个发行版后,我最后认可了Archlinux。然而,我一直在试着通过积累一些知识和技巧来改善我的系统。


via: http://xmodulo.com/2014/06/access-popular-search-engines-command-line-linux.html

译者:GOLinux 校对:wxy

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