Shell 编程入门

  1. 什么是 Shell 
    1.  计算机需要代码和指令才可以执行,但是我们操作计算机不能每次都写一段 C 的代码,然后编译给计算机执行,所以需要一种方法能够完成特定的任务
    2.  计算机开始是提供给科学计算实验和教育领域使用的,而最初它们经常被用于处理文本,所以我们发现一切都是文本的形式操作
    3. 常见的 shell  sh, bash, zsh, fish-shell and more
    4. Shell 本身就是一个二进制程序,它能读取用户输出,加载其他程序到CPU和内存,然后获取输出
    5.  然后约定了一些输入输出的参数
      1. 输出 main(args); 输出 exit code, stdout err
    6. shell  login-shell and non-login-shell
    7.  要分清楚哪个是终端,哪个是 shell 
    8.  如何知道当前使用的是什么 shell 环境? $0
    9. Login shell and non-login-shell http://www.mehnle.net/software/bash-startup
  2. 文件系统
    1.  一个非常重要的概念是,Linux 中一切都是文件
    2.  可以说文件系统是一个 Tree,而我们在这个 Tree  Nodes 中漫游
      1. cd 可以由树中的某一个树叉跳到另一个树叉
      2. pwd 可以告诉我们现在在哪一个树叉上
      3. ls 可以告诉我们某个分叉下面还有那些子分叉或者叶子
    3. 文件类型
      1. l - link
        1.  软连接与硬连接
          1.  软连接是一个特殊的符号链接文件,如果指向的 target 删除它就无效了
          2.  硬连接是指向 inode 的指针,要想删除这个文件必须删除所有硬连接
      2. - - 文件
      3. d - 目录
      4. c - char 类型设备
        1. cat /dev/urandom | hexdump
      5. b - block 类型设备
      6. p - pipe
    4. 文件权限
      1.  文件权限介绍,三段式
        1. r,w,x 8进制
      2. chown 修改所有者
      3. chmod 修改权限
        1. u - user
        2. g - group
        3. o - other
        4. a - all
        5. + - = ,
  3.  内置命令与外部命令
    1.  内置命令是 shell 环境提供的,外部命令是二进制文件
    2. type 命令可以告诉我们该命令是什么类型的
    3.  你问我一共有多少个命令?我不知道
      1. 你可以 ls /usr/bin /bin /usr/local/bin
        1. usr 并不是 user 的意思,而是 user shared resources
        2. sbin vs. bin s = superadmin = root 便于管理
    4. Shell 如何查找命令的?
      1. PATH 环境变量 “:” 分割,依次查询
  4.  重定向 / 管道
    1.  介绍标准输出,标准错误,标准输入
      1. > /dev/null  2> &1
    2. cut
      1. -c1-2
      2. -d‘:’ -f2
    3. cat
      1. cat > a.txt <<EOF
    4. sort
    5. uniq
    6. grep
      1. B - Before
      2. A - After
      3. C - Context
    7. tail
    8. head
    9. tee
    10. awk ‘{ print $1, $4 }’
      1. -F ‘:’ { print $1 }
  5. 键盘操作
    1. mode 
      1. set -o vi or emacs
    2. tab
    3. clear
    4. history
    5.  关于快捷键的历史, Emacs 快捷键,Vim 快捷键
      1. ctrl-a 开头
      2. ctrl-e  结尾
      3. Ctrl-f forward
      4. Ctrl-b backward
      5. Ctrl-t swap two charts
  6. 编程
    1. 解释器
      1. #!/usr/bin/env bash
      2.  可以结合使用
    2. 变量
      1.  大写小写均可,赋值操作不能有空格 a=1
      2. 获取变量用 “$” 
      3. 删除变量用 unset
      4.  函数内定义变量可以用 local 关键字
      5. 变量展开 {1..100} {a..z} {1,3,4} * 
        1.  如何防止展开?‘’
        2. $((3*3))
      6. 特殊变量
        1. $@ $0, $1  n 个参数
        2. $_ 上条命令的最后一个参数
        3. $? 上条命令的退出状态
    3.  逻辑判断/条件分支
      1. if-else 判断依据是 exit code
      2. test 程序
      3. [[  ]] 这是个二进制
    4. 循环 / Loop
      1. for
        1. for-loop 通常需要一个序列,产生序列的几个办法
        2. echo
        3. find
      2. while
    5. 使用 Node.js 编写工具
      1.  curl -s https://api.lsong.org/beijingair | parse-json -e 'd => d.filter(x => parseInt(x.AQI, 10) < 70)'
  7. 最佳实践
    1. 看手册 man command 
      1. 1 - user
      2. 2 - system calls
      3. 3 - C lib
      4. 4 - Device
      5. 5 - File Formats
      6. 8 - sysadmin
    2.  不要频繁 cd,频繁切换目录会让你搞不清楚当前在哪里,尽量使用 lspwd
    3.  操作任何文件时使用 echo 输出看是否是想要的结果,避免误操作
    4.  服务器的 root 用户要禁止使用密码登录,改用 ssh key
    5.  使用变量时记得使用 “” ,避免变量中存在空格当成两个参数传递
    6.  不要长时间在 root 账户下工作,临时完成后记得退出到普通权限用户操作
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值