工作时间越长,越会发现bash自动化脚本的实用性和好处。如果bash用得好,在提高工作效率上,说“积聚成江海”也不为过。今天分享一些bash常用工具。前提条件本文提到的所有命令仅在MacOS系统上测试使用。同时写入~/.bash_profile然后source~/.bash_profile来更新应用(有的也可能是.bashrc)。为了省事,我直接给打开编译bash_profile的命令起别名。BASH_PROFILE_PATH="$HOME/.bash_profile"aliasbash.open="open${BASH_PROFILE_PATH}"aliasbash.src="source${BASH_PROFILE_PATH}"复制代码practicalaliasaliasbash的alias别名可以说是我用的最多的是Function,在我的理解中,它看起来就是一个简单的函数,内部结合了一些繁琐的逻辑过程,对外只暴露了一个优雅的别名。1、在Git系列的实际开发中,来来回回只有几个常用的git命令。既然熟记于心,何必一遍又一遍地输入命令来浪费时间呢?以下是我经常使用的别名。aliasg="git"aliasgb="gitbranch"aliasga="gitadd"aliasgaa="gitadd".aliasgap="gitadd-p"aliasgs="gitstatus"aliasgco="gitcheckout"aliasgcp="gitcherry-pick"aliasgcm="gitcommit-m"aliasgcma="gitcommit--amend"aliasgcl="gitclone"aliasglo="gitlog"aliasglog="gitlog--graph--oneline"aliasglol="gitlog--oneline"aliasgdif="gitdiffHEAD^HEAD"复制几个字符的代码,在命令行查看、提交、比较等Git项目.2.工作流系列中经常打开的应用程序和切换的目录可以写成别名以节省时间。aliasvscode='open-a/Applications/Visual\Studio\Code.app/'aliascd.desk="cd~/Desktop"aliascd.byte="cd~/Desktop/Bytedance"aliascd.nginx="cd/usr/local/etc/nginx"aliasip="ifconfig|grep-oE'inet.*netmask'|grep-oE'(\d+.){3}\d+'|sed-n2p"复制代码即可在vscode中安装“代码”命令。超实用的bash自定义脚本,分分钟提升工作效率,让你在命令行用vscode快速打开项目。codePROJECT复制代码3,工具系列Fixtreechineseencodealiastree="tree-N"Fixstattodefaultverbosealiasstat="stat-x"更好的方法lsaliasll="exa-lhaBgb--git"Copypwdtoclipboardaliaspwd.cp="pwd|pbcopy"复制代码这里需要注意的是,macOS下需要手动安装tree和exa命令。brewinstalltr??eebrewinstallexa复制代码树的效果如下:超级实用的bash自定义脚本,分分钟提升工作效率工作路径的裁剪和切换就不多说了,挺实用的。mkcd(){mkdir-p$1&&cd"./$1"}复制代码2.快速查看IP快速查看本机ip地址,并自动复制到剪贴板。别名ip="ifconfig|grep-oE'inet.*netmask'|grep-oE'(\d+.){3}\d+'|sed-n2p"ipl(){IP=$(ip)echo$知识产权|pbcopyecho"localIPaddress:$IP"}复制代码3.快速查看磁盘空间,速度非常快。ds(){echo"DiskSpaceUtilizationFor$HOSTNAME"df-h}复制代码4.计算需要手动安装ggrep的汉字个数。countHan(){ggrep-roP'[\p{Han}]'$1}复制代码5.定时切换Git分支切换分支时不想输入分支全名怎么办?偷懒的方法当然是通过写正则表达式来切换。gcof(){REGEX=$1TARGET="$(gbranch|grep-E$REGEX|grep-vx"*.*"|head-n1|tr-d'[:space:]')"if[[-z$TARGET]];然后echo"使用正则表达式'$REGEX'匹配null"elseecho"使用正则表达式'$REGEX'匹配分支'$TARGET'"read-p"Areyousuretocheckoutbranch'$TARGET'[Y/N]"-n1-secho#打印空行if[[$REPLY=~^[Yy]$]];然后gitcheckout$TARGETelseecho"Stillonoriginalbranch"fifi}建议大家体验一下,很优雅~修改命令行提示符,在~/.bash_profile或~/.bashrc中设置命令行提示符。PS1='\033[0;32m][\033[0m]\w$'exportPS1copycode如果有人问我自定义提示有什么用?当然是因为好玩。环境变量在vscode中设置环境变量VSCODE,然后读取.bash_profile中的变量,根据这个变量设置不同的命令行提示。执行.profile文件并读取其中的环境变量if[-f~/.profile];然后。~/.profilefi如果环境变量匹配,则重置提示if[[$VSCODE=='sulirc@vscode']];然后echo"Ahchoo~~$USER,欢迎来到vscode终端!(?°???°)?";回声“”;PS1='\w$'fi抄码方便脚本合集1.快速查词grep-i'^c..fu..r$'/usr/share/dict/words抄码2.快速清空文件非常方便使用重定向输出来快速清除文件。filename.txt复制代码3.设置脚本可执行权限对于脚本文件,常见的权限设置有两种:权限为755的脚本,所有人都可以执行,权限为700的脚本,只有文件拥有者才能执行。请注意,为了能够执行脚本,脚本必须是可读的。chmod755script.sh复制代码当然,其实你需要对chmod命令有更深入的了解,比如ugo分组,rwx权限等,才能细粒度的使用。4.忽略标准输出错误deartrashcan/dev/null$non-exist-command2>/dev/nullcopycodevim配置修改~/.vimrc用于vim格式化配置。:syntaxon:sethlsearch:settabstop=4:setautoindent复制代码,这样在vim中也可以进行语法高亮,编辑bash时可以启用自动缩进。超实用的bash自定义脚本,分分钟提升工作效率。掌握循环、判断、函数、组合表达式、正则表达式等bash的基本原理,不是一蹴而就的。多练习,多思考,经常查看手册,你的技能就会慢下来。它会慢慢提高,然后你会发现你以前认为很神奇的bash脚本阅读起来并不太容易。
