zoukankan      html  css  js  c++  java
  • shell基础

    shell是命令语言、命令解释程序及程序设计语言的统称。

    1.Bash脚本以“#!”开头(文件的首行),而“#!”后面同时要将所使用的shell的路径明确指出。

    #!  /bin/sh

    #!   解释器地址  选项

    下面陷进需要注意:

    1)系统对第一行#!长度有限制,从63到1024个字符不等,因此尽量不要超过64个字符。

    2)别在选项之后放置任何空白,因为空白也会跟着选项一起传递给被引用程序。

    3)知道解释器的完整路径,可以用来规避一些问题。

    下面的写法可以避免某种程度的欺骗式攻击(spoofing Attack).即添加选项符-,但不添加选项内容。

    #! /bin/sh -

    2.程序的注释符为“#”。

    3.命令行中强制执行shell类型

     #csh myscript

    4.shell脚本的执行

    1)设置权限后再执行脚本;

    chmod +x scriptname

    ./scriptname

    2)使用bash的内部指令“source”;

    3)直接使用sh命令来执行。

    sh/source myscript

    5.环境变量的配置文件:

    1)/etc/profile是系统启动过程中执行的一个脚本,对所有用户生效。

    2)~/.bash_profile是用户的脚本,在用户登录时生效。

    3)~/.bashrc用户脚本在~/.bash_profile中调用生效。

    6.shell环境变量

    PATH:决定shell将到哪些目录中寻找命令或程序

    HOME:当前用户主目录的完全路径名

    HISTSIZE:历史记录数

    LOGNAME:当前用户的登录名

    SHELL:shell路径名

    LANGUAGE:语言相关的环境变量

    MAIL:当前用户的邮件存放目录

    PSI:主指示符,对于ROOT用户为#,普通用户为$

    PSZ:辅助指示符,默认为“>”

    TERM:终端的类型

    PED:当前工作目录的绝对路径名。

    7. 脚本路径后增加脚本

    在shell脚本的头部出现 "#!/bin/sh /etc/rc.common",如果该脚本为x.sh,
    如果执行命令为 ./x.sh parameters,即为运行 /etc/rc.common x.sh parameters,这说明 /etc/rc.common用于解析x.sh命令行参数
     
    由于openwrt使用自己的初始script系统,所有的initscript必须使用/etc/rc.common作为wrapper安装在/etc/init.d/<name>下。
    如/etc/init.d/httpd:
    #!/bin/sh/etc/rc.common
    # Copyright (C)2006 OpenWrt.org
     
    START=50
    start() {
        [ -d /www ] && httpd -p 80 -h /www-r OpenWrt
    }
     
    stop() {
        killall httpd
    }
     
    从上可以看出,script本身并不解析命令行参数,而是由/etc/rc.common来完成。
    8. shell退出码
    shell用exit可传出shell退出状态,但有时不准确:一个shell可能同时运行了多个进程,exit返回的只是某一个进程的状态。
    通过exit前sleep 100可以看到多个进程,可能导致退出码不是理想值。
    9. 命令行下快捷键

    Ctrl+a:把光标移到行首。

    Ctrl+e:把光标移到行尾。

    Ctrl+l:清除终端。该快捷操作与在命令行键入clear作用相同。

    Ctrl+d:从Shell提示中注销并关闭,使用该快捷键就不必键入exit

    Ctrl+u:删除光标至行首的所有字符,使用这一快捷操作可以清除从光标处到行首的字符

    Ctrl+K:删除从光标到行末所有字符。

    Ctrl+t:新建屏幕。

    Alt+1到9:选择屏幕。

  • 相关阅读:
    Android 从上层到底层-----kernel层
    同时支持来自多个源头的域名的跨域调用
    Redis
    很好用的工具网站
    PHP array_combine()
    php 统计某个目录中所有文件的大小
    strchr()
    PHP $_SERVER
    Laravel5使用QQ邮箱发送邮件配置
    laravel 5.6
  • 原文地址:https://www.cnblogs.com/embedded-linux/p/4724674.html
Copyright © 2011-2022 走看看