Shell脚本学习

《Shell脚本学习指南》一书

基本语法

  • 环境变量$PATH
  • IO重定向:
    • <改变标准输入

      • 如:tr -d '\r' < dos-file.txt
    • >改变标准输出
      • 如:tr -d '\r' < dos-file.txt > UNIX-file.txt(如果>的目的文件不存在,将自动创建,若存在,将覆盖原文件)
    • >>附加到文件(文件末尾追加)
      • 若文件不存在,则自动创建,若存在,则在文件末尾追加
    • |建立管道
      • 前一个program的输出作为后一个program的输入(program1 | program2),如:ls | grep a
  • 特殊文件:/dev/null/dev/tty

    • /dev/tty:输入密码时,默认不打印输入的密码到终端,例如:(-echo 用来关闭打印输入,echo打开)

          printf "Enter new password: "stty -echo read pass < /dev/ttyprintf "Enter again: "read pass2 < /dev/ttystty echo...
      

常用命令:

  • who:查询系统的登陆用户
  • cat > 文件名 :将后面的输入信息重定向到文件中,以 ^D 结束
  • tr:转换字符
    • -d:删除source-char-list所列举的字符,如:tr -d '\r' < dos-file.txt | sort > UNIX-file.txt,将dos-file.txt中的回车符全部删掉,再排好序重定向到UNIX-file.txt文件中
  • sh (执行一个脚本)
    • -x显示脚本中的每个命令,以+开头,可以在脚本中打开追踪功能, set -x,用set +x关闭追踪
  • grep
  • sed
  • cut
  • awk
  • sort
  • uniq :(去重)
  • head -n n 查看前n行
  • tail -n n 查看后n行

  • umask

命令使用注意事项

  • -开头表示选项,以--开头表示长选项
  • 多条命令写在一行,以;分隔

脚本的语法说明:

  1. #! 脚本解释器路径开头,如:#! /bin/sh
  2. 变量
    • 命名:字母或下划线开头,后面可以是字母数字,下划线
    • 赋值:变量名=值(注意等号前后不能有任何空格,变量值之间有空格时,需要用引号括起来),单行多次赋值,之间用空格分隔
    • 使用变量:以$变量名
    • 输出:
      • echo

        • echo 参数(参数以空格分隔)
      • printf
        • 不会自动换行,需要换行,需在末尾加上\n
        • 例句:printf "the first program always print %s,%s" hello world (\d表示十进制整数)
  3. 再shell脚本中访问shell脚本的参数
    • 读取第n个参数,通过$n读取,若n的数值大于9,则需用大括号括起来,如${10},读取第10个参数

未完–

《Shell脚本学习指南》学习笔记相关推荐

  1. 第二行代码学习笔记——第六章:数据储存全方案——详解持久化技术

    本章要点 任何一个应用程序,总是不停的和数据打交道. 瞬时数据:指储存在内存当中,有可能因为程序关闭或其他原因导致内存被回收而丢失的数据. 数据持久化技术,为了解决关键性数据的丢失. 6.1 持久化技 ...

  2. 第一行代码学习笔记第二章——探究活动

    知识点目录 2.1 活动是什么 2.2 活动的基本用法 2.2.1 手动创建活动 2.2.2 创建和加载布局 2.2.3 在AndroidManifest文件中注册 2.2.4 在活动中使用Toast ...

  3. 第一行代码学习笔记第八章——运用手机多媒体

    知识点目录 8.1 将程序运行到手机上 8.2 使用通知 * 8.2.1 通知的基本使用 * 8.2.2 通知的进阶技巧 * 8.2.3 通知的高级功能 8.3 调用摄像头和相册 * 8.3.1 调用 ...

  4. 第一行代码学习笔记第六章——详解持久化技术

    知识点目录 6.1 持久化技术简介 6.2 文件存储 * 6.2.1 将数据存储到文件中 * 6.2.2 从文件中读取数据 6.3 SharedPreferences存储 * 6.3.1 将数据存储到 ...

  5. 第一行代码学习笔记第三章——UI开发的点点滴滴

    知识点目录 3.1 如何编写程序界面 3.2 常用控件的使用方法 * 3.2.1 TextView * 3.2.2 Button * 3.2.3 EditText * 3.2.4 ImageView ...

  6. 第一行代码学习笔记第十章——探究服务

    知识点目录 10.1 服务是什么 10.2 Android多线程编程 * 10.2.1 线程的基本用法 * 10.2.2 在子线程中更新UI * 10.2.3 解析异步消息处理机制 * 10.2.4 ...

  7. 第一行代码学习笔记第七章——探究内容提供器

    知识点目录 7.1 内容提供器简介 7.2 运行权限 * 7.2.1 Android权限机制详解 * 7.2.2 在程序运行时申请权限 7.3 访问其他程序中的数据 * 7.3.1 ContentRe ...

  8. 第一行代码学习笔记第五章——详解广播机制

    知识点目录 5.1 广播机制 5.2 接收系统广播 * 5.2.1 动态注册监听网络变化 * 5.2.2 静态注册实现开机广播 5.3 发送自定义广播 * 5.3.1 发送标准广播 * 5.3.2 发 ...

  9. 第一行代码学习笔记第九章——使用网络技术

    知识点目录 9.1 WebView的用法 9.2 使用HTTP协议访问网络 * 9.2.1 使用HttpURLConnection * 9.2.2 使用OkHttp 9.3 解析XML格式数据 * 9 ...

  10. 安卓教程----第一行代码学习笔记

    安卓概述 系统架构 Linux内核层,还包括各种底层驱动,如相机驱动.电源驱动等 系统运行库层,包含一些c/c++的库,如浏览器内核webkit.SQLlite.3D绘图openGL.用于java运行 ...

最新文章

  1. Android菜单详解(一)——理解android中的Menu
  2. Bugku杂项(二)
  3. 关闭子窗口 父窗口自动刷新
  4. 用vscode可以开发php,【编程开发工具】vscode能够编写php吗
  5. ucenter 显示通信成功的条件
  6. HDU 5157(回文树)
  7. python的__name__
  8. PowerDesigner 使用记录
  9. Github简单使用 - 更新项目
  10. 总结Cnblogs支持的常用Markdown语法
  11. xx云网络实施方案案例
  12. zabbix监控之概念和安装
  13. 220421-一些电平转换电路
  14. 关于“Fatal signal 11 (SIGSEGV) at 0x00000004 (code=1), thread 7592 (xample.hellojni)”android NDK错误排查
  15. 多边形裁剪图片与自定义 Gizmo !Cocos Creator Gizmo!
  16. X86_64 GNU汇编、寄存器、内嵌汇编
  17. 起步翻转课堂的一点事儿——对话实录
  18. 面试请不要作死回答 耿直可能会害了你-面试技巧分享
  19. git-常见问题解决方法(全)
  20. 哈工大计算机学院非全日制,哈尔滨工业大学非全日制研究生上课方式

热门文章

  1. 6m缓存和8m缓存差距_i7-9700和i7-9700K性能差距多大?i7-9700和i7-9700K区别对比评测...
  2. c语言二级java难吗_计算机二级考JAVA还是C?
  3. 2022最新软件库iApp源码+简约唯美/对接hybbs
  4. noip2017提高组初赛(答案+选择题题目+个人分析)
  5. Quartus 13.1和 Modelsim 安装
  6. matlab使用笔记(一)——matlab语言中if、for语句与C语言中的差别
  7. stm32呼吸灯c语言程序,基于stm32的PWM输出呼吸灯(包括stm32呼吸灯代码)
  8. sci期刊投稿指南 计算机科学 人工智能方向 145本sci期刊目录 从一区到四区(2022年 最新影响因子更新了)
  9. 社交App系统架构--自己亲手写的App系统(含github源码)
  10. 交换机在局域网内的日常工作