关于终端:一个终端工具竟然有AI功能使用了1天我立马把其他终端全卸载了太香了

前言平时工作须要频繁应用终端工具,有一个好的命令行终端工具是十分重要的。 尤其是应用mac的小伙伴,预计不少人都感觉iterm2才是最好的终端工具。 其实起初我也是这么感觉的,然而最近直到我应用了这款开源的终端工具,我能够负责任的说,iterm2能够放在角落吃灰去了。 我重度应用了2天,无论从颜值,性能,效率和翻新上,都碾压同类的终端工具。我齐全找不到任何理由来放弃这么优良的一款工具。整个应用的体验十分难受,甚至于感觉,这,就是我心中现代化终端工具该有的样子! 介绍这款终端工具叫:Warp 或者有的小伙伴在其余平台已经看到过。那没关系,我这里再给安利下。 这款工具是齐全开源的,开源托管仓库在github上: Github:https://github.com/warpdotdev... 官网:https://www.warp.dev/ 官网长这样: Github上更是领有将近8K的Star Warp是用Rust写的,号称是21世纪现代化的终端工具。UI设计确实是一股浓浓的现代化简洁暗黑风,这种格调我一眼就喜爱上了。 目前只反对了mac零碎,然而据官网介绍,不久之后也将会出windows版本和linux版本。应用windows的小伙伴能够再急躁等等。 对于装置,从官网右上角就能够间接下载到安装包。 预计有一些小伙伴因为国内网络的问题登陆不上官网或者github,没关系,我帮你们下载好并转存了,获取形式见文末。 颜值性能放一边,咱们先说颜值。 作为程序员除了天天在IDE写代码,预计看的最多的就是终端工具界面了吧。颜值作为一个硬通货,能晋升咱们在解决问题时候的舒适感,我感觉还是非常重要的。 Warp的颜值十分高,间接看图: 并且Warp内置了超多的主题,比方: 反正我是感觉每一款主题都很有意思。配合现代化的UI,让你敲shell命令的时候晋升数倍视觉感官。 速度我在用终端工具的时候,最影响我体验感的就是启动速度和顿挫感。 之前我在公号里有举荐过另一款终端工具:electerm。其实颜值和性能都不错,惟一让我有点不爽的中央是顿挫感有时比较严重。启动有提早,在关上新的窗口页和切换窗口页时,都感觉会有一点点的提早感,这让我的体验打了一点折扣。 然而我在应用Warp的时候,齐全没感触到这种顿挫感。所有都显得十分的丝滑。你就会感触到这款工具很轻量,很称手。如同关上一个文本编辑器那么轻快。 命令块只有你略微应用下,就会发现Warp和其余终端工具最大的不同在于,它把一行命令的输出和输入打包成了一个块,让你更加容易能分辨出每条命令的输出和输入。 Warp设计了不同的视觉效果来帮忙用户疾速辨认块中的内容,如果命令出错,那这个块就会显示红色背景和红色侧栏。失常的块就是失常背景。 并且每一个块你都能够去操作它,除了能够复制命令和后果以外,Warp反对对每一个块打上书签标记,对于打上书签的块,在右侧的滚动条里能够清晰的看到,鼠标放上去会显示其内容,点击会疾速定位到那个块。 Warp还容许分享你的命令块,选中块之后点击Create Permalink,会弹出一个分享块的提醒,而后能够生成一个url。通过这一个url,他人能够很不便的在网络上查看你分享的命令块并复制其内容。 历史命令Warp中的历史命令查看,我感觉十分人性化。 其余的终端的历史命令,通过高低键去查看,但按一次只能查看一条。 在Warp中查看历史也是按高低键,然而给出了一个浮层供选择,如果你关上了多个拆分窗口,Warp会隔离每一个shell会话里的历史记录,多个shell之间的历史命令不会串。这点十分赞。 命令提醒Warp里的命令提醒,也是独立浮层提醒。能够进行抉择,还有命令的解释极其用法提醒。 在git目录上面,甚至于能够提醒到分支名,这很粗疏了有木有 AI性能一款终端还有AI性能?没错,这就是Warp最骚的中央! 在Warp中集成了AI Command Search的性能,可能将自然语言转换成可执行的shell命令。这个性能须要联网来应用,由OpenAI的codex引擎提供反对。 这是我目前见过惟一一款有AI性能的终端。这对于我来说,太实用了! 因为我并非业余运维同学,所以有的简单的shell命令我本人并记不住,以前碰到记不住的命令总要查baidu,当初通过AI命令你能够间接输出你想要干什么,AI会主动解析你的自然语言并转成shell命令。 先打个样,比如说我要把零碎信息输出到一个sys.txt文件中,在Warp中按下Ctrl+\` 按键,会弹出一个AI输入框。 我输出:Output system information to sys.txt file,回车,会立马给出翻译进去的shell命令。 英文不怎么好?没关系,中文也是OK的。再比方: 还用说什么吗,自然语言到shell命令,是如此的不便。很弱小有木有。 结语Warp还有很多其余的性能,比方我的工作流能够把你本人的罕用的shell能够保留进去。不便调取。按Command+P能够随时调出命令面板进行命令查看和性能的调取。 须要说的是,AI性能在国内网络环境下可能不太容易体验,须要本人想方法。 对于有一些小伙伴可能因为网络起因获取不了安装包,那我曾经把安装包提前下载下来了。 关注公众号[元人部落]并回复WP获取下载链接。 国庆长假马上来了,最初祝大家国庆玩的开心。

September 30, 2022 · 1 min · jiezi

关于终端:手机termux跑漏扫工具随时随地做脚本小子

三个应用简略的扫描工具Kscan跑指纹/爆破afrog跑pocfscan一起跑Kscan是一款纯go开发的全方位扫描器,具备端口扫描、协定检测、指纹识别,暴力破解等性能。反对协定1200+,协定指纹10000+,利用指纹2000+,暴力破解协定10余种。 https://hub.fastgit.xyz/lcvvv...afrog 是一款性能卓越、疾速稳固、PoC 可定制化的破绽扫描工具 https://hub.fastgit.xyz/zan8i...fscan是一款内网综合扫描工具,不便一键自动化、全方位漏扫扫描。 https://hub.fastgit.xyz/shado...1、termux装置【termux官网】【ZeroTermux】 ZeroTermux换源(可跳过)sed -i 's@^\(deb.*stable main\)$@#\1\ndeb https://mirrors.tuna.tsinghua.edu.cn/termux/termux-packages-24 stable main@' $PREFIX/etc/apt/sources.list && apt update && apt upgrade2、termux装置Linux发行版Alpine装置 curl -LO https://raw.githubusercontents.com/Hax4us/TermuxAlpine/master/TermuxAlpine.shbash TermuxAlpine.sh启动alpine startalpine3、Alpine装置漏扫工具wget https://download.fastgit.org/shadow1ng/fscan/releases/download/1.8.1/fscan_arm64wget https://download.fastgit.org/zan8in/afrog/releases/download/v1.3.6/afrog_arm.tar.gzwget https://download.fastgit.org/lcvvvv/kscan/releases/download/v1.76/kscan_linux_arm.zipunzip kscan_linux_arm.ziptar -xzf afrog_arm.tar.gzchmod +x afrog_arm kscan_linux_arm fscan_arm64工具简略应用命令Kscan ./kscan_linux_arm -t 192.168.1.1/24./kscan_linux_arm -t http://127.0.0.1./kscan_linux_arm -t 文件门路afrog ./afrog_arm -t http://127.0.0.1./afrog_arm -T URL文件门路## 更新poc./afrog_arm --up fscan ./fscan_arm64 -h 192.168.1.1/24./fscan_arm64 -u http://127.0.0.1./fscan_arm64 -hf IP文件门路./fscan_arm64 -uf URL文件门路

July 28, 2022 · 1 min · jiezi

关于终端:SecureCRT-ssh终端仿真工具

SecureCRT是一款弱小的ssh终端仿真工具, 通过高级会话治理进步了工作效率,并提供了一系列节省时间和简化重复性工作的办法。SecureCRT为组织中的每个人提供平安的近程拜访,文件传输和数据隧道。无论您是要更换Telnet还是终端,还是须要更弱小的平安近程拜访工具,SecureCRT都是您能够全天应用的应用程序。

July 7, 2022 · 1 min · jiezi

关于终端:阅后即焚python-pip-下的安装

Python第三方库的获取和装置的学习,非常重要,在Python编程学习中波及各种各样的库装置。这里将三类装置(次要是pip installs),倡议读者按程序应用。电脑配置为32位设置,_FILES装置报错。 三个办法是:pip工具装置、自定义装置和文件装置。 pip 工具装置自定义装置文件装置pip 工具装置pip不愧为最罕用最高效的Python第三方库装置形式。pip是Python官网提供并保护的在线第三方库装置工具。应用pip工具首先须要联网。装置一个库的命令格局如下: :\>pip install pygame...Installing collected packages: pygameSuccessfully installed pygame-1.9.2b1pip工具与操作系统也有关系,在MacOS X 和Linux等操作系统中,pip 工具简直能够装置任何Python 第三方库。 自定义装置自定义装置指依照第三方库提供的步骤和形式装置。以科学计算用的numpy为例,开发者保护的官方主页是: http://www.numpy.org浏览该网页下载链接http://www.scipy.org/scipylib...按批示步骤装置。自定义装置实用于在pip中没有注销或是装置失败的第三方库。 文件装置因为Python某些第三方库仅提供源代码,通过pip下载文件后无奈在Windows零碎编译装置,会导致第三方库装置失败。 登入界面 http://www.lfd.uci.edu/~gohlk...而后抉择第三方库,例如scipy库对应内容。抉择其中的.whl文件下载,这里选用实用于Python3.5版本解释器和32为零碎的对应文件:scipy-0.17.1-cp35-cp35m-win32.whl下载到D:\pycodes目录而后,在终端pip命令装置该文件。pip install D:\pycodes\scipy-0.17.1-cp35-cp35m-win32.whl这三种办法装置Python第三方库,就能够不必放心装置不上的问题。这里倡议装置pip在新文件夹下(program_files)以配合%_ FILED的PATH的环境变量。

June 3, 2022 · 1 min · jiezi

关于终端:Warp21世纪的终端

Warp 是一个齐全从新设计的,用 Rust语言编写的,疾速的终端程序,其目标是使终端程序可能像一个古代应用程序一样工作。2022年4月初,其曾经凋谢给所有 macOS 用户下载应用(后续会提供 Windwos 和 Linux 版本)。 因为国内互联网的非凡状况,在下载后无奈失常注册,在 issue #906 的探讨中,有人给出相似上面解决方案: export HTTP_PROXY=http://127.0.0.1:1087export HTTPS_PROXY=http://127.0.0.1:1087/Applications/Warp.app/Contents/MacOS/stable相似 VSCode,Warp 提供了通过 CMD-P 呼出 Command Palette 的性能,具体应用办法见 Warp 文档;其 Autosuggestions 性能可用,但与 Aloxaf/fzf-tab 比拟,差距还是很显著的;其 Workflow 和 A.I. Command Search 才是亮点,通过含糊查问可能疾速找到适合的命令,即便对于相熟命令行的用户也是十分有吸引力的。 总而言之,Warp 可能在不须要深刻学习和简单配置的状况下,为用户提供了一个比拟高效的终端环境,后续值得关注。

April 8, 2022 · 1 min · jiezi

关于终端:恒源云Gpushare如何获取实例SSH端口号技巧大放送7

文章起源 | 恒源云社区 原文地址 | 【小技巧-端口篇】 1、如何获取实例SSH主机名、实例SSH端口号、实例明码?关上恒源云控制台,复制登录指令和明码,而后粘贴到文本或编辑器中。 粘贴实现后如下所示: 登录指令:ssh -p 6666 root@i-1.gpushare.com明码:vKExWbBWnVkszkwaFdh4cPABADSNFGuS命令拆解如下:实例SSH主机名:i-1.gpushare.com实例SSH端口号:6666实例用户名:root实例明码:vKExWbBWnVkszkwaFdh4cXXXXXXXXXXX2、利用如何对外裸露端口服务?实例并不提供公网 IP 地址,服务是通过端口映射到公网接入点提供链接的。 须要时须要进行 JupyterLab 或 TensorBoard 服务,并且将利用端口配置成和 JupyterLab 或 TensorBoard 雷同的 8888 或 6006 端口上,监听地址须要应用 0.0.0.0。 # 进行 JupyterLab 或 TensorBoard 服务supervisorctl stop tensorboardsupervisorctl stop jupyterlab# 设置开机不启动 JupyterLab 或 TensorBoardgrep -E "autostart" /etc/supervisor/conf.d/tensorboard.conf || echo "autostart = false" >>/etc/supervisor/conf.d/tensorboard.confgrep -E "autostart" /etc/supervisor/conf.d/jupyterlab.conf || echo "autostart = false" >>/etc/supervisor/conf.d/jupyterlab.conf# 更新配置supervisorctl update接下来将利用启动监听在 0.0.0.0:6006 或 0.0.0.0:8888 上。内部调用与拜访是通过控制台实例中 JupyterLab 或 TensorBoard 工具链接。 ...

April 7, 2022 · 1 min · jiezi

关于终端:Mac安装ohmyzsh终端更改终端背景

背景目前Mac自带的终端不是很好用,好多惯例的Linux命令都不反对 比方:ll命令;那么咱们能够装置第三方的终端 装置国内地址: sh -c "$(curl -fsSL https://gitee.com/mirrors/oh-my-zsh/raw/master/tools/install.sh)" 应用成果如下: 后续如果装置其余的命令须要更改zsh环境变量的话 输出如下命令: vim ~/.zshrc 更改终端背景关上终端偏好设置 关上形容文件选中文本 点击图像-》点击选取 选取本地图片 如果成果不是很好能够调节字体和背景透明度 整体成果如下

April 15, 2021 · 1 min · jiezi

关于物联网:IAP物联网终端软件升级技术

摘要:IAP是利用本人的程序代码实现降级程序(新的APP)从内部接口(能够是串口、I2C、SPI、网口等等)写入到flash中,再通过flash读写操作,将新的APP笼罩原有APP程序,在从新从新的APP入口地位启动咱们的应用程序,同时也负责IAP代码的批改和迭代。本文分享自华为云社区《物联网终端软件降级技术---IAP(因芯片类型较多,本文仅针对STM32的Cortex-M系列)》,原文作者:o0龙龙0o 。 当初降级曾经成为IoT畛域边缘降级的根本技术,宽泛被当初风行的OTA技术就是其中之一。因为物联网终端会和互联网技术相干,软件迭代速度会比传统制造业高很多,这样就对非现场降级提出了要求,在行业内造成以OTA为支流的降级形式及降级规范。 物联网终端多应用的经济型的MCU,这个类的MCU个别有三种程序写入形式: ISP:In System Programing 在零碎编程(应用芯片提供的疏导程序(Bootload)加上外设接口进行烧录)IAP:In applicating Programing 在利用编程(软件本身实现在线电擦除和编程的办法,不应用任何工具。程序通常分成两块,别离为疏导程序和应用程序)ICP:In Circuit Programing 在电路编程(应用JTAG/SWD接口进行烧录,如J-Link烧录器和J-Flash软件配合应用)ICP、ISP都是用在厂家在调试过程烧录程序和成片烧录程序的芯片编程办法,在制成后个别利用IAP的形式更加自在的对本人的芯片就行降级。 IAP若由ROM执行程序,如反对IAP的单芯片可能使用自批改代码进行程序降级,也能对负责IAP性能的代码进行批改或删除从而失去IAP性能。IAP不须要芯片厂家给出非凡的反对,只须要提供FLASH操作、通信接口操作、中断矢量偏移操作和复位操作就能够了。 IAP的原理与实现IAP是利用本人的程序代码实现降级程序(新的APP)从内部接口(能够是串口、I2C、SPI、网口等等)写入到flash中,再通过flash读写操作,将新的APP笼罩原有APP程序,在从新从新的APP入口地位启动咱们的应用程序,同时也负责IAP代码的批改和迭代。 在这里,首先在咱们的代码空间,一部分的是咱们用于降级的程序IAP,另一部分是咱们的应用程序APP,例如如下图进行调配:IAP通过ISP或是ICP形式进行烧录,APP初版通过三种形式进行烧写,在须要降级时通过IAP进行降级。 咱们先来看看 Cortex失常的程序运行流程,如下图所示:外部闪存(FLASH)地址起始于 0x08000000,个别状况下,程序文件就从此地址开始写入。 此外芯片是基于Cortex-M内核的微控制器,其外部通过一张“中断向量表”来响应中断,程序启动后,将首先从“中断向量表”取出复位中断向量执行复位中断程序实现启动,而这张“中断向量表”的起始地址是 0x08000004。 当中断降临,芯片的外部硬件机制亦会主动将 PC 指针定位到“中断向量表”处,并依据中断源取出对应的中断向量执行中断服务程序。 芯片复位后,先从 0X08000004 地址取出复位中断向量的地址,并跳转到复位中断服务程序,如图标号①所示;在复位中断服务程序执行完之后,会跳转到咱们的main 函数,如图标号②所示;而咱们的 main 函数个别都是一个死循环,在 main 函数执行过程中,如果收到中断请求(产生重中断),此时芯片强制将 PC 指针指回中断向量表处,如图标号③所示;而后,依据中断源进入相应的中断服务程序,如图标号④所示;在执行完中断服务程序当前,程序再次返回 main 函数执行,如图标号⑤所示 当基于IAP设计的程序启动流程如下图:芯片复位后, 还是从 0X08000004 地址取出复位中断向量的地址,并跳转到复位中断服务程序,在运行完复位中断服务程序之后跳转到 IAP 的 main 函数,如下图标号①所示,在执行完 IAP 当前(行将新的 APP 代码写入事后定义的 FLASH,灰底局部。 新程序的复位中断向量起始地址为 0X08000004+N+M),跳转至新写入程序的复位向量表,取出新程序的复位中断向量的地址,并跳转执行新程序的复位中断服务程序,随后跳转至新程序的 main 函数,如下图标号②和③所示,同样 main 函数为一个死循环,并且留神到此时芯片的 FLASH,在不同地位上,共有两个中断向量表。 main 函数执行过程中,如果 CPU 失去一个中断请求, PC 指针仍强制跳转到地址0X08000004 中断向量表处,而不是新程序的中断向量表,如下图标号④所示;程序再依据咱们设置的中断向量表偏移量,跳转到对应中断源新的中断服务程序中,如图标号⑤所示;在执行完中断服务程序后,程序返回 main 函数持续运行,如图标号⑥所示。这样就实现程序设计和跳转的动作。 LiteOS的OTA计划LiteOS是利用华为云实现物联网终端的降级的工作,底层的原理与下面介绍的移植,不过因为是物联网,所以程序是通过Wi-Fi、4G、NB等无线通讯技术下载到芯片实现软件的降级,具体能够在博客检索相干关键词获取,有很多对应的解释。大抵原理如下图:分为SOTA和FOTA两种技术,即固件和软件都能够别离进行降级操作,而后将程序编译好的bin文件,通过华为云IoT平台进行打包发送到物联网终端进行降级操作。 ...

March 24, 2021 · 1 min · jiezi

关于终端:npm在没有sudo的情况下抛出错误

我只是通过nodejs.org上的包装置了node和npm,每当我试图用npm搜寻或装置某个货色时,它就会抛出以下谬误 npm WARN registry Unexpected warning for https://registry.npmjs.org/: Miscellaneous Warning ECONNRESET: request to https://registry.npmjs.org/utf8 failed, reason: Client network socket disconnected before secure TLS connection was establishednpm WARN registry Using stale data from https://registry.npmjs.org/ due to a request error during revalidation.npm WARN rm not removing /Users/yuezonglun/Desktop/mfbb/mfbb-rn/node_modules/.bin/rimraf as it wasn't installed by /Users/yuezonglun/Desktop/mfbb/mfbb-rn/node_modules/rimrafnpm WARN rm not removing /Users/yuezonglun/Desktop/mfbb/mfbb-rn/node_modules/.bin/semver as it wasn't installed by /Users/yuezonglun/Desktop/mfbb/mfbb-rn/node_modules/semvernpm ERR! code EACCESnpm ERR! syscall rmdirnpm ERR! path /Users/yuezonglun/Desktop/mfbb/mfbb-rn/node_modules/@react-native-community/cameraroll/android/build/.transforms/9cbc27bddbf53510e68e9fe85a8d20cenpm ERR! errno -13npm ERR! Error: EACCES: permission denied, rmdir '/Users/youname/Desktop/mfbb/mfbb-rn/node_modules/@react-native-community/cameraroll/android/build/.transforms/9cbc27bddbf53510e68e9fe85a8d20ce'npm ERR! [OperationalError: EACCES: permission denied, rmdir '/Users/youname/Desktop/mfbb/mfbb-rn/node_modules/@react-native-community/cameraroll/android/build/.transforms/9cbc27bddbf53510e68e9fe85a8d20ce'] {npm ERR! cause: [Error: EACCES: permission denied, rmdir '/Users/yuezonglun/Desktop/mfbb/mfbb-rn/node_modules/@react-native-community/cameraroll/android/build/.transforms/9cbc27bddbf53510e68e9fe85a8d20ce'] {npm ERR! errno: -13,npm ERR! code: 'EACCES',npm ERR! syscall: 'rmdir',npm ERR! path: '/Users/youname/Desktop/mfbb/mfbb-rn/node_modules/@react-native-community/cameraroll/android/build/.transforms/9cbc27bddbf53510e68e9fe85a8d20ce'npm ERR! },npm ERR! stack: "Error: EACCES: permission denied, rmdir '/Users/youname/Desktop/mfbb/mfbb-rn/node_modules/@react-native-community/cameraroll/android/build/.transforms/9cbc27bddbf53510e68e9fe85a8d20ce'",npm ERR! errno: -13,npm ERR! code: 'EACCES',npm ERR! syscall: 'rmdir',npm ERR! path: '/Users/youname/Desktop/mfbb/mfbb-rn/node_modules/@react-native-community/cameraroll/android/build/.transforms/9cbc27bddbf53510e68e9fe85a8d20ce',npm ERR! parent: 'mfbb-rn'npm ERR! }npm ERR! npm ERR! The operation was rejected by your operating system.npm ERR! It is likely you do not have the permissions to access this file as the current usernpm ERR! npm ERR! If you believe this might be a permissions issue, please double-check thenpm ERR! permissions of the file and its containing directories, or try runningnpm ERR! the command again as root/Administrator.npm ERR! A complete log of this run can be found in:npm ERR! /Users/youname/.npm/_logs/2020-12-02T14_18_12_826Z-debug.log这看起来像是主目录中的权限问题。要发出.npm目录的所有权,请执行: ...

December 2, 2020 · 2 min · jiezi

关于终端:22款终端生产力工具效率飞起值得收藏

程序员在搞开发时,终端CLI工具的应用必不可少,往往都是生产力工具,所以明天在此给大家举荐一下比拟好用的终端工具。先给大家列个举荐清单,如下图。 高频 CLI 工具举荐 1、fish shell毋庸置疑,在终端工具中,Shell 是应用最频繁也最重要的工具。过来,我已经应用过 Bash 和 Z Shell,而现在,这个Fish Shell,也是一个十分优良的终端 Shell 工具,领有许多开箱即用的性能,例如语法主动举荐补全、语法高亮显示或应用快捷键在最近拜访的文件夹之间来回切换。 下载地址:https://fishshell.com/2、Starship如果必须要从本篇文章中抉择一个我最喜爱的终端工具——那非 Starship 莫属。Starship 能够实用于任何 Shell。你只须要装置它,而后在相应的配置文件.bashrc/.zshrc/config.fish增加一行配置,剩下的工作交给它来实现就好了。 它能够做到: 依据你是否在代码仓库中增加了新文件、是否批改了文件、是否暂存了文件等状况,用相应的符号示意 git 仓库的状态。依据你所在的 Python 我的项目目录,展现 Python 的版本号,这也实用于 Go/Node/Rust/Elm 等其余编程语言环境。展现上一个命令执行所用的工夫,指令运行工夫必须在毫秒级别。如果上一个命令执行失败,会展现相应的谬误提示符。 还有成千上万的其余信息能够展现。然而,它能以更加敌对的模式智能地给你出现!比方,如果你不在 git 存储库中,它将暗藏 git 信息。如果您不在 Python 我的项目中,则不会有 Python 版本信息,因为显示它没有什么意义。它永远不会给你展现多余信息,始终保持终端的好看,优雅和简洁。 下载地址:https://starship.rs/3、z“z” 能够让你疾速地在文件目录之间跳转。它会记住你拜访的历史文件夹,通过短暂的学习后,你就能够应用z path_of_the_folder_name命令在目录之间跳转了。 比方,如果我常常拜访 ~/work/src/projects,我只须要运行 z pro ,就能够立马跳转到那里。z 的原理参考了 frecency 算法——一个基于统计 frequency 和 recency 进行剖析的算法。如果它存储了你不想应用的门路文件夹,你随时能够手动将其删除。它进步了我在罕用的不同文件门路之间频繁切换的效率,帮我节俭了键盘击键次数以及大量的门路记忆。 下载地址:https://github.com/rupa/z4、fzffzf — fuzzy finder,即含糊查找器。它是一种通用工具,可让你应用含糊搜寻来查找文件、历史命令、过程、git 提交等。你键入一些字母,它会尝试匹配后果列表中任何地位的字母。输出的字母越多,后果也就越精确。 下载地址:https://github.com/junegunn/fzf5、fd 下面动图是 find 命令(左)和 fd 命令(右)的应用比照。 ...

November 24, 2020 · 2 min · jiezi

关于终端:item2-默认打开当前文件夹

item2 是 MAC 下的一个终端工具, 绝对于原生的终端, 提供更丰盛的 features。item2 在新开一个 Tab 页的时候, 默认关上的是 home 文件夹。 然而工作须要,我常常须要在新开的窗口到以后文件夹。 配置以当前目录关上 Tab 点击 iTerm2 => Preferences => Profiles在 "Working Directory" 一栏, 选中 "Reuse previous session’s directory"从新关上一个 Tab 页, 会发现曾经间接进入到当前目录, 而不再是 $HOME 文件夹更多高级配置能够批改以下新开窗口的关上门路: New WindowsNew TabsNew Split Planes通过点击 "Preferences" => "Profiles" => "General" => "Working Direcgtory" => "Advanced Configuration", 而后进行相应配置

October 1, 2020 · 1 min · jiezi

关于终端:powershell-终端美化-git-分支名乱码解决办法

之前通过 on-my-posh 曾经丑化过一次了然而 如果我 git 分支名中有中文那么他显示的还是乱码,所以当初想让他失常显示 通过如下命令找到主题文件 关上之后搜查一番发现 ps 脚本我不太懂,看这个文件大抵能够猜出来终端中下面那一行就是 $prompt 输入后的后果,当初的问题放大到如何让 $prompt 内蕴含的中文输入后失常显示? 通过尝试上图红框出输出中文输入的也是乱码,网上搜查无果,忽然想起来gb2312 这个货色,将该文件应用gb2312编码保留代码内的中文能够输入了 但右侧分支名还是乱码,猜想应该是一样的问题,那么应该会有这几种解决方案 让powershell 反对utf-8。这个因为其余问题之前试过,尽管utf-8 的是失常显示了但导致原本中文能失常输入的反而不行了最好的办法应该是间接让这个脚本能够输入utf-8的字符分支名转 gb2312 再输入接下来就是去网上找文档看有没有方法解决或者能实现我下面提出的两个计划 在 https://www.zhihu.com/question/54724102/answer/1035566559 发现了解决方案1的实现办法 步骤如下 输出 $profile 失去powershell配置文件地址 增加 $OutputEncoding = [console]::InputEncoding = [console]::OutputEncoding = New-Object System.Text.UTF8Encoding 中文分支名正确显示! 另外的问题,显示 emoji我想在最后面放一个 emoji 在线编码工具 http://tools.jb51.net/transcoding/decode_encode_tool 这个三角形的编码就是 0x1F4D0 但打印进去后后面多了问号,不晓得什么起因,但前四位为0的emoji是能够失常显示的,可能是因为组合字的缘故。 这个问题没有想到比拟好的办法,望理解者不吝赐教(´▽`♡ƪ) 。我只能临时先用单个码点的emoji了

August 31, 2020 · 1 min · jiezi

将-Gitbash-置入-Windows-Terminal

文章首发于 个人博客。 Git-bash 允许开发人员在 Windows 上运行部分 Linux 命令。但是外观没有 Windows Terminal 中的 CMD 漂亮,现在来将 Git-bash 置入 Windows Terminal 里面。 在已经安装好 Git 的情况下,找到 Git 的安装路径,将 bin 加入到环境变量的 path 里面。我这是 C:\Program Files\Git\bin,最终我们会用到里面的 bash.exe 程序。省略这一步骤也行,后面的配置文件中就需要填入 bash.exe 的完整路径。 下载一个 Git 的图标,地址见 gwindows_logo。将在下载的图标保存到任意一个文件夹,此处我保存在 C:\\ProgramData\\Microsoft\\Windows\\Start Menu\\Programs\\Git\\gwindows_logo.png 。 在应用商店 Microsoft store 下载安装好 Windows Terminal 并运行。点击右侧下拉菜单选择 Settings 编辑 profiles.json 文件。在 json 文件中,复制 profiles 数组中的第一个 CMD 配置文件,并添加到 profiles 数组里面,让它成为该数组的第一个元素。现在 profiles 数组里面有三个元素,其中第 0 和 1 个元素完全一样,都是对 CMD 的相关配置。编辑第 0 个元素的信息如下,需要编辑的部分都已经有注释: ...

August 28, 2019 · 5 min · jiezi

终端快捷键

快捷键说明Ctrl + d删除一个字符,相当于通常的Delete键(命令行若无所有字符,则相当于exit;处理多行标准输入时也表示eof)Ctrl + h退格删除一个字符,相当于通常的Backspace键Ctrl + u删除光标之前到行首的字符Ctrl + k删除光标之前到行尾的字符Ctrl + c取消当前行输入的命令,相当于Ctrl + BreakCtrl + a光标移动到行首(Ahead of line),相当于通常的Home键Ctrl + e光标移动到行尾(End of line)Ctrl + f光标向前(Forward)移动一个字符位置Ctrl + b光标往回(Backward)移动一个字符位置Ctrl + l清屏,相当于执行clear命令Ctrl + p调出命令历史中的前一条(Previous)命令,相当于通常的上箭头Ctrl + n调出命令历史中的下一条(Next)命令,相当于通常的上箭头Ctrl + r显示:号提示,根据用户输入查找相关历史命令(reverse-i-search)Alt + f光标向前(Forward)移动到下一个单词Alt + b光标往回(Backward)移动到前一个单词Ctrl + w删除从光标位置前到当前所处单词(Word)的开头Alt + d删除从光标位置到当前所处单词的末尾Ctrl + y粘贴最后一次被删除的单词

June 9, 2019 · 1 min · jiezi

Go语言xtermjswebsocket-Web终端堡垒机

1.前言因为公司业务需要在自己的私有云服务器上添加添加WebSsh终端,同时提供输入命令审计功能. 从google上可以了解到xterm.js是一个非常出色的web终端库,包括VSCode很多成熟的产品都使用这个前端库.使用起来也比较简单. 难点是怎么把ssh命令行转换成websocket通讯,来提供Stdin,stdout输出到xterm.js中,接下来就详解技术细节. 全部代码都可以在我的Github.com/dejavuzhou/felix中可以查阅到. 2.知识储备linux下载stdin,stdou和stderr简单概念熟悉Golang官方库golang.org/x/crypto/ssh了解gorilla/websocket的基本用法gin-gonic/gin,当然你也可以使用其他的路由包替代,或者直接使用标准库(前端)websocket(前端)xterm.js3.数据逻辑图Golang堡垒机主要功能就是把SSH协议数据使用websocket协议转发给xterm.js浏览器. 堡垒机Golang服务UML 4.代码实现4.1创建gin Handler func注册gin路由 api.GET("ws/:id", internal.WsSsh) ssh2ws/internal/ws_ssh.go package internalimport ( "bytes" "github.com/dejavuzhou/felix/flx" "github.com/dejavuzhou/felix/models" "github.com/dejavuzhou/felix/utils" "github.com/gin-gonic/gin" "github.com/gorilla/websocket" "github.com/sirupsen/logrus" "net/http" "strconv" "time")var upGrader = websocket.Upgrader{ ReadBufferSize: 1024, WriteBufferSize: 1024 * 1024 * 10, CheckOrigin: func(r *http.Request) bool { return true },}// handle webSocket connection.// first,we establish a ssh connection to ssh server when a webSocket comes;// then we deliver ssh data via ssh connection between browser and ssh server.// That is, read webSocket data from browser (e.g. 'ls' command) and send data to ssh server via ssh connection;// the other hand, read returned ssh data from ssh server and write back to browser via webSocket API.func WsSsh(c *gin.Context) { v, ok := c.Get("user") if !ok { logrus.Error("jwt token can't find auth user") return } userM, ok := v.(*models.User) if !ok { logrus.Error("context user is not a models.User type obj") return } cols, err := strconv.Atoi(c.DefaultQuery("cols", "120")) if wshandleError(c, err) { return } rows, err := strconv.Atoi(c.DefaultQuery("rows", "32")) if wshandleError(c, err) { return } idx, err := parseParamID(c) if wshandleError(c, err) { return } mc, err := models.MachineFind(idx) if wshandleError(c, err) { return } client, err := flx.NewSshClient(mc) if wshandleError(c, err) { return } defer client.Close() startTime := time.Now() ssConn, err := utils.NewSshConn(cols, rows, client) if wshandleError(c, err) { return } defer ssConn.Close() // after configure, the WebSocket is ok. wsConn, err := upGrader.Upgrade(c.Writer, c.Request, nil) if wshandleError(c, err) { return } defer wsConn.Close() quitChan := make(chan bool, 3) var logBuff = new(bytes.Buffer) // most messages are ssh output, not webSocket input go ssConn.ReceiveWsMsg(wsConn, logBuff, quitChan) go ssConn.SendComboOutput(wsConn, quitChan) go ssConn.SessionWait(quitChan) <-quitChan //write logs xtermLog := models.TermLog{ EndTime: time.Now(), StartTime: startTime, UserId: userM.ID, Log: logBuff.String(), MachineId: idx, MachineName: mc.Name, MachineIp: mc.Ip, MachineHost: mc.Host, UserName: userM.Username, } err = xtermLog.Create() if wshandleError(c, err) { return } logrus.Info("websocket finished")}代码详解 ...

May 27, 2019 · 6 min · jiezi

Go语言cryptossh执行远程命令

前言远程执行命令有什么用?为什么要远程执行命令? 如果你只有2,3台服务器需要管理的时候,远程执行命令确实没有没多大作用,你可以登录到每台服务器上去完成各种操作。 当你的服务器大于3台的时候,远程执行的命令的方式就可以大大提高你的生产力了。 如果你有一个可以远程执行命令的工具,那么就可以像操作单台机器那样操作多台机器,机器越多,效率提高的越多。 远程执行命令最常用的方法就是利用 SSH 协议,将命令发送到远程机器上执行,并获取返回结果。 代码连接包含了认证,可以使用 password 或者 sshkey 2种方式来认证。下面的示例为了简单,使用了密码认证的方式来完成连接。 package mainimport ( "fmt" "github.com/mitchellh/go-homedir" "golang.org/x/crypto/ssh" "io/ioutil" "log" "time")func main(){ sshHost := "home.xxx.cn" sshUser := "x" sshPassword := "xxxxxx" sshType := "password"//password 或者 key sshKeyPath := ""//ssh id_rsa.id 路径" sshPort := 22 //创建sshp登陆配置 config := &ssh.ClientConfig{ Timeout: time.Second,//ssh 连接time out 时间一秒钟, 如果ssh验证错误 会在一秒内返回 User: sshUser, HostKeyCallback: ssh.InsecureIgnoreHostKey(), //这个可以, 但是不够安全 //HostKeyCallback: hostKeyCallBackFunc(h.Host), } if sshType == "password" { config.Auth = []ssh.AuthMethod{ssh.Password(sshPassword)} } else { config.Auth = []ssh.AuthMethod{publicKeyAuthFunc(sshKeyPath)} } //dial 获取ssh client addr := fmt.Sprintf("%s:%d", sshHost, sshPort) sshClient, err := ssh.Dial("tcp", addr, config) if err != nil { log.Fatal("创建ssh client 失败",err) } defer sshClient.Close() //创建ssh-session session, err := sshClient.NewSession() if err != nil { log.Fatal("创建ssh session 失败",err) } defer session.Close() //执行远程命令 combo,err := session.CombinedOutput("whoami; cd /; ls -al;echo https://github.com/dejavuzhou/felix") if err != nil { log.Fatal("远程执行cmd 失败",err) } log.Println("命令输出:",string(combo))}func publicKeyAuthFunc(kPath string) ssh.AuthMethod { keyPath, err := homedir.Expand(kPath) if err != nil { log.Fatal("find key's home dir failed", err) } key, err := ioutil.ReadFile(keyPath) if err != nil { log.Fatal("ssh key file read failed", err) } // Create the Signer for this private key. signer, err := ssh.ParsePrivateKey(key) if err != nil { log.Fatal("ssh key signer failed", err) } return ssh.PublicKeys(signer)}代码详解1 配置ssh.ClientConfig建议TimeOut自定义一个比较端的时间自定义HostKeyCallback 如果像简便就使用 ssh.InsecureIgnoreHostKey回调, 这种方式不是很安全publicKeyAuthFunc 如果使用key登陆 就需要着用这个函数量读取id_rsa私钥,当然你可以自定义这个访问让他支持字符串2 ssh.Dial创建ssh客户端拼接字符串得到ssh连接地址,同时不要忘记 defer client.Close() ...

May 21, 2019 · 2 min · jiezi

Golang入门-用一句话说明Go语言的命令

Go命令是管理Go资源的工具安装好Go环境后会内置很多有用的命令工具。 初步的了解一下这些命令的用途,对写代码很有帮助 有一些命令是非常常用的,比如 run、build、get、test、get,有一些命令在使用IDE后很少会用到,IDE代劳了,比如fmt、vet。 下面是常用命令的清单和简单的一句话说明,看看有没有你还没用过的命令吧! 常规用法:`go <命令> [参数]`命令:bug :创建一个bug报告执行完命令后,会用浏览器访问github.com/golang/go 的issue。自动填写一些内容,引导你如何提交一个bug报告 build:编译包以及其依赖最常用的命令之一。默认情况下,会在命令所在目录生成一个当前操作系统对应的可执行文件。安装完整版的Go环境,可以交叉编译其他操作系统的二进制可执行文件 clean:清空对象文件和缓存文件前面提到的build命令和下面的test命令会生成一些文件和目录,clean会清理掉这些文件,包括build命令生成可执行文件 doc:打印包中的文档和标记符打印出包或指定文件的说明文档,加上-all 参数,可以看到包里的所有函数列表和文档。创建一个go文件,写入一下代码 /*这是一个范例*/package mainimport "fmt"//main 主函数func main() { SayHi()}//SayHi 打印字符串Hello worldfunc SayHi() { fmt.Println("Hello world!!")}执行命令 go doc -all -u env :打印出你现在的Go环境信息查看各个go的开发环境参数,忘记GOPATH和GOROOT路径就可以用这个打印出来了 fix:用go的新版本的API更新 go fix [packages]如果你升级了go,担心以前的代码不兼容,那么就可以用 go fix fmt:格式化代码文件go的代码格式标准是唯一的,用go fmt可以格式化代码文件,很多IDE就是调用这个命令来在保存文件时调整格式。 generate:根据指令生成go文件查找当前包相关的源代码文件,找出所有包含”//go:generate”的注释,提取并执行该特殊注释后面的命令,类似shell执行命令。 get :下载和安装go包以及其依赖包的命令go get <包的路径> install:编译和安装包及其依赖包可执行文件会被安装在$GOPATH/bin目录下。 list :列出目录下的所有包和模块,每行一个。 mod :详细内容可以参考文章: 拜拜了,GOPATH君!新版本Golang的包管理入门教程 run : 运行go项目非常常用。它会编译包,然后直接运行起来,不会在当前目录生成二进制文件。 test:运行调试用于运行_text.go文件中的Test开头并且参数为 *testing.T的函数 tool :运行指定的go工具 version:查看当前go版本 vet:查看包中可能出现的错误例如,给整型%d占位符提供一个字符串参数,就会检查出类型错误,但是这个代码编译是不会报错的。 总结这些命令大部分使用起来都很简单,想了解更多可以运行go help [命令名]查看详细说明。 也有一些命令使用起来是需要花点时间学习的,比如 generate、test、mod,如果有想要了解更多关于Go语言开发的同学,可以在评论区或私信告诉我们,一起学习一起讨论。 ...

April 29, 2019 · 1 min · jiezi