1 数据格式化(:wrap)
1.1 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
2 变量设置在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
3 结果的预处理(: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
4 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}' |
5 预处理/后置操作(: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
6 批量执行
可在命令行中调用代码块实现的函数,如下面所示:
#!/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 |
7 连接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 |
Render by hexo-renderer-org with Emacs 25.3.2 (Org mode 8.2.10)