MacOS M3 修复 Homebrew 自动补全

在macOS m3上安装Oh-My-Zsh后,如果发现brew命令无法自动补全,这通常是因为Zsh补全功能没有正确配置或初始化。你可以按以下步骤确保 brew 补全功能正常工作: 确保Homebrew脚本的位置和配置: 通过在终端中输入以下命令,检查 Homebrew 的补全脚本位置: ls $(brew --prefix)/etc/bash_completion.d/brew 确保该文件存在。如果不存在,请确保 Homebrew 正常安装。 编辑 .zshrc文件并启用补全: 使用文本编辑器打开 .zshrc 文件: nano ~/.zshrc 或者你可以使用其他你喜欢的编辑器,比如: vim ~/.zshrc 或: code ~/.zshrc # 如果你使用 VSCode 在 .zshrc 文件中添加以下几行: \# Enable Zsh completion system autoload -U compinit compinit \# Homebrew completion scripts if type brew &>/dev/null; then FPATH=$(brew --prefix)/share/zsh/site-functions:$FPATH autoload -U compinit compinit fi 保存并关闭编辑器(在 nano 中,按 Ctrl + X 然后按 Y 确认保存)。 重新加载 .zshrc文件: 在终端中输入以下命令以重新加载你的 .zshrc 文件,使修改生效: ...

September 23, 2024 · Yancey

如何在 Debian 和 Ubuntu 上使用 Nginx 安装 WordPress

NGINX(发音为 engine-x)是一个开源的强大、轻量级和灵活的 HTTP 服务器,在过去几年中越来越受欢迎,现在已成为一些最大流量网站的主要服务器接口,如 Facebook、WordPress、Sourceforge 等。 它之所以如此快速可靠,是因为它采用了与 Apache 相同的模块化设计,但在 Web 套接字方面采用了不同的方法,使用了事件驱动的异步架构,不会像接收请求那样快速生成进程,并且使用简单的配置文件。对于基于 Ubuntu 和 Debian 的系统,Nginx 已经作为一个软件包编译在它们的软件仓库中,并且可以通过 apt 软件包工具进行安装。 相关阅读: 如何在 Debian 和 Ubuntu 上使用 Apache 安装 WordPress 它还支持像 Apache 一样的虚拟主机,并通过 PHP-FPM 与服务器上的 PHP 文件进行通信,使用 Fastcgi 通道。本教程涵盖了在虚拟主机上安装和基本文件配置 Nginx 以托管 WordPress CMS 网站,并适用于 Ubuntu 18.04/20.04、Debian 10/9 和 Linux Mint 20/19/18。 Nginx Web 服务器的安装 1. 在 Ubuntu、Debian 或 Linux Mint 上安装 Nginx 与其他软件包一样简单,只需执行一个简单的命令即可完成安装。 sudo apt-get install nginx 在 Ubuntu 上安装 Nginx ...

November 28, 2023 · Yancey

Vim快捷键小记

1、前言 vi是“visual interface”的缩写,vim是vi IMproved(增强版的vi)。总结一下自己平时常用的vim快捷键,当是忘记也好,后续会不定期更新。 2、vim 快捷键 思维导图 快捷键 快捷键 说明 vi[m] + file 打开[新建]文件 【命令模式】 可以移动光标、删除字符等 h,j,k,l 左,下,上,右 Blankspace 向右 Backspace 向左 Enter 移动到下一行首 - 移动到上一行首 b 上一个词的词首 w 下一个词的词首 e 下一个词的词尾 ^ 行首 $ 行尾 f/F + 字符 向前/向后移动到特定的字符(行内) gg 文件的第一行 G 文件的最后一行 nG 移动到第n行 n+ 向下跳n行 n- 向上跳n行 /字 正向查找搜素字符串 ?字 反向查找搜素字符串 n 向下搜索前一个搜素动作 N 向上搜索前一个搜索动作 x 删除字符 nx 删除从光标开始的n个字符 df + 字符 删除从当前字符到指定字符 dw/daw 删除单词 d$ 删除从当前光标到行尾 dd 删除当前行 ndd 向下删除当前行在内的n行 dd + p delete一行,然后放在当前光标下方 dd + P delete一行,然后放在当前光标上方 dw + p delete单词,然后放在当前光标后面 dw + P delete单词,然后放在当前光标前面 p/P 重复粘贴,粘贴剪切板里的内容在光标后/前 yw 复制单词 yf + 字符 复制从当前字符到指定字符 yy 复制整行 y$ 复制当前光标到行尾的内容 y^ 复制从光标到行首的内容 J 合并光标所在行及下一行为一行 . 重复上一个操作 n+action 表示执行某个操作n次 u 撤销上一步操作 U 撤销对当前行的所有操作 ctrl + r 重做 ctrl + b 向前翻一页 ctrl + f 向后翻一页 ctrl + u 向前翻半页 ctrl + d 向后翻半页 ctrl + e 下滚一行 :set nu 显示行号 :set nonu 取消显示行号 :s/old/new 用new替换行中首次出现的old :s/old/new/g 用new替换行中所有的old :n,m s/old/new/g 用new替换从n到m行里所有的old :%s/old/new/g 用new替换当前文件里所有的old :w 保存正在编辑的文件 :w new.txt 保存至new.tex文件 :q 退出不保存(文件未修改时) :q! 退出编辑器,且不保存 :wq 保存后退出正在编辑的文件 :help 显示相关命令的帮助 【选择模式】 v 不规则选择 V 按行选择 Ctrl + v 按列选择 【插入模式】 在此模式下可以输入字符,按ESC将回到命令模式。 i 在当前字符前面插入 I 在行首插入 a 在当前字符后面插入 A 在行尾插入 o 在当前行的下一行插入 O 在当前行的上一行插入 r 更改当前的字符 R 更改多个字符 cw/caw 更改单词 cf + 字符 更改从当前字符到指定字符 c$ 更改从当前字符到行尾 cc 更改整行 参考 Linux上vi(vim)编辑器使用教程 - VPS侦探 简明 Vim 练级攻略 | | 酷 壳 - CoolShell YBlog - Learn Vim Progressively Vim配置、插件和使用技巧 - 简书 Vim快捷键分类 - 豪情 - 博客园

October 28, 2023 · Yancey
iTerm2快捷键小记

ITerm2快捷键小记

1、前言 总结一下自己平时常用的iTerm快捷键,当是备忘也好,后续会不定期更新。 2、iTerm2 快捷键 思维导图 快捷键 快捷键 作用说明 command + f 搜索&查找,如果输入搜索内容后,按下 tab 键,就会 iTerm 自动帮选中搜索关键词,并且自动的帮我们复制到了剪贴板中。如果输入的是 shift+tab,则自动将查找内容的左边选中并复制。按 esc 退出搜索。 command + r 或 ctrl + l 清空屏幕,而且只是换到新一屏,不会像 clear 一样创建一个空屏 command + k clear,清空屏幕 command + d 垂直分屏 command + shift + d 水平分屏 command + ; 查看历史命令 command + shift + h 查看剪贴板历史,会自动列出输入过的命令 command + number tab 标签窗口来回切换 command + option + ←/→ 或 command + [ / ] 切换屏幕 ctrl + x 第一次按时,移动光标至行首;再次按时,回到原有位置 ctrl + a 到行首(Ahead of line) ctrl + e 到行尾(End of line) ctrl + f/b 前进后退(相当于左右方向键) ctrl + u 清除当前行(无论光标在什么位置) ctrl + d 删除光标当前位置的字符 ctrl + h 删除光标之前的字符 ctrl + w 删除光标之前的单词 ctrl + k 删除光标当前位置到文本末尾的所有字符 ctrl + t 交换光标当前位置的字符与前一个字符的位置 ctrl + c 或 ctrl + j 或 ctrl + o 取消当前行输入的命令(中断操作)。重新起一行。 ctrl + y 粘贴之前(ctrl +u/k/w)删除的内容 ctrl + p 或 !! 上一条命令。调出命令历史中的前一条(Previous)命令,相当于通常的上箭头 ctrl + n 下一条命令。调出命令历史中的下一条(Next)命令,相当于通常的上箭头 ctrl + s 冻结终端操作(暂停脚本) ctrl + q 恢复冻结(继续执行脚本) ctrl + r 搜索命令历史。根据用户输入查找相关历史命令(reverse-i-search) ctrl + l 或 command + r 换到新一屏,创建一个空屏 ctrl + i 或 tab 横行制表符,在命令行中补齐指令 双击 选中单词 三击 选中整行 四击 智能选择 !word 重复运行最近一条以“word”开头的指令,如!ls 或 !l !$ 调用上一条指令的最后一个参数作为当前指令对象,如,假设上一条指令为: ls abc.txt bbc.txt 那么, vi !$ 相当于: vi bbc.txt !number 调用执行指定编号的历史记录指令,如!2, !11 参考 iTerm2 快捷键大全 - 陈斌彬的技术博客

October 28, 2023 · Yancey

screen 命令使用

Linux Screen screen 命令使用 彻底搞清楚screen 命令使用 Posted by BenderFly on March 31, 2019 screen 是一个非常有用的命令,提供从单个 SSH 会话中使用多个 shell 窗口(会话)的能力。当会话被分离或网络中断时,screen 会话中启动的进程仍将运行,你可以随时重新连接到 screen 会话 查看是否安装 screen -v Screen version 4.00.03 (FAU) 安装Screen CentOS/RedHat/Fedora yum -y install screen Ubuntu/Debian apt-get -y install screen 参数 参数说明 -A 将所有的视窗都调整为目前终端机的大小。 -d <作业名称> 将指定的screen作业离线。 -h <行数> 指定视窗的缓冲区行数。 -m 即使目前已在作业中的screen作业,仍强制建立新的screen作业。 -r <作业名称> 恢复离线的screen作业。 -R 先试图恢复离线的作业。若找不到离线的作业,即建立新的screen作业。 -s 指定建立新视窗时,所要执行的shell。 -S <作业名称> 指定screen作业的名称。 -v 显示版本信息。 -x 恢复之前离线的screen作业。 -ls或--list 显示目前所有的screen作业。 -wipe 检查目前所有的screen作业,并删除已经无法使用的screen作业。 常用screen参数 screen -S session_name # 新建一个叫session_name的session screen -ls(或者screen -list) # 列出当前所有的session screen -r session_name # 回到session_name这个session screen -d session_name # 远程detach某个session screen -d -r session_name # 结束当前session并回到session_name这个session 在每个screen session 下,命令都以 ctrl+a、ctrl-a,常用的几个操作如下: ...

October 12, 2023 · Yancey

macOS使用homebrew-bundle优雅的备份和恢复软件列表

前言 每个人都会积累一套自己习惯使用的 App。如果平时习惯使用 Time Machine 备份,那么在重装系统时,直接用它还原倒是一个不错的办法,不必再手动安装一个个 App。但是有些时候,我们可能想要一个更加「干净」的新系统,此时就需要依次手动安装。这显然不是个高效、省心的方法,可能还需要一个个回忆之前用的 App。这时候,我们往往希望有一份属于自己的 App 清单,最好还能在重装时一键安装,省心省力。无论是Windows还是macOS下我们都希望实现一键装机,而 homebrew-bundle 正是这样一款 Mac 下的备份恢复利器。 Time Machine macOS 自带的 Time Machine 无疑是备份与还原的利器。无论是重装系统,还是新机配置,Time Machine 用起来都十分方便、省心。但是它存在以下不足: 如果直接在本机硬盘上备份,Time Machine 动辄百 G 的硬盘占用,令小硬盘电脑用户望而却步。而且一般情况下,电脑内只有一块硬盘,如果系统和备份在同一硬盘上,那么硬盘挂了就两者皆挂。 如果使用网络备份,带宽和网络空间费用可能都是问题。 如果使用 NAS 或者使用树莓派架设 Time Capsule,则需要有一定的计算机相关基础和折腾能力。 即使上述情况对你来说都不是问题,多一种备份方式也是多一份安全和保障。 homebrew-bundle Bundler for non-Ruby dependencies from Homebrew homebrew-bundle - https://github.com/Homebrew/homebrew-bundle Mac 上非常常用的包管理器 Homebrew, 我们经常用它来安装其他的软件包 还有 Homebrew-cask, 可以用来安装图形界面的 App homebrew-bundle 类似 node 中的 package.json 或者 Cocoapods 中的 Podfile 我们将需要的包和 App, 声明在一个 Brewfile 中, 然后执行 brew bundle 即可安装所有包 homebrew-bundle 如何备份 备份列表包含: ...

September 16, 2023 · Yancey

使用iptebles实现服务器之间流量转发

相信有很多人使用过流量转发,比如用商家转发到落地机的,那么怎么实现这种转发呢?其实很简单,几行命令搞定,这次俺们用 iptables 来演示一下。 流量走向: 客户端 --> GFW --> A服务器 --> B服务器(落地) --> YouTube --> 返回客户端 A服务器IP:2.2.2.2 端口:20000 B服务器IP:6.6.6.6 端口:60000 实现目的:把本机A服务器IP 2.2.2.2 上的 20000 端口流量转发到B服务器IP 6.6.6.6 的 60000 端口上 A服务器 以下都在A服务器上操作,也就是转发服务器,白话就是线路好的服务器 首先在服务器上开启 tcp 转发: echo "net.ipv4.ip_forward=1" >> /etc/sysctl.conf 使其生效: sysctl -p 好像Debian11以上就弃用了iptables,来安装一下: apt install iptables -y 把A服务器 20000 端口流量转发到B服务器的 60000 端口上 在PREROUTING上修改目的地址: iptables -t nat -A PREROUTING -p tcp --dport 20000 -j DNAT --to-destination 6.6.6.6:60000 在POSTROUTING上修改源地址: # 2.2.2.2 是A服务器IP,也就是转发服务器IP iptables -t nat -A POSTROUTING -d 6.6.6.6 -p tcp --dport 60000 -j SNAT --to 2.2.2.2 # 或者直接用MASQUERADE自动获取源IP,两条命令二选一 iptables -t nat -A POSTROUTING -d 6.6.6.6 -p tcp --dport 60000 -j MASQUERADE 其实上面两条命令就可以用了,为了防止在FORWARD上面被丢弃,添加两条规则允许通过: ...

September 15, 2023 · YanceyAn

查看Homebrew中所有已安装包的依赖关系

列出所有包依赖的包: brew deps --tree --installed 列出不被任何包依赖的包: brew leaves 列出依赖某个包pac的所有包: brew uses pac --installed 结合brew list可以列出所有包被依赖的关系: brew list | while read cask do echo -en $cask'\t' brew uses $cask --installed | tr '\n' '\t' echo -en '\n' done

September 15, 2023 · YanceyAn

使用Nginx和Hugo建立静态网站

安装服务器和设置防火墙 $ sudo apt install nginx ufw $ sudo ufw allow 22 $ sudo ufw reload $ sudo ufw allow 'Nginx Full' $ sudo ufw reload 查看防火墙状态 $ sudo ufw status 配置 Nginx server $ sudo systemctl start nginx 默认网页根目录在 /var/www/. 创建新站点文件 /etc/nginx/sites-available 使用 example.com: $ sudo emacs /etc/nginx/sites-available/example.com 粘贴以下内容: server { listen 80; # Configure the server for HTTP on port 80 server_name example.com; # Your domain name root /var/www; # The files for your server index index.html; # You will create this file shortly } 修改文件夹权限 ...

September 15, 2023 · YanceyAn

使用非标准SSH端口进行Git Clone

使用git clone命令clone项目时,如果repository的SSH端口不是标准22端口时(例如,SSH tunnel模式,等等),可以使用如下命令: git clone ssh://git@hostname:port/.../xxx.git 举例如下: git clone ssh://git@10.137.20.113:2222/root/test.git

October 8, 2022 · YanceyAn