小知识:

ipcs可以查看系统中创建的ipc进程间通信资源,例如信号量、共享内存等。示例如下:

什么是shell?

  shell是核心程序kernel之外的指令解析器,是一个程序,同时是一种命令语言和程序设计语言。

  shell是命令解析器,用户输入命令,它去解析。

shell的类型:

  ash、bash、ksh、csh、tcsh

使用cat /etc/shells可以查看系统下的shell,如下所示:

使用echo $SHELL 可以查看当前用户运行的shell

Linux下默认的shell是bash

程序在shell中执行。

ls命令执行过程:

  我们敲入命令之后命令会传给bash,bash shell解析这个命令,并传给内核,让内核执行相应的程序。

  每一个命令都会在一个新的shell中执行。

小知识:

S代表socket文件。

查看socket设备文件,使用命令ls /tmp/.X11-unix/X0 -lt,如下所示:

chown命令:

chowm  name.groupname filename  或者chowm  name.groupname dir -R递归的修改目录下所有文件所属的用户和用户组。中间是.或者:都可以。

chgrp只改变用户组,用法chgrp  groupname  filename

  创建一个文件的默认权限是644,创建文件夹的默认权限是755,如下所示:

这是为什么呢?

这是因为umask掩码在作怪,机制如下:

umask的默认值为022(可以使用umask命令查看),在~/.bash_profile文件中。如果修改后,可以使用source ./.bash_profile或者. ./.bash_profile重新加载这个文件,然后就可以生效了。

小知识:

  ls -lda     -d选项是看目录本身的信息,而不是看目录里面的内容。

shell知识:

  第一行出现的#不是注释,第一行的#和后面的执行命令!结合,表示要使用哪一个shell解释器来解释这个脚本。

#!/bin/bash   表示使用bin下的bash来作为解释器。

其他行的#表示注释。

变量声明: mytext = "hello world",变量没有类型,引用变量需要使用$。基本需要有执行权限才可以执行。

第一个shell程序如下:

 #!/bin/bash

 hello="hello world"

 echo $hello

执行结果如下:

定义变量时,前后不能出现空格。否则报错。取变量的值也可以使用echo ${hello}。

shell特性:

1、别名

2、命令替换

  ls `cat myfile` -alh   通过单反号,把cat myfile的内容输出,传给ls命令

  注意单反号,在键盘的~符号的下方,键盘左上角。

演示如下:myfile.txt中的内容为tmp。

3、后台处理,将一个进程放到后台执行,类似守护进程

有的linux版本不需要nohup,只需要在命令的最后加上&即可。

4、管道

5、重定向

6、模式匹配

7、特殊字符

  双引号(“”):用来使shell无法认出空格、制表符和其他大多数特殊字符,比如:

    建立一个带空格的文件touch “wang  bao  ming”。这时候的文件名字就是wang  bao  ming,如果创建文件时不带引号touch  wang  bao  ming,那么会创建出来三

    个文件,文件名字是分别是wang、bao、ming。

  单引号(‘’):用来使shell无法认出所有特殊字符。

  反引号(`):用来替换命令

  反斜杠(\):用来使shell无法认出特殊的字符,使其后的字符失去特殊的含义,是转义字符。

    例:创建带空格的文件touch  my\  file。 文件的名字就是my   file。

  分号(;):允许在一行上放多个命令,mv  1.txt  2.txt; mov  2.txt  3.txt

  &:后台执行命令的符号

  括号():创建成组的命令。

  大括号{}:创建命令块

  竖杠(|):管道标识符

  <>&:重定向标识符

  *?[ ]!:模式匹配

  $:变量名的开头

  #:表示注释,第一行除外

  空格符、制表符、换行符:当做空白

\可以对空格进行转义,使其后的字符失去特殊含义,如下所示:

abc def是一个文件,不是两个文件。

变量和运算符:

  变量:

本地变量只存在于当前shell中,退出当前shell后变量消失。可以使用readonly将本地变量变为只读。在命令行定义myvar=abc,这个myvar变量就是本地变量,退出当前shell时这个变量就消失了。

readonly变量只能在定义时赋值一次。

export设置的环境变量可以被这个shell及其所有子进程使用,如果想让任何一个进程使用设置的环境变量,应该在文件中设置。unset用来清除变量。

PS1最后的 \$代表提示符。

shift可以让参数移动(向左移),示例程序如下:

 #!/bin/bash

 echo "parm1 : $1"
echo "parm2 : $2"
echo "parm3 : $3"
echo "parm4 : $4" echo "run shift ..."
shift
echo "parm1 : $1"
echo "parm2 : $2"

执行结果如下:

引号:

  变量和替换操作,在脚本中执行变量替换时,最容易犯的一个错误就是引号的错误。例如:

  将da  * 用双引号引起来和不用双引号引起来结果是完全不一样的。

  双引号:使用双引号可以引用除字符$,`反引号,\反斜杠外的任意字符或者字符串。双引号里面的$var是会进行变量替换的。例如:

  加上-e的话shell会去解析双引号里面的回车换行,(-e解析转移字符)例如:

  单引号:单引号与双引号类似,单引号不做任何解释,shell解释器会忽略任何引用值,也就是不会进行变量替换,$var会原样输出。例如:

  单反号:单反号里面的东西是要执行的命令

  反斜杠:对特殊字符进行转义

echo -e的实验:

echo的-e选项会解析双引号中的 换行\n,如下所示:

双引号中的$var,会引用变量的值,而不是当做字符输出,如上图。而使用单引号时,$就不会引用变量的值了,而是当做字符输出,如下所示:

单反号``里面的是表示执行命令。

运算符:

  运算符对象:

    数字、字符(字面量)

    变量

    表达式

  表达式:

    运算符和运算符对象的组合体

    表达式类型:

    按位运算符:

      ~op1       取反

      op1<<op2   左移

      op1>>op2  右移

      op1&op2   按位与

      op1^op2    按位异或

      op1 | op2   按位或

        例:

          echo  $[2<<4]

          echo  $[2^4]

$[ ]  的意思是告诉shell对方括号中的表达式求值,例: echo  $[3+9]

  

  逻辑运算符:

    && 逻辑与运算

    ||  逻辑或运算, 例:echo  $[1 || 1]

  赋值运算符:

    =、+=、-=、*=、/=、%=、&=、^=、|=、<<=、>>=

    let  count=$count+$change

    let count+=$change

    对变量的运算:可以使用let  var+=5这种方式使var的值自增5。也可以使用var=$[ $var + 5 ]这种方式。 例:

其它的运算符实验示例:

表达式替换:

3.1 shell简介、变量、运算符的更多相关文章

  1. shell编程变量介绍与表达式详解

    shell变量简介 变量是任何一种编程语言都必不可少的组成部分,变量用来存放各种数据.脚本语言在定义变量时通常不需要指明类型,直接赋值就可以,Shell 变量也遵循这个规则. 在 Bash shell ...

  2. shell 简介

    shell 简介 shell既是一种命令语言,也是一种程序设计语言.作为命令语言,它交互式地解析和执行用户输入的命令:作为程序设计语言,他定义了各种变量和参数,并提供了许多的高级语言才具有的控制结构, ...

  3. shell之路【第一篇】shell简介与入门

    shell简介 1.Shell 诞生于 Unix,Unix的第一个脚本语言,是与 Unix/Linux 交互的工具,单独地学习 Shell 是没有意义的,shell使用的熟练程度反映了用户对Unix/ ...

  4. Linux学习——shell编程之运算符

    shell编程之运算符 一:shell中常见算术运算符号和优先级 二:算术运算符 Shell 变量:是弱类型!不能进行加减乘除!比较麻烦! 例子 :shell变量弱类型 a=11 b=22 echo ...

  5. Python第二天 变量 运算符与表达式 input()与raw_input()区别 字符编码 python转义符 字符串格式化 format函数字符串格式化 帮助

    Python第二天  变量  运算符与表达式  input()与raw_input()区别  字符编码  python转义符  字符串格式化  format函数字符串格式化  帮助 目录 Pychar ...

  6. shell 6基本运算符

    shell支持多种运算符: * 算数运算符 * 关系运算符 * 布尔运算符 * 字符串运算符 * 文件测试运算符 算数运算符 + 加 `expr $a + $b` 结果为 30 - 减 `expr $ ...

  7. Shell简介:1分钟理解什么是Shell 脚本语言 解释器 以及编译器和编译语言

    Shell简介:1分钟理解什么是Shell 脚本语言 解释器 以及编译器和编译语言 现在我们使用的操作系统(Windows.Mac OS.Android.iOS 等)都是带图形界面的,简单直观,容易上 ...

  8. Linux Shell系列教程之(一)Shell简介

    本文是Linux Shell系列教程的第(一)篇,更多shell教程请看:Linux Shell系列教程 想要学习linux,shell知识必不可少,今天就给大家来简单介绍下shell的基本知识. S ...

  9. shell的变量以及常见符号

    shell的变量以及常见符号 常见变量 不同于其它语言需要先声明变量,shell的变量直接使用 eg:      a=15 调用变量的话 $a 或者 ${a} $? #判断上一条命令执行的是否成功 0 ...

随机推荐

  1. PHP框架CI(codeigniter)的使用笔记

    流程图: 控制: 1.当想在控制类中直接跳转到其它控制类时,可以使用redirect()函数. 2.session的应用,在分页查询的时候可以用session(普通的get方式对CI来说太麻烦了):在 ...

  2. 设置网站URL启动

    当新建一个MVC WEB程序 当你打开一个视图按F5运行 这时候并且不能政策运行会出现与个错误 无法找到资源. 这时候站点的默认设置是 把这个个默认设置更改成 红色框框的地方为修改点 你以为这样就完了 ...

  3. SqlServer使用表值函数汇总

    先谈谈需求,我们先创建一张表,脚本如下: create table Cost ( Id ,) primary key,--编号 CostTime date,--时间 Num int--销售额 ); ' ...

  4. codeforces 966c//Big Secret// Codeforces Round #477 (Div. 1)

    题意:一个数组,重新打乱后前缀异或和递增.问这样的排列. 将所有元素按照二进制最高位分组.每次选当前前缀和sum的二进制最低的0位,再从分组中挑一个作为答案.先放首1在较低位的再放首1在较高位的总是可 ...

  5. Confluence 6 使用 LDAP 授权连接一个内部目录 - Schema 设置

    基本 DN(Base DN) 根专有名称(DN),这个名称在你对目录服务器上进行查询的时候使用.例如: o=example,c=com cn=users,dc=ad,dc=example,dc=com ...

  6. HDOJ1005

    #include "iostream" using namespace std; int fun(int A,int B,int n) { ,y = ,z; || n == ) ; ...

  7. Mvc 学习笔记(一)

    1. MVC 表示 模型-视图-控制器.MVC是一种用于开发应用程序的模式,具备良好的架构,可测试和易于维护.基于MVC应用程序中包含: Models:表示应用程序的数据,并使用验证逻辑强制执行业务规 ...

  8. 组播IP地址

    组播IP地址组播IP地址用于标识一个IP组播组.IANA(internet assigned number authority)把D类地址空间分配给IP组播,其范围是从224.0.0.0到239.25 ...

  9. Erlang:Error in process ... with exit value

    =ERROR REPORT==== 10-Apr-2015::16:30:04 ===Error in process <0.218.0> with exit value: {badarg ...

  10. O(logn)二叉树中的意义----高性能(四)

    转载地址:https://zhidao.baidu.com/question/239708227508660244.html?qbl=relate_question_2&word=%CA%B1 ...