shell简介

在计算机科学中,Shell俗称壳(用来区别于核)。而我们常说的shell简单理解就是一个命令行界面,它使得用户能与操作系统的内核进行交互操作。

常见的shell环境有:MS-DOS、Bourne Shell(/usr/bin/sh或/bin/sh)、Bourne Again Shell(/bin/bash)、C Shell(/usr/bin/csh)、K Shell(/usr/bin/ksh)、Shell for Root(/sbin/sh)等等。

shell的脚本格式是固定的,如下:

1
2
3
#!/bin/sh
#comments
Your commands go here

第一行称之为shebang,符号#!告诉系统其后路径所指定的程序即是解释此脚本文件的Shell程序。

有两种运行shell的方式:一种是将脚本作为sh的命令行参数,另一种是降脚本作为具有执行权限的可执行文件。

将shell作为命令行参数时的运行方式如下:

1
sh script.sh

如果将脚本作为sh的命令行参数来运行,那么脚本中的shebang行也就没什么用处了。

为了是shell脚本能够自己独立运行,需要具备可执行权限。要使脚本独立运行必须利用shebang行。它通过使用位于#!之后的解释器来运行脚本。至于脚本的可执行权限,可以通过chmod命令来设置:

1
chmod a+x script.sh

上面的chmod命令赋予所有用script.sh文件的可执行权限。那么这个脚本就可以作为可执行程序运行:

1
./script.sh

php-cli简介

用Shell编程可以灵活地解决大量重复任务,十分方便。但是,Shell的语法十分怪异,不容易记,如果现在熟悉的语言可以用来写shell那就好了——比如php——就可以快速开发Shell程序了。

于是php-cli就营运而生了,php-cli是php Command Line Interface的简称,如同它名字的意思,就是php在命令行运行的接口,区别于在Web服务器上运行的php环境(php-cgi, isapi等)。

也就是说,php不单可以写前台网页,它还可以用来写后台的程序。当然是跟php一模一样啦,因为它就是php嘛!只不过一些默认的参数与php-cgi不同,比如运行时间:php-cli默认运行时间是无穷,而网页php默认设置是30s。

codeigniter cli模式

让我们试一试:Hello World!

首先创建一个简单的控制器。使用你的文本编辑器,创建一个叫做 tools.php 的文件,并且输入如下代码:

1
2
3
4
5
6
7
8
9
<?php
class Tools extends CI_Controller {
 
  public function message($to 'World')
  {
    echo "Hello {$to}!".PHP_EOL;
  }
}
?>

然后将这个文件保存到你的 application/controllers/ 文件夹里。现在正常情况下你可以通过你网站的 URL 来访问它:

1
example.com/index.php/tools/message/to

除此之外,我们也可以在 Mac/Linux 中打开终端,或者在 Windows 下进入“运行”输入“cmd”,并进入我们的 CodeIgniter 项目的目录。

1
2
$ cd /path/to/project;
$ php index.php tools message

如果你跟这这一步步下来,你应该会看到 Hello World!。

1
$ php index.php tools message "John Smith"

这里我们像使用 URL 参数一样给它传递了一个参数。“John Smith”作为一个参数被传递了,并且输出也变成:Hello John Smith!。

最新文章

  1. Linux VMware 克隆后无法启动eth0网卡
  2. mysql学习之-密码管理(默认密码,修改密码,解决忘记密码)
  3. Lucene 入门需要了解的东西
  4. iphone 与 ipad -- UIPopoverPresentationViewController
  5. 初探 FFT/DFT
  6. ural 1118. Nontrivial Numbers
  7. HDU-1102-Constructing Roads(并查集)
  8. 4.docker学习之镜像
  9. python接口自动化(十六)--参数关联接口后传(详解)
  10. 【转载】curl 模拟 GET\POST 请求,curl查看响应头 以及 curl post 上传文件
  11. python应用-爬取猫眼电影top100
  12. LeetCode算法题-Majority Element(Java实现)
  13. 20款最好的jQuery文件上传插件
  14. AOP 和 前置通知,后置通知
  15. html5 canvas高级贝塞尔曲线运动动画(好吧这一篇被批的体无完肤!都说看不懂了!没办法加注释了!当然数学不好的我也没办法了,当然这还涉及到一门叫做计算机图形学的学科)
  16. git入门教程,主要命令详解。
  17. (原)PyTorch中使用指定的GPU
  18. 【转】Maven中-DskipTests和-Dmaven.test.skip=true的区别
  19. Codeforces Round #294 (Div. 2)C - A and B and Team Training 水题
  20. ASP.NET找不到类型或命名空间名称怎么办

热门文章

  1. 如何将jsp页面的table报表转换到excel报表导出
  2. 跟着百度学PHP[4]OOP面对对象编程-4-对象成员的访问 -&gt;
  3. 十进制转为N进制
  4. net-snmp子代理(SubAgent)编写详述
  5. 自带openJDK,如何切换成Oracle JDK
  6. 【GoLang】golang中可以直接返回slice吗?YES
  7. Git索引
  8. jquery 常用的备忘
  9. ACM/ICPC 之 数论-费马大定理(HNUOJ 13371)
  10. UTF8编码转换(C#)