首页 > 代码库 > Shell编程之一

Shell编程之一

以下一至二大点是了解。后面才是重点:

一、硬件、核心和shell。 

1. 硬件:当然就是你的硬件配备。
2. 核心管理:操作系统的核心。
3. 应用程序:图形接口的软件(这里就是指shell)。

二、为何要学习shell。

1、所有的Linux都支持shell。
2、远程管理:shell命令传输非常快。(Windows下视频传输就是一直抓图,传输速度非常慢)
3、要想做一个高端的系统管理员:shell和shell scripts 必须学会。

三、系统的合法 shell 与 /etc/shells 功能

1、Linux版本系统里面常用的shell种类(查询方法:shell)存放档案目录:/etc/shells

  ? · /bin/sh (已经被/bin/bash 所取代)
  ? · /bin/bash (就是Linux预设的shell)
  ? · /bin/ksh (Kornshell 由 AT&T Bell lab.发展出来的,兼容与bash)
  ? · /bin/tcsh (整和C Shell,提供更多的功能)
  ? · /bin/csh (已经被/bin/tcsh所取代)
  ? · /bin/zsh (基与ksh发展出来的,是功能更强大的shell)

2、一些奇怪的shell(如:/etc/nologin)的来源

    有的时候FTP网站会去检查使用者的可用shell,而如果你不想要这些用户使用FTP以外的主机资源时,
  可能会给予该使用者一些怪怪的shell,使使用者无法以其他服务登入主机。这个时候,你就得将那些
  怪怪的shell写到 /etc/shells 当中了

  如:/etc/nologin 这个档案就是怪怪的shell

  查看当前工作的shell:cat /etc/passwd

3、Bash Shell 的功能

  ①、命令编修的能力:history
  ②、命令与档案补全功能:tab键
    ? [Tab] 接在一串命令的第一个字的后面,则为命令补全
    ? [Tab] 接在一串命令的第二个字以后时,则为档案补齐

  ③、命令别名设置:alias
    alias dd=‘ls -al‘
    dd /mnt 查看mnt下的目录

  ④、

    程序化脚本:Bash script
    通配符:ll /usr/bin/X*

  ⑤、查询Bash shell 內键命令: type cd

  技术分享

  ⑥、一行多个命令和命令的换行  

    一行多个命令中间用分号隔开: ;
    多行一个命令,结尾以\隔开: \

四、shell语法;

 1、变量以及变量的转换;

    变量的分类:本地变量,环境变量,位置变量,系统变量

   shell的切换:bash

   查看当前的shell ID: echo $$ 

 2、变量的申明与取消、以及注意事项(通用所有变量);

     申明:(export,declare) 参数   变量名=值  

    取消:unset=变量名

    定义的注意事项:

            ①变量名可以用字母数字下划线,但是不能以数字开头;

            ②等号两边不能有空格;如果有空格则使用引号引起来

 3、本地变量的定义和引用;     

      定义:变量名=值   (前面不需要关键字,直接变量名=值)

      引用:echo $变量名

    注意:在 bash 当中,当一个发量名称尚未被设定时,预设的内容是空的;

 4、环境变量的定义和引用; 

      定义:

          export 变量名=值

          declare -x 变量名=值

      引用:echo $变量名

    环境变量的特点:会影响所有的子shell;

             但不会影响以前的shell; 

5、本地变量和环境变量的查看和转换;

  查看:

     查看所有的变量(本地变量和环境变量):set

     查看所有的环境变量: env、export、export -p  

  转换:

    本地变量——>环境变量   :  

          本地变量yy转换为环境变量: 

              export yy

              declare -x yy

    环境变量——>本地变量: 

          环境变量zz换换为本地变量: declare +x zz 

          

6、位置变量;

  $0  ----> 代表脚本文件的名字

  $#  ---->代表参数个数

  $*  ---->代表参数列表

  $$

  $@

  $?

    区别参考博客:http://www.cnblogs.com/kaituorensheng/p/4002697.html

7、系统变量;

  系统变量一般是大写。

  系统变量什么时候赋值:在系统登录的时候就赋值了。

  由于系统变量在系统里面已经设置了;所有我们可以直接引用。

    引用的方法:echo $HOME

          echo $PATH

          echo $MACHINE

          echo $HISTFILESIZE    (查看当前系统最大的命令缓存个数)

          

 

8、查看系统当前支持的编码和当前的编码;

  查看系统支持的编码:local -a

  查看当前系统的编码:echo $LANG

 

Shell编程之一