[聚合文章] org-babel有趣的事

JavaScript 2017-12-19 18 阅读

数据格式化(: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_QUOTEFri 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/shdf \|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 itfor i in $@; do    FILES="$FILES \"$i\""doneemacs -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             |

注:本文内容来自互联网,旨在为开发者提供分享、交流的平台。如有涉及文章版权等事宜,请你联系站长进行处理。