org-mode有趣的事

数据格式化(:wrap)

json格式化

#+BEGIN_SRC sh :results code :wrap SRC js :exports both
  curl http://httpbin.org/get
#+END_SRC

#+RESULTS:
#+BEGIN_SRC js
{
  "args": {},
  "headers": {
    "Accept": "*/*",
    "Connection": "close",
    "Host": "httpbin.org",
    "User-Agent": "curl/7.47.0"
  },
  "origin": "180.167.20.58",
  "url": "http://httpbin.org/get"
}
#+END_SRC

其他格式化

#+BEGIN_SRC sh :wrap QUOTE :results raw :exports both
  date
#+END_SRC

#+RESULTS:
#+BEGIN_QUOTE
Fri Nov  3 23:05:34 CST 2017
#+END_QUOTE

变量设置在Header中

** 变量设置在Header中
   :PROPERTIES:
   :ID:       d7b197d7-f925-47b7-bcc0-37e182761619
   :header-args:shell: :var host="google.com" :results pp :session brantou :exports both
   :END:
   #+BEGIN_SRC shell
     ping $host -c 2
   #+END_SRC

   #+RESULTS:
   :
   : $ PING google.com (192.168.83.230) 56(84) bytes of data.
   : 64 bytes from 192.168.83.230: icmp_seq=1 ttl=128 time=9.60 ms
   : 64 bytes from 192.168.83.230: icmp_seq=2 ttl=128 time=25.4 ms
   :
   : --- google.com ping statistics ---
   : packet loss, time 1001ms
   : rtt min/avg/max/mdev = 9.609/17.508/25.408/7.900 ms

   覆盖变量 *host* 和 *session* 置为空!
   #+BEGIN_SRC shell :var host="baidu.com" :session none
     ping $host -c 2
   #+END_SRC

   #+RESULTS:
   : PING baidu.com (111.13.101.208) 56(84) bytes of data.
   : 64 bytes from 111.13.101.208: icmp_seq=1 ttl=128 time=35.5 ms
   : 64 bytes from 111.13.101.208: icmp_seq=2 ttl=128 time=49.2 ms
   :
   : --- baidu.com ping statistics ---
   : 2 packets transmitted, 2 received, 0% packet loss, time 1002ms
   : rtt min/avg/max/mdev = 35.517/42.361/49.206/6.847 ms

结果的预处理(:post)

#+NAME: img_wrap
#+BEGIN_SRC python :var img_path="" :results output
  img_path=img_path.replace('[[file:..', '').replace(']]', '')
  print('<img src="'+img_path+'" />')
#+END_SRC

#+HEADER: :file ../images/devOps/just-try-post.png :exports both
#+BEGIN_SRC plantuml :mkdirp yes :post img_wrap(img_path=*this*) :wrap EXPORT html
  @startuml
  cli -> serv:  auth req
  serv --> cli: auth res
  @enduml
#+END_SRC

#+RESULTS:
#+BEGIN_EXPORT html
<img src="/images/devOps/just-try-post.png" />
#+END_EXPORT

noweb的引用(:noweb-ref)

#+HEADER: :tangle ../src/devOps/noweb_ref.sh :mkdirp yes
#+BEGIN_SRC shell :noweb yes :shebang #!/bin/sh
  <<fullest-disk>>
#+END_SRC

** the mount point of the fullest disk
   :PROPERTIES:
   :header-args:shell: :noweb-ref fullest-disk
   :END:

*** query all mounted disks
    #+BEGIN_SRC shell
        df \
    #+END_SRC
*** strip the header row
    #+BEGIN_SRC shell
        |sed '1d' \
    #+END_SRC
*** sort by the percent full
    #+BEGIN_SRC shell
        |awk '{print $5 " " $6}' | sort -n | tail -1 \
    #+END_SRC
*** extract the mount point
    #+BEGIN_SRC shell
      |awk '{print $2}'
    #+END_SRC

tangle出的代码如下:

#!/bin/sh
df \
|sed '1d' \
|awk '{print $5 " " $6}' | sort -n | tail -1 \
|awk '{print $2}'

预处理/后置操作(:prologue/:epilogue)

在做相关操作时,可能需要预先初始化,同时又不想这些初始化过程出现在代码流程中,
这个时候你可使用 *:prologue* 来关联相关语句来达到预处理的效果。
#+NAME: prologue-example
#+BEGIN_SRC shell :prologue "echo yep; exit 0" :exports both
  echo "nope"
#+END_SRC

#+RESULTS: prologue-example
: yep

*:epilogue* 正好和 *:prologue* 完成的功能相反,用于后置处理,完成清理工作。
#+BEGIN_SRC shell :epilogue "exit 0; echo yep" :exports both
  echo "nope"
#+END_SRC

#+RESULTS:
: nope

批量执行

可在命令行中调用代码块实现的函数,如下面所示:

#!/bin/sh
# -*- mode: shell-script -*-
#
# tangle files with org-mode
#

DIR='pwd'
FILES=""
# wrap each argument in the code required to call tangle on it
for i in $@; do
    FILES="$FILES \"$i\""
done

emacs -Q --batch \
      --eval "(progn
(require 'org)(require 'ob)(require 'ob-tangle)
(mapc (lambda (file)
       (find-file (expand-file-name file \"$DIR\"))
       (org-babel-tangle)
       (kill-buffer)) '($FILES)))" 2>&1 | grep tangled

连接mysql

#+BEGIN_SRC sql
  show tables;
#+END_SRC

#+RESULTS:
| Tables_in_mysql           |
|---------------------------|
| columns_priv              |
| db                        |
| engine_cost               |
| event                     |
| func                      |
| general_log               |
| gtid_executed             |
| help_category             |
| help_keyword              |
| help_relation             |
| help_topic                |
| innodb_index_stats        |
| innodb_table_stats        |
| ndb_binlog_index          |
| plugin                    |
| proc                      |
| procs_priv                |
| proxies_priv              |
| server_cost               |
| servers                   |
| slave_master_info         |
| slave_relay_log_info      |
| slave_worker_info         |
| slow_log                  |
| tables_priv               |
| time_zone                 |
| time_zone_leap_second     |
| time_zone_name            |
| time_zone_transition      |
| time_zone_transition_type |
| user                      |

#+BEGIN_SRC sql
  SELECT host, user FROM user WHERE 1;
#+END_SRC

#+RESULTS:
| host      | user             |
|-----------+------------------|
| %         | brantou          |
| localhost | debian-sys-maint |
| localhost | mysql.session    |
| localhost | mysql.sys        |
| localhost | root             |
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 204,189评论 6 478
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 85,577评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 150,857评论 0 337
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,703评论 1 276
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,705评论 5 366
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,620评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,995评论 3 396
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,656评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,898评论 1 298
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,639评论 2 321
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,720评论 1 330
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,395评论 4 319
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,982评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,953评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,195评论 1 260
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 44,907评论 2 349
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,472评论 2 342

推荐阅读更多精彩内容