数据API 案例 开发者 关于
掌握聚合最新动态了解行业最新趋势
API接口,开发服务,免费咨询服务
新闻动态 > 媒体报道

怎么让孩子产生对终端的乐趣

这篇文章是给孩子们写的,例如6年级的小学生,我最近正在教6年级学生学习Python。严格说来,这篇文章的目的并不是让孩子真正学到东西,而是让他们产生兴趣,但是这种兴趣能够引导他们学习UNIX终端,最终开始真正的使用它。要想运行这篇文章中的各种指令,你需要一个UNIX机器,Linux或是Mac OS X系统都可以。你还需要学会如何安装软件。下面有两个选项供你选择:

  • 使用package manager安装事先编译好的binary,我会为你提供OS XHomebrew的命令行,以及Ubuntu LinuxApt的命令行。在安装Homebrew之后,你还需要获得管理员权限才能安装这些package。如果你使用的是其他版本的Linux,你可以找到其他的package manager,它们使用起来都很简单。
  • 使用这些资源打造一个项目,并且将其安装在你的Home目录下。这种安装不需要管理员权限,但是安装的过程稍微复杂一些。

tr中使用ROT13加密

tr工具在OS X或是Ubuntu机器上都已经默认安装好了。它能够根据你提供的规则,将字符串中的字符转换为不同的字符。要想更详细的了解tr,你可以输入这个命令(去掉$符号):

$ man tr

这个命令会向你展示UNIX系统内置的命令说明。

在一些文本上,我们将会使用ROT13tr中进行加密,它会将每一个字母在字母表中向前移动13个位置,在需要的时候对他们进行从ZA的排列。由于英语中有26个字母,因此使用ROT13进行加密,它会为我们提供原始的文本。ROT13虽然很好玩,但是你不应该用它对重要信息进行加密,因为破解它十分容易。

输入下面内容:

$ echo 'Hello this is a test' | tr 'A-Za-z' 'N-ZA-Mn-za-m'
Uryyb guvf vf n grfg

它会被编码成:

$ echo 'Uryyb guvf vf n grfg' | tr 'A-Za-z' 'N-ZA-Mn-za-m'
Hello this is a test

在讲解下一个命令之前,我们还需要多说两个事情:

首先,UNIX的管道操作符(上面命令中的“|”符号,看上去像是一个管道)是UNIX命令中一个非常常用的东西,它会将一个命令的输出作为第二个命令中的输入。我们未来会经常使用它。

第二,我们是如何告诉tr使用ROT13的?其方法就是,通过第一个参数“A-Za-z”

这里的A-Z,代表的是从AZa-z代表的是从az(在计算机眼中,大写和小写字母都两个完全不同的字符)。这样,我们就告诉了tr,它只要将字母表中的任一字母进行编译,但是不用理会其他字符(例如空格、标点和数字等)。第二个参数“’N-ZA-Mn-za-m”规定了第一个参数的编译规则。因此,第一个参数(A)中的第一个字符会被编译成第二个参数(N)中的第一个字符,以此类推。

fortune

可惜的是,这个命令并没有默认安装在Mac或是Ubuntu Linux上。在Mac上,你可以这样进行安装:

brew install fortune

如果这样无法安装,那么你需要先安装Homebrew,你可以在参考这个页面

Ubuntu上请尝试这样进行安装:

sudo apt-get install fortune

在使用“sudo”命令的时候,它会要求你在运行下一个命令之前输入机器的密码。

如果你就是安装不上fortune,也不要着急,直接进入下一个命令也可以。

fortune会随机生成一个轻幽默的名人名言:

$ fortune 
I have never let my schooling interfere with my education.
		-- Mark Twain

say

这个命令在Mac上已经默认安装。在Ubuntu上,你需要输入“sudo apt install gnustep-gui-runtime”进行安装。

请输入:

 $ say "you just might be a genius"

请确保系统声音已经打开。

由于某些原因,Linuxsay命令需要它的输入必须是一个命令行参数,因此我们无法使用管道符将fortune的输出发送给say。因此这个命令在Linux上无法使用(在OS X上可用):

$ fortune | say

我们可以使用一个小技巧:把第一个命令放在括号中,并且在之前加入一个$符号,我们就可以把第一个命令的输出导入另一个命令的命令行参数中,这样你的电脑就可以将fortune读出来了:

$ say $(fortune)

另一个实现相同效果的小技巧,就是把fortune的输出放入一个文件中,然后让say读出这个文件:

 $ fortune > my_fortune.txt

$ say -f my_fortune.txt

这里的大于号,会将fortune的输出重定向到一个文件中。重定向的作用和管道符的作用相似,但是输出会进入到文件中,而不是进入到另一个程序中。这个符号非常实用。

如果你在LinuxMac上比较一下say,你会发现Mac的语音功能更好用。

cowsay

cowsay这个非常重要的命令实用了ASCII,让一个牛的形象来说出一段话。你可以这样实用它:

 $ fortune | cowsay

 __________________________________

/ What is mind? No matter. What is \

| matter? Never mind.              |

|                                  |

\ -- Thomas Hewitt Key, 1799-1875  /

 ----------------------------------

        \   ^__^

         \  (oo)\_______

            (__)\       )\/\

                ||----w |

                ||     ||

HomebrewApt都有名叫cowsaypackage,你可以使用相同的命令来进行安装。

cowsay还有其他一些有趣的特性,例如在后面加上“-d”能把牛变成死去的牛:

 $ fortune | cowsay -d

 _________________________________________

/ Laws are like sausages. It's better not \

| to see them being made.                 |

|                                         |

\ -- Otto von Bismarck                    /

 -----------------------------------------

        \   ^__^

         \  (xx)\_______

            (__)\       )\/\

             U  ||----w |

                ||     ||

你还可以自己试验一下“man cowsay”的效果。

ponysay

如果你觉得cowsay还不过瘾,你可以试试ponysay。但是ponysay无法所谓预编译package使用。你可以在源代码上进行开发,方法是首先使用apt-get或是brew来安装git package,然后运行下面的命令:

 $ git clone https://github.com/erkin/ponysay.git

$ cd ponysay

$ ./setup.py --freedom=partial --private install

这个过程会将ponysay安装在一个奇怪的位置,但是并不影响使用。这里(在Linux下,在Mac上你需要将另一个命令的输出pipeponysay上)一个可爱的小马会告诉你一个数字的质因数分解:

 

figlet

Figlet(实际名称为FIGlet)会将文本的样式进行变化,请看下面的例子:

 $ whoami | figlet

                     _          

 _ __ ___  __ _  ___| |__  _ __

| '__/ _ \/ _` |/ _ \ '_ \| '__|

| | |  __/ (_| |  __/ | | | |   

|_|  \___|\__, |\___|_| |_|_|   

          |___/                 

Figlet有很多种选择,让你可以控制文本输出的样式。例如,你可以对字体进行修改:

 $ echo 'hello Eddie' | figlet -f script

 _          _   _          ___                    

| |        | | | |        / (_)   |     |  o      

| |     _  | | | |  __    \__   __|   __|      _  

|/ \   |/  |/  |/  /  \_  /    /  |  /  |  |  |/  

|   |_/|__/|__/|__/\__/   \___/\_/|_/\_/|_/|_/|__/

另一个命令toiletfiglet相似,但是有更多的选项。你可以使用相同的命令同时安装着两个东西。

lolcat

UNIX“cat”程序可以在终端上打印一个文件,或是任何pipe给它的东西。而lolcat与它类似,不过却能表现更好看的颜色:

 

bb

bb程序在Homebrew上并不可用,但是在Ubuntu上,你可以使用“sudo apt-get install bb”对它进行安装。它是一个非常强大的ASCII art deme

rig

很多网站都希望你使用真名字或是真实地址进行注册和登录,但是你的家长却不希望你在网上泄露自己的身份。rig这个东西能帮你忙,它可以帮你生成随机的身份:

 $ rig

Juana Waters

647 Hamlet St

Austin, TX  78710

(512) xxx-xxxx

就连邮政编码和电话区码都是正确的。处于某些原因,rig从来不会生成犹他州的身份。

bc

bc是一个计算器程序,但是它和普通的计算器却有一些不同,它能够计算无限大的数字(取决于你计算机内存的大小),而且不会损失精确性。你可以尝试一下:

 $ echo '2 ^ 100' | bc

1267650600228229401496703205376

可惜的是,bc并没有内置的阶乘函数,但是我们可以轻松的使用bc内置的编程语言写一个阶乘函数。通过输入bc打开它的互动模式。然后输入下面的代码:

 define fact(n) {

  if (n < 2) return 1;

  return n * fact(n - 1);

}

现在你就可以运行非常复杂的阶乘计算数了:

 fact(1000)

40238726007709377354370243392300398571937486421071463254379991042993\

85123986290205920442084869694048004799886101971960586316668729948085\

58901323829669944590997424504087073759918823627727188732519779505950\

99527612087497546249704360141827809464649629105639388743788648733711\

91810458257836478499770124766328898359557354325131853239584630755574\

09114262417474349347553428646576611667797396668820291207379143853719\

58824980812686783837455973174613608537953452422158659320192809087829\

73084313928444032812315586110369768013573042161687476096758713483120\

25478589320767169132448426236131412508780208000261683151027341827977\

70478463586817016436502415369139828126481021309276124489635992870511\

49649754199093422215668325720808213331861168115536158365469840467089\

75602900950537616475847728421889679646244945160765353408198901385442\

48798495995331910172335555660213945039973628075013783761530712776192\

68490343526252000158885351473316117021039681759215109077880193931781\

14194545257223865541461062892187960223838971476088506276862967146674\

69756291123408243920816015378088989396451826324367161676217916890977\

99119037540312746222899880051954444142820121873617459926429565817466\

28302955570299024324153181617210465832036786906117260158783520751516\

28422554026517048330422614397428693306169089796848259012545832716822\

64580665267699586526822728070757813918581788896522081643483448259932\

66043367660176999612831860788386150279465955131156552036093988180612\

13855860030143569452722420634463179746059468257310379008402443243846\

56572450144028218852524709351906209290231364932734975655139587205596\

54228749774011413346962715422845862377387538230483865688976461927383\

81490014076731044664025989949022222176590433990188601856652648506179\

97023561938970178600408118897299183110211712298459016419210688843871\

21855646124960798722908519296819372388642614839657382291123125024186\

64935314397013742853192664987533721894069428143411852015801412334482\

80150513996942901534830776445690990731524332782882698646027898643211\

39083506217095002597389863554277196742822248757586765752344220207573\

63056949882508796892816275384886339690995982628095612145099487170124\

45164612603790293091208890869420285106401821543994571568059418727489\

98094254742173582401063677404595741785160829230135358081840096996372\

52423056085590370062427124341690900415369010593398383577793941097002\

77534720000000000000000000000000000000000000000000000000000000000000\

00000000000000000000000000000000000000000000000000000000000000000000\

00000000000000000000000000000000000000000000000000000000000000000000\

0000000000000000000000000000000000000000000000000000

总结

其实我们只是探索了UNIX终端的最基本功能。直到现在我也没能使用遍它的所有程序,Twitter上很多人为我提供了建议,我也将他们的建议用在了这篇文章中。如果你还想进一步了解它的乐趣,你可以看看这个视频

qrcode_for_gh_9de197bcc61b_258.jpg

原文来自:SDK.cn

掌握聚合最新动态了解行业最新趋势
API接口,开发服务,免费咨询服务
新闻动态 > 媒体报道
怎么让孩子产生对终端的乐趣
发布:2017-04-28

这篇文章是给孩子们写的,例如6年级的小学生,我最近正在教6年级学生学习Python。严格说来,这篇文章的目的并不是让孩子真正学到东西,而是让他们产生兴趣,但是这种兴趣能够引导他们学习UNIX终端,最终开始真正的使用它。要想运行这篇文章中的各种指令,你需要一个UNIX机器,Linux或是Mac OS X系统都可以。你还需要学会如何安装软件。下面有两个选项供你选择:

  • 使用package manager安装事先编译好的binary,我会为你提供OS XHomebrew的命令行,以及Ubuntu LinuxApt的命令行。在安装Homebrew之后,你还需要获得管理员权限才能安装这些package。如果你使用的是其他版本的Linux,你可以找到其他的package manager,它们使用起来都很简单。
  • 使用这些资源打造一个项目,并且将其安装在你的Home目录下。这种安装不需要管理员权限,但是安装的过程稍微复杂一些。

tr中使用ROT13加密

tr工具在OS X或是Ubuntu机器上都已经默认安装好了。它能够根据你提供的规则,将字符串中的字符转换为不同的字符。要想更详细的了解tr,你可以输入这个命令(去掉$符号):

$ man tr

这个命令会向你展示UNIX系统内置的命令说明。

在一些文本上,我们将会使用ROT13tr中进行加密,它会将每一个字母在字母表中向前移动13个位置,在需要的时候对他们进行从ZA的排列。由于英语中有26个字母,因此使用ROT13进行加密,它会为我们提供原始的文本。ROT13虽然很好玩,但是你不应该用它对重要信息进行加密,因为破解它十分容易。

输入下面内容:

$ echo 'Hello this is a test' | tr 'A-Za-z' 'N-ZA-Mn-za-m'
Uryyb guvf vf n grfg

它会被编码成:

$ echo 'Uryyb guvf vf n grfg' | tr 'A-Za-z' 'N-ZA-Mn-za-m'
Hello this is a test

在讲解下一个命令之前,我们还需要多说两个事情:

首先,UNIX的管道操作符(上面命令中的“|”符号,看上去像是一个管道)是UNIX命令中一个非常常用的东西,它会将一个命令的输出作为第二个命令中的输入。我们未来会经常使用它。

第二,我们是如何告诉tr使用ROT13的?其方法就是,通过第一个参数“A-Za-z”

这里的A-Z,代表的是从AZa-z代表的是从az(在计算机眼中,大写和小写字母都两个完全不同的字符)。这样,我们就告诉了tr,它只要将字母表中的任一字母进行编译,但是不用理会其他字符(例如空格、标点和数字等)。第二个参数“’N-ZA-Mn-za-m”规定了第一个参数的编译规则。因此,第一个参数(A)中的第一个字符会被编译成第二个参数(N)中的第一个字符,以此类推。

fortune

可惜的是,这个命令并没有默认安装在Mac或是Ubuntu Linux上。在Mac上,你可以这样进行安装:

brew install fortune

如果这样无法安装,那么你需要先安装Homebrew,你可以在参考这个页面

Ubuntu上请尝试这样进行安装:

sudo apt-get install fortune

在使用“sudo”命令的时候,它会要求你在运行下一个命令之前输入机器的密码。

如果你就是安装不上fortune,也不要着急,直接进入下一个命令也可以。

fortune会随机生成一个轻幽默的名人名言:

$ fortune 
I have never let my schooling interfere with my education.
		-- Mark Twain

say

这个命令在Mac上已经默认安装。在Ubuntu上,你需要输入“sudo apt install gnustep-gui-runtime”进行安装。

请输入:

 $ say "you just might be a genius"

请确保系统声音已经打开。

由于某些原因,Linuxsay命令需要它的输入必须是一个命令行参数,因此我们无法使用管道符将fortune的输出发送给say。因此这个命令在Linux上无法使用(在OS X上可用):

$ fortune | say

我们可以使用一个小技巧:把第一个命令放在括号中,并且在之前加入一个$符号,我们就可以把第一个命令的输出导入另一个命令的命令行参数中,这样你的电脑就可以将fortune读出来了:

$ say $(fortune)

另一个实现相同效果的小技巧,就是把fortune的输出放入一个文件中,然后让say读出这个文件:

 $ fortune > my_fortune.txt

$ say -f my_fortune.txt

这里的大于号,会将fortune的输出重定向到一个文件中。重定向的作用和管道符的作用相似,但是输出会进入到文件中,而不是进入到另一个程序中。这个符号非常实用。

如果你在LinuxMac上比较一下say,你会发现Mac的语音功能更好用。

cowsay

cowsay这个非常重要的命令实用了ASCII,让一个牛的形象来说出一段话。你可以这样实用它:

 $ fortune | cowsay

 __________________________________

/ What is mind? No matter. What is \

| matter? Never mind.              |

|                                  |

\ -- Thomas Hewitt Key, 1799-1875  /

 ----------------------------------

        \   ^__^

         \  (oo)\_______

            (__)\       )\/\

                ||----w |

                ||     ||

HomebrewApt都有名叫cowsaypackage,你可以使用相同的命令来进行安装。

cowsay还有其他一些有趣的特性,例如在后面加上“-d”能把牛变成死去的牛:

 $ fortune | cowsay -d

 _________________________________________

/ Laws are like sausages. It's better not \

| to see them being made.                 |

|                                         |

\ -- Otto von Bismarck                    /

 -----------------------------------------

        \   ^__^

         \  (xx)\_______

            (__)\       )\/\

             U  ||----w |

                ||     ||

你还可以自己试验一下“man cowsay”的效果。

ponysay

如果你觉得cowsay还不过瘾,你可以试试ponysay。但是ponysay无法所谓预编译package使用。你可以在源代码上进行开发,方法是首先使用apt-get或是brew来安装git package,然后运行下面的命令:

 $ git clone https://github.com/erkin/ponysay.git

$ cd ponysay

$ ./setup.py --freedom=partial --private install

这个过程会将ponysay安装在一个奇怪的位置,但是并不影响使用。这里(在Linux下,在Mac上你需要将另一个命令的输出pipeponysay上)一个可爱的小马会告诉你一个数字的质因数分解:

 

figlet

Figlet(实际名称为FIGlet)会将文本的样式进行变化,请看下面的例子:

 $ whoami | figlet

                     _          

 _ __ ___  __ _  ___| |__  _ __

| '__/ _ \/ _` |/ _ \ '_ \| '__|

| | |  __/ (_| |  __/ | | | |   

|_|  \___|\__, |\___|_| |_|_|   

          |___/                 

Figlet有很多种选择,让你可以控制文本输出的样式。例如,你可以对字体进行修改:

 $ echo 'hello Eddie' | figlet -f script

 _          _   _          ___                    

| |        | | | |        / (_)   |     |  o      

| |     _  | | | |  __    \__   __|   __|      _  

|/ \   |/  |/  |/  /  \_  /    /  |  /  |  |  |/  

|   |_/|__/|__/|__/\__/   \___/\_/|_/\_/|_/|_/|__/

另一个命令toiletfiglet相似,但是有更多的选项。你可以使用相同的命令同时安装着两个东西。

lolcat

UNIX“cat”程序可以在终端上打印一个文件,或是任何pipe给它的东西。而lolcat与它类似,不过却能表现更好看的颜色:

 

bb

bb程序在Homebrew上并不可用,但是在Ubuntu上,你可以使用“sudo apt-get install bb”对它进行安装。它是一个非常强大的ASCII art deme

rig

很多网站都希望你使用真名字或是真实地址进行注册和登录,但是你的家长却不希望你在网上泄露自己的身份。rig这个东西能帮你忙,它可以帮你生成随机的身份:

 $ rig

Juana Waters

647 Hamlet St

Austin, TX  78710

(512) xxx-xxxx

就连邮政编码和电话区码都是正确的。处于某些原因,rig从来不会生成犹他州的身份。

bc

bc是一个计算器程序,但是它和普通的计算器却有一些不同,它能够计算无限大的数字(取决于你计算机内存的大小),而且不会损失精确性。你可以尝试一下:

 $ echo '2 ^ 100' | bc

1267650600228229401496703205376

可惜的是,bc并没有内置的阶乘函数,但是我们可以轻松的使用bc内置的编程语言写一个阶乘函数。通过输入bc打开它的互动模式。然后输入下面的代码:

 define fact(n) {

  if (n < 2) return 1;

  return n * fact(n - 1);

}

现在你就可以运行非常复杂的阶乘计算数了:

 fact(1000)

40238726007709377354370243392300398571937486421071463254379991042993\

85123986290205920442084869694048004799886101971960586316668729948085\

58901323829669944590997424504087073759918823627727188732519779505950\

99527612087497546249704360141827809464649629105639388743788648733711\

91810458257836478499770124766328898359557354325131853239584630755574\

09114262417474349347553428646576611667797396668820291207379143853719\

58824980812686783837455973174613608537953452422158659320192809087829\

73084313928444032812315586110369768013573042161687476096758713483120\

25478589320767169132448426236131412508780208000261683151027341827977\

70478463586817016436502415369139828126481021309276124489635992870511\

49649754199093422215668325720808213331861168115536158365469840467089\

75602900950537616475847728421889679646244945160765353408198901385442\

48798495995331910172335555660213945039973628075013783761530712776192\

68490343526252000158885351473316117021039681759215109077880193931781\

14194545257223865541461062892187960223838971476088506276862967146674\

69756291123408243920816015378088989396451826324367161676217916890977\

99119037540312746222899880051954444142820121873617459926429565817466\

28302955570299024324153181617210465832036786906117260158783520751516\

28422554026517048330422614397428693306169089796848259012545832716822\

64580665267699586526822728070757813918581788896522081643483448259932\

66043367660176999612831860788386150279465955131156552036093988180612\

13855860030143569452722420634463179746059468257310379008402443243846\

56572450144028218852524709351906209290231364932734975655139587205596\

54228749774011413346962715422845862377387538230483865688976461927383\

81490014076731044664025989949022222176590433990188601856652648506179\

97023561938970178600408118897299183110211712298459016419210688843871\

21855646124960798722908519296819372388642614839657382291123125024186\

64935314397013742853192664987533721894069428143411852015801412334482\

80150513996942901534830776445690990731524332782882698646027898643211\

39083506217095002597389863554277196742822248757586765752344220207573\

63056949882508796892816275384886339690995982628095612145099487170124\

45164612603790293091208890869420285106401821543994571568059418727489\

98094254742173582401063677404595741785160829230135358081840096996372\

52423056085590370062427124341690900415369010593398383577793941097002\

77534720000000000000000000000000000000000000000000000000000000000000\

00000000000000000000000000000000000000000000000000000000000000000000\

00000000000000000000000000000000000000000000000000000000000000000000\

0000000000000000000000000000000000000000000000000000

总结

其实我们只是探索了UNIX终端的最基本功能。直到现在我也没能使用遍它的所有程序,Twitter上很多人为我提供了建议,我也将他们的建议用在了这篇文章中。如果你还想进一步了解它的乐趣,你可以看看这个视频

qrcode_for_gh_9de197bcc61b_258.jpg

原文来自:SDK.cn

电话 0512-88869195