zoukankan      html  css  js  c++  java
  • 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 "abc"        				#输出ac
    echo -e "e[1;31m abcd e[0m"      	#输出红色的abcd,30m黑色,31m红色,32m绿色,33m黄色等
    
    a  发出警告声;
      删除前一个字符;
    c  最后不加上换行符号;
    f  换页;
    
      换行且光标移至行首;
    
      回车;
    	  插入tab,水平制表符;
    v  垂直制表符;
    \  插入字符;
    nnn    插入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@	 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
    

    运算符

    这里写图片描述

    判断测试表达式

    这里写图片描述

  • 相关阅读:
    VMWare相关知识
    QTP中的DataTable操作
    解决Access的sql语句join两次出错的问题
    .net环境用GDI+绘制倾斜文字
    用JS读取XML文件
    再认识asp.net的postback机制:探索__doPostBack的来龙去脉
    用Jquery读取Json内容
    JS取URL参数值的一个方法
    WinForm在窗体里面添加窗体
    ASP.NET2.0Theme回顾总结
  • 原文地址:https://www.cnblogs.com/onegoal/p/7244825.html
Copyright © 2011-2022 走看看