变量

variableName=value
  1. 等号左右不能有空格
  2. 变量内容有空格须要用"或者'括起来,可是 v="hello $name" $保持原有功能,单引號则不行,v="hello '$name'"纯文本
  3. 可用转义符\将特殊字符转成普通文本 `命令`,$(命令) ,在文本中提供命令运行信息
  4. 变量累加, name=xiaoyi ; name=$name:'welcome to hz'
  5. 子进程可以继承父进程的环境变量可是不可以继承父进程的自己定义变量,export 变量名;将自己定义变量变成环境变量
从键盘读入数据:
read -p '提示语' -t num v # num 时间,v 变量名
数组的申明和使用:
v[1]='hello';v[2]='xiao'
echo ${v[1]}


路径与命令的查找顺序

  1. 以相对/绝对路径运行命令,如/bin/ls
  2. 由alias找到该命令来运行
  3. 由bash内置的命令运行
  4. 通过$PATH这个变量的顺序找到第一个命令来运行
读取shell配置文件的命令
source 或者就是一个点 . ,    因为.bashrc仅仅能在登陆的时候才会被读,假设中途改动了想马上生效的话,我们就须要调用source命令读取当前改动的对应配置文件
eg: source ~/.bashrc equals . ~/.bashrc 

管道命令

场景: 当数据须要经过几次处理之后才干到我们想要的格式的时候
管道之后第一个数据一定是能够接受standard input的命令
选取命令:cut,grep 
  • cut
cut 按行为单位切出来 cut -d '切割字符' -f fields ,主要是用于行数据的切割显示
         cut -c 字符范围
         eg:
            echo $PATH | cut -d ':' -f 5 //选取path中以:切割的第五个路径
  • grep
grep 将一行信息中我们想要的数据分析出来
grep [-acinv] [--color=auto] '查找字符串' filename
-a 将binary文件以 text的方式查找数据
-c 统计匹配到的数据个数
-i 忽略大写和小写
-n 输出行号
-v 输出没有匹配内容的那一行
grep能够结合正则表达使用
排序与统计命令 sort ,wc ,uniq
  • sort 
    sort [-fbMnrtuk] [file or stdin]
    -f 忽略大写和小写
    -b 忽略最前面的空格
    -M 以月份的名字排序
    -n 使用纯数字排序
    -r 反向排序
    -u 同样的数据项仅出现一项
    -t 分隔符
    -k 以以那个区间进行排序
    eg:
         cat /etc/passwd | sort -t ':' -k 1 //对以: 切割的第一列排序
  • wc  统计字, 行或者字符数
    wc [-lwm]
    -l 行数
    -w 字数
    -m 字符数 
    eg:
         cat /etc/profile | wc -lwm
  • uniq 反复的数据竟出现一次就可以
    uniq [-ic]
    -i 忽略大写和小写
    -c 进行计数
    eg:
         last | cut -d ' ' -f1  | grep '^xiaoyi'  | uniq -c
字符转换指令 tr, col, join, paste, expand 
  • tr : tr [-ds] set1
    -d 删除信息其中的set1字段
    -s  替换掉反复的字符
    eg : 小写换大写 last | tr 'a-z' 'A-Z'
find ./ -name "*.java" | xargs wc -l
find grep 讲的比較好的链接: http://www.cnblogs.com/skynet/archive/2010/12/25/1916873.html
特殊符号:

转载于:https://www.cnblogs.com/blfshiye/p/4556900.html

鸟书shell 学习笔记(一) shell专注于概念和命令相关推荐

  1. Linux shell 学习笔记(8)— 使用结构化命令(if-then 语句、数值比较、字符串比较、文件比较、case 语句)

    1. 使用 if-then 语句 最基本的结构化命令就是if-then语句.if-then语句有如下格式. if command then ​ commands fi 或者 if command; t ...

  2. Gnome Shell学习笔记——Gnome Shell是什么

    什么是Gnome Shell? Gnome Shell 是 GNOME 3 的主要元件,它改革了 GNOME 桌面环境的操作,包括窗口管理.应用程序启动和工作空间管理的方式,为使用者提供一个全新方便易 ...

  3. shell学习笔记 (2)

    shell学习笔记 (2) ---china.pub.com  linux shell电子书学习笔记 第2章 使用find和xargs find pathname -options [-print - ...

  4. Nginx学习笔记3:Shell脚本检测Nginx服务状态

    前言 nginx 服务启动后,我们需要对其服务状态进行监控,今天学习过程中了解到一段非常有用的小脚本,不仅可以监控Nginx,也可以用来监控其他服务 脚本 A=`ps -C nginx –no-hea ...

  5. 史上最牛最强的linux学习笔记 10.shell基础

    史上最牛最强的linux学习笔记 10.shell基础 写在最前面: 本文是基于某站的视频学习所得,第一个链接如下: https://www.bilibili.com/video/BV1mW411i7 ...

  6. J2EE学习笔记三:EJB基础概念和知识 收藏

    J2EE学习笔记三:EJB基础概念和知识 收藏 EJB正是J2EE的旗舰技术,因此俺直接跳到这一章来了,前面的几章都是讲Servlet和JSP以及JDBC的,俺都懂一些.那么EJB和通常我们所说的Ja ...

  7. MySQL学习笔记02【SQL基本概念与通用语法、数据库的CRUD操作】

    MySQL 文档-黑马程序员(腾讯微云):https://share.weiyun.com/RaCdIwas 1-MySQL基础.pdf.2-MySQL约束与设计.pdf.3-MySQL多表查询与事务 ...

  8. 机器学习框架ML.NET学习笔记【1】基本概念与系列文章目录

    一.序言 微软的机器学习框架于2018年5月出了0.1版本,2019年5月发布1.0版本.期间各版本之间差异(包括命名空间.方法等)还是比较大的,随着1.0版发布,应该是趋于稳定了.之前在园子里也看到 ...

  9. Redis运维和开发学习笔记(6) 监控Redis工作状态-info命令

    Redis运维和开发学习笔记(6) 监控Redis工作状态-info命令 文章目录 Redis运维和开发学习笔记(6) 监控Redis工作状态-info命令 info server info clie ...

最新文章

  1. Android之横向滑动的广告(网格控件)
  2. svn学习笔记(一)
  3. ui设计现状与意义_想转行UI设计?你必须要了解以下内容
  4. 前端学习(417):京东制作页面25中间部分的准备工作
  5. 从前馈到反馈:解析循环神经网络(RNN)及其tricks
  6. 应付账款账龄分析模板_企业财务报表分析论文应如何着手?
  7. java 异常处理 简书_Java基础知识8-异常处理
  8. 那些年让我们头疼的CSS3动画
  9. WP7开发平台介绍及开发注意事项【WP7学习札记之二】
  10. 小明放学201812-2
  11. 条码标签打印软件连接不了数据库怎么办?
  12. Oracle常用函数
  13. C语言:小工程:统计一篇文档中有多少单词
  14. 呸 渣男!八股文不让看,非得让看并发编程全彩图册,这下又进厂了
  15. 如何看待2018年6月27日阿里云崩溃?
  16. QCC3040---Message Broker module
  17. graylog+kafka+zookeeper(单机测试及源码),kafka+zookeeper组件部署(二)
  18. js实现几秒倒计时之后自动跳转页面
  19. 自学c程序设计之路,谭浩强第五版,(一)程序设计与c语言
  20. 开题报告:基于java电影院选座售票系统 毕业设计论文开题报告模板

热门文章

  1. 长沙戴维营教育iOS开发面试题周刊
  2. 十一:Cocos2d-x坐标系
  3. Eagle个人博客系统
  4. ext2删除文件恢复笔记
  5. Redhat Enterprise Linux 5系统引导故障解决方法
  6. 关于C++ 中大小端和位域
  7. 玩奇迹私服老是服务器维护,为什么奇迹私服进不去啊
  8. activeMQ 的kahadb存储引擎分析
  9. Oracle union all和order by一起使用
  10. 使用Eclipse将项目上传至远程GitLab