shell命令总结(一)

作者: 迈阿密小白 | 来源:发表于2018-06-26 20:38 被阅读2次

很久没写shell脚本了,最近在帮助新同学学习shell,所以也顺便整理一下,算是一个学习笔记。

使用变量

首先显示消息,最基本的echo命令,echo后面的字符串会直接显示控制台显示器上。

echo  "this is shell"

看个人习惯吧,单引号,双引号都可以,不加也可以。如果字符串中含有单引号或者双引号,就用另一种将字符串划定起来,这边的变量可以是环境变量也可以是用户变量。

  • 环境变量
echo HOME:$HOME   ----HOME:/home/work
echo PATH:${PATH}     HOME:/usr/local/bin:/usr/bin:/usr/local/sbin:/usr/sbin:/opt/apps/openresty/nginx/sbin:/opt/apps/php/bin:/home/work/.local/bin:/home/work/bin
echo PATH:\$PATH       -----HOME:$PATH  \允许shell将$解读为实际的美元符号
  • 用户变量
name="shell"
echo {name} 或者echo name    ----shell
name2=$name
echo name2   ----shell

字符串相关

name="this is mike"
echo ${name}   --- this is mike
echo ${#name}  ---12  获取字符串长度
  • 字符串截取
echo ${name:0:4}  ---从左往右第一个截取至第四个  this
echo ${name:4}  --- 从左往右第四个开始截取至最后  is mike
echo ${name:0-4:7}  ---从右往左算起0-4个,截取3个   mik
echo ${name:0-4}   ---从右往左截取4个   is mike
echo ${name#*s}  --- 从第一个s截取   is mike
echo ${name##*s}  --- 贪婪匹配  mike
echo ${name%i*}   ---从右往左匹配  this is m
echo ${name%%i*}   ---贪婪匹配  th
  • 字符串替换
echo ${name/is/iss}  ---替换第一个is   thiss  is mike
echo ${name/is/iss}  ---贪婪匹配,替换所有is   thiss iss mike
echo ${name/#*s/iss} --- iss mike
echo ${name/%i*/iss}  --- thiss
  • expr的字符串操作
expr index "$name" i --- 3 查找i的索引(从1开始计数)
expr length "$name"   ---name的长度
expr match "$name" this ---4  
expr substr "$name" 3 4   ---  s is  返回一个以 StartPosition 的字符开始的在 String1 中的字符串,并且是 Length 长度的字符串(substr String1 StartPosition Length)

数组相关

数组也是用户变量的一种,能够存储多个值的变量,可以单独引用,也可以作为整个数组来引用

  • 数组定义
name=(this is mike)
-------------------
name[0]=this
name[1]=is
name[2]=mike
-------------------
str="this is mike"
name=($str)
  • 操作数组
name=(hello everyone my name is mike)
echo ${name}   --- hello
echo ${name[2]}  --- my
echo ${name[@]}  ---hello everyone my name is mike  (通配符也可以换乘 *)
-------------------
echo ${#name[*]}   ---  6  数组长度
-------------------
name[3]=haha        ---数组赋值
echo ${name[*]}  --- hello everyone my haha is mike
name[6]=haha
echo ${name[*]}  --- hello everyone my haha is mike haha
name2=(${name[*]} haha)      新数组=(旧数组  新元素)
echo ${name2[*]}  --- hello everyone my haha is mike
-------------------    数组切片
echo ${name[*]::2}  ---hello everyone   从索引为0往后打印2位
echo ${name[*]:1:2} ---everyone my   从索引为1往后打印2位
echo ${name[*]:2} ---my name is mike 从索引为2往后全部打印
echo ${name[*]:(-4:2)}  --- name is  从倒数第四个往后打印2位
------------------- 数组替换
echo ${name[*]/e/E}  --- 将每一个元素中第一个e替换为E  hEllo Everyone my namE is mikE
echo ${name[*]//e/E}  --贪婪匹配,将所有e都替换  hEllo EvEryonE my namE is mikE
echo ${name[*]/e/}  ---如果后面不跟替换的值,可以理解为删除, hllo veryone my nam is mik 
echo ${name[*]/#m/M}  ---每个元素最左边的m,替换为M
echo ${name[*]/%e/E}  ---每个元素最右边的e,替换为E
------------------- 数组匹配
echo ${name[*]#*e} --- llo veryone my is  *e的部分都会被删除
echo ${name[*]##*e}  ---贪婪匹配  llo my is 

重定向

用得比较多的是输出重定向,将某个命令的输出不仅仅是显示在控制器显示器上,而是重定向到一个文件中。

today=$(date +%Y%m%d)
ls  >log.$today   

这边有两个点:

  • 将date格式化后传给变量today,today值为20180626
  • 重定向

查看log.20180626

$ cat log.20180626 
log.20180626
try.sh

使用> 如果输出文件已经存在了,会用新的文件覆盖已有文件,如果不想覆盖原来文件的内容,想在原有文件基础上追加,使用>>来追加数据

pwd >>log.$today   

检查文件

$ cat log.20180626 
log.20180626
try.sh
/home/work/hpc/test/shell

以上仅仅是一部分,最近会陆续更新相关学习笔记。

相关文章

  • Shell Script初入门

    Shell script学习总结 shell script注意事项 命令的执行顺序 从上至下,从左至右 命令的执行...

  • shell命令总结(一)

    很久没写shell脚本了,最近在帮助新同学学习shell,所以也顺便整理一下,算是一个学习笔记。 使用变量 首先显...

  • Shell命令汇总

    1、一般常用命令 (1)Shell 常用命令总结 (2)Shell的18条常用命令整理 2、文件操作常用命令 (1...

  • vim学习 09——shell命令

    vim学习 09——shell命令 执行 shell 命令 :!shell命令 : 可以执行 shell 命令。 ...

  • shell命令总结

    删除0字节文件 查看进程,按内存从大到小排列 按cpu利用率从大到小排列 打印出cache里的URL 查看http...

  • 2018-10-11

    10月11日任务 8.1shell介绍 shell有基础以及脚本 tab补全命令 快捷方式 本章总结之前的命令 s...

  • 关于Docker常用的命令

    常用命令总结: attach Attach to a running container # 当前 shell...

  • Linux Shell:date日期时间操作

    摘要:Linux,Shell 整理Linux Shell脚本中常用的日期操作,给予date命令,主要用法总结 获得...

  • ADB常用命令集合

    基础命令 USB设备命令 文件传输命令 SHELL命令 adb shell pm命令 adb shell am命令...

  • (linux/mac)mysql调用系统命令

    system + shell命令! + shell命令

网友评论

    本文标题:shell命令总结(一)

    本文链接:https://www.haomeiwen.com/subject/gyzmyftx.html