分类 技术 下的文章

Systemd是一种新的linux系统服务管理器。

它替换了init系统,能够管理系统的启动过程和一些系统服务,一旦启动起来,就将监管整个系统。在本文中,我们用的是安装有 systemd 216 版本的centos 7.0,其最新版本可以从 freedesktop.org 下载得到

因为linux操作系统里出现的这一个新人,PID 1被“systemd”占据了,这能通过pstree命令看到。

[root@linoxide ~]# pstree

那么现在让我们来探索systemd擅长什么,它又有多大的可能性成为sysVinit的新的替代品。

1. 更快启动

sysvinit一次一个串行地启动进程。

而Systemd则并行地启动系统服务进程,并且最初仅启动确实被依赖的那些服务,极大地减少了系统引导的时间。

你可以用下面的命令看到系统引导用时:

[root@linoxide ~]# systemd-analyze

使用 time 参数也能够显示同样的内容。

[root@linoxide ~]# systemd-analyze time

如果你想以进程初始化所占用时间排序打印出所有正在运行的单元列表,那么systemd-analyze命令可以帮助你完成这个任务。

[root@linoxide ~]# systemd-analyze blame

上面的截屏只显示了小部分进程,你可以就像less分页器那样用箭头滚动列表。

2. systemctl 命令

systemctl命令是自systemd出现以来被广泛讨论的命令。你可以通过这个命令管理你的整个系统,让我们通过探究这个命令来更进一步。

2.1 列出单元

systemctl命令可以带上list-units,也可以什么选项都不带来列出所有正在运行的单元。

[root@linoxide ~]# systemctl

[root@linoxide ~]# systemctl list-units

2.2 列出失败的单元

运行失败的单元可以用带--failed选项的命令显示出来。

[root@linoxide ~]# systemctl --failed

你可以在这篇文章很多地方看到systemctl的用法。

3. 管理服务

让我们来看看systemd是怎么管理系统服务的。

3.1 激活的服务

所有被激活的服务可以同下面这条命令来查看。

[root@linoxide ~]# systemctl list-units -t service

3.2 服务状态

在sysvinit中,我们可以用“service”命令来管理服务,但在systemd中,我们用systemctl这个命令。 我们可以用下面这个命令来查看服务是否在运行。

[root@linoxide ~]# systemctl status dnsmasq

3.3 启动一个服务

用下面这条命令来启动服务。

[root@linoxide ~]# systemctl start dnsmasq

对应于service命令,这个命令不进行输出。但是毋庸置疑,我们可以通过再次查看这个刚刚被启动的服务的status(状态)来确认他是否被成功地启动了。

3.4 停止一个服务

现在聪明的你一定知道怎么在systemd下用命令来关闭服务了吧。

[root@linoxide ~]# systemctl stop dnsmasq

3.5 重启一个服务

类似的,重启系统服务是用‘systemctl restart’来管理的。

[root@linoxide ~]# systemctl restart dnsmasq

3.6 重新加载一个服务

在我们需要重新加载服务的配置文件又不想重启这个服务(例如ssh)时,我们可以用这个命令。

[root@linoxide ~]# systemctl reload sshd

虽然上述几个命令的语法是可以工作的,但是官方文档建议我们用下面这种语法形式来运行命令(LCTT 译注,即使用在服务名后面跟上“.service”的完整名称):

[root@linoxide ~]# systemctl status dnsmasq.service

4. 管理引导时的服务

chkconfig命令被用来管理系统引导时的服务。同样用systemd也可以管理引导时的系统服务。

4.1 检查服务引导时是否运行

这条命令用来确定服务是否是引导时启动的。

[root@linoxide ~]# systemctl is-enabled dnsmasq.service

4.2 让服务在引导时运行

systemctl命令是这样来enable(使之在引导时启动)一个服务的。(这相当于sysvinit中的‘chkconfig on’)

[root@linoxide ~]# systemctl enable dnsmasq.service

4.3 取消服务在引导时运行

类似的,使服务不在引导时启动用这个命令。

[root@linoxide ~]# systemctl disable dnsmasq.service

5. 管理远程系统

所有刚才提到的systemctl命令通常都能被用来管理远程主机,完成这个任务将用到ssh来进行通讯。你只需要像这样将远程主机和用户名添加到systemctl命令后。

[root@linoxide ~]# systemctl status sshd -H [email protected]

6. 管理目标

Systemd有一个完成与sysVinit的runlevels相似任务的构想。

sysVinit的runlevels大多是以数字分级的。这里是runlevers在systemd中的对应元素。

0 runlevel0.target, poweroff.target

1, s, single runlevel1.target, rescue.target

2, 4 runlevel2.target, runlevel4.target, multi-user.target

3 runlevel3.target, multi-user.target

5 runlevel5.target, graphical.target

6 runlevel6.target, reboot.target

emergency emergency.target

6.1 改变当前目标

当前target可以用这个命令切换。

[root@linoxide ~]# systemctl isolate graphical.target

6.2 列出当前目标

如果你想查看你正处于哪个target中,你需要列出相应的单元。虽然这样操作可能让你不太爽,但是这就是systemd工作的方式。

[root@linoxide ~]# systemctl list-units --type=target

你可以看到“graphical.target”列在此处,这就是我们刚才切换到的目标。现在,让我们切换runlevel到multi-user.target,然后分析下列命令的输出。

[root@linoxide ~]# systemctl isolate multi-user.target
[root@linoxide ~]# systemctl list-units --type=target

6.3 列出默认目标

用这个systemctl命令来查看默认目标。

[root@linoxide ~]# systemctl get-default

6.4 改变默认目标

通过systemctl的set-default命令可以将某个目标设置成默认目标。

[root@linoxide ~]# systemctl set-default graphical.target

7. 记录 systemd 的日志

journald是systemd独有的日志系统,替换了sysVinit中的syslog守护进程。命令journalctl用来读取日志。

[root@linoxide ~]# journalctl

7.1 查看引导信息

运行journalctl -b命令来查看所有引导日志。

[root@linoxide ~]# journalctl -b

7.2 即时显示引导日志

下面这个命令可以实时显示系统日志(类似tail -f)。

[root@linoxide ~]# journalctl -f

7.3 查看特定服务的日志

你可以像这样运用journalctl来查看你只想看到的服务或可执行程序的日志。

[root@linoxide ~]# journalctl /usr/sbin/dnsmasq

8. 电源管理

systemctl命令也可以用来关机,重启或者休眠。

要关机、重启、挂起和休眠,分别使用如下命令:

[root@linoxide ~]# systemctl poweroff
[root@linoxide ~]# systemctl reboot
[root@linoxide ~]# systemctl suspend
[root@linoxide ~]# systemctl hibernate

9. 又及

systemd带来了一整套与操作系统交互的新途径,并且极具特色。举个栗子,你可以用hostnamectl命令来获得你的linux机器的hostname和其它有用的独特信息。

[root@linoxide ~]# hostnamectl


via: http://linoxide.com/linux-command/linux-systemd-commands/

作者:Raghu 译者:szrlee 校对: wxy

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

你在家(或者办公室)的上传和下载速度如何?你能保证,你支付费用给ISP的同时得到了等价的回报?

要想测试我们因特网连接的速度,当下存在着一些因特网服务,比如说SpeedTest,这是一种可以通过Web浏览器和手机应用程序浏览的web服务。

现在,你可以很容易地检测你的网速,使用speedtest\_cli同样很简单,它是一个使用speedtest.net来测试因特网带宽的命令行界面。通过这种方式,你也可以在没有浏览器或者图形化界面的服务器上做带宽测试。

安装

speedtest\_cli是一个python脚本,所以它真的很容易安装和使用,你可以通过许多方式安装它:

1)pip / easy\_install

打开一个终端,输入下面的命令:

pip install speedtest_cli

或者

easy_install speedtest_cli

2)Github

想要直接从github安装,你得这么做:

pip install git+https://github.com/sivel/speedtest-cli.git

或者

git clone https://github.com/sivel/speedtest-cli.git
python speedtest-cli/setup.py install

3)作为Ubuntu/Debian或者Mint包

getdeb仓库给我们提供了安装包,按照下面的步骤,就可以轻松安装:

或者

  • 手动配置仓库:

进入系统管理软件源,第三方软件选项,加上:

deb http://archive.getdeb.net/ubuntu trusty-getdeb apps

增加仓库GPG钥匙,打开终端窗口,然后输入:

wget -q -O- http://archive.getdeb.net/getdeb-archive.key | sudo apt-key add -

现在,你就可以使用下面的命令安装speedtest\_cli包了:

sudo apt-get update
sudo apt-get install python-speedtest-cli

4)下载(和以前的方式一样)

最后一个选择,只需要下载python脚本,然后在你想运行的地方运行脚本:

wget -O speedtest-cli https://raw.github.com/sivel/speedtest-cli/master/speedtest_cli.py
chmod +x speedtest-cli

或者

curl -o speedtest-cli https://raw.github.com/sivel/speedtest-cli/master/speedtest_cli.py
chmod +x speedtest-cli

基本用法

你可以不带任何选项地运行speedtest\_cli.py,然后你会在终端获得关于你带宽速度的报告,这就是我那糟糕的意大利Adsl输出:

$ ./speedtest_cli.py
Retrieving speedtest.net configuration...
Retrieving speedtest.net server list...
Testing from Telecom Italia (87.13.73.66)...
Selecting best server based on latency...
Hosted by LepidaSpA (Bologna) [12.20 km]: 104.347 ms
Testing download speed........................................
Download: 6.35 Mbits/s
Testing upload speed...............................................
Upload: 0.34 Mbits/s

这就是基本用法,这足以让你知道你因特网连接的好坏,但是可能你想要和朋友分享这条信息,那么,只需要-share选项就可以

./speedtest_cli.py --share
Retrieving speedtest.net configuration...
Retrieving speedtest.net server list...
Testing from Telecom Italia (87.13.73.66)...
Selecting best server based on latency...
Hosted by LepidaSpA (Bologna) [12.20 km]: 93.778 ms
Testing download speed........................................
Download: 6.20 Mbits/s 
Testing upload speed...............................................
Upload: 0.33 Mbits/s
Share results: http://img.linux.net.cn/data/attachment/album/201409/11/153414kpd6xpiqs278f4xd.png

这将会产生一个类似于下面的图像(但是我希望你图像里面的值更好):

另一个有趣的选项是-list,它会按照距离列出所有speedtest.net服务器,下面是我运行的结果:

Retrieving speedtest.net configuration...
Retrieving speedtest.net server list...
2872) LepidaSpA (Bologna, Italy) [12.20 km]
1561) MYNETWAY S.R.L. (Cesena, Italy) [80.97 km]
2710) ReteIVO by D.t.s. Srl (Florence, Italy) [90.90 km]
4826) Inteplanet Srl (Verona, Italy) [100.45 km]
3998) Wolnext srl (Verona, Italy) [100.45 km]
2957) Wifiweb s.r.l. (Altavilla Vicentina, Italy) [103.11 km]
3103) E4A s.r.l. (Vicenza, Italy) [107.17 km]
3804) Interplanet Srl (Vicenza, Italy) [107.17 km]
1014) NTRnet (Vicenza, Italy) [107.17 km]
3679) Hynet s r l (Vicenza, Italy) [107.17 km]
3745) Comeser Srl (Fidenza, Italy) [114.00 km]
5011) Welcomeitalia spa (Massarosa, Italy) [119.26 km]
2864) ReteIVO by D.t.s. Srl (Massa, Italy) [120.92 km]
2918) ReteIVO by D.t.s. Srl (Arezzo, Italy) [129.79 km]
...

既然我知道了围绕在我周围的服务器的ID,我可以使用-server选项选择一个特定的服务器,所以,要想选择位于佛罗伦萨(ID 2710)的服务器,我使用下面的命令:

./speedtest_cli.py --server 2710
Retrieving speedtest.net configuration...
Retrieving speedtest.net server list...
Testing from Telecom Italia (87.13.73.66)...
Hosted by ReteIVO by D.t.s. Srl (Florence) [90.90 km]: 106.505 ms
Testing download speed........................................
Download: 6.18 Mbits/s 
Testing upload speed..............................................
Upload: 0.35 Mbits/s

文章由Asapy Programming Company发表


via: http://linuxaria.com/howto/linux-terminal-speedtest_cli-checks-your-real-bandwidth-speed

译者:su-kaiyao 校对:Caroline

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

大家好,如果您还没有使用密码保护单用户模式,这对你的Linux服务器会是一个很大的风险,所以在涉及到安全性时,使用密码保护单用户模式是非常重要的。

今天这篇文章我会向你展示如何在RHEL / CentOS 5.x 和 RHEL / CentOS 6.x上使用密码保护你的单用户模式。

请仔细地执行所给出的命令,不然你的系统将会无法正常启动。首先,我会请你先完整地读完,然后在尝试。请自己承担相应的后果:-)

Password Protect

Password Protect

1. 对于 RHEL / CentOS 5.x

1.1 开始之前请先备份你的 /etc/inittab

cp /etc/inittab /etc/inittab.backup

要使单用户模式受到密码保护,用root执行下面的命令 :-

[root@tejas-barot-linux ~]# sed -i '1i  su:S:wait:/sbin/sulogin' /etc/inittab

这样你会看到像下面这样的

su:S:wait:/sbin/sulogin
# Default runlevel. The runlevels used by RHS are:
# 0 - halt (Do NOT set initdefault to this)
# 1 - Single user mode
# 2 - Multiuser, without NFS (The same as 3, if you do not have networking)
# 3 - Full multiuser mode
# 4 - unused
# 5 - X11
# 6 - reboot (Do NOT set initdefault to this)
#
id:3:initdefault:

NOTE: 如果你不想使用sed命令你可以在/etc/inittab 顶部加入 “su:S:wait:/sbin/sulogin”

2. 对于 RHEL / CentOS 6.x

2.1 开始之前请先备份你的 /etc/inittab

cp /etc/sysconfig/init /etc/sysconfig/init.backup

2.2 要使单用户模式受到密码保护,用root执行下面的命令 :-

[root@tejas-barot-linux ~]# sed -i 's/SINGLE=\/sbin\/sushell/SINGLE=\/sbin\/sulogin/' /etc/sysconfig/init

这样你会看到像下面这样的

SINGLE=/sbin/sulogin

注意 :- 如果你不想使用sed你可以在 /etc/sysconfig/init 中直接改成 “SINGLE=/sbin/sulogin”

享受Linux :) 享受开源


via: http://www.tejasbarot.com/2014/05/05/disable-password-protect-single-user-mode-rhel-centos-5-x-6-x/

作者:Tejas Barot 译者:geekpi 校对:wxy

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

对于花大量时间在Linux屏幕前的系统管理员和Linux爱好者来说,网络/本地电台上的音乐可以极大提高生产力,你们知道吗?不管你们相信与否,,在工作环境中有适当的声音,如音乐或者闲聊声包围,都可以提高我们的创造力。如果你喜欢在音乐环境中工作,这个教程也许会对你有用。我将会向你展示如何在命令行中收听潘多拉(Pandora)在线电台(LCTT译注:Pandora Internet Radio是一个仅为美国、澳大利亚和新西兰提供自动音乐推荐的系统。详细介绍Prandoea电台

正如你已经知道的,Pandora是最有名的在线电台服务之一,它包含无数的不同种类的免费音乐流,同时它还有一个强大的音乐推荐引擎。Pandora可以通过不同的方式访问,如:浏览器,桌面客户端或者手机Apps,开源社区还给出了另一种访问Pandora音乐服务的方法:Linux命令行。

pianobar是一个播放Pandora在线电台音乐的开源命令行音乐播放器。它有一个简单的终端接口,用于播放和管理音乐电台。同时还有其他包括歌曲评价,即将上线音乐列表,播放历史,自定义快捷键绑定,远程控制等功能。对于那些居住在不可访问Pandora音乐服务区域的用户(即美国、澳大利亚和新西兰以外的用户),Pianobar还配置了代理服务的支持。

在Linux中安装Pianobar

在Debian或者其他Debian的衍生品中,如Ubuntu或LinuxMint,Pianobar是一个已经编译好的软件包,因此安装Pianobar只是简单的输入如下命令:

$ sudo apt-get install pianobar

在Fedora中,Pianobar并不包含在基础的软件库中。因此,你需要通过源代码编译安装Pianobar。整个安装过程会有点麻烦,但是下面的教程将会实现Pianobar在Fedora系统中编译安装。该教程在Fedora20版本中测试通过。

首先,根据FFmpeg安装教程编译并安装FFmpeg。

然后,启用RPM Fusion源,并安装其他依赖软件:

 $ sudo yum install wget gcc-c++ pkgconfig gnutls-devel json-c-devel libgcrypt-devel make libao-devel faad2-devel libmad-devel libao faad2-libs 

编译并安装Pianobar

$ wget http://6xq.net/projects/pianobar/pianobar-2014.06.08.tar.bz2
$ tar xvfvj pianobar-2014.06.08.tar.bz2
$ cd pianobar-2014.06.08
$ PKG_CONFIG_PATH=/usr/local/lib/pkgconfig:$PKG_CONFIG_PATH make
$ sudo make install 

最后允许Paniobar加载安装在/usr/local/lib目录下的FFmpeg共享库,在/etc/ld.so.conf配置文件中添加下面一行:

/usr/local/lib

重载所有的共享库

$ sudo ldconfig

就这样,Pianobar已经在Fedora系统中安装完成。

在命令行中收听Pandora音乐

paniobar的基本用法是输入如下命令:

$ pianobar

该命令将会要求你登录到Pandora并从你的个性化电台列表中选择要收听的电台。在你选择电台后,音乐就开始自动播放。

按‘?’按键pianobar会列出一系列可用个命令,其中一些如下:

  • s: 更换电台
  • u: 查看即将上线音乐列表
  • h: 查看播放历史
  • n: 播放下一首
  • b: 收藏歌曲或艺术家
  • ( 或者 ): 减少或增加播放音量
  • S: 暂停播放
  • P: 恢复播放
  • V:为当前收听的歌曲或者艺术家创建一个电台
  • +或者-:查看上一首或者下一首歌曲
  • a:添加音乐到电台
  • q:退出pianobar

将Pianobar配置为自动安装

你可以在一个单独的配置文件中配置Pianobar的各项默认配置。例如:你可以将你的登录信息放到配置文件中,这样你就不用每次都要手动输入。下面是如何创建一个配置文件的示例:

$ mkdir -p ~/.config/pianobar
$ vi ~/.config/pianobar/config
# Example pianobar configuration file

# Pandora login info
user = your@email_address
password = plaintext_password

# Users who cannot access Pandora in their region can set a proxy.
control_proxy = http://user:password@host:port/

# Initial volume in dB: between -30 and +5
volume = 0

# Audio quality: high, medium or low
audio_quality = high

如需了解完整的配置选项,请参阅其man手册页。

$ man pianobar

远程控制Pianobar

Pianobar的另一个优秀特性是支持远程控制,你可以通过命令管道(FIFO)为Pianobar的一个运行实例发送命令。下面是远程控制Pianobar的示例:

首先在目录~/.config/pianobar下创建一个FIFO命令管道

$ mkfifo ~/.config/pianobar/ctl

然后运行Pianobar

现在,你可以通过使用echo命令发送任何的单字符命令键到Pianobar中,例如:播放下一首歌曲:

$ echo -n 'n' > ~/.config/pianobar/ctl

你可以很容易的将此配置扩展到远程计算机中,当Pianobar在主机X上运行,你可以从远程主机Y中通过SSH控制Pianobar,如下所示:

在主机Y中,运行:

$ ssh user@host_X "echo -n 'n' > ~/.config/pianobar/ctl"

当然,你希望为登录到主机X的SSH登录认证启用秘钥认证,这样你就不用每次都输入SSH密码。

当你想在树莓Pi上设置一个可以远程控制的在线电台播放器时,Pianobar的远程控制特性将会让你非常方便地实现该需求。

希望你和我一样喜欢Pianobar,若有什么想法,请在评论中告诉我。


via: http://xmodulo.com/2014/08/listen-to-internet-radio-command-line-linux.html

作者:Dan Nanni 译者:cvsher 校对:Caroline

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

Linux发行版可以作为全功能打包,也可以按需分解,它驱动了从市内标示牌到市议会桌面系统在内的所有设备。

正是这种多样化,几乎可塑的质量,让Linux发行版,包括Ubuntu在内,在众多不同领域如此成功。

信息亭和单功能计算机

Ubuntu更为流行的使用之一,是在信息亭(kiosk)类计算机中。这些设备趋向于运行功能剥离的,或者功能有限的OS版本,只允许一个单一应用运行

信息亭计算机可以设置提供短时的或者被动的访问,适用于网吧或只能让用户访问特定功能时(如网页浏览器)。

构建Ubuntu信息端

但你会怎样来创建这样一台计算机?好吧,不用去Google了。Linux开发者Oli Warner最近发布了两篇文章,介绍了使用Ubuntu 14.04和Google Chrome来创建单一功能的设备。

他的第一篇指南从零开始,使用Ubuntu Server和少量的软件包来创建一个轻量级的X和Openbox的组合,开机启动Chrome。该安装需要最多2GB的磁盘空间和仅仅512MB的内存来运行。

第二篇教程反其道而行,一步一步介绍了将一个现存的Ubuntu桌面安装转变为一个更轻巧的单一功能的变形版本。

两个指南都不是给那些胆小的新手的,而对于大多数中级水平的用户而言却是简单易行的。跟着指南来获得一次实用的安装体验,不要畏首畏尾,大胆去剥离一些深层次的包和进程,或者加固安全吧,特别是如果想要在公共环境中使用时。


via: http://www.omgubuntu.co.uk/2014/07/create-ubuntu-kiosk

作者:Joey-Elijah Sneddon 译者:GOLinux 校对:wxy

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

如果你喜欢做‘排名前10’之类的列表但又有点不好意思这样说,那么告诉人们你热爱数据的探索。为了进一步打动他们,向他们解释你在命令行间的数据探索。但是不要告诉他们这其实很容易,以免你的好形象就这样被毁灭了哦!

在这篇文章中,我将基于GNU/Linux工具和'单列表格'(也就是我所说的简单列表)来做一些数据探索。如若想在这里通过命令行查看更多的信息,请查看'man'页,或者在“注释”部分求解。

密码

在第一个列表里探讨的是马克.伯内特2011著的关于10000 个最常用的密码汇编。这个列表是有序的、使用最频繁的,也是广为人知的阶乘“密码”的最常用来源之一,与“123456”并列排名第二。在这里,我把该列表放到一个名为“passwords”的文件中,并且使用head命令把排名前10的列出来了:

(伯内特解释他是如何收集这些密码的这里。你会注意到在列表中他把所有大写字母都转换成小写的。)

OK,所以'password'是伯内特列表的顶部。那么每个数字呢?

非常有趣的是!数字'1'出现在密码列表中的次数多于第二个最常用数字'2'的两倍,而且,除了0和9之外,这十个数字出现的次数以其数字顺序排列。而排名前10的字母呢?

在 passwords 文件中出现最频繁的字母依次是EARONISTLC,类似于EAIRTONSLC,这是至少一个出版的表格中提到的常用英文单词中出现的字频。这是否意味着,大部分密码其实是一些常见的英语单词呢,也许会参杂一些数字呢?

为了找到答案,我先把密码转换成一个纯字母的字符串列表,然后看看有多少字符串是可以在英语词典中找到的。

首先我将通过 sed 命令删除所有密码中的数字,然后删除所有的标点符号,再删除所有的空行。这将创建出一个纯字母的密码列表。然后我通过sortuniq来修剪列表的排序,将重复项取出。(例如,'abc1234def'和'abc1!2!3!def!'都剔除剩下'abcdef'.) 。根据wc命令,我把1000个密码减至成8583个纯字母的字符串:

我经常使用一本便携式的英语字典,我通常会使用usr/share/dict/american-english,这个文件是来自Debian Linux的一个发行版本。它包含了99171个单词。我会先通过tr命令将这个词表转换为纯小写的,然后使用sortuniq删除掉任何重复的条目排序(例如'A' 和 'a' 都将成为 'a')。这样就将词表的数量减至97723项了:

我现在可以用comm命令及'-23'的参数来比较两个列表,并报告纯字母文件中而没有出现在字典中的单词:

总数是3137,所以至少有8583 -3137 = 5446个'核心'密码在伯纳特的纯小写字母列表中(大约63%)是简单的英语单词,或者是简单的单词附加一些数字或者标点符号。我之所以说“至少”,是因为在3137个字符串中有很大比例是只有经过轻微修改的纯英语单词、名称、或者在/usr/share字典中未能找到的名称修改而成的。在LA项中,例如,'labtec', 'ladyboy', 'lakeside', 'lalakers', 'lalala', 'laserjet', 'lasvegas', 'lavalamp' 和 'lawman'.

地名

在之前的一篇Linux Rain article,我描述了如何建立一张37万项澳大利亚的地名表。有了它,我现在可以回答一些类似这样的关键问题“Round Hill是澳大利亚山脉中最流行的名字吗?”和“桑迪是沙滩之最,而岩溪峡谷呢?”

在地名表中地名字段的排名第2,所以这里有:

哇。我当时甚至没有关闭这个终端。(但是请注意到我是如何通过^string1^string2命令保存打印的内容。它重复着最后一个命令,但是用第2个字符串代替了第1个字符串。这是多么有用的BASH绝招!)

另一个亟待解决的问题是有多少地名有'Mile'在其中,例如'Six Mile Creek',而他们的排名又是如何:

我在我的澳洲之旅发现有很多Dead Horse Creeks,因此有这些地名:

种类

第三个列表是探索我今年出版的1961-2010年期间澳大利亚新种类昆虫名。从这个列表中,我去掉所有“物种的绰号”,就是种群组合的第二部分,比如像智人(你和我)和西方蜜蜂(欧洲蜜蜂)。

(科技小贴士:这个昆虫表,可以从开发数据Zenodo库中https://zenodo.org/record/10481取得,包括亚种。在我的‘top 10’练习中,我首先分离出所有独特的种群组合,这样避免了重复的,例如蜜蜂iberica的亚种,以避免蜜蜂的绰号intermissa,等等。最后一个物种文件有18155个绰号。)

大多数人讲科学名称带玩笑式地用'-us'结局,如'Biggus buggus'。那么昆虫学家呢?有几个不错的,用命令行的方式获取字符串的最后2个字母,在这里我都会用到这2个:

耶!昆虫学家喜欢也‘-us’结尾。接下来,我不知道有多少物种是以我的家乡Tasmania州来命名的?(下面我想看看前100行,来确保我得到的所有'tasman'组合.)

那么昆士兰呢?

一般来说,昆虫物种名单中的前10名分别是什么呢?

嗯,除了明显的'australis'和'australiensis',而地理方面的'occidentalis'(西部),另外昆虫学家创建7个在10个最流行列表中的绰号已经履行了其它昆虫学家的意愿。(绰号'commoni'是给澳大利亚蝴蝶和蛾专家Ian F.B. Common[1917-2006]的荣誉。)

演变

上面的这些命令用在简单列表上。要从简单的列表变成文本块,那就再次需要我们的命令行朋友了。例如,我把澳大利亚参议院于2014年7月16日的演讲保存成文本文件hansard。将hansard分割成一个单词列表:

现在看看讲话中的单词使用频率:

即将推出...

从多列的表中做'top 10'等排名,需要更多些的命令行工具。我将会在未来的文章中证明他们的用处。


via: http://thelinuxrain.com/articles/top-10-fun-on-the-command-line

原文作者:Bob Mesibov(Bob Mesibov 是塔斯马尼亚人,已经退休,热衷于 Linux tinkerer)

译者:disylee 校对:wxy

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