Tag Archives: Linux

十行代码实现命令行书签

路径书签/别名,用来给目录取个名字,要用时快速跳转,它不是用来代替:z.lua / z.sh / autojump 这类第一梯队的 cd 辅助工具的,而是作为他们的一个补充。 先前我想找个现成的路径书签的小插件,找到这个:pm 把现有目录添加成书签要: pm add my-project 跳到这个书签对应的目录要: pm go my-project 然后列出所有书签要: pm list 删除书签要: pm remove my-project 我又看了好几个书签软件,都大同小异,又难用,实现又啰嗦,这玩意儿居然写出 500 行以上的代码来,真是匪夷所思。所以我打算用十行代码实现一个更优雅的书签功能。 目标1:少打字 同样一个功能多打一个字母,做一千次就多打了 1K 的内容,能省则省,我不明白为什么这些插件做的都那么啰嗦,输入完命令名还得再输入 add/remove/go/list 之一的参数,然后才是书签名,要我来做,我会把命令名起短一点,比如叫做 m : m # 列出当前所有书签 m foo … Continue reading

Loading

Posted in 编程技术 | Tagged , | Leave a comment

千万别混淆 Bash/Zsh 的四种运行模式

Bash/Zsh 有四种不同运行模式,你的 bash 配置写错地方的话,不但会拖慢 bash 的速度,还会发生明明写了登陆配置但是就是没生效的情况。 第一个维度:interactive mode / non-interactive mode Bash 的 交互模式(interactive mode) 是指你直接输入: bash 以后 bash 出现一个 “$>” 的 PROMPT,等待用户不断的输入指令,输入 “exit” 或者按了 CTRL+D 才会结束。你 ssh 登陆到一台电脑,或者命令行下面打 bash ,后面没有参数的话,进入的都是交互模式。 而 非交互模式(non-interactive mode) 是指你用 bash 运行一个命令或者脚本,运行完 bash 就退出那种: bash … Continue reading

Loading

Posted in 随笔 | Tagged , | Leave a comment

自带语法高亮的 cat – ccat

cat 源代码时如果带上语法高亮,会不会让工作效率更高一些呢?我们来做一个吧: function ccat() { local style=”monokai” if [ $# -eq 0 ]; then pygmentize -P style=$style -P tabsize=4 -f terminal256 -g else for NAME in $@; do pygmentize -P style=$style -P tabsize=4 -f terminal256 -g “$NAME” done fi } … Continue reading

Loading

Posted in 随笔 | Tagged , | Leave a comment

Nano 编辑器可以做些什么?

终端下如果你不喜欢 Vim/Emacs 的话,Nano 是一个不错的选择,它是一个真正意义上的跨平台编辑器,基本上在所有 Linux 发行版上都默认自带 Nano,并且有 Windows 版本。 不少初学 Linux 都很喜欢用 Nano,但是我发现他们很多都是在裸用,既没配置,也一直在用一些比较低效的操作方法。 Q:下面的帮助占三行,很碍眼,能否隐藏? 可以在编辑时使用 ALT+x 就可以切换下面的帮助信息,或者在你的 ~/.nanorc 里面加一行: set nohelp 效果如下图: 恩,那两行恶心的帮助已经被我们去掉了,需要时还可以用 ALT+x 把它切换回来。 Q:如何打开语法高亮? 有的 Linux 发行版自带了 /etc/nanorc 文件,里面定义了语法高亮,而另外一些系统可能没有这个定义,你需要在 ~/.nanorc 中加一行: include “/usr/share/nano/*.nanorc” 各种语言的语法文件一般位于:/usr/share/nano/ 下面,设置前先确认一下。 Q:怎么编辑 ~/.nanorc,常用设置有哪些? 常见的 … Continue reading

Loading

Posted in 随笔 | Tagged , | Leave a comment

Bash 中文速查表/Cheatsheet (全网最全)

Bash 的知识点向来比较凌乱,有时候写点小脚本,你忘记了条件判断怎么写了,就打开网页搜索一半天;忘记怎么分割字符串,又搜索一半天;忘了怎么解压缩某后缀名,又打开网页搜一半天。 关键大部分搜出来的东西都十分琐碎,东一处,西一处,质量又参差不齐,而且看到一处有些细节有疑问,你还得接着搜索。 连记点笔记也是这一篇那一篇的,用起来找来找去的十分不爽,所以我一怒之下春节期间整理了一份 bash 的 cheatsheet,以图以后有关于 bash 的事情就查看这个文件就够了: https://github.com/skywind3000/awesome-cheatsheets/blob/master/languages/bash.sh 对于一些工具性的东西,有时候一份速查表比你翻书查网页都高效数倍。 — 相关阅读: 韦易笑:有哪些命令行的软件堪称神器? 终端调试哪家强? 为什么说 zsh 是 shell 中的极品?

Loading

Posted in 随笔 | Tagged | Leave a comment

GDB 从裸奔到穿戴整齐

无数次被问道:你在终端下怎么调试更高效?或者怎么在 Vim 里调试?好吧,今天统一回答下,我从来不在 vim 里调试,因为它还不成熟。那除了命令行 GDB 裸奔以外,终端下还有没有更高效的方法?能够让我事半功倍? 当然有,选择恰当的工具和方法,让 GDB 调试效率成倍的提升并没有任何问题。当然,前提条件是你至少会在使用最原始的 GDB。 裸奔状态:原始的 GDB 命令行 穿上各种衣服前,至少得先学会裸奔,找份简单的 GDB cheat sheet 对照一下: 生产环境中出现崩溃时,因线上服务器一般没有开发环境,也无配套源代码,所以程序崩溃后,如果你懒得把 core 文件拖回到开发机检查,可以先在线上服务器先简单gdb看一下。 GDB命令密密麻麻,常用的也就表格上那几条,比如进去以后第一步先用 bt 查看一下调用栈,info local查看一下本地变量,再配合 up/down 在整个调用栈的不同层次之间上下移动一下,检查各处局部变量的值,print 一下某个表达式,即便没代码,看下符号和反汇编,一般也能调试个七七八八。 碰到复杂点的 BUG,必须配合源代码了,那你得把 core 文件拉到开发环境中,再用 gdb 对照源代码调试,配合 list [行号] 指令查看当前运行的源代码,再配合其他方法进行调试。 那么这时候,如果调试复杂度继续上升,你需要不断的断点,每次 next … Continue reading

Loading

Posted in 随笔 | Tagged | 1 Comment

Aix 折腾手记

早年开发工作主要在 FreeBSD 进行,2006 年后来切换到 Linux下,期间穿插使用了一下 Solaris,所以我的网络库一直都是只支持这三个系统。为了让网络库支持更多平台,网上购置了一台 IBM AIX 小型机,因为其他大部分非 Linux 系统,今天基本都可以在虚拟机里面安装了,而 AIX 系统,你真的没法虚拟。 弄了几天以后,发现真他妈的麻烦,强大是强大,但是真的太琐碎了,相比之下,Linux/FreeBSD 之流基本是傻瓜了。不看说明直接操作 AIX 的话,可能连开机都麻烦,或者关机没关对,下次直接启动不了。 文字终端就没什么好拍的了,先上一张图形桌面的靓照吧: 是的你没看错,这就是 AIX 7,2012 年的操作系统,就是那么的霸道,四处透着古典 Unix 的味道。这样的机器今天还跑在各大银行的机房里,AIX 系统管理员也拿着比 Linux 系统管理员多几倍的工资,虽然工作岗位比较稀少。 下面来感受一下你想正常开关机,安装软件的话要怎么弄:

Loading

Posted in 随笔 | Tagged | 1 Comment

Linux 网桥设置

在公司机房的物理机上架设 KVM虚拟化的时候,经常需要配置网桥,先要安装网桥工具: apt-get install bridge-utils apt-get install uml-utilities 编辑 /etc/network/interfaces,参考下面配置加入网桥配置信息: auto lo iface lo inet loopback auto eth0 iface eth0 inet manual auto br0 iface br0 inet static address 192.168.10.6 netmask 255.255.255.0 network 192.168.10.0 broadcast 192.168.10.255 dns-search dell1 bridge_ports eth0 … Continue reading

Loading

Posted in 随笔 | Tagged | Leave a comment