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. Ubuntu安装完后设置root密码

    安装完Ubuntu 14.04后默认是没有主动设置root密码的,也就无法进入根用户. 相关阅读: Ubuntu 14.04 下载.安装.配置 整理汇总 页面 http://www.linuxidc. ...

  2. Android SERVICE后台服务进程的自启动和保持

    Service组件在android开发中经常遇到,其经常作为后台服务,需要始终保持运行,负责处理一些必要(见不得人)的任务.而一些安全软件,如360等,会有结束进程的功能,如果不做Service的保持 ...

  3. 几种在shell命令行中过滤adb logcat输出的方法

    我们在Android开发中总能看到程序的log日志内容充满了屏幕,而真正对开发者有意义的信息被淹没在洪流之中,让开发者无所适从,严重影响开发效率.本文就具体介绍几种在shell命令行中过滤adblog ...

  4. HDOJ1312<DFS>

    题意: 给一张图,有墙,有路.问某人从起点开始,最多能走多少个格子. 思路: bfs;<水题> #include<iostream> #include<cstring&g ...

  5. 直接拿来用!最火的iOS开源项目(一)

    直接拿来用!最火的iOS开源项目(一) 发表于2013-06-05 10:17| 39373次阅读| 来源CSDN| 100 条评论| 作者唐小引 iOS开源项目GitHub移动开发最受欢迎的开源项目 ...

  6. python WEB接口自动化测试之requests库详解

    由于web接口自动化测试需要用到python的第三方库--requests库,运用requests库可以模拟发送http请求,再结合unittest测试框架,就能完成web接口自动化测试. 所以笔者今 ...

  7. ASCII,Unicode 和通用方式

    ASCII码 字符char,字符指针char*,字符数组char a[]; 例如:char a='A'; char* pC="beijing"; char aC[]="b ...

  8. rsa or dsa?

    http://www.linuxquestions.org/questions/linux-security-4/which-is-better-rsa-or-dsa-public-key-12593 ...

  9. Delphi XE7,Rad Studio XE7 官方下载(附Delphi XE7破解),更新Update1(转)

    源:http://blog.csdn.net/maxwoods/article/details/39024525

  10. Kafka 在行动:7步实现从RDBMS到Hadoop的实时流传输

    原文:https://coyee.com/article/11095-kafka-in-action-7-steps-to-real-time-streaming-from-rdbms-to-hado ...