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

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

运算符

这里写图片描述

判断测试表达式

这里写图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值