GeekTool介绍及Shell模式应用二则(以及df、cal、date、sed的使用)
GeekTool是Mac下的一个桌面应用,用于在桌面上显示指定的文件、图片或脚本运行结果。这里结合简单的ksh代码来实现两个简单应用
一. 显示剩余空间
全面采用固态硬盘的结果是价格的全面提升,为了荷包考虑,叔只买了128G的低配。虽然本着不装游戏不存视频的原则,但有些开发任务需要临时占用几十个G的空间,必须时时关注才不至于运行十几个小时后宣告不治,所以随时知道自己还有多少容量是非常关键的。
但如何才能知道呢?
作为一个深度Linux用户(好吧,事实上我在Linux下通常是要多少空间有多少空间,所以也不太关心剩余的问题……),我通常是打开终端,执行df:
Hiarcs-MBP:~ hiarcs$ df -m
Filesystem 1M-blocks Used Available Capacity iused ifree %iused Mounted on
/dev/disk0s2 114892 66939 47702 59% 17200516 12211852 58% /
devfs 0 0 0 100% 639 0 100% /dev
map -hosts 0 0 0 100% 0 0 100% /net
map auto_home 0 0 0 100% 0 0 100% /home
/dev/disk3s1 60912 16579 44332 28% 4244316 11349154 27% /Volumes/Data
不幸的是,这需要两步操作!幸运的是,利用GeekTool的Shell模式,我们可以把 任何命令的执行结果 周期性的显示在屏幕的任何地方。
打开GeekTool,在Geeklets列表中拖动Shell图标到屏幕指定的位置,这时我们看到一个空白的Shell框,只具备关闭按钮和大小调节柄:
同时出现的还有黑色的Properties窗口(没有出现的话单击空白Shell框),在其中的Command栏填入df -m,可以注意到,密密麻麻的输出立刻出现在Shell框内,革命已成功一半!接下来调整下显示内容和字体即可。
首先是内容,太多太杂,而我只关心主硬盘的剩余空间。其次,大概也没人关心到有几M剩下,用G做单位更合理些。所以,我们对原始的命令作小小的调整,新建一个diskfree.ksh
#!/bin/ksh
set -A array `df -g | grep /dev/disk`
echo Used: ${array[2]}G ' ' Avail: ${array[3]}G ' ' Capacity: ${array[4]}
这段代码还是比较白话的,首先把df的参数改成-g从而实现单位的转换,其次找出设备为/dev/disk开头的行转换为数组,最后选择自己感兴趣的三个元素以特定的格式打印出来。注意grep本身会把外接的存储卡之类同样为disk的设备显示出来,只不过我们只取了前一行的元素罢了。
把Command换成diskfree.ksh的绝对路径,现在显示如下:
Used: 67G Avail: 44G Capacity: 60%
最后,选择大一点的字体和白色的前景色,就能很好的和蓝色的桌面背景搭配了。
至于刷新,可以把Refresh every [ ]s设置成120,也就是两分钟检查一次。Timeout可以随便填,除非是挂载了网络盘,否则这个脚本几乎是瞬间返回的,不需要考虑超时情况。
二. 显示当前日历
原本看日历的方式是四个手指一划,转到桌面小工具的那个页面去看日历控件。后来觉得没啥实用的桌面小工具,干脆就整个把页面给关闭了。这下看日期成了问题,总不能老是去打开Calendar程序吧。同样,解决方式是用GeekTool直接在桌面显示。这次的主角是cal命令,cal的基本输出如下:
Hiarcs-MBP:scripts_ksh hiarcs$ cal六月 2013
日 一 二 三 四 五 六12 3 4 5 6 7 89 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30
问题来了,那么今天是哪天呢?
所以,需要修改原始输出,把当天的日期用括号标示出来。这里我们用到date命令来找到今天的日期:
Hiarcs-MBP:scripts_ksh hiarcs$ date +%d
03
注意,cal的日期里是不带0的,因此我们需要把date的结果去掉前置的0,然后把cal输出中符合当天日期的数字替换掉。新建cal.ksh:
#!/bin/ksh
d=`date +%d | sed -e 's/^0//'`
cal | sed -e 's/^/ /' -e 's/$/ /' -e "s/ $d /\[$d\]/"
这里使用一连串的sed替换来达到目的,这里为了避免错误替换(比如把所有3都替换成[3])首先进行了前置后后置空格的添加。
同样,简单调整格式后,大功告成。
Hiarcs-MBP:scripts_ksh hiarcs$ ./cal.ksh 六月 2013 日 一 二 三 四 五 六 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
刷新时间随便好了,这个命令没啥成本的。
GeekTool介绍及Shell模式应用二则(以及df、cal、date、sed的使用)相关推荐
- 20200928 003.开发环境介绍_交互模式的使用_IDLE介绍和使用
Python 开发环境 开发环境,英文是 IDE( Integrated Development Environment 集成开发环境 ). 不要纠结于使用哪个开发环境.开发环境本质上就是对 Pyth ...
- [python] shell模式下面写for循环
很多时候,我们需要使用shell模式进行一步一步的参考别人的程序,如果是有pycharm,还比较方便,但是假如只有linux平台,那么对于这种交互式的shell,又如何写for循环然后进行调试呢? 网 ...
- Spark之Spark角色介绍及运行模式
Spark之Spark角色介绍及运行模式 集群角色 运行模式 1. 集群模式 从物理部署层面上来看,Spark主要分为两种类型的节点,Master节点和Worker节点: Master节点主要运行集群 ...
- shell编程入门 linux解释器原理,Shell编程入门Linux解释器原理详细介绍 使用Shell进行工作的人们对.doc...
Shell编程入门Linux解释器原理详细介绍 使用Shell进行工作的人们对 Shell编程入门:Linux解释器原理详细介绍使用Shell进行工作的人们对Unix/Linux下的Shell编程都很 ...
- 详细介绍Linux shell脚本系列基础学习(列表)
本系列适合Linux初学者,属于Linux入门级教程,主要介绍了Shell的分类.语法格式以及脚本的使用和编写格式等. 不断更新中,是Shell学习的必读经典教程.现主要包含以下文章: Linux S ...
- Midjourney|文心一格prompt教程[基础篇]:注册使用教程、风格设置、参数介绍、隐私模式等
Midjourney|文心一格prompt教程[基础篇]:注册使用教程.风格设置.参数介绍.隐私模式等 开头讲一下为什么选择Midjourney和文心一格,首先Midjourney功能效果好不多阐述: ...
- 最全介绍的代理模式---第一节-静态代理
一.什么是代理? 其实生活中有很多例子: (1)一件产品,生产出来后,需要代理商来销售它,我们作为客户,会通过代理商来买产品,代理商就是我们的代理对象,产品为被代理对象(目标对象) (2)租房子(中介 ...
- shell中的文本处理(grep、sed、awk命令)
grep 文本过滤命令 sed 行编辑器 awk 报告生成器 一. grep文本过滤命令 全面搜索研究正则表达式并显示出来grep命令是一种强大的文本搜索工具,根据用户指定的"模式" ...
- shell基础---shell中的时间值提取(date)
shell中的时间值提取(date) 方法1 # date +%F # date +%T # cat time.sh #!/bin/bashDATE=`date +%F | sed 's/-//g'` ...
- shell中的时间值提取(date)
shell中的时间值提取(date) 方法1 # date +%F # date +%T # cat time.sh #!/bin/bashDATE=`date +%F | sed 's/-//g'` ...
最新文章
- 工业机器视觉系统相机如何选型?(理论篇—3)
- 接口 500_Yamaha Sonogenic SHS-500肩背键盘 全方位测评
- 院士张钹:AI奇迹短期难再现 深度学习技术潜力已近天花板
- 我的7天=玩2天+窝5天
- 尝鲜Ubuntu Server 12.04 LTS
- word2vec模型的理解
- 对于根号18 利用计算机,一八年级数学题
- IP地址,子网掩码,默认网关,路由,形象生动阐述
- mysql 小雨_Mysql数据库
- HDU 1301 - Jungle Roads( Prim求最小生成树 )
- php 持久化对象,php-对类持久化的引用
- python相对路径-Python中的绝对路劲和相对路径
- 如何取消计算机的自动更新,电脑自动更新如何取消 电脑自动更新取消方法
- C语言数据结构-顺序表的插入与删除(图文详解)
- CSDN账号绑定github(极简办法)
- 用html写游戏,Html5写一个简单的俄罗斯方块小游戏
- android 释放摄像头,android – 为什么Camera需要在onPause()而不是onstop()方法中释放?...
- [BZOJ4199][NOI2015]品酒大会-后缀数组
- MM定理(Modigliani-Miller)证明与图解
- Flutter中的依赖注入——get_it
热门文章
- Spring AOP动态代理的两种实现方式
- H264---H.264/AVC 的各大主流编解码器JM、x264、Xvid、T264、ffmpeg、ffdshow + JMHM源码分析
- 计算机无法启动无法修复工具栏,excel打不开怎么办?使用excel修复工具教程
- PCB生产工艺流程博大精深
- 【计算机网络实验】使用Packet Tracer搭建网络拓扑
- 使用SHFileOperation复制网络(局域网)共享文件夹及子文件
- 和我一起打造个简单搜索之Logstash实时同步建立索引
- 【转】Ubuntu下用G++编译C++程序
- [转]100个经典C语言程序(益智类问题)
- vue项目中使用百度离线地图