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

运算符

判断测试表达式

Linux学习--第十天--bash脚本、用户自定义变量、环境变量、位置参数变量、预定义变量、标准输入输出、wc、history、dd、PS1的更多相关文章

  1. Linux学习之十四、管线命令

    Linux学习之十四.管线命令 地址:http://vbird.dic.ksu.edu.tw/linux_basic/0320bash_6.php

  2. [Shell]Bash变量:自定义变量 & 环境变量 & 位置参数变量 & 预定义变量

    --------------------------------------------------------------------------------- 变量是计算机内存的单元,其中存放的值 ...

  3. Linux Shell基础 位置参数变量、预定义变量

    位置参数变量 在 Linux 的命令行中,当一条命令或脚本执行时,后面可以跟多个参数,我们使用位置参数变量来表示这些参数.其中,$0 代表命令行本身,$1 代表第 1 个参数,$2 代表第 2 个参数 ...

  4. PHP学习笔记1.2——预定义变量参考

    预定义变量和用户自定义变量在使用上没有区别,大多数预定义变量的执行结果都是服务器的相关信息(如:版本号.路径.错误参数等),所以我们很少将其用于网站前台开发,如果被别有用心得人知道了后,会严重威胁服务 ...

  5. 40 VSCode下.json文件的编写——(1) linux/g++ (2).json中参数与预定义变量的意义解释

    0 引言 转入linux/VSCode编程之后,迫切了解到有必有较为系统地学习一下VSCode中相关配置文件的写法.下面将分为 linux/g++编译指令..json文件关键词/替换变量的意义.编译链 ...

  6. Shell脚本_位置参数和预定义参数

    一.位置参数变量   1.输出两个输入参数之和 l1.sh 1 2 3 4 5 6 7 8 9 #!/bin/bash   num1=$1 num2=$2 sum=$((num1+num2))   # ...

  7. Linux学习Day6:编写Shell脚本

    Shell脚本命令的工作方式有两种: 交互式(Interactive):用户每输入一条命令就立即执行. 批处理(Batch):由用户事先编写好一个完整的Shell脚本,Shell会一次性执行脚本中诸多 ...

  8. Linux学习之十六、文件的格式化与相关处理

    原文地址:http://vbird.dic.ksu.edu.tw/linux_basic/0330regularex_4.php 文件的格式化与相关处理 接下来让我们来将文件进行一些简单的编排吧!底下 ...

  9. Linux应用环境实战10:Bash脚本编程语言中的美学与哲学(转)

    阅读目录 一.一切皆是字符串 二.引用和元字符 三.字符串从哪里来.到哪里去 四.再加上一点点的定义,就可以推导出整个Bash脚本语言的语法了 五.输入输出重定向 六.Bash脚本语言的美学:大道至简 ...

随机推荐

  1. legend3---4、lavarel中session使用注意

    legend3---4.lavarel中session使用注意 一.总结 一句话总结: session('key',$value)不是存值,是设置默认值,session(['key'=>$val ...

  2. leetcode-easy-math-412 Fizz Buzz

    mycode  99.06% class Solution(object): def fizzBuzz(self, n): """ :type n: int :rtype ...

  3. 洛谷P1983车站分级

    洛谷\(P1983\)车站分级(拓扑排序) 目录 题目描述 题目分析 思路分析 代码实现 题目描述 题目在洛谷\(P1983\)上 ​ 题目: 一条单向的铁路线上,依次有编号为 \(1, 2, -, ...

  4. 1.2.1 Maven到底是什么鬼

    解释之前,提1个小问题. 1.1.假如你正在Eclipse下开发两个Java项目,姑且把它们称为A.B,其中A项目中的一些功能依赖于B项目中的某些类,那么如何维系这种依赖关系的呢? 很简单,这不就是跟 ...

  5. [SQL语句的常用统计函数]

    1.  upper() 转化为大写       Lower() 转化为小写 SELECT UPPER(列名称) FROM  表名称 SELECT LOWER(列名称) FROM  表名称 2. Sum ...

  6. 11G 新特性之 密码延迟认证

    11G 新特性之 密码延迟认证 11G 新特性之 密码延迟认证 Table of Contents 1. 特性简述 2. 特性潜在引发问题 3. 关闭特性 1 特性简述 为了防止用户密码的暴力破解,从 ...

  7. Windows系统Git Bash Sock5代理

    git config --global https.proxy http://127.0.0.1:1080 git config --global https.proxy https://127.0. ...

  8. 【HANA系列】SAP HANA行列转换

    公众号:SAP Technical 本文作者:matinal 原文出处:http://www.cnblogs.com/SAPmatinal/ 原文链接:[HANA系列]SAP HANA行列转换   前 ...

  9. 写一个比较全的进制转换函数--ic

    //写一个比较全的进制转换函数-----未完成 #include <stdio.h> //D进制转换后 (比如10-2进制) 结果可能会很大 需要很长的字符串来存 #include < ...

  10. 【GNN】图神经网络小结

    图神经网络小结 图神经网络小结 图神经网络分类 GCN: 由谱方法到空域方法 GCN概述 GCN的输出机制 GCN的不同方法 基于谱方法的GCN 初始 切比雪夫K阶截断: ChebNet 一阶Cheb ...