shell简介

分为两种c shell 和b shell

b shell:sh、ksh、Bash、psh、zsh; (Bash和sh兼容,linux基本shell是Bash)

c shell:csh、tcsh; (语言风格类似C语言,所以得名c shell)

查看系统shell :cat /etc/shells

echo

echo -e "ab\bc"        				#输出ac
echo -e "\e[1;31m abcd \e[0m" #输出红色的abcd,30m黑色,31m红色,32m绿色,33m黄色等
\a  发出警告声;
\b 删除前一个字符;
\c 最后不加上换行符号;
\f 换页;
\n 换行且光标移至行首;
\r 回车;
\t 插入tab,水平制表符;
\v 垂直制表符;
\\ 插入\字符;
\0nnn 插入nnn(八进制)所代表的ASCII字符;
\xhh 插入hh(十六进制)所代表的ASCII字符;

脚本执行

  1. chmod 755 my.sh

    ./my.sh

  2. bash my.sh

如果是dos过来的脚本,换行符和linux中不一样不能直接执行,使用dos2unix命令

yum update -y dos2unix

history

history -c    		#清楚历史命令
history -w #将历史强行写入.bash_history 而不是等登出后
!n #执行history 第n个
!! #执行上一条命令
!字符串开头 #执行最近的字符串想同的命令
vi /etc/profile #修改保存历史的默认条数

alias

alias vi="vim"
unalias vi
vi /root/.bashrc #使别名永久生效

命令执行的顺序

  1. 第一顺序为绝对路径或相对路径执行的命令
  2. 别名
  3. Bash内部命令
  4. 按照环境变量$PATH中定义的目录找到第一条命令

快捷键

ctrl+a			#将光标移动到命令开头
ctrl+c #终止命令
ctrl+z #暂停命令,并且放入后台
ctrl+u #剪切光标前的命令部分
ctrl+k #剪切光标后的命令部分
ctrl+y #粘帖命令
ctrl+l #清屏

标准输入输出

/dev/stdin			#标准输入的设备文件名,文件描述符0
/dev/stdout #标准输出的设备文件名,文件描述符1
/dev/stderr #标准错误的设备文件名,文件描述符2
ls > my.txt #覆盖方式将ls命令结果标准输入到my.txt,出错则不会写入文件,直接输出在屏幕中
ls aa 2>> my.txt #因为没有aa文件,追加方式将错误追加到my.txt,有aa文件则对my.txt无任何影响。
命令>文件 2>&1 #覆盖方式将正确输出和错误输出都保存在同一个文件中
命令 &>>文件 #追加方式将正确输出和错误输出都保存在同一个文件中
命令>>文件1 2>>文件2 #正确输出追加到文件1,错误输出追加到文件2

wc

wc -c my.txt   			#显示文本的字符数
wc -l my.txt #显示文本的行数
wc -w my.txt #显示文本的单词数 wc -c <my.txt #显示文本的字符数
wc -l < my.txt #显示文本的行数
wc < my.txt #显示文本的单词数,字符数,行数 wc <<hello
ad
dsd
decho
hello

多命令执行

;              	#命令直接没有任何关系
&& #前面命令无错,再执行后面的,否则不执行后面的命令
|| #前面命令错误,再执行后面的,否则不执行后面的命令
ls /root/hehe || echo 'no'
ls /etc/services && ll
命令 && echo yes || echo no

管道符

命令1 | 命令2           #命令1的正确输出作为命令2的操作对象

grep

grep 'ss' /etc/services
grep -i 'ss' /etc/services #忽略大小写
grep -n 'ss' /etc/services #显示行号
grep -v 'ss' /etc/services #查找不存在ss的行

通配符


*
[]
[a-g]
[^0-5]

Bash中其他特殊符号

''		#在单引号中所有特殊符号都没有特殊含义
"" #在双引号中所有特殊符号都没有特殊含义,除了$、`、\
`` #反引号,反引号括起来的是系统命令,在Bash中会先执行它,同$()。不推荐,容易看错
$() #引用系统命令
#
$
\

四种变量

用户自定义变量			#Bash中,变量默认类型都是字符型,若要进行数值运算,必须指定为数值型。
#变量定义用等号连接,等号两侧不能有空格
#变量值中可以用反斜杠转义
#只在当前shell中生效
#name=12
#echo $name
#查看所有变量: set 环境变量 #尽量大写,以便区分
#当前shell和所有子shell中生效,这是指的临时环境变量
#如果将环境变量写入配置文件,则在所有的shell中生效。
#临时:
#声明变量: export 变量名=变量值
#查询变量: env
#删除变量: unset 变量名
#进入子shell: bash
#退出当前shell: exit
#查看shell树形结构: pstree
#PS1系统提示符:可以算是系统变量,但是env并不能查看到。
#设置PS1: PS1='[\u@\t \w]\$ '
#设置临时环境变量 PATH="$PATH":/root 位置参数变量 #预定义变量中的一种,因为多,所有单独列出。固定的,是用来向脚本中传递参数或数据的。
#$n $0表示命令本身或者文件名,$1,第一个参数,$2.第二个参数。。。
#$* 把所有参数看成一个整体
#$@ 类似$*,但是把每个参数区分对待
#$# 参数个数 预定义变量 #$? 最后一次命令的返回状态,0表示正确,非0表示上一个命令执行不正确。
#$$ 当前进程的进程号PID
#$! 后台运行的最后一个进程的进程号PID

read

read -s -t 30 -n 3 -p "input a number" yournumber  	#-s隐藏输入的数据,-t秒数,-p提示,-n数字。

三种运算方式

aa=11
bb=22
declare -i cc=$aa+$bb # -i 声明为整数类型,-p 显示被声明的类型,-x 声明为环境变量
echo $cc aa=11
bb=22
dd=$(expr $aa + $bb) #注意空格
echo $dd aa=11
bb=22
ff=$(( $aa+$bb )) #推荐
echo $ff

运算符

判断测试表达式

最新文章

  1. ASP.NET Core 中文文档 第四章 MVC(4.3)过滤器
  2. phpcmsv9自定义sql语句查询模型实现
  3. JAVA设计模式之工厂方法模式
  4. 关于float的说明
  5. Tkinter单选框及滚动条
  6. centos 中查找依赖及库
  7. 利用row_number over 函数删除重复记录
  8. WCF从零学习之设计和实现服务协定2
  9. 一个文字无缝滚动的jQuery插件
  10. Android 内存检查
  11. Asp.net Api中使用OAuth2.0实现“客户端验证”
  12. Linux密码重置
  13. http服务器搭建之apache与nginx的特性
  14. java 删除整数元素集合中的元素
  15. 第二十二节,TensorFlow中的图片分类模型库slim的使用、数据集处理
  16. Mac mumu模拟器设置代理
  17. Win10系列:C#应用控件基础12
  18. Owin 自寄宿 asp.net web api
  19. kettle spoon中“表输入”到“表输出”的乱码问题
  20. day0315 迭代器

热门文章

  1. Postman下载与安装
  2. jQuery .submit()
  3. Charles解析https,unknown错误解决办法
  4. leetcode 75颜色分类
  5. DVM 和 JVM 的区别?
  6. linux创建软链接
  7. ENVI-IDL的MATH_DOIT和CF_DOIT函数(对FID和POS参数的讨论)
  8. 《Python编程从0到1》笔记5——图解递归你肯定看完就能懂!
  9. 【机器学习】聚类算法:层次聚类、K-means聚类
  10. 【VS开发】【智能语音处理】特定人语音识别算法—DTW算法