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. Cannot call sendRedirect() after the response has been committed

    AJAX+JSP时,out.write('content')之后,如果后面还有代码,无法被执行到,会报 错,java.lang.IllegalStateException: Cannot call s ...

  2. Linux SCP命令复制传输文件的用法

    SCP命令是用户通过网络将一台Linux服务器的文件复制到另一台Linux服务器,方法如下: 一:从本地复制到远程 复制文件: 命令格式: scp local_file remote_username ...

  3. POJ2096 概率dp 入门

    http://acm.hust.edu.cn/vjudge/contest/view.action?cid=118282#problem/B 挺好的一个题目: 不过刚开始嘛,看别人题解长知识.这个人写 ...

  4. Android Fragment 真正的完全解析(上)--转

    转载请标明出处:http://blog.csdn.net/lmj623565791/article/details/37970961 自从Fragment出现,曾经有段时间,感觉大家谈什么都能跟Fra ...

  5. char*赋值在常量区,不可以修改

    char*赋值在常量区,不可以修改,要想修改,用数组. char* = "abc";*(pCh+1) = 'k';//编译正常,运行报错. char pCh[] = "a ...

  6. Android开发环境配置(win7_64bit)

    Android开发环境配置(win7_64bit) 目录 1.概述 2.Android开发涉及的技术 3.Android常用开发环境搭建 4.注意事项 >>看不清的图片可在新标签打开查看大 ...

  7. fopen()函数中参数mode的取值

    FILE * fopen(const char * path,const char * mode); 参数mode字符串则代表着流形态. mode有下列几种形态字符串: r 打开只读文件,该文件必须存 ...

  8. windows MySQL 5.7 导出表方法记录

    首先修改MySQL配置 找到mysql安装目录下的 my.ini 文件,将 secure-file-priv = "C:/ProgramData/MySQL/MySQL Server 5.7 ...

  9. Java从键盘输入

    package my;import java.util.Scanner; public class MyJava { /**     * @param args     */    public st ...

  10. ecos的app包管理

    install 安装 install app_name1 app_name2 有时候要用-o参数,把所有安装过程需要的参数带入进去(安装过程的参数放在app/$app_name/task.php里in ...