LiveCoding 第八期 — 把命令行用「飞」起来 by 柴锋

公开课 · hkliya · 于 发布 · 最后由 TaylorChen回复 · 2031 次阅读
1

终端用得好,不仅逼格高,带来的效率提升才是最是可观。
数次鼠标点击才能完成的事情,通过一条命令就能完成,节省出来的时间去帮妹子修电脑不好吗?
如果你对命令行的理解还停留在 Windows CMD 窗口,是时候更新一下了,看看大神是怎么玩转 Terminal 的。

前不久在上海跟柴叔学习 Ansible,被柴叔的 Shell 技能和 Terminal 的各种技巧震惊了。
约了好久,柴叔终于在出差百忙之中挤出时间来我们社区分享了。

话题简介

本次分享包括:

  • 命令行下的各类常用快捷键
  • 写 Shell 脚本的经验
  • Zsh/Bash 各种奇技淫巧

讲师简介


柴锋是一位来自 Odd-e 的程序员、团队技术教练。
有超过十年的软件研发经验,在 Unix/Linux、自动化运维、跨平台自动化测试、持续集成上也有着丰富的经验。
从事过软件开发、技术管理和咨询等各种与开发相关工作。
兴趣爱好广泛,爱读书爱幻想,擅长跑题。喜好研究各种计算机相关技术,偏爱 Unix 文化。
热衷于组织技术社区活动,也是 QClub、AgileTour、CodeRetreat 等等技术社区的组织者,同时也在 QCon、ChinaTest、AgileTour 等技术大会上有过多个分享。

从2013年起,他作为 Odd-e 的团队技术教练,开始帮助不同行业的公司和团队更好的实施各种优秀工程实践,比如:持续集成、TDD、单元测试、重构、实例化需求等,以提高团队以及个人的开发效率。涉及的行业有金融、保险、电信、证券、医疗、互联网、教育、政府等,涉及的应用系统有行业应用、短信网关、嵌入式应用、Web 及移动应用等。

活动时间

3 月 23 日 22:00 - 23:00

参与方式

关注公众号并发送消息「学习」加入学习群。

相关文章

「What the fuck」妈妈再也不用担心我敲错命令了
看脸的时代,花十分钟提高终端的颜值吧
有了 tldr,妈妈再也不用担心我记不住命令了
别再用 CD 切换目录了
使用 tmux + teamocil 快速启动你的 services
Mac 让 iTerm2 记住用户名密码 expect 脚本
懒程序员和他的 dotfiles


「软件匠艺社区」旨在传播匠艺精神,通过分享好的「工作方式」和「习惯」以帮助程序员更加快乐高效地编程。
共收到 11 条回复
96

今晚我演示的主要环境是 Mac OS X 10.11.4, Terminal.app, iTerm 2.9.20160313, zsh 5.2, GNU bash 4.3.42

在我这里发现,ITerm2 和 Keycastr 有冲突。使用 iTerm2 的时候,Keycastr 会失效。所以今晚会主要用 Terminal,但是也会介绍一些 iTerm2 里面比较好用的几个技巧。

使用 Mac 的朋友们,可以提前准备一下,这样就会少遇到『为什么我这里不行?』的问题了。

当然了,绝大多数的内容都不和 Mac 相关,使用 Linux 的朋友,就用默认的终端应用就可以。

使用 zsh 的用户,建议使用 Oh my zsh 这个配置 http://ohmyz.sh/

使用 Windows 的朋友,建议安装一个 Debian 或者 Ubuntu 的虚拟机,并且提前下载好 PuTTY http://www.chiark.greenend.org.uk/~sgtatham/putty/

Windows 用户也可以安装 Cygwin。只是这些会和 Unix/BSD/Linux 上的 Bash Shell 略微有一些兼容性的问题。

Mac 用户,如果没安装过 Homebrew,强烈建议去 https://brew.sh 来安装,并且安装时千万不能使用 sudo 命令或者切换到 root 用户下!!!如果已经使用 root 权限安装过 Homebrew,建议卸载后重新安装。

在直播时,我提到的有:
pv
tee
nc
pgrep
brew
peco
ack-grep
cowsay/cowthink/figlet/toilet
pbcopy/pbpaste
parallel, https://www.youtube.com/playlist?list=PL284C9FF2488BC6D1
mktemp
xargs
oh my zsh
cliclick
wine/CrossOver
配色 http://ethanschoonover.com/solarized
en.wikipedia.org/wiki/Shebang_(Unix)

与 zsh 相关的内容有
alias -s jar='java -jar' 就可以让你直接执行 jar 文件,同理 alias -s txt='vim' 等等
Alt-q 可以暂存当前命令,并清空命令行
Ctrl-Space 开启标记模式,选择后,Alt-w 剪切,Ctrl-y 粘贴
cd -<TAB> 可以自动补全目录历史列表
d 可以列出目录历史列表,直接用数字就可以跳转过去
r foo=bar 把上一个命令里的所有 foo 替换为 bar
=cmd<TAB> 把 cmd 命令的完整路径补全
ls */.xml 递归找到当前目录及其所有子目录里的 xml 文件
/u/l/bin 目录名的缩写自动补全,或许这个会补全为 /usr/local/bin

与 Bash/Zsh 相关的内容有
Ctrl-r 反向搜索命令历史
Ctrl-a/e/f/b/d/h, Alt-f/b/d ... 各种移动和删除快捷键,这些快捷键在 Mac 下的绝大多数应用里都是可以直接用的,只是按单词跳转变为 Ctrl-Alt-f/b
2>/dev/null 重定向错误输出
2>&1 把错误输入重定向到标准输出
Alt-. 补全上一个命令的最后一个参数
Ctrl-[ 绝大多数情况下就是 ESC 键
两个大写的 ZZ 可以快速保存退出 vim
bash -r 限制模式的 Bash
EDITOR 环境变量
Ctrl-x Ctrl-e 调用 EDITOR 来编辑当前命令行

刚才想到的
wait_on/inotifywait/inotifywatch
http://asciinema.org
byobu
xterm/xterm-256color/vt100/... 这些有啥区别?

96
joostshao · #2 ·

群已经满了,希望能够邀请我加入.

1
hkliya · #3 ·

#2楼 @joostshao 请加下我微信 seabornlee。

351
abbey · #4 ·

我一直活在Microsoft的世界里,从以前的MS-DOS到现在的CMD、PowerShell。但多数时间仍旧是花费在VS这样的IDE里,命令行的使用是越来越少。最近我开始学习Scala,于是Maven等一些工具也开始纳入学习的范畴。但我在网上找到的教程、资料,多数是在Linux下的命令行完成的。我尽管有一点点Linux的使用经验,但要在Windows下完成同样的工作,总感觉格格不入。所以希望,如果可以的话,给我一点Windows下使用Shell的方向性指引,比如有哪些比较著名的网站或者文档,诸如此类的。谢谢!

96
chaifeng · #5 ·

#4楼 @abbey 我用 Windows 的时间其实是比较少的,之前我会安装 Cygwin、GNU Win32 这些。并且把这些工具的路径都添加的 PATH 环境变量里。虽然工具或者命令都有了,但是当时没有发现很好用的 Terminal。最近我发现新版的 Git for Windows、Cygwin 的终端比之前好很多,起码在使用习惯上能贴近 Unix 的感觉了。但 Windows 下的 Powershell,我一直都没适应过来,这个我就不建议了。一旦你选择好一个 Windows 下的 Shell 环境,不管是 Cygwin 还是 GNU Win32 还是 MingW32。你就可以去找这些 *nix 下的 Bash 相关资源了,不用刻意去找 Windows 上的 Bash 资源。

如果说要推荐什么专门的书或者网站,虽然我也看了《Unix Shells by Example》,但是感觉没什么特别有用。我建议的学习方法就是,在命令后面加上 --help 或者 -h 选项或者用 man 命令来看帮助文档。如果对于选项不太理解,就去 Google 上搜索命令和特定的选项。

我感觉,很多人觉得命令行不好用不会用,就是不知道如何看帮助文档。

108
tomyli · #6 ·

有视频吗?没有赶上直播。。。

340

#4楼 @abbey 前两天在开发者头条上留意到了这个,可能对你有帮助。
http://www.jeffjade.com/2016/01/13/2016-01-13-windows-software-cmder/?hmsr=toutiao.io&utm_medium=toutiao.io&utm_source=toutiao.io
“推荐一下babun,也是windows下的命令行工具,自带了oh-my-zsh这么逆天的存在” 评论区第一条提到的也可以看一下。

532
guanhui07 · #8 ·

很赞~(≧▽≦)/~

1
hkliya · #9 ·

#6楼 @tomyli 视频已更新。

108
tomyli · #10 ·

#9楼 @hkliya 谢谢,已学习,受益匪浅!

96

有微信群吗?

需要 登录 后回复方可回复, 如果你还没有账号你可以 注册 一个帐号。