Youth

@youth

行到水穷处,坐看云起时。

1,108 words

https://www.yjk.im Guestbook

一些强大的 Shell 命令

在阅读以下部分前,强烈建议读者打开一个 shell 实验,这些都不是 shell 教科书里的大路货哦:)

!$

!$是一个特殊的环境变量,它代表了上一个命令的最后一个字符串。如:你可能会这样:

$mkdir mydir
$mv mydir yourdir
$cd yourdir

可以改成:

$mkdir mydir
$mv !$ yourdir
$cd !$

sudo !!

以 root 的身份执行上一条命令 。

场景举例:比如 Ubuntu 里用 apt-get 安装软件包的时候是需要 root 身份的,我们经常会忘记在 apt-get 前加 sudo。每次不得不加上 sudo 再重新键入这行命令,这时可以很方便的用 sudo !! 完事。

(注:在 shell 下,有时候你会输入很长的命令,你可以使用 !xxx 来重复最近的一次命令,比如,你以前输入过 vi /where/the/file/is 下次你可以使用 !vi 重得上次最近一次的 vi 命令。)

cd –

回到上一次的目录 。

场景举例:当前目录为 /home/a,用 cd ../b 切换到 /home/b。这时可以通过反复执行 cd – 命令在 /home/a/home/b 之间来回方便的切换。
(注:cd ~ 是回到自己的 Home 目录,cd ~user,是进入某个用户的 Home 目录)

ALT+. or <ESC> .

热建 alt+.esc+. 可以把上次命令行的参数给重复出来。

oldnew

替换前一条命令里的部分字符串。
场景:echo "wanderful",其实是想输出 echo "wonderful"。只需要 ^a^o 就行了,对很长的命令的错误拼写有很大的帮助。(注:也可以使用 !!:gs/old/new

du -s * | sort -n | tail

列出当前目录里最大的10个文件。

:w !sudo tee %

在 vi 中保存一个只有 root 可以写的文件

date -d@1234567890

时间截转时间

> file.txt

创建一个空文件,比 touch 短。

mtr coolshell.cn

mtr 命令比 traceroute 要好。

在命令行前加空格,该命令不会进入 history 里。

echo "ls -l" | at midnight

在某个时间运行某个命令。

ps aux | sort -nk +4 | tail

列出头十个最耗内存的进程

man ascii

显示 ascii 码表。

场景:忘记 ascii 码表的时候还需要 Google 么?尤其在天朝网络如此“顺畅”的情况下,就更麻烦在GWF多应用一次规则了,直接用本地的 man ascii 吧。

ctrl-x e

快速启动你的默认编辑器(由变量 $EDITOR 设置)。

netstat –tlnp

列出本机进程监听的端口号。
(注:netstat -anop 可以显示侦听在这个端口号的进程)

ssh user@server bash < /path/to/local/script.sh

在远程机器上运行一段脚本。这条命令最大的好处就是不用把脚本拷到远程机器上。

ssh user@host cat /path/to/remotefile | diff /path/to/localfile -

比较一个远程文件和一个本地文件

curl ifconfig.me

当你的机器在内网的时候,可以通过这个命令查看外网的IP。

lsof –i

实时查看本机网络服务的活动状态。

vim scp://username@host//path/to/somefile

Vim 一个远程文件

全文转载自 1

简单一行代码,为网站开启深色模式支持

Darkmode.js 使用 CSS mix-blend-mode 将深色模式带入任何网站,只需将代码加入网页 </body> 之前即可,网页右下方将出现一个可切换浅色模式或深色模式的按钮。

<script src="https://cdn.jsdelivr.net/npm/darkmode-js@1.3.4/lib/darkmode-js.min.js"></script>
<script>
  new Darkmode().showWidget();
</script>

名称:Darkmode.js
网址:https://darkmodejs.learn.uno/

🆓 为 Standard Notes 安装 Markdown 插件 | Install markdown extension for Standard Notes

一般情况下 Standard Notes 需要购买 Extended 才能支持 Markdown 编辑器,好在其提供了开源解决方案,使用户无需购买 Extended 也能安装插件。

安装方法非常简单,只需要点击左下方 Extensions - Import Extension,输入下方插件地址、回车即可。

然后在编辑器 Editor 处选择 Advanced Markdown Editor 即可得到 Markdown 编辑器支持。

插件地址:

🌟 在 Heroku 上搭建 Ghost 博客 2.x 版本 | Host Ghost 2.x on Heroku

之前的 VPS 要到期了,不想续费(~~毕竟穷~~),然后突然想起了 Heroku。想着能不能把 Ghost 2.X 版本部署到 Heroku,谷歌了一下,找到个方法。

0、注册 Heroku 账号,并新建一个 APP

有条件的绑定个信用卡以提升 Free Dyno Hours。

进入新建的 App - Resources - Add-ons 搜索 mysql 新建一个免费的 ClearDB MySQL 数据库。

1、本地安装 Heroku Cli 并登录

下载 Heroku Cli (x64x32)、Git-scm(Win) 并安装,打开 CMD 或者 PowerShell 登录 Heroku:

heroku login

2、创建文件

在本地新建一个文件夹,创建下面几个文件:

package.json:

{
  "name": "ghost-blog",
  "version": "0.0.1",
  "description": "Ghost Blog",
  "author": "YJK",
  "homepage": "https://github.com/ygbhf/ghost-heroku",
  "main": "./index.js",
  "scripts": {
    "start": "node index"
  },
  "dependencies": {
    "ghost": "^2.9.1"
  }
}

其中 "ghost": "^2.9.1" 版本号可以修改为最新的 Releases 版本号

index.js:

const ghost = require('ghost');

ghost()
    .then(function (ghostServer) {
        var serverConfig = ghostServer.config.get('server');
        ghostServer.config.set('server', { 
            host: serverConfig.host, 
            port: process.env.PORT || serverConfig.port
        });
        return ghostServer.start();
    })

config.production.json:

{
  "url": "http://APP_NAME.herokuapp.com",
  "server": {
      "host": "0.0.0.0",
      "port": 2368
  },
  "database": {
    "client": "mysql",
    "connection": {
      "host": "us-cdbr-iron-east-01.cleardb.net",
      "port": 3306,
      "user": "",
      "password": "",
      "database": "heroku_"
    },
    "pool": {
      "min": 2,
      "max": 2
    }
  },
  "paths": {
    "contentPath": "content"
  },
  "logging": {
    "level": "info",
      "rotation": {
        "enabled": true
       },
    "transports": ["file", "stdout"]
  }
}

修改其中的 url 为你自己的域名,或者不想绑定域名的话使用 Heroku 的默认域名。

修改 databaseMysql 数据库连接信息,可以在 Settings - Config Vars 中查看:

其中形如

mysql://*:@us-cdbr-iron-east-01.cleardb.net/heroku_***?reconnect=true
// 依次为 "user":"password"@"host"/"database"

下载 Ghost 源代码将其中的 content 文件夹整体复制到本地文件夹中,然后整个文件夹目录应该为以下的样子:

- Ghost
  - content
  - config.production.json
  - index.js
  - package.json

3、部署至 Heroku

在本地文件夹右击 - Git Bash Here

执行:

git init
git add -A
// 执行 git commit 的时候如果出现错误,则执行以下两段
// git config --global user.name "YOUR NAME"
// git config --global user.email "YOUR EMAIL"
git commit -m "First Commit"
heroku git:remote -a YOUR_APP_NAME
// 更改 YOUR_APP_NAME 为你的 Heroku 应用名称
heroku push heroku master

然后访问 http://APP_NAME.herokuapp.com 不出意外的话即搭建成功,访问 /ghost 创建账号。


!!!在 Heroku 上部署的(免费)应用会在 10 分钟没访问的情况下自动休眠,休眠后的下次访问会增加响应时间。

!!!不能上传图片至 Heroku 搭建的 Ghost,会自动删除。

本文参考了 1

免费公共 DNS 服务器大全 | Free Public DNS Server List

收集全球公共 DNS 服务器 IP,我们不提供 DNS,只做 DNS 的搬运工。

备注

博主使用的 DNS 列表:

主 DNS 备 DNS
119.29.29.29 8.8.4.4

👍 为推荐使用
❌ 为不推荐使用

墙内 DNS 服务器

⚪ 腾讯 DNS (DNSPod)

由 DNSPod 提供的公共免费 DNS,后来 DNSPod 被腾讯(Tencent)收购,现在属于腾讯公司所有,稳定性和连通性也是不错的,经测试国外也可以使用。

主 DNS 备 DNS
👍 119.29.29.29 182.254.116.116

⚪ 阿里 DNS (Alidns)

这组 DNS 是由阿里巴巴提供的,国内连通性还是不错的,国外部分地区连通性不是特别好,具体可以测试一下。

主 DNS 备 DNS
👍 223.5.5.5 223.6.6.6

⚪ 114DNS

南京信风运营的免费公共 DNS。

主 DNS 备 DNS
114.114.114.114 114.114.115.115

⚪ CNNIC DNS

是由中国互联网信息中心 CNNIC 提供的免费公共 DNS。

主 DNS 备 DNS
1.2.4.8 210.2.4.8
2001:dc7:1000::1

⚪ OneDNS

北京微步在线科技有限公司提供的 DNS 服务,提供纯净版和广告、有害信息拦截版 DNS。
纯净版 | 备 DNS
---|---
117.50.10.10 | 117.50.20.20

拦截版 备 DNS
117.50.11.11 117.50.22.22

⚪ 清华大学 TUNA 协会 DNS 服务器

IPV4 DNS IPV6 DNS
101.6.6.6 2001:da8::666

⚪ 百度 DNS

百毒的东西不建议使用,看看就好。

IPV4 DNS IPV6 DNS
❌ 180.76.76.76 2400:da00::6666

墙外 DNS 服务器

⚪ Google Public DNS

Google 提供的公共免费 DNS,应该是最流行的公共 DNS 了,不过国内主 DNS 可能无法正常使用。

主 DNS 备 DNS
8.8.8.8 👍 8.8.4.4
2001:4860:4860::8888 2001:4860:4860::8844

⚪ Cloudflare DNS

Cloudflare DNS 是 Cloudflare 与 APNIC 联合推出的号称全球最快的 DNS 服务。APNIC 是一个管理亚太与大洋洲地区 IP 地址分配的非盈利性组织,1.1.1.1 归 APNIC 所有,现在交给 Cloudflare 来提供 DNS 服务。

主 DNS 备 DNS
1.1.1.1 👍 1.0.0.1
2606:4700:4700::1111 2606:4700:4700::1001

⚪ Quad9 DNS

IBM 发起的 Quad9 提供的公共免费 DNS.

主 DNS 备 DNS
9.9.9.9 149.112.112.112
2620:fe::fe 2620:fe::9

⚪ OpenDNS

OpenDNS 是由老牌通信设备商 Cisco 提供的公共免费 DNS 服务。

主 DNS 备 DNS
208.67.222.222 208.67.220.220
2620:0:ccc::2 2620:0:ccd::2

⚪ TWNIC Quad101

台湾 TWNIC 提供的 DNS,速度不错。

主 DNS 备 DNS
101.101.101.101 101.102.103.104
2001:de4::101 2001:de4::102

⚪ Freenom World DNS

.tk .ga 等免费域名提供商提供的 DNS,在香港有服务器速度不错。

主 DNS 备 DNS
80.80.80.80 80.80.81.81

大部分参考至 1

🚀 利用 Tunnelbroker 给 VPS 加上 IPv6支持

1. 注册 Tunnel broker

注册地址: https://www.tunnelbroker.net/

2. 创建通道 "Create Regular Tunnel"

填写你 VPS 的公网 IP 地址以及选择隧道节点,点击 Create Tunnel 创建。一般来说隧道节点选择您 VPS 所在地即可,亚洲区的 HK 及 SG 经常会存在已满无法选择的情况,选择其他亚洲区即可。

3.创建 IPv6 隧道及路由

因博主一般用 Debian 系操作系统,以下就只给出 Debian/Ubuntu 的操作方法:

创建完成后切换到 Example configurations 选项卡,下拉选择 Debian/Ubuntu,获取代码,并将此代码复制到 VPS /etc/network/interfaces 文件中

  • 如果你 VPS 提供商是阿里云、腾讯云等具备外网 IP 的情况,则需要将 local IP 替换为内网 IP,内网 IP 可在 /etc/network/interfaces 文件中查看到,一般为 auto eth0 下的 address

4. 启用 IPv6

编辑 /etc/sysctl.conf 文件,将下面三项修改为 0,或者无此项的话新建:

net.ipv6.conf.all.disable_ipv6 = 0
net.ipv6.conf.default.disable_ipv6 = 0
net.ipv6.conf.lo.disable_ipv6 = 0

添加 DNS,编辑 /etc/resolv.conf,新建:

nameserver 2001:4860:4860::8888
nameserver 2001:4860:4860::8844

重启 VPS 即可。

5. 测试 IPv6

执行 ifconfig 后看到 eth0 下面有个 he-ipv6 网卡,没有的话,执行 ifup he-ipv6 即可。

连通测试

ping6 -c 5 ipv6.google.com

Ping 通了,说明网络已连通,DNS 也正常。

💌 使用 Forward Email 为域名启用邮件转发

当你想启用域名邮箱,又不想在原有邮箱的基础上增加一个邮箱账号时,域名邮件转发服务就派上了用场。

目前市面上免费提供此项服务的有:

不过经过博主自身体验,ImprovMX 邮件转发延迟较高,并有丢件的情况。

所以推荐大家使用 Forward Email,使用方法如下:

1、设置 MX 记录:

Name/Host/Alias TTL Record Type Priority Value/Answer/Destination
@ or leave blank 3600 MX 10 mx1.forwardemail.net
@ or leave blank 3600 MX 20 mx2.forwardemail.net

2、设置 TXT 记录:

Name/Host/Alias TTL Record Type Value/Answer/Destination
@ or leave blank 3600 TXT forward-email=YOUR@E.MAIL

为域名设置个 TXT 记录,值为 forward-email=YOUR@E.MAIL,代表转发发送至您域名的所有邮件至你的个人邮箱。

若只想转发某一个邮箱(例如 me@YOUR.DOMAIN)至个人邮箱,则 TXT 值设置为 forward-email=me:YOUR@E.MAIL

若只想转发某几个邮箱至个人邮箱,则 TXT 值设置为 forward-email=me:YOUR@E.MAIL,myself:YOUR@E.MAIL,andi:YOUR@E.MAIL

3、 设置 SPF 记录:

Name/Host/Alias TTL Record Type Value/Answer/Destination
@ or leave blank 3600 SPF (or TXT if not have SPF type) v=spf1 a mx include:spf.forwardemail.net -all

更多规则、使用方法请参考 Forward Email 网站。