Vivek Gite 发布的文章

XPenguins 是一个在窗口播放可爱动物动画的程序。默认情况下,将会从屏幕上方掉落企鹅,沿着你的窗口顶部行走,在窗口漂浮起来,踩上滑板,和做其他类似的有趣的事情。现在,你可以把这些可爱的小企鹅大军入侵别人的桌面了。

安装XPenguins

打开终端(选择程序->附件->终端),接着输入下面的命令来安装 XPenguins。首先,输入 apt-get update 通过请求配置的仓库刷新包的信息,接着安装需要的程序:

$ sudo apt-get update
$ sudo apt-get install xpenguins

我本地如何启动 XPenguins?

输入下面的命令:

$ xpenguins

示例输出:

An army of cute little penguins invading the screen

一支可爱企鹅军队正在入侵屏幕。

Linux: Cute little penguins walking along the tops of your windows

可爱的小企鹅沿着窗口的顶部行走。

Xpenguins Screenshot

Xpenguins 截图

移动窗口时小心点,小家伙们很容易被压坏。如果你发送中断程序(Ctrl-C),它们会爆炸。

主题

要列出主题,输入:

$ xpenguins -l

示例输出:

Big Penguins
Bill
Classic Penguins
Penguins
Turtles

你可以用下面的命令使用其他的主题:

$ xpenguins --theme "Big Penguins" --theme "Turtles"

你可以用下面的命令安装额外的主题:

$ cd /tmp
$ wget http://xpenguins.seul.org/xpenguins_themes-1.0.tar.gz
$ tar -zxvf xpenguins_themes-1.0.tar.gz
$ mkdir ~/.xpenguins
$ mv -v themes ~/.xpenguins/
$ xpenguins -l

示例输出:

Lemmings
Sonic the Hedgehog
The Simpsons
Winnie the Pooh
Worms
Big Penguins
Bill
Classic Penguins
Penguins
Turtles

已一个随机主题开始,输入:

$ xpenguins --random-theme

要加载所有的主题并且同时运行,输入:

$ xpenguins --all

更多链接何信息:


via: http://www.cyberciti.biz/tips/linux-cute-little-xpenguins-walk-along-tops-ofyour-windows.html

作者:Vivek Gite 译者:geekpi 校对:校对者ID

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

给你的Linux或Unix控制台创造一棵圣诞树玩玩吧。在此之前,需要先安装一个Perl模块,命名为Acme::POE::Tree。这是一棵很喜庆的圣诞树,我已经在Linux、OSX和类Unix系统上验证过了。

安装 Acme::POE::Tree

安装perl模块最简单的办法就是使用CPAN(Perl综合典藏网(Comprehensive Perl Archive Network))。打开终端,把下面的指令敲进去便可安装Acme::POE::Tree。

### 以root身份运行 ###
perl -MCPAN -e 'install Acme::POE::Tree'

示例输出:

Installing /home/vivek/perl5/man/man3/POE::NFA.3pm
Installing /home/vivek/perl5/man/man3/POE::Kernel.3pm
Installing /home/vivek/perl5/man/man3/POE::Loop.3pm
Installing /home/vivek/perl5/man/man3/POE::Resource.3pm
Installing /home/vivek/perl5/man/man3/POE::Filter::Map.3pm
Installing /home/vivek/perl5/man/man3/POE::Resource::SIDs.3pm
Installing /home/vivek/perl5/man/man3/POE::Loop::IO_Poll.3pm
Installing /home/vivek/perl5/man/man3/POE::Pipe::TwoWay.3pm
Appending installation info to /home/vivek/perl5/lib/perl5/x86_64-linux-gnu-thread-multi/perllocal.pod
  RCAPUTO/POE-1.367.tar.gz
  /usr/bin/make install  -- OK
  RCAPUTO/Acme-POE-Tree-1.022.tar.gz
  Has already been unwrapped into directory /home/vivek/.cpan/build/Acme-POE-Tree-1.022-uhlZUz
  RCAPUTO/Acme-POE-Tree-1.022.tar.gz
  Has already been prepared
Running make for R/RC/RCAPUTO/Acme-POE-Tree-1.022.tar.gz
cp lib/Acme/POE/Tree.pm blib/lib/Acme/POE/Tree.pm
Manifying 1 pod document
  RCAPUTO/Acme-POE-Tree-1.022.tar.gz
  /usr/bin/make -- OK
Running make test
PERL_DL_NONLAZY=1 "/usr/bin/perl" "-MExtUtils::Command::MM" "-MTest::Harness" "-e" "undef *Test::Harness::Switches; test_harness(0, 'blib/lib', 'blib/arch')" t/*.t
t/01_basic.t .. ok
All tests successful.
Files=1, Tests=2,  6 wallclock secs ( 0.09 usr  0.03 sys +  0.53 cusr  0.06 csys =  0.71 CPU)
Result: PASS
  RCAPUTO/Acme-POE-Tree-1.022.tar.gz
Tests succeeded but one dependency not OK (Curses)
  RCAPUTO/Acme-POE-Tree-1.022.tar.gz
  [dependencies] -- NA

在Shell中显示圣诞树

只需要在终端上运行以下命令:

perl -MAcme::POE::Tree -e 'Acme::POE::Tree->new()->run()'

示例输出

Gif 01: An animated christmas tree in Perl

Gif 01: 一棵用Perl写的喜庆圣诞树

树的定制

以下是我的脚本文件tree.pl的内容:

#!/usr/bin/perl

use Acme::POE::Tree;
my $tree = Acme::POE::Tree->new(
{
  star_delay => 1.5,  # shimmer star every 1.5 sec
  light_delay => 2,   # twinkle lights every 2 sec
  run_for => 10,      # automatically exit after 10 sec
}
);
$tree->run();

这样就可以通过修改stardelay、runfor和light\_delay参数的值来自定义你的树了。一棵好玩的终端圣诞树就此诞生。


via: http://www.cyberciti.biz/open-source/command-line-hacks/linux-unix-desktop-fun-christmas-tree-for-your-terminal/

作者:Vivek Gite 译者:soooogreen 校对:wxy

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

为了完成课程作业,我写了很多 C 语言代码并把它们保存为 /home/user/c/*.c 和 *.h。那么在 UNIX shell 窗口中我如何能通过字符串或者单词(例如函数名 main())文件内容来查找文件呢?

你需要用到以下工具:

[a] grep 命令 : 输出匹配模式的行。

[b] find 命令: 在目录层次中查找文件。

使用 grep 命令根据内容查找文件

输入以下命令:

grep 'string' *.txt
grep 'main(' *.c
grep '#include<example.h>' *.c
grep 'getChar*' *.c
grep -i 'ultra' *.conf
grep -iR 'ultra' *.conf

其中

  • -i : 忽略模式(匹配字符串 valid、 VALID、 ValID )和输入文件(匹配 file.c FILE.c FILE.C)的大小写。
  • -R : 递归读取每个目录下的所有文件。

高亮匹配到的模式

在搜索大量文件的时候你可以轻松地高亮模式:

$ grep --color=auto -iR 'getChar();' *.c

为查找到的模式显示文件名和行号

你也许需要显示文件名和行号:

$ grep --color=auto -iRnH 'getChar();' *.c

其中,

  • -n : 在输出的每行前面添加以 1 开始的行号。
  • -H : 为每个匹配打印文件名。要搜索多个文件时这是默认选项。(LCTT 译注:-h 选项强制隐藏文件名;另外 -l 和 -L 选项用于仅显示匹配/不匹配的文件名,而 -H 和 -h用于控制在显示匹配行前显示/不显示文件名,注意区分。)
$grep --color=auto -nH 'DIR' *

输出样例:

Fig.01: grep 命令显示搜索到的模式

图 01: grep 命令显示搜索到的模式

你也可以使用 find 命令:

$ find . -name "*.c" -print | xargs grep "main("

via: http://www.cyberciti.biz/faq/unix-linux-finding-files-by-content/

作者:Vivek Gite 译者:ictlyh 校对:wxy

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

我怎样从几个文件中搜索(grep),并只显示匹配到的文件的文件名?

当你从不止一个的文件中搜索时,默认它将显示文件名:

grep "word" 文件名
grep root /etc/*

示例输出:

/etc/bash.bashrc:       See "man sudo_root" for details.
/etc/crontab:17 *       * * *   root    cd / && run-parts --report /etc/cron.hourly
/etc/crontab:25 6       * * *   root    test -x /usr/sbin/anacron || ( cd / && run-parts --report /etc/cron.daily )
/etc/crontab:47 6       * * 7   root    test -x /usr/sbin/anacron || ( cd / && run-parts --report /etc/cron.weekly )
/etc/crontab:52 6       1 * *   root    test -x /usr/sbin/anacron || ( cd / && run-parts --report /etc/cron.monthly )
/etc/group:root:x:0:
grep: /etc/gshadow: Permission denied
/etc/logrotate.conf:    create 0664 root utmp
/etc/logrotate.conf:    create 0660 root utmp

每行开始的第一个部分是文件名(如:/etc/crontab、/etc/group)。使用 -l 选项可以只显示文件名:

grep -l "string" filename
grep -l root /etc/*

示例输出:

/etc/aliases
/etc/arpwatch.conf
grep: /etc/at.deny: Permission denied
/etc/bash.bashrc
/etc/bash_completion
/etc/ca-certificates.conf
/etc/crontab
/etc/group

你也可以逆转输出;使用 -L 选项来输出那些不匹配的文件的文件名

grep -L "word" filename
grep -L root /etc/*

示例输出:

/etc/apm
/etc/apparmor
/etc/apparmor.d
/etc/apport
/etc/apt
/etc/avahi
/etc/bash_completion.d
/etc/bindresvport.blacklist
/etc/blkid.conf
/etc/bluetooth
/etc/bogofilter.cf
/etc/bonobo-activation
/etc/brlapi.key

via: http://www.cyberciti.biz/faq/grep-from-files-and-display-the-file-name/

作者:Vivek Gite 译者:wxy 校对:wxy

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

在 Linux 或 UNIX 操作系统下,对于给定的单词或字符串,我们应该怎么统计它们在每个输入文件中存在的行数呢?

您需要通过添加 -c 或者 --count 选项参数来抑制正常的输出。它将会显示对输入文件单词匹配的行数,如下所示:

$ grep -c vivek /etc/passwd

或者

$ grep -w -c vivek /etc/passwd

输出的示例:

1

相反的,使用 -v 或者 --invert 选项参数可以统计出不匹配的输入文件行数,键入:

$ grep -c vivek /etc/passwd

输出的示例:

45

via: http://www.cyberciti.biz/faq/grep-count-lines-if-a-string-word-matches/

作者:Vivek Gite 译者:runningwater 校对:wxy

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

要使用 grep 命令来搜索多个字符串或单词,我们该怎么做?例如我想要查找 /path/to/file 文件中的 word1、word2、word3 等单词,我怎么样命令 grep 查找这些单词呢?

grep 命令支持正则表达式匹配模式。要使用多单词搜索,请使用如下语法:

grep 'word1\|word2\|word3' /path/to/file

下的例子中,要在一个名叫 /var/log/messages 的文本日志文件中查找 warning、error 和 critical 这几个单词,输入:

$ grep 'warning\|error\|critical' /var/log/messages

仅仅只是要匹配单词(即该词两侧是单词分界符,针对西方以空格分隔的语言而言)的话,可以加上 -w 选项参数:

$ grep -w 'warning\|error\|critical' /var/log/messages

egrep 命令可以跳过上面的语法格式,其使用的语法格式如下:

$ egrep -w 'warning|error|critical' /var/log/messages

我建义您们加上 -i (忽略大小写) 和 --color 选项参数,如下示:

$ egrep -wi --color 'warning|error|critical' /var/log/messages

输出示例:

Fig.01: Linux / Unix egrep Command Search Multiple Words Demo Output

图一: Linux / Unix egrep 命令查找多个单词输出例子


via: http://www.cyberciti.biz/faq/searching-multiple-words-string-using-grep/

作者:Vivek Gite 译者:runningwater 校对:wxy

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