windows shell使用指南

windows shell使用指南

终端工具

Fluent Terminal

Fluent Terminal 是是专属于 Windows 平台,利用 UWP 技术打造的颜值超高的终端模拟器,其响应速度仅稍逊于自带的默认 PowerShell 终端,设置是 GUI 方式的,而且功能非常强大,值得推荐。

安装方式:

将Fluent Terminal放到右键菜单

官方脚本链接

下载之后直接执行luentTerminal-master\Explorer Context Menu Integration\Install_with_icon.bat就可以了

hyper

Hyper 是基于 Electron 的跨平台应用,配置方便、插件丰富、界面美丽。当然,避免不了的是 Electron 资源消耗大,但是它们的拓展性都非常强大,可以试一试。

windows terminal

安装方式可以直接从应用商店安装,自定义功能非常强大,不过许多功能需要通过配置文件来完成,上手难度比其它工具略高。

tabby(原名Terminus)

Terminus也是基于 Electron 的跨平台应用,配置方便、插件丰富、界面美丽。当然,避免不了的是 Electron 资源消耗大,但是它们的拓展性都非常强大,值得尝试。

软件包管理工具

chocolatey

管理员打开cmd,执行命令

@"%SystemRoot%\System32\WindowsPowerShell\v1.0\powershell.exe" -NoProfile -InputFormat None -ExecutionPolicy Bypass -Command "iex ((New-Object System.Net.WebClient).DownloadString('https://chocolatey.org/install.ps1'))" && SET "PATH=%PATH%;%ALLUSERSPROFILE%\chocolatey\bin"

软件非常丰富,操作也非常的简单,非常适合懒人玩家使用。

常用命令:

#列出本地已安装的包
choco list --local-only

#列出Windows系统已安装的软件
choco list -li

choco search <keyword>    #搜索软件
choco list <keyword>    #跟 search 命令功能类似
choco install <package1 #package2 package3...>  安装软件
choco install <package>  -version *** #安装指定版本
choco  uninstall name #卸载软件
choco version <package>  #查看安装包的版本情况
choco  upgrade <package>   #更新某个软件 
choco list -localonly        #查看一下所有安装在本地的包的列表
choco list -lo       #功能同上

winget

安装地址:https://github.com/microsoft/winget-cli/releases/

微软官方推出的,目前软件数量还不是特别多,不过以后可能会非常的多,毕竟背靠微软。

scoop

安装方式:

#在 PowerShell 中输入下面内容,保证允许本地脚本的执行:
set-executionpolicy remotesigned -scope currentuser

#然后执行下面的命令安装 Scoop:
Invoke-Expression (New-Object System.Net.WebClient).DownloadString('https://get.scoop.sh')

#或者
iwr -useb get.scoop.sh | iex
  • apps : 软件文件夹,所有非全局安装的软件都在这
    appname/current # 当前软件版本对应的文件夹的软链接,如果你对某个软件设置调用该文件夹下的软件(例如 maven 环境设为 current 目录,那么这个指向的软件永远都会是最新版本)
  • buckets : 软件源文件夹,所有软件的下载地址等元数据都保存在这里,内部文件夹都是由 git 形成的,因此也可以采用 git pull 来更新源。
  • cache :软件安装包所在位置,如果遇到软件下载缓慢的情况,也可以用其他工具下载对应软件,然后修改文件名放置到这个目录下进行安装。
  • persist : 永久配置文件夹,大部分的软件的配置都会存到这个目录下,以保证软件最新版用的都是原来的配置。
  • shims :软件二进制的超链接,基本所有的命令行工具都会在这个文件夹内建立一个超链接,目的是为了防止环境变量 PATH 受到过多污染。
# 帮助
scoop help
# 搜索安卓相关软件
scoop search android
# 安装 git
scoop install git
# 给所有用户安装 git
sudo scoop install git --global # 需要先安装 sudo
# 卸载 git
scoop uninstall git
# 更新所有软件
scoop update *
# 查看 Android Studio 的软件信息
scoop info android-studio
# 删除软件的老版本
scoop cleanup
# 列出已安装的名字中带有 adopt 的软件
scoop list adopt # 不填写则列出所有已安装软件
# 切换软件版本
scoop reset python27

#下载加速
scoop install aria2
scoop config aria2-max-connection-per-server 16
scoop config aria2-split 16
scoop config aria2-min-split-size 1M


# 添加软件源功能依赖于 git,请确保电脑中已经安装 git 并且配置好了环境变量(也可以使用 scoop 安装 git)
# 列出官方已知软件源
scoop bucket known
# 添加额外软件源
scoop bucket add extras # 推荐添加这个软件源,大部分软件都再这个源里
# 添加官方未知软件源
scoop bucket add name gitrepo # name 处填写自定义的名字,gitrepo 处填写 git 地址

scoop的软件数量取决于自己配置的仓库,它有非常高的定制性,更适合进阶玩家使用。

linux命令配置

git

需要安装 Git,PATH 中除了 git 所需的 GitGit\cmd 之外,额外加入 Git\usr\bin 就可以了

busybox

直接使用安装包管理工具安装,例如:

choco install busybox

目前正在更新,但是使用每一个命令时都需要添加一个busybox,这一点不是很方便,想要使用的话,可以配置软连接

for %%i in (ar, arch, ash, awk, base64, basename, bash, bunzip2, bzcat, bzip2, cal, cat, chmod, cksum, ^
        clear, cmp, comm, cp, cpio, cut, date, dc, dd, df, diff, dirname, dos2unix, dpkg, dpkg-deb, du, echo, ed,^
        egrep, env, expand, expr, factor, false, fgrep, find, fold, fsync, ftpget, ftpput, getopt, grep, groups,^
        gunzip, gzip, hd, head, hexdump, iconv, id, ipcalc, kill, killall, less, link, ln, logname, ls, lzcat, lzma,^
        lzop, lzopcat, man, md5sum, mkdir, mktemp, mv, nc, nl, od, paste, patch, pgrep, pidof, pipe_progress, pkill,^
        printenv, printf, ps, pwd, readlink, realpath, reset, rev, rm, rmdir, rpm, rpm2cpio, sed, seq, sh, sha1sum,^
        sha256sum, sha3sum, sha512sum, shred, shuf, sleep, sort, split, ssl_client, stat, strings, su, sum, tac, tail,^
        tar, tee, test, timeout, touch, tr, true, truncate, ts, ttysize, uname, uncompress, unexpand, uniq, unix2dos,^
        unlink, unlzma, unlzop, unxz, unzip, usleep, uudecode, uuencode, vi, watch, wc, wget, which, whoami, whois,^
        xargs, xxd, xz, xzcat, yes, zcat)^
do mklink C:\Windows\System32\%%i.exe C:\Windows\System32\busybox.exe

gow 和 unxutils

好处是每一个命令都是独立的小工具,但是已经好久不更新了,不推荐使用

安装常用工具

choco install gsudo
choco install winfetch
choco install colortool
choco install fd
choco install fzf
choco install zoxide
choco install bottom
choco install lsd
choco install neovim

工具使用

zoxide使用

zoxide的使用需要在powershell中进行配置

#打开配置文件
notepad $PROFILE
#在文件中添加内容

Invoke-Expression (& {
    $hook = if ($PSVersionTable.PSVersion.Major -lt 6) { 'prompt' } else { 'pwd' }
    (zoxide init --hook $hook powershell) -join "`n"
})

FZF使用

可以搭配zoxide中的zi命令进行使用,快速找到常用命令

Ctrl-T 快速选择当前目录文件,并把文件名打印出来
Ctrl-R 使用fzf来过滤history命令
ALT-C 进入选中的目录

lsd使用

lsd命令可以替换powershell中的ls命令

#打开配置文件
notepad $PROFILE
#在文件中添加内容

Remove-Item alias:\ls
Set-Alias ls lsd
function getlist {lsd -l}
Set-Alias ll getlist

nvim

#windows 用户配置文件在~\AppData\Local\nvim下面的init.vim文件,没有手动建一个
#具体配置可以自己查询
#可以给nvim起一个别名
Set-Alias vim nvim

powershell美化

背景主题

Fluent Terminal可以直接利用自带的主题功能自己配置颜色,简单而且自定义程度高,懒得自己配置的话也可以导入iterm2里面的主题,直接导入 schemes 中的主题即可。

或者可以使用colortools管理终端主题

安装方式

choco install colortools

使用方式

colortool -s  #显示所有可用方案
colortool -c  #显示当前的色彩方案
colortool -b OneHalfDark  #修改主题方案,可以是默认方案,也可以是iterm2方案
ColorTool -b .\DimmedMonokai.itermcolors

背景图片,透明度之类的也可以在Fluent Terminal中自己设置。

PowerShell 的提示符

oh-my-posh

官方文档

choco install oh-my-posh
#安装好之后,使用管理员身份打开p
#绕过power shell执行策略,使其可以执行脚本文件<后面会用到>
Set-ExecutionPolicy Bypass
#oh-my-posh提供主题
Install-Module oh-my-posh -Scope CurrentUser
#posh-git将git信息添加到提示中
Install-Module posh-git -Scope CurrentUser


#启动编辑power shell配置文件的引擎
if (!(Test-Path -Path $PROFILE )) { New-Item -Type File -Path $PROFILE -Force }
#使用记事本打开配置文件
notepad $PROFILE

#在打开的记事本中写入如下内容(脚本文件),并保存
Import-Module posh-git
Import-Module oh-my-posh
Set-PoshPrompt -Theme JanDeDobbeleer

#该命令可以查看预装的主题,然后修改配置
Get-PoshThemes
notepad $PROFILE
. $PROFILE

starship

starship的官方文档和下载地址

#安装starship
choco install starship
#添加内容
Invoke-Expression (&starship init powershell)

#设置配置
mkdir -p ~/.config && touch ~/.config/starship.toml

安装字体

地址:https://www.nerdfonts.com/font-downloads

从这上面下载字体,需要下载Nerd字体,推荐DejaVuSansMono

中文乱码问题

打开 控制面板—>区域—>管理—>更改系统区域设置,然后勾选:使用Unicode UTF-8提供全球语音支持

就可以全局使用utf8了,这是可以在终端查看chcp,出现的是65001就代表使用的是utf-8的格式。

但是我发现这样依然存在问题,例如在执行重定向输出时:

ls > a.txt

输入的文件格式并不是utf-8的,然后从网上找到一个方法,可以在配置文件中添加配置让输出的文件格式为utf-8,

$PSDefaultParameterValues['Out-File:Encoding'] = 'utf8' #(带有BOM的UTF8)

但是由于powershell 强制使用带有BOM的UTF8,所以依然会出现问题,这个我在powershell5上没有找到结解决办法,不过想使用正常的UTF-8,可以使用powershell7,powershell7默认使用的是无BOM的UTF8,功能也更加强大。

powershell 自动补全

使用过zsh中的 autosuggestions 之后就回不去了,希望可以在powershell实现,然后发现了大神的解决办法,参考https://www.brothereye.cn/windows/797/。

此功能由 PowerShell/PSReadLine issue 687: Fish-like autocompletion 发起讨论,并在 issue 1468: Predictive IntelliSense 中得到实现,有时间的伙伴可以点击链接去查看作者的解答,我这里简述下 1468 中完成的功能:1. 完成提示和补全历史命令;2. 增加动态提示函数以及参数。

PSReadLine 更新到 2.1.0-beta1 以上即可:

Install-Module -Name PowerShellGet -Force  # 升级 PSGEt
Install-Module -Name PSReadLine -AllowPrerelease -Force  # 升级 PSReadLine
Get-PSReadLineOption  # 显示所有可以配置的选项
Get-PSReadLineKeyHandler  # 显示所有可以配置的快捷键
#之后在配置文件中通过 Set-PSReadLineOption 和 Set-PSReadlineKeyHandler 可以进行配置。

然后需要配置$PROFILE

具体配置方法可以参考微软官方的回答

Set-PSReadLineKeyHandler -Key "Ctrl+d" -Function MenuComplete
Set-PSReadLineKeyHandler -Key "Ctrl+f" -Function ForwardWord
Set-PSReadLineKeyHandler -Key "Ctrl+b" -Function BackwardWord
Set-PSReadLineKeyHandler -Key "Ctrl+z" -Function Undo
Set-PSReadLineKeyHandler -Key UpArrow -Function HistorySearchBackward
Set-PSReadLineKeyHandler -Key DownArrow -Function HistorySearchForward

Set-PSReadLineOption -Colors @{ "InlinePrediction" = '#2F7004'}

SSH配置

fluent terminal ssh认证

利用ssh命令生成密钥

ssh-keygen -t rsa

生成公钥id_rsa.pub需要放到服务器上,和私钥id_rsa需要放到自己的主机上

将公钥放到~/.ssh/目录下,并命名为authorized_keys

然后设置服务端支持密钥登录

sudo vim /etc/ssh/sshd_config  

RSAAuthentication yes
PubkeyAuthentication yes

#设置root用户可以登录 
PermitRootLogin yes

#重启ssh
service sshd restart

配置scp免密传输

vim ~/.ssh/config

#配置文件内容
Host servername           # 别名,域名缩写
    HostName sever.com        # 域名/IP
    User username             # 登录该域名使用的账号名
    Port 22                   #端口
    IdentityFile ~/.ssh/id_rsa # 私钥文件的路径


chmod 600 config

配置好之后可能会发生错错误

遇到报错:Bad owner or permissions on C:\Users\xxx/.ssh/config ,

参考链接

禁用config的继承关系并修改权限为自己用户的完全控制,修改后如下图所示

image-20210918091848472

然后利用scp复制文件的时候就可以用如下命令

image-20210918092430031

安装sshfs

参考文档 https://www.cnblogs.com/xieqk/p/ssh-sshfs-win-mount-winfsp-dokan.html

参控链接

https://www.brothereye.cn/windows/797/

https://coolcode.org/2018/03/16/how-to-make-your-powershell-beautiful/#Windows-10-控制台的颜色设置

https://www.pstips.net/powershell-online-tutorials

posted @ 2021-09-20 21:28  tomyyyyy  阅读(1280)  评论(0编辑  收藏  举报