推荐 22 款好用的命令行工具

作者根据多年的终端使用经验,详细介绍了一些实用的 CLI 工具,希望它们能帮读者提高生产力。

我大部分的时间都花费在终端的使用上,我觉得有必要给大家推荐一下比较好用的终端工具。先给大家列个推荐清单,如下图。

图片

高频 CLI 工具推荐

fish shell

Shell- 毋庸置疑,在终端中,Shell 是使用最频繁也最重要的工具。过去,我曾经使用过 Bash 和 Z Shell,而如今,我正在使用的是 Fish Shell。这是一个非常优秀的终端 Shell 工具,拥有许多开箱即用的功能,例如语法自动推荐补全、语法高亮显示或使用快捷键在最近访问的文件夹之间来回切换。

图片

一方面,它非常适合初学者使用,因为使用者无需进行任何设置。另一方面,由于它使用的脚本语法与其他 Shell 有所差异,因此通常用户不能把拷贝自网上的脚本直接粘贴使用。你必须将不兼容的命令更改为合法的 Fish 脚本,或者启动一个 Bash 会话以运行 Bash 脚本。

https://fishshell.com/docs/current/index.html#syntax-overview

我能理解这种更改背后的原因(毕竟 Bash 脚本不是易于用户使用的语言),但这种不兼容丝毫没有给我带来任何好处。我平时很少编写 Bash / Fish 脚本,所以经常遗忘这些语法,因此每次要使用这些脚本时我总是必须从头开始重新学习它。与 Bash 脚本相比,Fish 脚本的资源相对更少。我通常不会去阅读文档,重复造轮子,而是从 StackOverflow 复制粘贴现成的脚本拿来即用。

虽然前面我提到了 Fish Shell 的几个缺点,但是我还是会推荐你去用一下,因为切换 Shell 工具十分简单,所以很值得你去尝试一下。特别是当你懒得自己去配置 Shell,并希望通过最少的配置就能获得很好的使用效果的时候,那就更不要错过它了。

Fish插件

你可以自己添加相关插件来扩展 Fish Shell 的功能。最简单的安装插件的方法就是使用插件管理工具,比如 Fisher、Oh My Fish 或者 fundle。现在,我使用的插件管理工具是 Fisher,我用它安装管理了三个插件:

  1. franciscolourenco/done ——在长时间运行的脚本完成后发送通知。
  2. evanlucas/fish-kubectl-completions——1个自动补全 kubectl(Kubernetes command line tool) 命令的插件。
  3. fzf——将 fzf 工具与 Fish 集成在一起的插件。

过去,我有使用很多的插件(比如 rbenv、pyenv、nodenv、fzf、z),但是我改用其他工具以避免影响我的 Shell 的运行速度(这是我过去使用 Z shell 所得到的一个教训)。

下载地址:https://fishshell.com/

Starship

如果必须要从本篇文章中选择一个我最喜欢的终端工具——那非 Starship 莫属。Starship 可以适用于任何 Shell。你只需要安装它,然后在相应的配置文件.bashrc/.zshrc/config.fish添加一行配置,剩下的工作交给它来完成就好了。

它可以做到:

  • 根据你是否在代码仓库中添加了新文件、是否修改了文件、是否暂存了文件等情况,用相应的符号表示 git 仓库的状态。
  • 根据你所在的 Python 项目目录,展示 Python 的版本号,这也适用于 Go/Node/Rust/Elm 等其他编程语言环境。
  • 展示上一个命令执行所用的时间,指令运行时间必须在毫秒级别。
  • 如果上一个命令执行失败,会展示相应的错误提示符。

还有不计其数的其他信息可以展示。但是,它能以更加友好的形式智能地给你呈现!比如,如果你不在 git 存储库中,它将隐藏 git 信息。如果您不在 Python 项目中,则不会有 Python 版本信息,因为显示它没有什么意义。它永远不会给你展示多余信息,始终保持终端的美观,优雅和简约。

Starship 的运行速度怎么样呢?它是用 Rust 编写的,尽管功能如此之多,但仍然比我以前使用的所有提示工具都要快!我对提示信息非常洁癖,因此我经常破解自己的版本。我会根据现有的提示找到对应的功能代码,然后将其粘组合在一起,以确保 Starship 只有我需要的功能以保持其快速运行。“外部工具永远无法比我精心制作的提示工具更快!” 这就是我对 Starship 持怀疑态度的原因。

下载地址:https://starship.rs/

z

“z”可以让你快速地在文件目录之间跳转。它会记住你访问的历史文件夹,经过短暂的学习后,你就可以使用z path_of_the_folder_name命令在目录之间跳转了。

比如,如果我经常访问 ~/work/src/projects,我只需要运行 z pro ,就可以立马跳转到那里。z 的原理参考了 frecency 算法——一个基于统计 frequency 和 recency 进行分析的算法。如果它存储了你不想使用的路径文件夹,你随时可以手动将其删除。它提高了我在常用的不同文件路径之间频繁切换的效率,帮我节省了键盘击键次数以及大量的路径记忆。

下载地址:https://github.com/rupa/z

fzf

fzf— fuzzy finder,即模糊查找器。它是一种通用工具,可让你使用模糊搜索来查找文件、历史命令、进程、git 提交等。你键入一些字母,它会尝试匹配结果列表中任何位置的字母。输入的字母越多,结果也就越准确。你可能在其他的代码编辑器中有过这种类型的搜索使用体验——当你想打开某个文件时,只键入文件名的一部分而不用输入完整路径就能进行查找——这就是模糊搜索。

图片

我通过 fish fzf 插件插件使用它,因此我可以搜索命令历史记录或快速打开文件。这是可以每天为我节省不少时间的一个非常棒的工具。

https://github.com/jethrokuan/fzf

下载地址:https://github.com/junegunn/fzf

fd

上面动图是 find 命令(左)和 fd 命令(右)的使用对比。

类似于系统自带的 find 命令,但使用起来更简单,查找速度更快,并且具有良好的默认设置。

不管你想找到一个名为“invoice”的文件,但是不确定文件的扩展名,还是查找一个存放所有 invoice 的目录,而不单是一个文件。你可以撸起袖子,开始为 find 命令编写那些复杂的正则表达式,也可以直接命令行运行 fd invoice。反正对我来说,我只选择最简单的那个。

默认情况下,fd 会忽略隐藏的以及在.gitignore列出的文件和目录。大多数时候,这也是我们想要的,但是在极少数特殊情况下,如果需要禁用此功能时,我会给该命令设置一个别名:fda='fd -IH'

你会发现,fd 命令输出的颜色配置很漂亮,而且根据基准测试(上述 GIF),它的执行速度甚至比find 命令的还要快。

下载地址:https://github.com/sharkdp/fd

ripgrep

上图为 grep(左)与 rg(右)命令执行时的对比。

与上述fd指令类似,ripgrepgrep命令的替代方法, 不过ripgrep的执行速度更快,而且具有健全的默认配置以及丰富的彩色输出。

它同样会跳过被.gitignore忽略以及隐藏的文件,因此如果有特殊需要,我们可以设置指令别名:rga ='rg -uuu'。它会禁用所有智能筛选,并使ripgrep的表现与标准的 grep 指令一致。

下载地址:https://github.com/BurntSushi/ripgrep

htop 和 glances

在 Linux 或 Mac 上显示进程运行状态信息最常用工具是我们熟悉的top,它是每位系统管理员的好帮手。而且,即使是像我一样主要从事网络开发,查看计算机的运行状况也很有用。你知道,只是看一下当前到底是 Docker 进程还是 Chrome 进程吃掉了你所有的 RAM,应该如何做吗?

htop工具是top工具的绝佳替代品。

top工具是非常基础的监控工具,提供的功能有限,因此很多人转去使用 htop。htop比起top,优势很明显——除了功能更加完善以外,它的色彩搭配也很丰富,整体上使用起来更加友好。

图片

借助 glances,还可以让你一目了然地快速了解系统当前状态。

glances 是htop的补充工具。除了列出所有进程及其 CPU 和内存使用情况之外,它还可以显示有关系统的其他信息,比如:

  • 网络及磁盘使用情况
  • 文件系统已使用的空间和总空间
  • 来自不同传感器(例如电池)的数据
  • 以及最近消耗过多资源的进程列表

我选择使用htop来筛选和终止进程,因为对我来讲,效率提高了不少,我也使用 glances可以快速浏览一下计算机的运行状况。它提供 API 接口、Web UI 以及支持各种导出格式,因此你可以将系统监视提高到一个新 Level。因此我在这里强烈推荐一波!

htop 下载地址:https://hisham.hm/htop/

glances 下载地址:

https://nicolargo.github.io/glances/

virtualenv 和 virtualfish

Virtualenv 是用于在 Python 中创建虚拟环境的工具(比起内置的venv模块,我更喜欢 Virtualenv)。

图片

VirtualFish 是 Fish Shell 的虚拟环境管理器(如果你不使用 Fish Shell,请查看 virtualenvwrapper)。它提供了许多命令来执行快速创建、列出或删除虚拟环境等操作。

virtualenv 下载地址:

https://pypi.org/project/virtualenv/

virtualfish 下载地址:

https://github.com/justinmayer/virtualfish

pyenv、nodenv 和 rbenv

pyenv 可以轻松实现 Python 版本的切换。

Pyenv、nodenv 和 rubyenv 是用于管理计算机上不同版本的 Python、Node 和 Ruby 的工具。

假设你要在计算机上安装两个版本的 Python。比如,你正在从事两个不同的 Python 项目,或者因为特殊情况仍然需要使用 Python2。不同 Python 版本在电脑上管理很复杂。你需要确保不同的项目具有正确版本的软件依赖包。如果你不小心的话,很容易弄乱这种脆弱的配置并被其他软件包使用的二进制文件所覆盖。

该工具为版本管理提供了很多帮助,并将这一噩梦变得易于管理。它可以全局或“按文件夹”切换 Python 版本,而且每个版本都是相互隔离的。

我最近找到了一种名为 asdf 的工具,该工具可以将 pyenv、nodenv、rbenv 及其他 env 进行统一管理。它提供了几乎所有编程语言的版本管理,下次我需要为编程语言设置版本管理器时,一定会尝试使用一下。

pyenv 下载地址:https://github.com/pyenv/pyenv

nodenv 下载地址:https://github.com/nodenv/nodenv

rbenv 下载地址:https://github.com/rbenv/rbenv

pipx

Virtualenv 解决了 Python 程序包管理中的许多问题,但是还有一个方案可以解决。如果我想在全局环境下安装 Python 软件包(比如它是一个独立的工具,正如前面提到的glances 工具),那么我会遇到全局安装带来的问题。在虚拟环境之外安装软件包不是一个好主意,将来可能会导致意想不到的问题。另一方面,如果我决定使用虚拟环境,那么每次我要运行程序时都需要激活该虚拟环境。这也不是最方便的解决方案。

事实证明,pipx工具可以解决上面提到的问题。它将 Python 软件依赖包安装到单独的环境中(因此不会存在依赖项冲突的问题)。与此同时,这些工具提供的 CLI 命令在全局环境内也可用。因此,我无需激活任何环境——pipx会帮我完成这个操作!

如果你想了解有关 Python 工具的更多信息并想了解如何使用它们,我为 PyCon 2020 会议制作了一个名为“现代 Python 开发人员工具包”的视频。

图片

这是一个长达两个小时的视频教程,内容涉及如何设置 Python 开发环境,要使用的工具以及如何从头开始制作 TODO 应用程序(包括测试和文档)。你可以在 YouTube 上进行观看。

https://www.youtube.com/watch?v=WkUBx3g2QfQ

pipx 下载地址:

https://github.com/pipxproject/pipx

ctop 和 lazydocker

ctop 的实时监控示例

当你使用 Docker 并对其监控时,这两个工具会很有帮助。ctop是 Docker 容器的顶级接口。它可以为你:

  • 展示正在运行和已停止的容器列表。
  • 展示统计信息,例如内存、CPU 使用率以及针对每个容器的其他详细信息窗口(例如绑定的端口等其他信息)。
  • 提供快捷菜单,方便快速停止、杀掉指定容器进程或显示给定容器的日志。

这比你尝试从docker ps命令中找出所有这些信息要方便多了。

图片

lazydocker是我最喜欢的 Docker 工具

如果你认为ctop很酷,请你尝试使用 lazydocker 后再做决定!它是一个非常成熟的拥有终端 UI 界面的工具,提供了非常丰富的功能用于管理 Docker。这是我最喜欢的 Docker 管理工具!

ctop 下载地址:https://github.com/bcicen/ctop

lazydocker 下载地址:

https://github.com/jesseduffield/lazydocker

低频 CLI 工具推荐

除了几乎每天都在使用的工具以外,我多年来还收集了一些给力的工具,这些工具对于一些特定需求非常好用。比如有的终端工具可以用来将终端操作记录成 GIF(并且可以让你在 GIF 中暂停和复制文本!),还有的终端工具可以用于列出目录结构、连接数据库等,下面我会一一介绍。

Homebrew

图片

如果你使用的是 Mac,那我就无需再介绍 Homebrew 了。它是 macOS 上被业界普遍认可的软件包管理器。对了,它还有一个称为 Cakebrew 的 GUI 版本软件,如果感兴趣你可以尝试一下。

下载地址:https://brew.sh/

asciinema

asciinema是可用于记录终端会话的工具。但是,与录制 GIF 不同,它可以让用户选择并复制这些录制中的代码!

这对于录制编码教程来说十分好用。你应该遇到那种尴尬的情况——当你准备跟着视频教程在终端中敲巨长的命令,但是讲师并为你提供这个代码段,你不得不花费很长的时间去整理这些冗长的命令。asciinema录制的内容,支持直接复制,十分给力。

下载地址:https://asciinema.org/

colordiff 和 diff-so-fancy

我很少在终端中使用diff操作(比较两个文件之间的差异),但是如果你需要执行这个操作,可以放弃使用diff命令,而是使用 colordiffcolordiff输出可以高亮显示,因此在查看文件差异内容时要方便得多,而不是在diff命令输出内容下,费力地查看所有的“ <”和“>”符号来对比文件差异。

如果你觉得还不够,那么我推荐给你 diff-so-fancy。它是比colordiff更友好的一个差异对比工具。

它通过以下方式进一步改善了文件内容差异展示的外观:

  • 突出显示每一行中差异的单词,而不是整行
  • 简化变更文件的标题
  • 去除 + 和 - 符号(颜色差异展示就够了)
  • 清楚地指出新行和删除的空行

colordiff 下载地址:https://www.colordiff.org/

diff-so-fancy 下载地址:https://github.com/so-fancy/diff-so-fancy

tree

你可以通过brew install tree安装该工具。如果要查看给定目录的内容,那么 tree 是执行此操作的必备工具。它能以漂亮的树状结构显示所有子目录及文件:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
$ tree .
.
├── recovery.md
├── README.md
├── archive
├── automator
│ ├── Open\ Iterm2.workflow
│ │ └── Contents
│ │ ├── Info.plist
│ │ ├── QuickLook
│ │ │ └── Thumbnail.png
│ │ └── document.wflow
│ └── Start\ Screen\ Saver.workflow
├── brew-cask.sh

bat

图片

类似于在终端中常用的用于显示文件内容的cat命令,但是bat效果更佳。

它增加了语法高亮显示,git gutter 标记(如果适用),自动分页(如果文件很大)等功能,并且使得输出的内容阅读起来更加友好。

bat 下载地址:https://github.com/sharkdp/bat

httpie

图片

如果你需要发送一些 HTTP 请求,但发现使用curl不够直观,那么请尝试一下httpie。这是一款非常好用的curl替代工具。合理的默认配置以及简洁的语法使它更易于使用,命令返回也是彩色输出,甚至支持为不同类型的身份验证安装相应的插件。

httpie 下载地址:https://httpie.org/

tldr

简化版的命令帮助手册。“man pages” 包含了 Linux 软件的手册,这些手册解释了如何使用给定的命令。你可以尝试运行man catman grep来查看相关命令的帮助手册。它们描述的非常详细,有时可能难以掌握。因此,tldr社区的目的,就是将每个命令的帮助手册进行简化,方便用户查阅。

tldr适用于几乎所有的受欢迎的软件。正如我提到的,这是社区的努力和功劳,虽然不太可能包含所有的软件的简化帮助手册。但是当某个帮助手册被纳入管理并起作用时,它提供的信息通常就是你要查找的内容。

比如,如果你要创建一些文件的 gzip 压缩存档,man tar可以为你提供可能的参数选择。而tldr tar会列出一些我们常见的示例——如图所示,第二个示例正是你要执行的操作:

图片

“man pages”展示的信息太全面了,但是很多时候使用tldr可以更快地帮你找到特定信息,这才是用户真正想要的。

tldr 下载地址:https://tldr.sh/

exa

exals命令的一个可替代方案。

它色彩艳丽,还可以显示 git 状态等其他信息,自动将文件大小转换为方便人们阅读的单位,并且所有这些都保持与ls几乎相同的执行速度。虽然我很喜欢这个工具并推荐给你们,但由于某种原因,我仍然坚持使用 ls。

exa 下载地址:https://the.exa.website/

litecli 和 pgcli

图片

这是我首选的 SQLite 和 PostgreSQL CLI 的解决方案。借助自动提示和语法突出显示,它们比默认的sqlite3psql工具要好用很多。

litecli 下载地址:https://litecli.com/

pgcli 下载地址:https://www.pgcli.com/

mas

mas是一个用于从 App Store 安装软件的 CLI 工具。我目前为止,我仅仅使用过它一次——设置我的 Macbook 电脑软件。将来,我也将使用它来设置我的下一台 Macbook。mas可让你自动在 macOS 中安装软件。它解放了你大量的点击操作。而且,鉴于你正在阅读这篇有关 CLI 工具的文章,所以我大胆地认为,大家都和我一样,不喜欢无聊的单击操作。

我在“灾难修复”脚本中保留了从 App Store 安装的应用程序列表。如果我的电脑真的发生了什么意外情况,我希望能够以最小的代价重新安装所有内容。

mas 下载地址:https://github.com/mas-cli/mas

ncdu

图片

这是在终端进行磁盘分析时使用的工具,它使用起来简单快捷。当我需要释放一些硬盘空间时,会默认使用这款工具。

ncdu 下载地址:https://dev.yorhel.nl/ncdu

my-cli

终端mysql客户端

总结

以上推荐工具清单确实很长,但是我希望有一些工具真的能够带给你方便,提高你的生产力。fdripgrephttpie等工具可能是你以前熟悉的工具的改进版本。这些工具的改进版本除了更易于使用之外,它们还提供更友好的输出,执行速度甚至更快。所以,我们要多多尝试并接受新的事物,不要仅仅因为大家都在使用旧工具而只局限在旧工具的使用上。事物都是在向前发展的,穷则变,变则通,通则久。大家一起共勉。

l

V2ray Linux客户端v2rayA使用教程和全局代理

源地址:https://github.com/v2rayA/v2rayA

我这里直接只用docker

1
2
3
4
5
6
7
8
docker run -d \
-p 2017:2017 \
-p 20170-20172:20170-20172 \
--restart=always \
--name v2raya \
--privileged=true \
-v /etc/v2raya:/etc/v2raya \
mzz2017/v2raya

部署完毕后,访问该机器的2017端口即可使用,如http://localhost:2017

img

添加完节点后在Linux里添加socks或者http(s)代理

参考:https://zhuanlan.zhihu.com/p/46973701

img

方法一:(推荐使用)

为什么说这个方法推荐使用呢?因为他只作用于当前终端中,不会影响环境,而且命令比较简单

在终端中直接运行:

1
export http_proxy=http://proxyAddress:port

如果你是SSR,并且走的http的代理端口是12333,想执行wget或者curl来下载国外的东西,可以使用如下命令:

1
export http_proxy=http://127.0.0.1:20171

如果是https那么就经过如下命令:

1
export https_proxy=http://127.0.0.1:20171

方法二 :

这个办法的好处是把代理服务器永久保存了,下次就可以直接用了

把代理服务器地址写入shell配置文件.bashrc或者.zshrc 直接在.bashrc或者.zshrc添加下面内容

1
2
export http_proxy="http://localhost:port"
export https_proxy="http://localhost:port"

或者走socket5协议(ss,ssr)的话,代理端口是1080

1
2
export http_proxy="socks5://127.0.0.1:20170"
export https_proxy="socks5://127.0.0.1:20170"

或者干脆直接设置ALL_PROXY

1
export ALL_PROXY=socks5://127.0.0.1:20170

最后在执行如下命令应用设置

1
source ~/.bashrc

或者通过设置alias简写来简化操作,每次要用的时候输入setproxy,不用了就unsetproxy。

1
alias setproxy="export ALL_PROXY=socks5://127.0.0.1:20170" alias unsetproxy="unset ALL_PROXY"

方法三:

改相应工具的配置,比如apt的配置

1
sudo vim /etc/apt/apt.conf

在文件末尾加入下面这行

1
Acquire::http::Proxy "http://proxyAddress:port"

重点来了!!如果说经常使用git对于其他方面都不是经常使用,可以直接配置git的命令。

使用ss/ssr来加快git的速度

直接输入这个命令就好了

1
2
git config --global http.proxy 'socks5://127.0.0.1:20170' 
git config --global https.proxy 'socks5://127.0.0.1:20170'

如何全局代理

原地址:https://www.xpath.org/blog/0015707906789019d24776f72a14223abc103b4f80fe003000

安装redsocks

1
apt install redsocks

安装完成以后,默认配置文件:/etc/redsocks.conf
一些常用的命令:

1
2
3
4
5
sudo service redsocks start     #打开redsocks
sudo service redsocks stop #停止redsocks
sudo service redsocks restart #重启redsocks
sudo systemctl enable redsocks #开机启动redsocks
sudo systemctl disable redsocks #停止开机启动redsocks

配置redsocks

编辑redsocks配置文件/etc/redsocks.conf
找到redoscks节点

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
redsocks {
/* `local_ip' defaults to 127.0.0.1 for security reasons,
* use 0.0.0.0 if you want to listen on every interface.
* `local_*' are used as port to redirect to.
*/
local_ip = 127.0.0.1;
local_port = 12345; //这个端口默认就行,只要跟你以后iptables,重定向的端口一样就ok

// `ip' and `port' are IP and tcp-port of proxy-server
// You can also use hostname instead of IP, only one (random)
// address of multihomed host will be used.
ip = 127.0.0.1; //本地v2ray客户端,地址就是127.0.0.1
port = 20170; //v2ray客户端的端口,默认就是1080


// known types: socks4, socks5, http-connect, http-relay
type = socks5; //使用的代理类型

// login = "foobar";
// password = "baz";
}

修改正确的配置以后,重启redsocks即可

配置iptables

大佬写了一个脚本附带注释,方便不太懂iptables的同学们来使用

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
#file name iptables.sh

#!/bin/bash
if [ $# -lt 1 ]

#不重定向目的地址为服务器的包
then
echo -en "\n"

echo "Iptables redirect script to support global proxy on ss for linux ... "
echo -en "\n"
echo "Usage : ${0} action [options]"
echo "Example:"
echo -en "\n"
echo "${0} start server_ip To start global proxy"
echo "${0} stop To stop global proxy"
echo -en "\n"

else
if [ ${1} == 'stop' ]
then
echo "stoping the Iptables redirect script ..."
sudo iptables -t nat -F
fi
if [ ${1} == 'start' ]
then
if [ $# -lt 2 ]
then
echo -e "\033[49;31mPlease input the server_ip ...\033[0m"
else
##不重定向目的地址为服务器的包
sudo iptables -t nat -A OUTPUT -d ${2} -j RETURN #请用你的shadowsocks服务器的地址替换$SERVER_IP
# #不重定向私有地址的流量
sudo iptables -t nat -A OUTPUT -d 10.0.0.0/8 -j RETURN
sudo iptables -t nat -A OUTPUT -d 172.16.0.0/12 -j RETURN
sudo iptables -t nat -A OUTPUT -d 192.168.0.0/16 -j RETURN

#不重定向保留地址的流量,这一步很重要
sudo iptables -t nat -A OUTPUT -d 127.0.0.0/8 -j RETURN

# #重定向所有不满足以上条件的流量到redsocks监听的12345端口
sudo iptables -t nat -A OUTPUT -p tcp -j REDIRECT --to-ports 12345 #12345是你的redsocks运行的端口,请根据你的情况替换它
fi
fi
fi

使用方法很简单,就两条命令

1
2
3
4
#ip是你的sha服务器的ip,开启全局代理
./iptables.sh start ip
./iptables.sh stop
#结束全局代理,这句是不用全局代理之后,必须运行的,否则是没有办法上网的
l

正则表达式 删除 Java 代码中的注释

想如何删掉所有java 或xml 中的注释,还在寻找eclipse 中的快捷键了吗,你out了,现在都用正则表达式了、

首先我们了解java 中的注释无非3种:

1
2
3
//        单行注释    
/* */ 多行注释
/** */ 文档注释

我们可以使用 Ctrl+F 中替换方式来解决,把注释都替换为为空,这样就解决了删除注释的目的。这里我们需要用到正则表达式 在options 中选择Regular expression 。在上面方框填入正则表达式

删除 java 注释 /* */:

1
/\*{1,2}[\s\S]*?\*/

删除 java 注释 //:

1
//[\s\S]*?\n

删除xml注释:

1
<!-[\s\S]*?-->

删除空白行:

1
^\s*\n

\n或者是\r\n 或者是\r 都可能是换行符,要看你的系统是windows还是Unix/Linux或者是mac的系统

l

hlink安装及重启脚本(威联通篇)

大家应该对hlink比较熟悉了。

它能近乎完美地按规则为我们创建一个“影子”媒体库。

对这个“影子”媒体库进行刮削、重命名、改变文件夹结构,都不会影响源文件夹的PT做种。

完善的黑白名单功能,可以满足我们对各类文件的硬链需求。

不管是硬链原盘、重编码视频,亦或是音频书籍。hlink都能完美胜任。

甚至还能处理PT客户端校验失败的情况。

用过的人都说好

那么今天就来最后一篇教程,也是相对最复杂的一篇。

威联通下,使用hlink。

话不多说,马上开始。


hlink安装需要nodejs环境,第一步我们给威联通安装nodejs。

来到nodejs官网下载界面

我们这里选择linux X64版本(其他系统类似,选择合适自己的版本)

下载文件为node-v14.17.0-linux-x64.tar.xz

img

下载完成后把安装文件放入威联通里,我这里直接拖入威联通共享盘。

img

我这里威联通内文件实际路径是 /share/CACHEDEV1_DATA/QNAP-ESXI/nodejs/node-v14.17.0-linux-x64.tar.xz (威联通数据盘的的绝对路径是/share/CACHEDEV*_DATA/*******)

大家根据自己实际的路径来,不要死记照抄。

下面我们打开威联通SSH控制台,解压安装nodejs。

进入刚刚保存安装包的目录,命令如下(根据你的实际安装包存放路径填写)。

cd /share/CACHEDEV1_DATA/QNAP-ESXI/nodejs/

解压安装nodejs,命令如下(根据你的实际安装包名称填写)

tar -xvf node-v14.17.0-linux-x64.tar.xz

img

等待解压安装完成。完成后可以输入ls命令查看解压安装是否成功。有安装包同名文件夹存在就OK。

最后我们要把nodejs变为全局可用,输入并执行下面两条软连接命令即可。

ln -s /share/CACHEDEV1_DATA/QNAP-ESXI/nodejs/node-v14.17.0-linux-x64/bin/npm /usr/local/bin/

ln -s /share/CACHEDEV1_DATA/QNAP-ESXI/nodejs/node-v14.17.0-linux-x64/bin/node /usr/local/bin/

img

(注意路径部分是我们自定义安装nodejs的实际路径,根据个人情况自己填写,可以在威联通FileStation界面查看。)

完成nodejs环境的安装以后,我们就可以安装hlink程序了。

输入安装命令安装hlink,并等待安装完成。

npm install -g hlink

安装完成以后我们再配置一下hlink为全局可用(参考前面的配置nodejs全局可用)。

执行软链接命令

ln -s /share/CACHEDEV1_DATA/QNAP-ESXI/nodejs/node-v14.17.0-linux-x64/bin/hlink /usr/local/bin/hlink

这样就完成hlink安装,并且配置好了环境变量。可以正常使用hlink了。

hlink硬链接命令为

hlink “源路径” “目标路径”

路径部分使用绝对路径,并且建议用半角””标注,可以避免路径内文件夹名称有空格导致命令识别错误。

示例:

hlink “/share/CACHEDEV1_DATA/QNAP-ESXI/media/PT” “/share/CACHEDEV1_DATA/QNAP-ESXI/media/NFS”

img

完美运行

以上就是威联通下hlink安装和基本使用方法。


进阶功能

软件功能可以在SSH输入命令

hlink –help

查看

一般我们只需要用到白名单或者黑名单功能就好了。

要使用黑名单模式,必须把hlink默认使用的白名单配置参数去除。首先我们生成配置文件。

执行

hlink -g

img

就可以生成hlink配置文件hlink.config.js

我这里生成路径为/share/homes/admin/hlink.config.js

然后编辑hlink.config.js配置文件

执行命令

vi /share/homes/admin/hlink.config.js

img

可以看到默认配置文件内容如上图。

图上includeExtname部分为hlink默认硬链的格式。

这里要把includeExtname项默认的内容都删掉,否则excludeExtname黑名单模式不生效。

删掉includeExtname内容就可以实现全内容硬链(hlink命令 “源路径” “目标路径”)、白名单硬链(hlink命令 -i=xxx “源路径” “目标路径”)、黑名单硬链(hlink命令 -e=xxx “源路径” “目标路径”)三种模式手动控制。

(按 i 键,进入编辑模式)

img

修改完成保存配置文件即刻生效。

(按 esc 退出编辑模式,键入 :wq 保存编辑)

这里我们要多加一步操作,把hlink.config.js配置文件复制到一个自定义路径,原因跟之前的unraid一样。威联通重启以后也会重置环境变量,hlink配置文件的默认生成目录也会被重置清空。

执行复制命令

cp /share/homes/admin/hlink.config.js /share/CACHEDEV1_DATA/QNAP-ESXI/hlink/hlink.config.js

这里我把修改好的默认配置文件,复制到了/share/CACHEDEV1_DATA/QNAP-ESXI/hlink/hlink.config.js

大家请根据自己实际情况来写。

这样我们就配置好hlink配置文件了,后面正式开始使用hlink。


黑白名单使用方法如下

白名单功能命令为-i,可以指定仅需要硬链接的格式。比如我只需要硬链接.MKV格式的文件。则命令如下(以使用部分的命令为例),注意空格。

hlink -i=mkv “/share/CACHEDEV1_DATA/QNAP-ESXI/media/PT” “/share/CACHEDEV1_DATA/QNAP-ESXI/media/NFS”

如果需要多个格式类型,则在-i=后写入,以半角逗号隔开,比如需要连接.MKV、.MP4、.MOV格式,则命令如下(以使用部分的命令为例),注意空格。

hlink -i=mkv,mp4,mov “/share/CACHEDEV1_DATA/QNAP-ESXI/media/PT” “/share/CACHEDEV1_DATA/QNAP-ESXI/media/NFS”

运行参考图

img

黑名单功能命令为-e,可以指定不需要硬链接的格式。比如我们不需要硬链接.nfo格式的文件。则命令如下(以使用部分的命令为例),注意空格。

hlink -e=nfo “/share/CACHEDEV1_DATA/QNAP-ESXI/media/PT” “/share/CACHEDEV1_DATA/QNAP-ESXI/media/NFS”

如果需要多个格式类型,则在-e=后写入,以半角逗号隔开,比如不需要连接.nfo、.jpg、.png、.bmp格式(这几个格式文件,进行刮削很可能会被改动,所以一定要排除。因为硬链接修改目标文件也会导致源文件同步修改,会影响做种。),则命令如下,注意空格。

hlink -e=nfo,jpg,png,bmp “/share/CACHEDEV1_DATA/QNAP-ESXI/media/PT” “/share/CACHEDEV1_DATA/QNAP-ESXI/media/NFS”

运行参考图

img


想全自动执行的话,需要在威联通的crontab里添加你需要的硬链接命令,设定自己需要的时间间隔,定时自动执行就可以了。我们要用admin账户编辑crontab配置,执行命令

vim /etc/config/crontab

按i进入编辑模式

在最后加上我们需要的hlink命令,间隔按照crontab规则写。

比如每小时执行一次,则添加的命令如下。

0 */1 * * * hlink -e=nfo,jpg,png,bmp “/share/CACHEDEV1_DATA/QNAP-ESXI/media/PT” “/share/CACHEDEV1_DATA/QNAP-ESXI/media/NFS”

示例

img

(按 esc 退出编辑模式,键入 :wq 保存编辑)

执行

crontab /etc/config/crontab

应用计划任务

执行

crontab -l

检查一下计划任务是否已生效

img

确认生效以后,hlink就可以后台全自动硬链接,无需人工干预。

你只需要让你的媒体库(emby、jellyfin、plex、video station)自动读取刮削目标文件夹内容就可以啦。

不论怎样刮削改名改变文件夹层级,都完全不会影响PT做种。


特别注意!

因为威联通系统的特性。

重启以后系统环境变量会重置。

hlink生成配置文件的默认目录也会被重置清空。

所以我们要把前面配置过的软连接命令设置成开机自动执行脚本。

还要把前面复制到自定义路径的配置文件链接到默认生成目录。

这样每次重启才能正常使用hlink命令。

SSH下执行

mount $(/sbin/hal_app –get_boot_pd port_id=0)6 /tmp/config

执行

vim /tmp/config/autorun.sh

按i进入编辑模式

img

在autorun.sh中加入四条命令

ln -s /share/CACHEDEV1_DATA/QNAP-ESXI/nodejs/node-v14.17.0-linux-x64/bin/hlink /usr/local/bin/hlink

ln -s /share/CACHEDEV1_DATA/QNAP-ESXI/nodejs/node-v14.17.0-linux-x64/bin/npm /usr/local/bin

ln -s /share/CACHEDEV1_DATA/QNAP-ESXI/nodejs/node-v14.17.0-linux-x64/bin/node /usr/local/bin

ln -s /share/CACHEDEV1_DATA/QNAP-ESXI/hlink/hlink.config.js /share/homes/admin/hlink.config.js

前三条是配置环境变量的命令

第四条命令是把我们前面拷贝出来的,已经修改好的hlink配置文件,“复制”回生效路径。

修改完成保存。

(按 esc 退出编辑模式,键入 :wq 保存编辑)

给autorun.sh添加执行权限

chmod +x /tmp/config/autorun.sh


最后我们来到威联通控制台-硬件-启动时运行用户定义的进程

img

可以点击autorun.sh看看我们配置的脚本是否成功。

img

确认脚本正确以后,记得点击控制台的应用。

这样就完全配置好整个环境和运行计划。

l

nas定时任务

1
2
3
0 23 * * * /opt/bin/cp -rf ~/.zshrc /share/CACHEDEV1_DATA/zsh
0 23 * * * /opt/bin/cp -rf ~/.zsh_history /share/CACHEDEV1_DATA/zsh
0 23 * * * /opt/bin/cp -rf ~/.oh-my-zsh /share/CACHEDEV1_DATA/zsh
l

Word技巧:如何使用正则表达式高效替换

1. 引言

在日常生活中,我们经常需要使用 Word 的查找与替换功能来处理一些简单数据。如果数据相对复杂,我们就需要借助 Word 的正则表达式。关于正则表达式,我们先来定义以下术语:

  • 通配符:指的是可以用来代表一个或多个字的字符。例如,星号 * 通常代表一个或多个字符,问号 ? 通常代表单个字符;
  • 正则表达式:指的是可以用来查找和替换文本模式的文本字符和通配符组合。文本字符指的是必须存在于目标文本字符串中的文本,通配符指的是目标字符串中可能各不相同的文本。
描述 类型 示例
任一字符 ? s?t 可找到 “sat” 和 “set”
任何字符串 * s*d 可找到 “sad” 和 “started”
单词开头 < <(inter) 可找到 “interesting” 和 “intercept”,但找不到 “splintered”
单词结尾 > (in)> 可找到 “in” 和 “within”,但找不到 “interesting”
指定字符之一 [ ] w[io]n 可找到 “win” 和 “won”
此范围内的任一字符 [-] [r-t]ight 可找到 “right” 和 “sight”,范围必须是升序
除了括号内范围中的字符之外的任一字符 [!x-z] t[!a-m]ck 可找到 “tock” 和 “tuck”,但找不到 “tack” 或 “tick”
前一个字符或表达式的 n 个匹配项 {n} fe{2}d 可找到 “feed”,但找不到 “fed”
前一个字符或表达式的至少 n 个匹配项 {n,} fe{1,}d 可找到 “fed” 和 “feed”
前一个字符或表达式的 n 到 m 个匹配项 {n,m} 10{1,3} 可找到 “10”、”100” 和 “1000”
前一个字符或表达式的一个或多个匹配项 @ lo@t 可找到 “lot” 和 “loot”

2. 内容转置

本节介绍了如何使用正则表达式转置姓名、转置日期。

2.1 转置姓名

第一步,启动 Word,打开一个新的空白文档。复制此文字,将它粘贴到该文档中。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
Josh Barnhill
Doris Hartwig
Tamara Johnston
Daniel Shimshonig

第二步,在「开始」选项卡上的「编辑」组中,单击「替换」以打开「查找和替换」对话框。

第三步,选中「使用通配符」复选框。若没有看到「使用通配符」复选框,请单击「更多」,然后选中该复选框。没有选中该复选框时,Word 会将通配符视作文本。

第四步,在「查找内容」框中键入 `(<*>) (<*>)`。注:两组括号之间包含了空格。

第五步,在「替换为」框中,键入 `\2, \1`。注:在逗号和第二个斜杠之间包含了空格。然后单击「全部替换」。Word 会转置这些姓名并使用逗号分隔它们。

![img](https://cdn.jsdelivr.net/gh/swimminghao/picture@main/img/2022/10/31/xFEc5V.png)

关于正则表达式,在第一个表达式 `(<*>) (<*>)` 中:

- 星号 `*` 代表任意字符串,会返回单词中的全部文本;
- 小于和大于符号 `< >` 分别标记了每个单词的开始和结束。它们确保搜索会返回单个单词;
- 它们之间的括号和空格将单词拆分成不同的组,即 (第一个单词) 和 (第二个单词)。

在第二个表达式 `\2, \1` 中:

- 斜杠 `\` 与数字放在一起充当占位符;
- 第一个占位符后的逗号,是在两个被转置的姓名之间插入想添加的标点符号;
- 该表达式含义是,写入第二个单词,添加逗号,写入第一个单词。

### 2.2 转置日期

第一步,启动 Word,打开一个新的空白文档。复制此文字,将它粘贴到该文档中。注意粘贴时只保留文本。

28th May 2003
1st Jun 2008
2nd Feb 2010
3rd Apr 2020

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36

第二步,按照上文描述打开「查找和替换」对话框,并选中「使用通配符」复选框。

第三步,在「查找内容」框中键入 `([0-9]{1,2})([dhnrst]{2}) (<[ADFJMNOS]*>) ([0-9]{4})`。

第四步,在「替换为」框中,键入 `\3 \1, \4`。注:确保在每个字符集之间插入空格。

第五步,单击「全部替换」。

![img](https://cdn.jsdelivr.net/gh/swimminghao/picture@main/img/2022/10/31/HuEomc.png)

关于正则表达式,第一个表达式 `([0-9]{1,2})([dhnrst]{2}) (<[ADFJMNOS]*>) ([0-9]{4})` 的作用是将日期分解为四个部分,由多组括号来表示。具体来看:

- 第一部分 `([0-9]{1,2})`。数字范围 `[0-9]` 匹配第一个模式中的一位数数字。因为日期可以由两个数字组成,我们让搜索返回一位数或两位数的日期 `{1,2}`;
- 第二部分由序数词组成。序数词包含 "th""nd""st""rd",因此我们将这些字母添加到范围 `[dhnrst]` 中。因为序数词总是由两个字母组成,我们将字母计数限制为 2,即 `([dhnrst]{2})`;
- 第三部分是查找月份名的文本字符和通配符。所有月份名都以这些大写字母开头 "ADFJMNOS"。我们不知道每个大写字母后有多少个字符,因此我们在它们之后使用星号 `*`。我们只对月份名本身感兴趣,因此我们使用 `<` 和 `>` 字符来将结果限制为单个单词,即 `(<[ADFJMNOS]*>)`;
- 星号 `*` 代表任意字符串,会返回单词中的全部文本;
- 小于和大于符号 `< >` 分别标记了每个单词的开始和结束,它们确保搜索会返回单个单词;
- 第四部分为年。我们使用相同的数字范围,但这次我们将计数限制为四个字符 `([0-9]{4})`。

在第二个表达式 `\2, \1` 中:

- 斜杠 `\` 与数字放在一起充当占位符;
- 第一个占位符后的逗号在两个被转置的姓名之间插入想添加的标点符号;
- 该表达式的含义是,写入第二个单词,添加逗号,写入第一个单词。



## 3. 批量换行

本节介绍了如何使用正则表达式将 "题号" 替换成 "题号、+换行" 和将选项 "B." 替换成 "换行符+B."

### 3.1 题号后加换行符

第一步,启动 Word,打开一个新的空白文档。复制此文字,将它粘贴到该文档中。

5、风险管理的主体是( )
A、法人 B、个人 C、任何组织和个人 D、组织
6、风险管理效益的大小,取决于( )
A、是否能以最小风险成本取得最大安全保障 B、是否能以最小风险成本取得最小安全保障 C、是否能以最大风险成本取得最小安全保障 D、是否能以最大风险成本取得最大安全保障
7、风险管理的方法分为( )
A、控制型和财务型 B、自留型和转移型 C、控制型和转移型 D、自留型和控制型
8、利用签订销售、建筑、运输合同处理风险的风险管理方法是( )
A、财务型保险转移风险 B、财务型非保险转移风险 C、避免型风险管理 D、控制型风险管理


第二步,按照上文描述打开「查找和替换」对话框,并选中「使用通配符」复选框。

第三步,在「查找内容」框中键入 `(<[0-9]{1,2}>、)`。

第四步,在「替换为」框中,键入 `\1^p`。注:确保在每个字符集之间插入空格。

第五步,单击「全部替换」。

![img](https://fig-lianxh.oss-cn-shenzhen.aliyuncs.com/%E4%BD%BF%E7%94%A8%E6%AD%A3%E5%88%99%E8%A1%A8%E8%BE%BE%E5%BC%8F%E5%92%8C%E9%80%9A%E9%85%8D%E7%AC%A6%E5%BF%AB%E9%80%9F%E6%9B%BF%E6%8D%A2_%E6%9D%8E%E5%B2%B8%E7%91%B6_Fig03.png)

关于正则表达式,在第一个表达式 `(<[0-9]{1,2}>、)` 中:

- 小于和大于符号 `< >` 分别标记了每个单词的开始和结束;
- `[0-9]` 代表匹配从 0 到 9 的数字;
- `{1,2}` 代表数字有 1 到 2 位。如果是 `{1,7}`,就是数字有 1 到 7 位;
- 顿号 `、` 则就代表字符串 "、"。

在第二个表达式 `\1^p` 中:

- `\1` 代表第一个变量;
- `^p` 代表段落标记符号。

### 3.2 选项前加换行符

第一步,按照上文描述打开「查找和替换」对话框,并选中「使用通配符」复选框。

第二步,在「查找内容」框中键入 `(<[BCD]{1,1}>)`。

第三步,在「替换为」框中,键入 `^p\1`。注:确保在每个字符集之间插入空格。

第四步,单击「全部替换」。

![img](https://cdn.jsdelivr.net/gh/swimminghao/picture@main/img/2022/10/31/M6LzD4.png)

## word手动目录添加点点

## 手动目录制作

![](https://cdn.jsdelivr.net/gh/swimminghao/picture@main/img/EGATLv_20221101192832.png)

1. ctrl选中所有2级目录,然后通过标尺上的「左缩进」按钮,来将我们的2级目录缩进一下。
2. 手动添加页码,给每一章和节标题后面添加上页码数。 **当然,这里你可以为你的页码添加括弧,或更多个性化内容**。

![](https://cdn.jsdelivr.net/gh/swimminghao/picture@main/img/54SLTD_20221101193048.png)

3. 在每一章节标题与页码之间,按一下「Tab」键。

![](https://cdn.jsdelivr.net/gh/swimminghao/picture@main/img/HlHA9m_20221101193120.png)

4. 选中所有的目录内容,然后点击「开始」-「段落」-「段落设置」-「制表位」,在「制表位位置」中设置成“42”,这里大家可以查看自己页面中“标尺”来设定具体位置。「对齐方式」设为“居中”。最后,我们选择一种「前导符」,再点击“设置”按钮,确定即可。

![](https://cdn.jsdelivr.net/gh/swimminghao/picture@main/img/KzDzXg_20221101193251.png)
l

专利发表教程

专利的基本概念

专利三性:新颖性、创造性和实用性

新颖性:

  • 该发明不属于现有技术
  • 没有任何单位或者个人就同样的发明或者实用新型在申请日以前向专利局提出过申请,并记载在申请日以后(含申请日)公布的专利申请文件或公告的专利文件中
  • 全世界范围内

创造性:

  • 与申请日以前在国内外为公众所知的技术相比,该发明具有突出实质性特点和显著的进步

实用性:

  • 该发明能够制造或者使用,并且能够产生积极效果

专利的种类:发明专利、实用新型专利、外观设计专利

  1. 发明专利
  • 定义:指对产品、方法或者其改进所提出的新的技术方案
  • 发明专利分为:产品发明、方法发明
  • 特点:
    • 发明是一项新的技术方案。利用自然规律解决生产、科研、试验中各种问题的技术解决方案,一般有若干技术特征组成。

    • 按照性质划分,发明权利要求有两种基本类型,分为产品权利要求和方法权利要求

      • 产品权利要求包括人类技术生产的物品(产品、设备)
      • 方法权利要求包括时间过程要素的活动,又可以分成方法和用途两种类型。专利法保护的发明也可以是对现有产品或方法的改进
  1. 实用新型专利
  • 定义:对产品的形状、构造或者其结合所提出的适于实用的新的技术方案
  • 实用新型与发明的不同之处在于:
    • 实用新型限于具有一定形状的产品,不能是一种方法,也不能是没有固定形状的产品
    • 对实用新型的创造性要求相比发明较低
  • 产品的形状:指产品所具有的、可以从外部观察到确定的空间形状。例如:对凸轮形状、刀具形状作出的改进,对型材的断面形状的改进
  • 产品的构造:产品的各个组成部分的安排、组织和相互关系。产品的构造可以是机械构造,也可以是线路构造
  1. 外观设计专利
  • 外观设计:
    • 对产品的形状、图案或者其结合以及色彩与形状、图案的结合所作出的富有美感并适于工业应用的新设计
    • 指产品外观的设计方案。与发明或实用新型完全不同,即外观设计不是技术方案。
  • 外观设计专利符合要求
    1. 形状、图案或者其结合以及色彩与形状、图案的结合的设计
    2. 必须是对产品的外观所作的设计
    3. 必须富有美感
    4. 必须是适用于工业上的应用

网站

国家知识产权局

中国专利公布公告

发明专利审批流程

发明专利:受理、初审、公布、实审以及授权五个阶段

实用新型、外观设计专利:受理、初审和授权三个阶段

一般耗时2年,初审1年,实质审查1年

发明专利申请文件

文件

包括5部分:

  1. 请求书:一份表格,用以确定发明和实用新型的名称,发明人姓名等事项
  2. 说明书:对专利做出详细的说明。包括:
    1. 技术领域
    2. 背景技术
    3. 发明内容
    4. 附图说明
    5. 具体实施方式
  3. 说明书附图:通过附图,帮助理解说明书所陈述的内容
  4. 权利要求书:要求专利保护的范围,是申请文件的核心内容
  5. 摘要:技术要点的说明

文件下载

文件100001、100002、100003、100004、110101

网站

请求书

按表格填写基本说明

说明书

  • 技术领域

    • 指发明或实用新型直接所属或直接应用的技术领域
    • 高度概括的介绍发明的应用领域。50-80字。
      • 例1:本发明属于基因功能与应用领域,具体涉及A基因作为药物靶标在筛选治疗B疾病中的应用,以及A抑制剂在制备治疗B疾病的药物中应用。
      • 例2:本发明属于基因工程领域,具体地说,涉及一种XXXXX的基因工程方法。
      • 例3:本发明属于XXXXX的功能与应用领域,具体涉及XXXX代谢中产物A作为XXXXX 的应用。
  • 背景技术

    • 类似论文中的introduction、 基金申请中的研究意义部分
    • 三段式:层层递进的关系,1000-1200字
      • 第一段:临床问题,400字。临床问题意义重大。比如:疾病的严重性,人群数量的严重性。 例如:膀胱癌流行病学数据。
      • 第二段:疾病细分,400字。临床问题的背后因素,某一关键因素。某一疾病下往往会细分。 例如:膀胱癌淋巴转移概述,诊断治疗手段。
      • 第三段:靶分子,400字。专利申请的靶分子。 例如:靶分子的研究背景。
  • 发明内容

    • 包括解决的技术问题、技术方案及有益效果

    例子:

    ​ 为解决上诉现有技术的缺陷和不足,本发明的目的是提供靶分子A作为XXX的应用,可为领域 1,领域2提供XXXX。

    ​ 为实现上述目的,本发明采用的技术方案为:

    ​ 本发明以XXXX(细胞或者动物)为实验对象,通过建立XXXX模型,结果表明XXXX(简述具体 的实验过程和结果)。300字。

    ​ 针对靶分子的上述功能,提供靶分予作为XXXX用于领域1的应用。

    ​ 针对靶分子的上述功能,本发明提供靶分子作为XXXX用于领域2的应用。

    ​ 一种具有XXXX功能的药物,包含靶分子的抑制剂。

    ​ 本发明相对于现有技术具有如下的有优点及效果:

    1. 本发明发现靶分子的新功能,及靶分子具有XXXX的作用
    2. 发明提出靶分于在XXXX中的作用,在制备用于XXXX等方面应用。
  • 附图说明

    • 对附图的详细说明
    • 写作方式可以参考论文的写作
    • 只写文字,没有图
      • 图1是XXXX结果图。A为……;B为……
      • 图2是XXXX结果图。A为……;B为……
      • 图3是XXXX结果图。A为……;B为……
  • 具体实施方式

    • 具体实施方式,详细写出发明如何能够实现,或者实现方式。1000字以上。类似论文中的实验方法和结果部分。

    • 以下实施例用于说明本发明,但不用来限制本发明的范围。

      如果是细胞,说明细胞培养的条件。

      如果是动物,说明动物来源,饲养环境。

      如果是试剂,说明试剂的购买来源。

    • 实施例1动物模型的建立。

      具体实验方法详述(因为在专利中没有文献引用,所以具体方法要写详细)。

    • 实施例2小鼠各项指标的测定。

      具体实验方法详述。另起一段简述实验结果。

    • 实施例3主要实验方法说明。

      具体实验方法详述。另起一段简述实验结果。

    • 上述实施例为本发明较佳的实施方式,但本发明的实施方式并不受上述实施例的限制,其他的任何未背离本发明的精神实质与原理下所作的改变、修饰、替代、组合、简化,均应为等效的置换方式,都包含在本发明的保护范围之内。

  • 题目

    • 错误:XXX蛋白及其抑制剂在XXX疾病中的应用
    • 改为:XXX蛋白及其抑制剂在制备治疗XXX疾病的药物中的应用

说明书附图

  • 附图,专利中用到的图并标注它们。这里只有图,不需要附注
  • 可以提升作图taste的三门课程
    • 40周中的套路课,对所讲的文献中作图有详细的讲解。
    • 单元课中GraphPad Prim
    • 大师兄带你修炼科研绘图独家秘籍:有针对科研作图的介绍,软件Photoshop 和 Illustrator

权利要求书

  • 权利要求书,专利要保护的范围。300字左右。

一种A基因在XXXX疾病中的功能,其特征在于体现在A具有XXXX的功能。
权利要求1所述功能的应用,其特征在于A在XXXX方面应用。
权利要求2所述功能的应用,其特征在于A在XXXX方面应用。

摘要

  • 摘要,对整个发明做系统描述,介绍发明的特点和创新点。300字。
  • 格式:
    • 第1句:总述靶分子的应用,以及所属的研究领域。
    • 第2句:总述实验方法和实验结果。
    • 第3句:总述靶分子的机制水平上功能。
    • 第4句:总结靶分子在疾病中的功能。
    • 第5句:靶分子的应用。
  • 例子1:
    • 第1句:本发明公开一种靶分子在XXXX疾病中的功能和应用,属于基因的功能与应用领域。
    • 第2句:本发明以XXXX小鼠为实验对象,通过建立XXXX疾病模型,结果表明与XXXX小鼠对比,靶 分子敲除或者过表达小鼠XXXX疾病变严重,XXXX指标增加显著。
    • 第3句:这些结果表明,靶分子有XXXX的能力,有XXXX的能力 (分子机制上讲)。
    • 第4句:从而发现靶分子在XXXX疾病中的功能,主要体现在其具有能够显著改善XXXX疾病的作用。
    • 第5句:针对靶分子的上述功能,可用于靶分子在制备治疗XXXX疾病的药物。
  • 例子2:
    • 第1句:本发明公开靶分子作为XXXX的应用,属于代谢分子的功能与应用领域。
    • 第2句:本发明中XXXX检测研究表明靶分子有XXXX的能力,在细胞或者动物水平上以XXXX为实验模型,研究靶分子的XXXX的作用。
    • 第3句:结果表明靶分子可以有效的增强XXXX,具有保护XXXX的功能。
    • 第4句:因此,靶分子具有XXXX的能力。
    • 第5句:针对靶分子的上述功能,靶分子可用于在XXXX的应用。

l

QNAP安装Entware

入坑qnap(威联通),在ssh到NAS后,发现没有常用的zsh、git、sudo,这可让用惯了centos,debian系统的老高情何以堪。

一番查阅后,老高发现原来QNAP所使用的系统QTS可以使用Entware,也就是opkg最为包管理系统,这不就简单了,老高以前在OpenWrt上用的就是这个玩意儿!

本篇内容可以让你学会如何在QNAP上安装Entware-ng,以及zsh,git,sudo还有ohmyzsh等常用工具,并且保证他们不会被系统还原!

安装

想要在你的QNAP上安装Entware,可以访问Qnapclub Store - Entware-ng,找到对应的架构的下载地址。

比如老高的机器是TS-551,和TS-453Bmini一样是x86_64,所以下载TS-NASX86_64版本,对应下载链接为https://www.qnapclub.eu/en/qpkg/model/download/11369/Entware-ng_0.97.qpkg

最后我们ssh到NAS中,执行下面的命令:

1
2
3
4
5
6
7
cd /tmp
# 下载
wget https://www.qnapclub.eu/en/qpkg/model/download/11369/Entware-ng_0.97.qpkg
# 执行安装
sh Entware-ng_0.97.qpkg
# 最后删除安装包
rm Entware-ng_0.97.qpkg

这样就完成了安装过程。

使用

以安装 zsh + oh-my-zsh 为例

1
2
3
4
5
6
7
8
9
# 首先更新opkg
opkg update
# 安装zsh
opkg install zsh
# 安装git
opkg install git-http

# 安装oh-my-zsh
sh -c "$(curl -fsSL https://raw.githubusercontent.com/robbyrussell/oh-my-zsh/master/tools/install.sh)"

到这里我们就完成了一半了!为什么是一半呢?因为每次重启时,文件系统就会被还原,所以我们需要在系统加载的时候HACK一下,通过观察挂载的规则,老高发现/etc/init.d/Entware.sh这个脚本可以为我所用,所以后面我们就改一下这个脚本!

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
l /etc/init.d/Entware.sh
/etc/init.d/Entware.sh -> /share/CACHEDEV1_DATA/.qpkg/Entware/Entware.sh


# 首先,我们需要把oh-my-zsh的配置放在硬盘中,否则重启就会被删除
# 这里假设硬盘路径为/share/CACHEDEV1_DATA/
mkdir -p /share/CACHEDEV1_DATA/.zsh
cd ~
mv .zsh_history .zshrc .oh-my-zsh /share/CACHEDEV1_DATA/.zsh

## 最重要的一步!
vi /share/CACHEDEV1_DATA/.qpkg/Entware/Entware.sh

## 找到start位置,在创建link的时候加入以下代码

/bin/ln -sf /share/CACHEDEV1_DATA/.zsh/.zshrc /root/.zshrc
/bin/ln -sf /share/CACHEDEV1_DATA/.zsh/.oh-my-zsh /root/.oh-my-zsh
/bin/ln -sf /share/CACHEDEV1_DATA/.zsh/.zsh_history /root/.zsh_history

hack启动脚本

l

1
2
3
4
5
6
7
8
9
10
#!/bin/bash
for line in `cat apple.txt`
# 将 cat apple.txt的输出作为字符串,for逐个读取赋值line变量
#``为反引号
#也可以使用取值符号$(cat apple.txt)替代`cat apple.txt`
do
mkdir $line
#取line值,执行新建文件夹命令
done

l

编号 类型 备注
01 无人机
02 博客
03 office
04 git
05 docker
06 java
07 macos
08 nas
09 shell
10 sql
11 ubuntu
12 正则
13 算法
14 终端
15 设计模式
16 整理
17 博客配置
18 photoshop
19 口才
l