1.shell是什么?
从用户角度:shell是用户与Linux沟通的桥梁
从程序员角度:shell本身是一种用C语言编写的程序
shell担任了翻译的角色,将用户输入的命令翻译成Linux能够识别的指令。
shell是一个命令解释器。
shell是一种编程语言。
shell是内核的保护壳。

2.shell类型
cat /etc/shells 查看当前系统上的shell
echo $SHELL 查看当前使用的shell

3.bash优点:
1.命令编辑
记忆使用过的指令,上下键可以找到之前的指令

history 查看历史指令

vim .bash_history 历史指令保存在该文件中,默认保存2000条记录

vim .bashrc -> HISTFILESIZE=200 可以修改最大保存记录的数

2.补全功能(table)
指令补全
文件名补全

3.命令别名(alias)设定功能
ls -al ->lm
设定别名:alias lm='ls -al'
alias rm='rm -i'

4.作业控制、前景背景控制 &
ctrl + z 让正在运行的程序切换到后台运行
jobs 查看正在运行的作业
fg 1/2/3切回到前台运行

使用前背景控制可以让工作更顺利

5.shell script
DOS 中有将一堆指令写一起的称为 批处理文件 (.bat)
Linux中shell script 功能更强

4.在bash中输入指令
command [-options] parameter1,parameter2,...
指令 选项 参数
1.指令与选项、参数之间以空格,不论空几格shell都视为一格
2.如果指令很长,可以用 \ 符使指令连续到下一行
3.一般来说,选项是 -选项,有时需要写完整的名称 --选项
ls --help

5.管道(|)
一般用来连接进程
把前一个命令的输出作为下一个命令的输入
ps | sort | more

6.重定向
简单的说,就是将目前的所得数据转到其他地方
大于号 > 就是将输出结果导向到“>”后面的文件中
1.若文件不存在,会自动创建
2.若存在,先清空,再将数据写入

标准输入 代码0 stdin <
标准输出 代码1 stdout 1>
标准错误 代码2 stderr 2>

基本指令格式:
指令 > 设备/文件
指令 1> 设备/文件
指令 2> 设备/文件
指令 < 设备/文件

把正常输出和错误输出重定向到同一个文件中:
ls -l file 1> out.txt 2>&1

输入重定向<:
简单的说,就是将原来 需要由键盘输入的数据经由文件读入
more < err.txt
wc err.txt
输出行、单词数、字节数

ls QQQQQ 2> /dev/null (空设备)

----------------------------
shell语法:
变量
条件
程序控制
函数
变量:
1.环境变量
一般指在操作系统中用来指定系统运行环境的一些参数
PATH=$PATH:.
LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/local/lib
HOME
PWD
LANG
OLDPWD (cd -)
export PS1='[\u@\h:]$ '

1.永久的
使用export命令声明,并保存到配置文件中
2.临时的

2.自定义变量
1.最简单常用的例子就是路径名称
export myDir=/mnt/hgfs/中文路径
cd $myDir
2.另一个需要自定义变量的地方是脚本文件中(参考#define,修改维护更方便)
3.特殊变量
$? 表示上一个命令的退出码(返回值)

设定变量的规则:
1.变量与变量内容以"="连接
2.等号两边不能直接 接空格符
3.变量名只能是字母和数字,其中数字不能是开头字符
4.若有空格符,可用双引号或单引号将变量内容结合起来
5.可以通过在变量名前加一个$符号来访问它的内容
6.通常大写字符是系统预设变量,自定义变量可以使用小写字符,方便判断

条件:
test 条件
或 [ 条件 ]
测试字符串:
string1 = string2 相同
string1 != string2 不同
-n string 如果字符串不空,则结果为真
-z string 如果字符串为空,则结果为真
测试算术表达式:
expression1 -eq expression2 等于
-nq 不等于
-gt 大于(greater)
-lt 小于(little)
-ge 大于等于
-le 小于等于
!expression 如果表达式为真,则结果为,假反之亦然
测试文件条件:
-d file 是目录则为真
-f file 是普通文件则为真
-e file 文件存在则为真
-r file 文件可读则为真
-w file 文件可写则为真
-x file 文件可执行则为真

程序控制:
1.if语句
if 条件
then
语句
elif 条件
then
语句
else
语句
fi
注:if测试条件中 等号两边要有空格
如果用[]来测条件 []与条件之间也要有空格
第一个脚本程序:
1.#!/bin/bash 告诉系统,用#!后面的程序来执行我的脚本文件
2.其它行的#开头的是注释
3.echo 用来输出 (相当于printf),read用来输入,相当于scanf
4.脚本结束时,exit 0
脚本程序的执行:
1./bin/bash XXX.sh
2.chmod +x XXX.sh
./xxx.sh

2.for语句
for 变量 in 值1,值2,...
do
语句
done

`指令`:获取指令的执行结果
$(指令):获取指令的执行结果

3.while语句
while 条件
do
语句
done

#!/bin/bash

#这是我的第一个脚本,就是用来输出hello wrold

var="hello world"
echo $var

exit 0

#!/bin/bash

#这是用if语句来测试字符串
echo "你饿了吗?请回答YES 或 NO"

read var
echo $var
if [ "$var" = "YES" ]
then
echo "咱们等会就吃饭"
elif [ $var = "NO" ]
then
echo "咱们再玩会"
else
echo "输入不正确,请重新输入"
fi

exit 0

#!/bin/bash

#这是用if来测文件

read var
if [ -f $var ]
then
echo "这是一个文件"
elif [ -d $var ]
then
echo "这是一个目录"

else
echo 不支持这种格式
fi
exit 0

#!/bin/bash

#这是测试for循环

for var in apple pear grape
do
echo $var
done

exit 0

#!/bin/bash

#打印当前目录下以.sh结尾的文件

#for var in `ls *.sh` # `指令` :表示获取指令执行的结果
for var in $(ls *.sh)
do
echo $var
done

exit 0

#!/bin/bash
#这是while语句示例
#密码检查

echo "请输入密码:"
read var
while [ $var != "123456" ]; do

echo "密码不正确,请重新输入"
read var

done
echo "密码正确,登录成功"
exit 0

作业:
求和1-100
学习for语句的第二种写法

#! /bin/bash
i=1
j=0
while :
do
j=$((j + i))
((i == 100 )) && break
((i++))
done
echo $j for 循环版本 #! /bin/bash
j=0 for ((i=1 ; i<=100 ; i++))
do
j=$((j + i))
done
echo $j #!/bin/sh
s=0
for i in `seq 1 100`
do
s=`expr $s + $i`
#s=$(expr $s + $i)
done
echo $s

shell相关命令的更多相关文章

  1. adb & adb shell 相关命令

    在Mac上配置adb命令 在Mac OS中使用adb命令时,应进行变量配置,步骤如下: 一.终端中输入 cd ~ 二.输入touch .bash_profile 回车 touch:如果没有,则创建文件 ...

  2. Linux命令应用大词典-第10章 Shell相关命令

    10.1 commond:抑制正常的Shell函数查找 10.2 exec:使用执行命令替换当前的shell进程 10.3 bash:GNU的Bourne-Again Shell解释器 10.4 bu ...

  3. Shell编程基础教程5--文本过滤、正则表达式、相关命令

    5.文本过滤.正则表达式.相关命令    5.1.正则表达式(什么是正则表达式?正则表达式怎么进行匹配?常用命令)        简介:            一种用来描述文本模式的特殊语法      ...

  4. [ SHELL编程 ] 编程常用的ORACLE相关命令

    本文主要描述shell编程中常用的Oracle相关命令. 1.sqlplus -L/-S参数 sqlplus -L user/password #-L参数表示用户只尝试登录一次, 而不是在出错时再次提 ...

  5. shell获取时间的相关命令

    Linux shell获取时间和时间间隔(ms级别) 说明:在进行一些性能测试的时候,有时候我们希望能计算一个程序运行的时间,有时候可能会自己写一个shell脚本方便进行一些性能测试的控制(比如希望能 ...

  6. 《The Linux Command Line》 读书笔记04 Linux用户以及权限相关命令

    Linux用户以及权限相关命令 查看身份 id:Display user identity. 这个命令的输出会显示uid,gid和用户所属的组. uid即user ID,这是账户创建时被赋予的. gi ...

  7. Django命令行相关命令 以及创建一个空白网页的步骤

    django相关命令行命令: django.admin.py是Django的一个用于管理任务的命令行工具,manage.py是对django-admin.py的简单包装,每个Django Projec ...

  8. Linux Shell : Test命令参数解析

    格式: test conditions test -n string : string 不为空 test -z string : string 为空 test int1 -eq int2  : int ...

  9. Linux基本命令之用户系统相关命令

    1.格式说明 [simon@localhost simon]$ [simon@localhost ~]$ 这两种方式表示相同.simon是指定用户,localhost是计算机名字,如果不设置默认为lo ...

随机推荐

  1. 转 Android中通过广播方式调起第三方App

    今天紧急的跟进一个百度视频App无法调起百度贴吧App的问题,当然,这个是只发现是在4.x的android系统下发生,在2.x版本下,一切正常,(其实是3.1及以上的版本都有问题)具体场景为: 1.贴 ...

  2. mysql distinct、group_concat

    mysql distinct语句用于查询多条不重复记录值(去重.过滤多余的重复记录) distinct同时作用了两个字段或者两个以上的字段,必须得作用了的字段都相同的才被排除.如果想让单个列" ...

  3. 使用Spring框架的好处(转帖)

    http://blog.csdn.net/cynhafa/article/details/6205361 在SSH框假中spring充当了管理容器的角色.我们都知道Hibernate用来做持久层,因为 ...

  4. CodeForces 616B Dinner with Emma

    水题 #include<cstdio> #include<cstring> #include<algorithm> using namespace std; +; ...

  5. 常用HQL集锦

    1.根据ID查询某"一个"实体类 方法1: String hql = "From ClassEntity as c where c.id=?"; ClassEn ...

  6. 黑科技--位集--bitset

    自从上次网赛发现这么个东西之后,深深地感受到了bitset的强大,0.0. 正常的bool占用1字节空间,bitset可以把这个缩到1bit,空间上8倍优化.正常用起来可能会跟位运算状态压缩类似,但是 ...

  7. iOS常用宏定义

    转发:https://www.douban.com/note/486674206/ #ifndef MacroDefinition_h#define MacroDefinition_h //----- ...

  8. javascript books

    脑子里突然冒出这么一句话: “反射 是一种 代理!!!”,javascript ECMScript 6中也开始实现 Reflect 了. php的动态代理, 反射方面,在很多框架中都用到了.也是很多框 ...

  9. Quick Cocos2dx 场景转换问题

    项目结构是这样子的: 主场景代码是这样子的: local MainScene = class("MainScene", function() return display.newS ...

  10. CodeForces 660A Co-prime Array

    水题.放个1就可以了.暴力的找数字也是很快的. #include<cstdio> #include<cstring> #include<cmath> #includ ...