{"type":"rich","version":"1.0","provider_name":"phorkie","provider_url":"https:\/\/p.cweiske.de\/","title":"dbash: docker bash alias with autocompletion","author_name":"Christian Weiske","cache_age":86400,"width":900,"height":900,"html":"<!-- embedding all files of https:\/\/p.cweiske.de\/374 -->\n<link rel=\"stylesheet\" href=\"https:\/\/p.cweiske.de\/css\/embed.css\"\/>\n<div class=\"phork\" id=\"374\">\n    <div class=\"phork-file\">\n <div class=\"phork-content\">\n  <style type=\"text\/css\">\/**\n * GeSHi (C) 2004 - 2007 Nigel McNie, 2007 - 2014 Benny Baumann\n * (http:\/\/qbnz.com\/highlighter\/ and http:\/\/geshi.org\/)\n *\/\n.bash .de1, .bash .de2 {font: normal normal 1em\/1.2em monospace; margin:0; padding:0; background:none; vertical-align:top;}\n.bash  {font-family:monospace;}\n.bash .imp {font-weight: bold; color: red;}\n.bash li, .bash .li1 {color: #DDD;}\n.bash .ln {width:1px;text-align:right;margin:0;padding:0 2px;vertical-align:top;}\n.bash .kw1 {color: #000000; font-weight: bold;}\n.bash .kw2 {color: #c20cb9; font-weight: bold;}\n.bash .kw3 {color: #7a0874; font-weight: bold;}\n.bash .co0 {color: #666666; font-style: italic;}\n.bash .co1 {color: #800000;}\n.bash .co2 {color: #cc0000; font-style: italic;}\n.bash .co3 {color: #000000; font-weight: bold;}\n.bash .co4 {color: #666666;}\n.bash .es1 {color: #000099; font-weight: bold;}\n.bash .es2 {color: #007800;}\n.bash .es3 {color: #007800;}\n.bash .es4 {color: #007800;}\n.bash .es5 {color: #780078;}\n.bash .es_h {color: #000099; font-weight: bold;}\n.bash .br0 {color: #7a0874; font-weight: bold;}\n.bash .sy0 {color: #000000; font-weight: bold;}\n.bash .st0 {color: #ff0000;}\n.bash .st_h {color: #ff0000;}\n.bash .nu0 {color: #000000;}\n.bash .re0 {color: #007800;}\n.bash .re1 {color: #007800;}\n.bash .re2 {color: #007800;}\n.bash .re4 {color: #007800;}\n.bash .re5 {color: #660033;}\n.bash span.xtra { display:block; }\n<\/style><div class=\"code\"><table class=\"bash\"><tbody><tr class=\"li1\"><td class=\"ln\"><pre class=\"de1\">1\n2\n3\n4\n5\n6\n7\n8\n9\n10\n11\n12\n13\n14\n15\n16\n17\n18\n19\n20\n21\n22\n23\n24\n25\n26\n27\n28\n29\n30\n31\n32\n<\/pre><\/td><td class=\"de1\"><pre class=\"de1\"><span class=\"co0\"># docker bash command with autocompletion<\/span>\n<span class=\"co0\"># put this into ~\/.bashrc<\/span>\n<span class=\"co0\"># standard docker completion provided by docker-ce-cli<\/span>\n&#160;\n<span class=\"co0\"># enable debugging with this variable:<\/span>\n<span class=\"co0\">#export BASH_COMP_DEBUG_FILE=\/dev\/stdout<\/span>\n&#160;\n<span class=\"kw3\">source<\/span> <span class=\"sy0\">\/<\/span>usr<span class=\"sy0\">\/<\/span>share<span class=\"sy0\">\/<\/span>bash-completion<span class=\"sy0\">\/<\/span>completions<span class=\"sy0\">\/<\/span>docker\n<span class=\"kw1\">function<\/span> dbash<span class=\"br0\">&#40;<\/span><span class=\"br0\">&#41;<\/span> <span class=\"br0\">&#123;<\/span>\n&#160; &#160; docker <span class=\"kw3\">exec<\/span> <span class=\"re5\">-it<\/span> <span class=\"st0\">&quot;$1&quot;<\/span> <span class=\"kw2\">bash<\/span>;\n<span class=\"br0\">&#125;<\/span>\n<span class=\"kw1\">function<\/span> dbashwww<span class=\"br0\">&#40;<\/span><span class=\"br0\">&#41;<\/span> <span class=\"br0\">&#123;<\/span>\n&#160; &#160; docker <span class=\"kw3\">exec<\/span> <span class=\"re5\">-it<\/span> <span class=\"st0\">&quot;$1&quot;<\/span> <span class=\"kw2\">su<\/span> -s<span class=\"sy0\">\/<\/span>bin<span class=\"sy0\">\/<\/span><span class=\"kw2\">bash<\/span> &#160;www-data;\n<span class=\"br0\">&#125;<\/span>\n<span class=\"kw1\">function<\/span> dtail<span class=\"br0\">&#40;<\/span><span class=\"br0\">&#41;<\/span> <span class=\"br0\">&#123;<\/span>\n&#160; &#160; docker logs <span class=\"re5\">-f<\/span> <span class=\"st0\">&quot;$@&quot;<\/span>;\n<span class=\"br0\">&#125;<\/span>\n_dbash<span class=\"br0\">&#40;<\/span><span class=\"br0\">&#41;<\/span> <span class=\"br0\">&#123;<\/span>\n&#160; &#160; <span class=\"co0\">#__start_docker loads variables itself and can't be used<\/span>\n&#160; &#160; <span class=\"kw3\">local<\/span> cur prev words cword <span class=\"kw2\">split<\/span>\n&#160; &#160; <span class=\"re2\">cur<\/span>=<span class=\"st0\">&quot;$2&quot;<\/span>\n&#160; &#160; <span class=\"re2\">words<\/span>=<span class=\"br0\">&#40;<\/span>docker stop <span class=\"st0\">&quot;$2&quot;<\/span><span class=\"br0\">&#41;<\/span>\n&#160; &#160; <span class=\"re2\">cword<\/span>=<span class=\"nu0\">2<\/span>\n&#160;\n&#160; &#160; <span class=\"kw3\">local<\/span> out directive\n&#160; &#160; __docker_get_completion_results\n&#160; &#160; __docker_process_completion_results\n<span class=\"br0\">&#125;<\/span>\n<span class=\"kw3\">complete<\/span> <span class=\"re5\">-F<\/span> _dbash dbash\n<span class=\"kw3\">complete<\/span> <span class=\"re5\">-F<\/span> _dbash dbashwww\n<span class=\"kw3\">complete<\/span> <span class=\"re5\">-F<\/span> _dbash dtail\n&#160;<\/pre><\/td><\/tr><\/tbody><\/table><\/div>\n <\/div>\n <div class=\"phork-meta\">\n  <a href=\"https:\/\/p.cweiske.de\/374\/rev-raw\/6de130dd85bdfd81e9f7dc8c7d5373b3109cb538\/setup-debian13.sh\" style=\"float: right\">view raw source<\/a>\n  <a href=\"https:\/\/p.cweiske.de\/374#setup-debian13.sh\">setup-debian13.sh<\/a>\n <\/div>\n<\/div>\n    <div class=\"phork-file\">\n <div class=\"phork-content\">\n  <style type=\"text\/css\">\/**\n * GeSHi (C) 2004 - 2007 Nigel McNie, 2007 - 2014 Benny Baumann\n * (http:\/\/qbnz.com\/highlighter\/ and http:\/\/geshi.org\/)\n *\/\n.bash .de1, .bash .de2 {font: normal normal 1em\/1.2em monospace; margin:0; padding:0; background:none; vertical-align:top;}\n.bash  {font-family:monospace;}\n.bash .imp {font-weight: bold; color: red;}\n.bash li, .bash .li1 {color: #DDD;}\n.bash .ln {width:1px;text-align:right;margin:0;padding:0 2px;vertical-align:top;}\n.bash .kw1 {color: #000000; font-weight: bold;}\n.bash .kw2 {color: #c20cb9; font-weight: bold;}\n.bash .kw3 {color: #7a0874; font-weight: bold;}\n.bash .co0 {color: #666666; font-style: italic;}\n.bash .co1 {color: #800000;}\n.bash .co2 {color: #cc0000; font-style: italic;}\n.bash .co3 {color: #000000; font-weight: bold;}\n.bash .co4 {color: #666666;}\n.bash .es1 {color: #000099; font-weight: bold;}\n.bash .es2 {color: #007800;}\n.bash .es3 {color: #007800;}\n.bash .es4 {color: #007800;}\n.bash .es5 {color: #780078;}\n.bash .es_h {color: #000099; font-weight: bold;}\n.bash .br0 {color: #7a0874; font-weight: bold;}\n.bash .sy0 {color: #000000; font-weight: bold;}\n.bash .st0 {color: #ff0000;}\n.bash .st_h {color: #ff0000;}\n.bash .nu0 {color: #000000;}\n.bash .re0 {color: #007800;}\n.bash .re1 {color: #007800;}\n.bash .re2 {color: #007800;}\n.bash .re4 {color: #007800;}\n.bash .re5 {color: #660033;}\n.bash span.xtra { display:block; }\n<\/style><div class=\"code\"><table class=\"bash\"><tbody><tr class=\"li1\"><td class=\"ln\"><pre class=\"de1\">1\n2\n3\n4\n5\n6\n7\n8\n<\/pre><\/td><td class=\"de1\"><pre class=\"de1\"><span class=\"kw1\">function<\/span> dbash<span class=\"br0\">&#40;<\/span><span class=\"br0\">&#41;<\/span> <span class=\"br0\">&#123;<\/span> docker <span class=\"kw3\">exec<\/span> <span class=\"re5\">-it<\/span> <span class=\"st0\">&quot;$1&quot;<\/span> <span class=\"kw2\">bash<\/span>; <span class=\"br0\">&#125;<\/span>\n_dbash<span class=\"br0\">&#40;<\/span><span class=\"br0\">&#41;<\/span> <span class=\"br0\">&#123;<\/span> <span class=\"re2\">cur<\/span>=<span class=\"st0\">&quot;<span class=\"es3\">${COMP_WORDS[COMP_CWORD]}<\/span>&quot;<\/span>; __docker_complete_containers_running; <span class=\"br0\">&#125;<\/span>\n<span class=\"kw3\">complete<\/span> <span class=\"re5\">-F<\/span> _dbash dbash\n&#160;\n<span class=\"co0\"># automatically login as www-data user<\/span>\n<span class=\"kw1\">function<\/span> dbashwww<span class=\"br0\">&#40;<\/span><span class=\"br0\">&#41;<\/span> <span class=\"br0\">&#123;<\/span> docker <span class=\"kw3\">exec<\/span> <span class=\"re5\">-it<\/span> <span class=\"st0\">&quot;$1&quot;<\/span> <span class=\"kw2\">su<\/span> <span class=\"re5\">-s<\/span> <span class=\"sy0\">\/<\/span>bin<span class=\"sy0\">\/<\/span><span class=\"kw2\">bash<\/span> www-data; <span class=\"br0\">&#125;<\/span>\n<span class=\"kw3\">complete<\/span> <span class=\"re5\">-F<\/span> _dbash dbashwww\n&#160;<\/pre><\/td><\/tr><\/tbody><\/table><\/div>\n <\/div>\n <div class=\"phork-meta\">\n  <a href=\"https:\/\/p.cweiske.de\/374\/rev-raw\/6de130dd85bdfd81e9f7dc8c7d5373b3109cb538\/setup-ubuntu-20.04.sh\" style=\"float: right\">view raw source<\/a>\n  <a href=\"https:\/\/p.cweiske.de\/374#setup-ubuntu-20.04.sh\">setup-ubuntu-20.04.sh<\/a>\n <\/div>\n<\/div>\n    <div class=\"phork-file\">\n <div class=\"phork-content\">\n  \n<div class=\"document\">\n\n\n<ul class=\"simple\">\n<li><a class=\"reference external\" href=\"https:\/\/github.com\/Bash-it\/bash-it\/blob\/master\/completion\/available\/docker.completion.bash\">https:\/\/github.com\/Bash-it\/bash-it\/blob\/master\/completion\/available\/docker.completion.bash<\/a><\/li>\n<li><a class=\"reference external\" href=\"https:\/\/www.gnu.org\/software\/bash\/manual\/html_node\/Programmable-Completion-Builtins.html\">https:\/\/www.gnu.org\/software\/bash\/manual\/html_node\/Programmable-Completion-Builtins.html<\/a><\/li>\n<\/ul>\n<\/div>\n\n <\/div>\n <div class=\"phork-meta\">\n  <a href=\"https:\/\/p.cweiske.de\/374\/rev-raw\/6de130dd85bdfd81e9f7dc8c7d5373b3109cb538\/z-references.rst\" style=\"float: right\">view raw source<\/a>\n  <a href=\"https:\/\/p.cweiske.de\/374#z-references.rst\">z-references.rst<\/a>\n <\/div>\n<\/div>\n<\/div>\n"}
