Shell基础

一.变量

a=1    b=abc   c="abcd  efg"       给变量赋值的时候等号两边不能有空格,变量值有空格的话需要用引号,双引号支持转义

echo $a  或 ${a}  或 "$a"      echo使用来输出内容,执行变量,$开头的变量会被自动替换

echo $((${a}+1))         双括号是算数运算符,花括号是明确被引用的变量,如果变量被写成$a+1,shell会把a+1当成一个变量.

echo ${#c}           #可以计算出该变量的长度,后面也可以跟数组

echo $a$b$c                        字符串拼接

echo ${c:0:4}        截取字符串,取字符串的前4位

引用未被定义的变量,程序不会报错,返回空.

预定义变量

echo $PWD    USER  HOME   PATH   提前设置好的系统变量,,,,HOME 返回根目录,USER返回当前用户等

数组

array=(1 2 3 4 5 6) 定义数组使用小括号,数组内的值使用空格隔开;

echo ${array[0]}     取数组内的第一个值

witch 1.sh     回去当前环境变量下查找1.sh

a=`ls`     echo $a   会在当前目录执行ls  并将ls执行结果返回的目录赋值给变量a ,使用``

a=array(`ls`)   echo ${a[0]}   会在当前目录执行ls, 并将结果保存值数组中,按照空格隔开

``反引号   $() 可以执行括号内的操作,与 ``类似, 但是支持嵌套

-e 执行转义符  否则会讲转义符当作普通的字符串来执行

 (())  数字运算符

$? 返回程序执行结果,成功返回0  失败返回1

echo不支持小数,

 awk是内置函数,用来读取管道输入,BEGIN的意义就是,不用读取数据,让程序执行完后面的操作就直接退出就好来(浮点数的计算使用awk)

-F 用来匹配字符

 

字符串操作:掐头#  ##  去尾%  %%  替换/  //   单个符号和双个符号的区别是贪婪匹配,如下显示

 

算数运算符:                                              逻辑判断:

[ 2 -eq 2 ]   等于      ((2=2))                            -a 相当与&&      -o 相当于 || 

[ 2 -ne 1 ]  不等与     ((2!=1))

[ 2 -gt 1 ]  大于

[ 2 -ge 1 ]  大于等于

[ 2 -lt 3 ]  小于

[ 2 -le 3 ]  小于等于

 

字符串比较:

[ string1 = string2 ] 两个字符串相等则结果返回为真

[ string1 != string2 ]两个字符串不想等则结果为真

[ -n string2 ] 字符串不为空,则结果为真

[ -z string2 ] 字符串为空,则结果为真

[[ "xxxxx" == x* ]] *表达式中表示0或多个字符

[[ xxxx == x??? ]] ?表达式中表示一个字符

 

内置判断:

-e  file   判断文件是否存在

-d  file   判断文件是否是目录

-f  file  判断文件是否是普通文件

-r  file  如果文件可读

-s  file  如果文件长度不为0

-w file  如果文件可写

-x  file  如果文件可执行

 

 条件判断

条件:if  分支  select  case

循环:for  while  until

break continue 

 

也可以使用&&和||来代替if   &&条件成立执行后面的操作 ||条件失败执行后面的操作  $f加“” 防止为空时报错

 

循环

 

字符串默认会按照空格隔开拆分

 使用vi进入文件, 按i进入编辑模式,编辑完成之后  按esc,  :wq!   w是保存  q是退出  !是强制

使用touch创建文件,使用mkdir 创建文件目录,使用chmod更改文件操作权限

chmod abc file    其中啊a b c各代表一个数字,表示User、Group、及Other的权限:

r=4,w=2,x=1      chmod ug=rwx,o=x file      和     chmod 771 file   user和group权限是7,other权限是可执行

使用vim进入脚本编辑,按dd可进入可删除状态,或按住a再删除,按i进入编辑啊状态,esc退出编辑状态,

cat 文件名,可以执行打开文件的操作;  sh file.sh可以执行file.sh脚本,或者进入文件所在目录执行./file.sh

 

退出控制:

return  函数返回

exit  终止进程脚本

break  退出当前循环

continue  跳过失败继续循环

 

Linux文件上传

scp d:/1.txt user@ip:服务器路径

scp d:/1.txt zhang@192.168.199.198:/home/zhang/test

 

Linux文件下载

# 将1.txt拷贝到 D盘

scp zhang@192.168.199.198:/home/zhang/test/1.txt d:/

Linux文件打包压缩

tar -cvf log.tar 1.log 仅打包,不压缩!

# 如果加上 z 表示以.tar.gz或tgz来代表gzip压缩过的tar包
tar -zcvf log.tar.gz 2.log 打包后,以 gzip 压缩

# 如果加上 j 表示以.tar.bz2来代表bzip2压缩过的tar包
tar -jcvf log.tar.bz2 3.log 打包后,以 bzip2 压缩

Linux文件解压

tar -xvf log.tar

tar -zxvf log.tar.gz

tar -jxvf log.tar.bz2

 

一、本地文件复制到192.168.13.161服务器的方法(此时你操作的界面是本地的命令窗口)

命令格式为:sudo   scp    本地目录/filenameA       root@服务器ip:服务器目录/filenameB

$   sudo    scp /etc/ganglia/gmond.conf    root@192.168.13.161:/etc/ganglia/gmond.conf

之后需要输入192.168.13.161服务器root用户的密码,如果是其他用户,只需要把出现root的地方换上自己拥有的用户权限的用户名即可。

二、192.168.13.161服务器上的文件复制到192.168.13.162客户端(此时你操作的界面在192.168.13.161 的命令窗口)

命令格式为:sudo   scp     本地目录/filenameA       root@客户端ip:客户端目录/filenameB

$     sudo    scp /etc/ganglia/gmond.conf    root@192.168.13.162:/etc/ganglia/gmond.conf

 

阿里云服务上解压zip文件方法

yum install unzip -y

unzip 压缩包.zip

posted @ 2019-06-22 11:35  头大点怎么了  阅读(221)  评论(0编辑  收藏  举报