您的位置 首页 php

Linux 编程快速入门

编程工具

冒着与 Vi 爱好者展开激烈战争的风险,我是无条件的 emacs 粉丝。对我来说,Emacs 是进行任何类型的编程工作的理想编辑器。Emacs 有几个附加组件可以让您的生活更轻松。其中之一是 Espen Skoglund 的 auto-header.el。这将为您的代码文件创建一个标题,Emacs 将自动填充必要的信息。每次您进行更改时,它也会更新标题。这对我来说真的很方便。

我的主目录中有一个子目录,用于存放 emacs 零碎物品。我只是将 auto-header.el 放在这个目录中,然后像这样修改了我的 .emacs 文件:

代码:

 (add-to-list 'load-path "~/e Lisp /")(require 'auto-header)  

auto-header.el 文件的一部分定义了用于不同 编程语言 的注释区域的字符。该文件的标题需要位于 源代码 文件开头的注释区域内。该文件包含 20 种不同的编程语言,但我经常使用的 PHP 却不见了。所以我只是在Perl和 Postscript 之间为它添加了一个条目:

代码:

 (perl-mode      . ("#"    ""    "##"  "#"))(php-mode . ("/*" "*/" " *" "*"))(postscript-mode . ("%" "" "%%" "%"))  

现在,我的文件以一个不错的自动更新标题开头,如下所示:

代码:

 /**********************************************************************  File name:      listing.php* Description:   script  to list stuff* Author:        Michael Jordan <Michael.Jordan@ Linux .org>* Created at:    Tue Nov 29 20:13:14 2005* Modified by:  Michael Jordan <Michael.Jordan@linux.org>* Modified at:  Tue Nov 29 22:58:56 2005********************************************************************/  

实际上,您可以在此标头中添加更多信息。只需查阅 auto-header.el 文件本身中的注释以获取更多信息。

编程语言和 Linux

是可用于 Linux 的编程语言编译器的虚拟大杂烩。只有著名的gcc 编译器本身将为C++、 Fortran 和 ADA 编写的代码以及解释 Java 代码创建二进制文件。对于其他流行的编程语言,如 Pascal、COBOL 和 Lisp,有免费可用的编译器。正如你所看到的,真的太多了,无法深入了解所有这些。此外,无论如何,这位作家无法在绝大多数情况下进行编程。但在本课中,我们将研究一些在 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 formattoday=`date +%Y-%m-%0e`; # subject and  recipient  variablessubject="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.orkYour home directory is: /home/mikepenguin.linux.ork is running linux-gnu  

如您所见,我们不必事先声明任何这些。这就是为什么它们被称为内置变量。它们的使用将为您节省大量编写脚本的时间。您可以在GNU BASH 参考手册

交互式脚本中

找到完整的内置变量列表

虽然我们提到 BASH 脚本的主要用途是自动执行管理任务,但有时您可能需要用户与脚本进行交互。如果你想让用户输入信息,你需要使用变量read。让我们看一下下面的例子:

代码:

 #!/bin/sh echo -n "Enter the name of a city: "read CITYecho -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”例程来整理不正确的答案。您还会注意到它会将结果(无论是否正确)写入文件。
如果您从事教学行业,则可以对此进行扩展,为您的学生提供快速测验。

文章来源:智云一二三科技

文章标题:Linux 编程快速入门

文章地址:https://www.zhihuclub.com/44594.shtml

关于作者: 智云科技

热门文章

网站地图