Linux 编程快速入门
发布时间:2022-09-23 16:00:51 所属栏目:Linux 来源:
导读: 编程工具
冒着与 Vi 爱好者展开激烈战争的风险,我是无条件的 Emacs 粉丝。对我来说,Emacs 是进行任何类型的编程工作的理想编辑器。Emacs 有几个附加组件可以让您的生活更轻松。其中之一是 Espen Skogl
冒着与 Vi 爱好者展开激烈战争的风险,我是无条件的 Emacs 粉丝。对我来说,Emacs 是进行任何类型的编程工作的理想编辑器。Emacs 有几个附加组件可以让您的生活更轻松。其中之一是 Espen Skogl
编程工具 冒着与 Vi 爱好者展开激烈战争的风险,我是无条件的 Emacs 粉丝。对我来说,Emacs 是进行任何类型的编程工作的理想编辑器。Emacs 有几个附加组件可以让您的生活更轻松。其中之一是 Espen Skoglund 的 auto-header.el。这将为您的代码文件创建一个标题,Emacs 将自动填充必要的信息。每次您进行更改时,它也会更新标题。这对我来说真的很方便。 我的主目录中有一个子目录,用于存放 emacs 零碎物品。我只是将 auto-header.el 放在这个目录中,然后像这样修改了我的 .emacs 文件: 代码: (add-to-list 'load-path "~/elisp/") (require 'auto-header) auto-header.el 文件的一部分定义了用于不同编程语言的注释区域的字符。该文件的标题需要位于源代码文件开头的注释区域内。该文件包含 20 种不同的编程语言,但我经常使用的 PHP 却不见了。所以我只是在Perl和 Postscript之间为它添加了一个条目: 代码: (perl-mode . ("#" "" "##" "#")) (php-mode . ("/*" "*/" " *" "*")) (postscript-mode . ("%" "" "%%" "%")) 现在,我的文件以一个不错的自动更新标题开头,如下所示: 代码: /********************************************************************* * Filename: listing.php * Description: Script to list stuff * Author: Michael Jordan * Created at: Tue Nov 29 20:13:14 2005 * Modified by: Michael Jordan * Modified at: Tue Nov 29 22:58:56 2005 ********************************************************************/ 实际上,您可以在此标头中添加更多信息。只需查阅 auto-header.el 文件本身中的注释以获取更多信息。 编程语言和 Linux 是可用于 Linux 的编程语言编译器的虚拟大杂烩。只有著名的gcc 编译器本身将为C++、Fortran 和 ADA 编写的代码以及解释 Java 代码创建二进制文件。对于其他流行的编程语言,如 Pascal、COBOL 和 Lisplinux编译器,有免费可用的编译器。正如你所看到的,真的太多了,无法深入了解所有这些。此外,无论如何,这位作家无法在绝大多数情况下进行编程。但在本课中,我们将研究一些在 Linux 下运行的最常见的脚本语言。 使用 BASH 编程 听起来可能是这样,但 BASH 并不是蝙蝠侠和罗宾在 60 年代旧电视节目中与坏人战斗时出现的字幕之一(连同 Ooff!和 Biff!)。BASH 实际上代表 Bourne Again Shell。这个名字的原因可以追溯到为 Unix 编写原始 Bourne Shell 的 Steve Bourne。当 GNU 创建一个等效的自由软件时,他们以史蒂夫的外壳命名它,并在他的姓氏上加了一个双关语。 如果您是系统管理员,那么制作 BASH 脚本将是其中一项强制性工作。但远不是一件苦差事,你会发现它会让你的工作和生活变得更轻松。 我们的第一个 BASH脚本 BASH 脚本需要的第一件事就是众所周知的“shebang”。这是两个字符: 在此之后,您应该包含 BASH 解释器的路径。所以你的脚本的第一行应该是这样的: 如果您的默认 shell 是 BASH,则该行: 做同样的事情。它只是到 /bin/bash 的符号链接。但是如果你的默认 shell 不是 BASH,那么如果你用第一行编写一个shell 脚本,你就不会调用 /bin/bash 。因为在 Linux 系统上,BASH 通常是默认的 shell,你会看到大多数 BASH 脚本以 从那里开始,您可以自由地做外壳允许的事情。为管理目的而创建的 Shell 脚本(大多数脚本)由调用其他命令的行组成。让我们看一个简单的例子。假设您的系统上有电子邮件用户,但您没有配额。尽管如此,您仍想监控邮箱的大小,以确保人们不会占用过多的空间。这个脚本,从 crontab 运行,可以很好地解决问题: 除了 shebang,注释行以 # 开头 代码: #!/bin/sh # show us the size of email spools email spools # date in YYYY-MM-DD format today=`date +%Y-%m-`; # subject and recipient variables subject="Mailcheck"; sendto="admin@linux.ork"; cd /var/spool/mail ls -lSh | awk '{print $5, $9}' | grep "(G|M)" | mail -s $subject-$today $sendto # end script 首先,您会看到我们已经声明了一些变量。这些变量在声明时不以任何字符为前缀,但在使用时以美元符号 ($) 为前缀。您还注意到变量可以是其他命令,如本例中的 date 命令。当您将命令用作变量时,它必须放在反引号 (` `) 内。 首先,脚本更改为邮件假脱机所在的目录。脚本执行带有选项的“ls”,并显示一个列表,其中最大的线轴首先显示,其大小以人类可读的格式显示。这通过管道传送到 awk,后者对大小和用户名进行排序。awk 输出为那些以兆字节和千兆字节为单位的假脱机。然后将其通过管道传送到“邮件”命令并发送到管理员帐户,其中包含主题以及我们在这些变量中声明的日期。然后,管理员将在 /var/spool/mail 中得到一个使用最多空间的排序列表。 内置变量 虽然我们在前面的示例中创建了自己的变量,但 BASH 还附带了所谓的内置不变量。 代码: #!/bin/sh echo "You are user $UID on $HOSTNAME" echo "Your home directory is: $HOME" echo "$HOSTNAME is running $OSTYPE" 此脚本的输出应产生类似于以下内容: 代码: You are user 500 on penguin.linux.ork Your home directory is: /home/mike penguin.linux.ork is running linux-gnu 如您所见,我们不必事先声明任何这些。这就是为什么它们被称为内置变量。它们的使用将为您节省大量编写脚本的时间。您可以在GNU BASH 参考手册 交互式脚本中 找到完整的内置变量列表 虽然我们提到 BASH 脚本的主要用途是自动执行管理任务,但有时您可能需要用户与脚本进行交互。如果你想让用户输入信息,你需要使用变量read。让我们看一下下面的例子: 代码: #!/bin/sh echo -n "Enter the name of a city: " read CITY echo -n "$CITY is " case $CITY in London | Paris | Berlin | Rome) echo -n "in Europe";; 'New York' | Chicago | Washington) echo -n "in The USA";; Tokyo | Bejing | Bangalore) echo -n "in Asia";; *) echo -n "some place - but I don't know where";; esac 如您所见,我们已经声明了一个变量,该变量将取决于用户在被提示输入城市名称时输入的内容。之后,我们为每种情况提供了几种选择。如果用户输入我们在这里设想的城市名称,他/她将收到关于城市在哪里的消息。如果不是,脚本将显示一条消息,它不知道城市在哪里。任何答案都由星号 (*) 表示 确保您拥有所需 的内容 如果您必须操作文件的内容,最好先检查该文件是否存在。这是一个使用 if 命令执行此操作的简单 BASH 例程: 代码: #!/bin/sh if test -f /var/log/mail.log; then printf "The file existsn"; fi 这是一个好主意,因为如果您将脚本设置为操作不存在的文件,它将使您的脚本无用。 If Loops: A Practical Example 我做了 12 年的全职英语外语教师,所以我忍不住给你这个使用 BASH 脚本的多项选择测试的例子。 代码: #!/bin/sh PS3="Choose the number of the correct word to fill in the blank: " echo "The emergency brake let go and car rolled ______ the hill" select SENT1 in up down along beside do if [ "$SENT1" == "" ]; then echo -e "You need to enter somethingn" continue elif [ "$SENT1" != down ]; then echo -e "Sorry. Incorrectn" echo "1. Incorrect" >> eoiexam.dat elif [ "$SENT1" == down ]; then echo -e "Great!n" echo "No. 1 - Correct" >> eoiexam.dat break fi done 该脚本使用“elif”例程来整理不正确的答案。您还会注意到它会将结果(无论是否正确)写入文件。 如果您从事教学行业,则可以对此进行扩展,为您的学生提供快速测验。 (编辑:应用网_阳江站长网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
站长推荐