Shell小白入门指南:学习基本操作技巧

1,656 阅读3分钟

本篇文章主要是介绍一些 shell 的一些入门知识,引起读者书写 shell ,使用 shell 的兴趣。

在任意位置运行自己的 shell 脚本

在笔者看来,想要 shell 用的好,那使用上必须得方便。ps: 以下操作针对 mac 电脑

在自己的 HOME 目录下面,新建一个 bin 目录,用于放置自己的小脚本。为了方便使用,建议把$HOME/bin 放在你的 PATH 变量(PATH 是一个环境变量,它告诉 shell 在哪里找可执行的文件)里面。这样,你的 shell 命令就可以在全局任意地方使用。

// 进入自己的$HOME 目录
cd

// 创建一个 bin 目录
mkdir bin

// 将 bin 目录添加到 path 里面, 可以写在 .zshrc  或 .bashrc 等 shell 配置文件里面
export PATH=$PATH:$HOME/bin

现在我们就可以在 bin 目录新建我们的脚本了。按照惯例,我们来输出个 hello world

// $HOME 指的是你的家目录
cd $HOME/bin
// 新建一个 hello 文件
touch hello
// 给 hello 文件加上可执行权限
chmod +x hello

接下来我们来写 hello 脚本,脚本内容如下

// 意思是使用 bash 来解析这个文件
// 以指令#!/bin/sh开头的文件在执行时会实际调用/bin/sh程序(通常是Bourne shell或兼容的shell,例如bash、dash等)来执行。这行内容也是shell脚本的标准起始行。
#!/bin/bash
// 在控制台输出 "hello world"
echo "hello world"

写完之后,保存,退出即可。接下来你就可以在任意地方调用这个 hello 命令

当然你也可以指定 node 来这行,很简单, 只需要在脚本第一行指定 node 来解析就行

#!/usr/bin/env node

setTimeout(() => {
  console.log('hello');
}, 1000);

当我们有些小需求的时候,就可以很方便的在 bin 文件夹中新建 shell 脚本文件,然后再任意地方去使用它。下面是笔者几个常见的使用 shell 的场景

工作中常见的 shell 用法

组合命令

有一些操作需要运行多个命令,我们就可以把多个命令都放在 shell 文件里面。举个例子,比如一些项目我们想快速提交到远程。 我们在 $HOME/bin 里面新建一个文件fgp


#!/bin/bash

git add .
git commit -m 'fast push' -n
git push

这样,我们就可以愉快的在任意位置使用 fgp 快速提交了。

定时执行任务

我们希望定时运行 shell 命令。 需要借助 crontab

比如我们想定时提醒我们自己喝水,先在 bin 文件夹里面写一个 drinking 脚本

#! /bin/bash

osascript -e 'display notification "该喝水了" with title "定时提醒"'

我们给这个文件加上可执行权限,chmod +x drinking

接着我们需要编辑一下 crontab 脚本, 运行 crontab -e 添加一下 30 * * * * sh ~/bin/drinking

crontab 添加规则,可以通过crontab guru这个网站查看, 30 * * * * sh ~/bin/drinking 的意思是每 30 分钟运行一下 drinking 脚本

简单修改一些文件

我们有些时候需要修改一些文件,可能需要使用到 sed , awk 这些原生命令,写法比较复杂,后面有兴趣可以自己研究。我这里推荐的是 jq 这个命令。在一些修改 json 的场景非常好用。

比如我想修改 package.json 的 name 字段为 test , 操作如下:

jq ".name=test" package.json | sponge package.json

sponge 作用是接受管道的输出,并且将输出写入到 package.json 文件中去 , 如果你没有这个命令,需要手动安装一下 brew install jq brew install sponge

本文正在参加「金石计划」