CINXE.COM
「Bash」をカスタマイズして、Linuxをより便利に使いこなそう | Think IT(シンクイット)
<!DOCTYPE html> <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="ja" version="XHTML+RDFa 1.0" dir="ltr" xmlns:fb="http://ogp.me/ns/fb#" xmlns:og="http://ogp.me/ns#" xmlns:article="http://ogp.me/ns/article#" xmlns:book="http://ogp.me/ns/book#" xmlns:profile="http://ogp.me/ns/profile#" xmlns:video="http://ogp.me/ns/video#" xmlns:product="http://ogp.me/ns/product#"> <head profile="http://www.w3.org/1999/xhtml/vocab"> <!-- Google Tag Manager --> <script>(function(w,d,s,l,i){w[l]=w[l]||[];w[l].push({'gtm.start': new Date().getTime(),event:'gtm.js'});var f=d.getElementsByTagName(s)[0], j=d.createElement(s),dl=l!='dataLayer'?'&l='+l:'';j.async=true;j.src= 'https://www.googletagmanager.com/gtm.js?id='+i+dl;f.parentNode.insertBefore(j,f); })(window,document,'script','dataLayer','GTM-M63V4ZF');</script> <!-- End Google Tag Manager --> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <script type="text/x-mathjax-config"> MathJax.Hub.Config({ extensions: ['tex2jax.js'], jax: ['input/TeX','output/HTML-CSS'], tex2jax: { inlineMath: [ ['$','$'], ['\\(','\\)'] ], processEscapes: true, processClass: 'tex2jax', ignoreClass: 'html' }, showProcessingMessages: false, messageStyle: 'none' }); </script><link rel="shortcut icon" href="https://thinkit.co.jp/favicon.ico" type="image/vnd.microsoft.icon" /> <meta name="viewport" content="width=device-width, initial-scale=1.0" /> <meta name="description" content="はじめに どのようなアプリにも、個人用の設定というものが存在します。例えば、Webブラウザはフォントやカラーテーマ、タブの細かい挙動などを個人の好みに応じてカスタマイズできます。Linuxで使われる様々なツールもこうした例に漏れず、非常に柔軟なカスタマイズや機能拡張が可能です。有名なテキストエディタであるVimやEmacsなどがその代表格で、そのカスタマイズの柔軟さと奥の深さは、想像を絶するものがあります*1。" /> <meta name="abstract" content="はじめに どのようなアプリにも、個人用の設定というものが存在します。例えば、Webブラウザはフォントやカラーテーマ、タブの細かい挙動などを個人の好みに応じてカスタマイズできます。Linuxで使われる様々なツールもこうした例に漏れず、非常に柔軟なカスタマイズや機能拡張が可能です。有名なテキストエディタであるVimやEmacsなどがその代表格で、そのカスタマイズの柔軟さと奥の深さは、想像を絶するものがあります*1。" /> <meta name="keywords" content="Think IT,OSS,インプレス,オープンソース" /> <meta name="generator" content="IBCMS" /> <link rel="canonical" href="https://thinkit.co.jp/article/37893" /> <meta name="rights" content="Impress Corporation. An Impress Group Company" /> <link rel="shortlink" href="https://thinkit.co.jp/node/37893" /> <meta property="fb:admins" content="100001541122742" /> <meta property="og:site_name" content="Think IT(シンクイット)" /> <meta property="og:type" content="article" /> <meta property="og:title" content="「Bash」をカスタマイズして、Linuxをより便利に使いこなそう" /> <meta property="og:url" content="https://thinkit.co.jp/article/37893" /> <meta property="og:image" content="https://thinkit.co.jp/sites/default/files/main_images/ren_wsl2_vtj_cover2_5.png" /> <meta property="og:image:secure_url" content="https://thinkit.co.jp/sites/default/files/main_images/ren_wsl2_vtj_cover2_5.png" /> <meta name="twitter:card" content="summary" /> <meta name="twitter:site" content="thinkitcojp" /> <meta name="twitter:title" content="「Bash」をカスタマイズして、Linuxをより便利に使いこなそう" /> <meta name="twitter:url" content="https://thinkit.co.jp/article/37893" /> <meta name="twitter:description" content="はじめに どのようなアプリにも、個人用の設定というものが存在します。例えば、Webブラウザはフォントやカラーテーマ、タブの細かい挙動などを個人の好みに応じてカスタマイズできます。Linuxで使われる様々なツールもこうした例に漏れず、非常に柔軟なカスタマイズや機能拡張が可能です。有名なテキストエディタであるVimやEmacsなどがその代表格で、そのカスタマイズの柔軟さと奥の深さは、想像を絶するものがあります*1。" /> <meta name="twitter:image" content="https://thinkit.co.jp/sites/default/files/main_images/ren_wsl2_vtj_cover2_5.png" /> <meta name="twitter:image:width" content="90" /> <meta name="twitter:image:height" content="90" /> <link rel="publisher" href="http://www.impress.co.jp/" /> <title>「Bash」をカスタマイズして、Linuxをより便利に使いこなそう | Think IT(シンクイット)</title> <link type="text/css" rel="stylesheet" href="https://thinkit.co.jp/sites/default/files/css/css_kShW4RPmRstZ3SpIC-ZvVGNFVAi0WEMuCnI0ZkYIaFw.css" media="all" /> <link type="text/css" rel="stylesheet" href="https://thinkit.co.jp/sites/default/files/css/css_ugmd-SSDbm1OKE5izFKyWoDlN0VLzOd_7qwRN49enDo.css" media="all" /> <link type="text/css" rel="stylesheet" href="https://thinkit.co.jp/sites/default/files/css/css_smvyGK4ZDAm398LM3Pe0oIISCZZs-X_dBcdram3Bky0.css" media="all" /> <link type="text/css" rel="stylesheet" href="https://thinkit.co.jp/sites/default/files/css/css_r2HfpRlhCM3-iK-FWCu7gPvSih4F1Czzz1i-FX-I3I0.css" media="all" /> <link type="text/css" rel="stylesheet" href="https://thinkit.co.jp/sites/default/files/css/css_kY8oqmpDiRagZTCMG3w368J58-BFAMPaUwvUtrpgyw4.css" media="all" /> <script type="text/javascript" src="//ajax.googleapis.com/ajax/libs/jquery/1.10.2/jquery.min.js"></script> <script type="text/javascript"> <!--//--><![CDATA[//><!-- window.jQuery || document.write("<script src='/sites/all/modules/jquery_update/replace/jquery/1.10/jquery.min.js'>\x3C/script>") //--><!]]> </script> <script type="text/javascript" src="https://thinkit.co.jp/sites/default/files/js/js_Hfha9RCTNm8mqMDLXriIsKGMaghzs4ZaqJPLj2esi7s.js"></script> <script type="text/javascript" src="https://maxcdn.bootstrapcdn.com/bootstrap/3.4.1/js/bootstrap.min.js"></script> <script type="text/javascript" src="//ajax.googleapis.com/ajax/libs/jqueryui/1.10.2/jquery-ui.min.js"></script> <script type="text/javascript"> <!--//--><![CDATA[//><!-- window.jQuery.ui || document.write("<script src='/sites/all/modules/jquery_update/replace/ui/ui/minified/jquery-ui.min.js'>\x3C/script>") //--><!]]> </script> <script type="text/javascript" src="https://thinkit.co.jp/sites/default/files/js/js_onbE0n0cQY6KTDQtHO_E27UBymFC-RuqypZZ6Zxez-o.js"></script> <script type="text/javascript" src="https://thinkit.co.jp/sites/default/files/js/js_ZecNe0vBHnUdeeMgT-3pA8xh2tMmWP9QyLaVdgunMuE.js"></script> <script type="text/javascript" src="https://thinkit.co.jp/sites/default/files/js/js_XuVj3tPCNw9O1JAXyS3tZSj2Uo6JALmDbqNHvcjsevQ.js"></script> <script type="text/javascript"> <!--//--><![CDATA[//><!-- (function(d, s, id) { var js, fjs = d.getElementsByTagName(s)[0]; if (d.getElementById(id)) {return;} js = d.createElement(s); js.id = id; js.src = "//connect.facebook.net/ja_JP/all.js#xfbml=1&appId="; fjs.parentNode.insertBefore(js, fjs); }(document, 'script', 'facebook-jssdk')); //--><!]]> </script> <script type="text/javascript" src="//b.st-hatena.com/js/bookmark_button.js"></script> <script type="text/javascript" src="https://thinkit.co.jp/sites/default/files/js/js_sJUGloj9S-hasAk08Oe4uQ0wVB_a7Lv6hooxQvQELNw.js"></script> <script type="text/javascript" src="//apis.google.com/js/plusone.js"></script> <script type="text/javascript" src="//platform.twitter.com/widgets.js"></script> <script type="text/javascript" src="https://thinkit.co.jp/sites/default/files/js/js_GlePOjD1KwovhynHcTAfv4qVlAhaQ4ngUjBRnJpp3p0.js"></script> <script type="text/javascript"> <!--//--><![CDATA[//><!-- window.a2a_config=window.a2a_config||{};window.da2a={done:false,html_done:false,script_ready:false,script_load:function(){var a=document.createElement('script'),s=document.getElementsByTagName('script')[0];a.type='text/javascript';a.async=true;a.src='https://static.addtoany.com/menu/page.js';s.parentNode.insertBefore(a,s);da2a.script_load=function(){};},script_onready:function(){da2a.script_ready=true;if(da2a.html_done)da2a.init();},init:function(){for(var i=0,el,target,targets=da2a.targets,length=targets.length;i<length;i++){el=document.getElementById('da2a_'+(i+1));target=targets[i];a2a_config.linkname=target.title;a2a_config.linkurl=target.url;if(el){a2a.init('page',{target:el});el.id='';}da2a.done=true;}da2a.targets=[];}};(function ($){Drupal.behaviors.addToAny = {attach: function (context, settings) {if (context !== document && window.da2a) {if(da2a.script_ready)a2a.init_all();da2a.script_load();}}}})(jQuery);a2a_config.callbacks=a2a_config.callbacks||[];a2a_config.callbacks.push({ready:da2a.script_onready});a2a_config.overlays=a2a_config.overlays||[];a2a_config.templates=a2a_config.templates||{}; //--><!]]> </script> <script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.0/MathJax.js?config=TeX-AMS-MML_HTMLorMML"></script> <script type="text/javascript" src="https://thinkit.co.jp/sites/default/files/js/js_dMNXvBkBzS3wqrNAU6GtAevimojI03_eiko8ATfGb88.js"></script> <script type="text/javascript" src="https://thinkit.co.jp/sites/default/files/js/js_gsoktwli0tOsmcuKMzgm9Qp82TNBei7oEO5Ij-sgolk.js"></script> <script type="text/javascript"> <!--//--><![CDATA[//><!-- jQuery.extend(Drupal.settings, {"basePath":"\/","pathPrefix":"","setHasJsCookie":0,"ajaxPageState":{"theme":"radix_thinkit","theme_token":"8sWDxCo2kbOkcvTZDop02DzBJ-nuPmUEDjIk1sx7oSI","js":{"sites\/all\/modules\/syntaxhighlighter\/syntaxhighlighter.min.js":1,"sites\/all\/modules\/lightbox2\/js\/lightbox.js":1,"0":1,"\/\/ajax.googleapis.com\/ajax\/libs\/jquery\/1.10.2\/jquery.min.js":1,"1":1,"misc\/jquery-extend-3.4.0.js":1,"misc\/jquery-html-prefilter-3.5.0-backport.js":1,"misc\/jquery.once.js":1,"misc\/drupal.js":1,"https:\/\/maxcdn.bootstrapcdn.com\/bootstrap\/3.4.1\/js\/bootstrap.min.js":1,"\/\/ajax.googleapis.com\/ajax\/libs\/jqueryui\/1.10.2\/jquery-ui.min.js":1,"2":1,"misc\/form-single-submit.js":1,"sites\/all\/libraries\/syntaxhighlighter\/scripts\/shCore.js":1,"sites\/all\/libraries\/syntaxhighlighter\/scripts\/shLegacy.js":1,"sites\/all\/libraries\/syntaxhighlighter\/scripts\/shBrushAS3.js":1,"sites\/all\/libraries\/syntaxhighlighter\/scripts\/shBrushBash.js":1,"sites\/all\/libraries\/syntaxhighlighter\/scripts\/shBrushCSharp.js":1,"sites\/all\/libraries\/syntaxhighlighter\/scripts\/shBrushColdFusion.js":1,"sites\/all\/libraries\/syntaxhighlighter\/scripts\/shBrushCpp.js":1,"sites\/all\/libraries\/syntaxhighlighter\/scripts\/shBrushCss.js":1,"sites\/all\/libraries\/syntaxhighlighter\/scripts\/shBrushDelphi.js":1,"sites\/all\/libraries\/syntaxhighlighter\/scripts\/shBrushDiff.js":1,"sites\/all\/libraries\/syntaxhighlighter\/scripts\/shBrushErlang.js":1,"sites\/all\/libraries\/syntaxhighlighter\/scripts\/shBrushGroovy.js":1,"sites\/all\/libraries\/syntaxhighlighter\/scripts\/shBrushJScript.js":1,"sites\/all\/libraries\/syntaxhighlighter\/scripts\/shBrushJava.js":1,"sites\/all\/libraries\/syntaxhighlighter\/scripts\/shBrushJavaFX.js":1,"sites\/all\/libraries\/syntaxhighlighter\/scripts\/shBrushPerl.js":1,"sites\/all\/libraries\/syntaxhighlighter\/scripts\/shBrushPhp.js":1,"sites\/all\/libraries\/syntaxhighlighter\/scripts\/shBrushPlain.js":1,"sites\/all\/libraries\/syntaxhighlighter\/scripts\/shBrushPowerShell.js":1,"sites\/all\/libraries\/syntaxhighlighter\/scripts\/shBrushPython.js":1,"sites\/all\/libraries\/syntaxhighlighter\/scripts\/shBrushRuby.js":1,"sites\/all\/libraries\/syntaxhighlighter\/scripts\/shBrushScala.js":1,"sites\/all\/libraries\/syntaxhighlighter\/scripts\/shBrushSql.js":1,"sites\/all\/libraries\/syntaxhighlighter\/scripts\/shBrushVb.js":1,"sites\/all\/libraries\/syntaxhighlighter\/scripts\/shBrushXml.js":1,"sites\/all\/modules\/mathjax\/mathjax.js":1,"public:\/\/languages\/ja_u6m07JWiQ0cMjZXNha5SwttOpPeqDvsVLflb6rNNAXc.js":1,"3":1,"\/\/b.st-hatena.com\/js\/bookmark_button.js":1,"sites\/all\/modules\/custom\/annai_stats\/js\/annai_stats.js":1,"sites\/all\/modules\/field_group\/field_group.js":1,"\/\/apis.google.com\/js\/plusone.js":1,"\/\/platform.twitter.com\/widgets.js":1,"sites\/all\/modules\/panels_tabs\/js\/panels_tabs.js":1,"4":1,"https:\/\/cdnjs.cloudflare.com\/ajax\/libs\/mathjax\/2.7.0\/MathJax.js?config=TeX-AMS-MML_HTMLorMML":1,"sites\/all\/libraries\/superfish\/jquery.hoverIntent.minified.js":1,"sites\/all\/libraries\/superfish\/sftouchscreen.js":1,"sites\/all\/libraries\/superfish\/sfsmallscreen.js":1,"sites\/all\/libraries\/superfish\/supposition.js":1,"sites\/all\/libraries\/superfish\/superfish.js":1,"sites\/all\/modules\/superfish\/superfish.js":1,"sites\/all\/themes\/radix\/assets\/js\/radix.script.js":1,"sites\/all\/themes\/radix_thinkit\/assets\/javascripts\/script.js":1,"sites\/all\/themes\/radix_thinkit\/assets\/javascripts\/bootstrap.offcanvas.min.js":1},"css":{"modules\/system\/system.base.css":1,"modules\/system\/system.messages.css":1,"modules\/system\/system.theme.css":1,"misc\/ui\/jquery.ui.core.css":1,"misc\/ui\/jquery.ui.theme.css":1,"misc\/ui\/jquery.ui.tabs.css":1,"sites\/all\/modules\/calendar\/css\/calendar_multiday.css":1,"modules\/field\/theme\/field.css":1,"sites\/all\/modules\/freepager\/freepager.css":1,"modules\/node\/node.css":1,"modules\/search\/search.css":1,"sites\/all\/modules\/toc_node\/css\/toc_node.css":1,"modules\/user\/user.css":1,"sites\/all\/modules\/views\/css\/views.css":1,"sites\/all\/modules\/ckeditor\/css\/ckeditor.css":1,"sites\/all\/modules\/ctools\/css\/ctools.css":1,"sites\/all\/modules\/lightbox2\/css\/lightbox.css":1,"sites\/all\/modules\/panels\/css\/panels.css":1,"sites\/all\/libraries\/syntaxhighlighter\/styles\/shCore.css":1,"sites\/all\/libraries\/syntaxhighlighter\/styles\/shThemeDefault.css":1,"modules\/taxonomy\/taxonomy.css":1,"sites\/all\/themes\/radix_thinkit\/ds_layouts\/thinkit_author\/thinkit_author.css":1,"sites\/all\/modules\/easy_social\/css\/easy_social.css":1,"sites\/all\/modules\/easy_hatena\/css\/easy_hatena.css":1,"sites\/all\/themes\/radix_thinkit\/ds_layouts\/thinkit_1col\/thinkit_1col.css":1,"sites\/all\/modules\/panels\/plugins\/layouts\/onecol\/onecol.css":1,"sites\/all\/modules\/addtoany\/addtoany.css":1,"sites\/all\/libraries\/superfish\/css\/superfish.css":1,"sites\/all\/libraries\/superfish\/css\/superfish-smallscreen.css":1,"sites\/all\/themes\/radix_thinkit\/assets\/stylesheets\/style.css":1,"sites\/all\/themes\/radix_thinkit\/assets\/stylesheets\/style3.css":1,"sites\/all\/themes\/radix_thinkit\/assets\/stylesheets\/css\/add.css":1,"sites\/all\/themes\/radix_thinkit\/assets\/stylesheets\/toc.css":1,"sites\/all\/themes\/radix_thinkit\/assets\/stylesheets\/brands.min.css":1}},"jcarousel":{"ajaxPath":"\/jcarousel\/ajax\/views"},"lightbox2":{"rtl":"0","file_path":"\/(\\w\\w\/)public:\/","default_image":"\/sites\/all\/modules\/lightbox2\/images\/brokenimage.jpg","border_size":10,"font_color":"000","box_color":"fff","top_position":"","overlay_opacity":"0.8","overlay_color":"000","disable_close_click":1,"resize_sequence":0,"resize_speed":400,"fade_in_speed":0,"slide_down_speed":600,"use_alt_layout":0,"disable_resize":0,"disable_zoom":0,"force_show_nav":0,"show_caption":1,"loop_items":0,"node_link_text":"\u30a4\u30e1\u30fc\u30b8\u306e\u8a73\u7d30\u3092\u8868\u793a","node_link_target":0,"image_count":"\u30a4\u30e1\u30fc\u30b8 !current \/ !total","video_count":"\u30d3\u30c7\u30aa !current \/ !total","page_count":"\u30da\u30fc\u30b8 !current \/ !total","lite_press_x_close":"\u003Ca href=\u0022#\u0022 onclick=\u0022hideLightbox(); return FALSE;\u0022\u003E\u003Ckbd\u003Ex\u003C\/kbd\u003E\u003C\/a\u003E \u3092\u62bc\u3059\u3068\u9589\u3058\u307e\u3059","download_link_text":"","enable_login":false,"enable_contact":false,"keys_close":"c x 27","keys_previous":"p 37","keys_next":"n 39","keys_zoom":"z","keys_play_pause":"32","display_image_size":"original","image_node_sizes":"()","trigger_lightbox_classes":"","trigger_lightbox_group_classes":"","trigger_slideshow_classes":"","trigger_lightframe_classes":"","trigger_lightframe_group_classes":"","custom_class_handler":0,"custom_trigger_classes":"","disable_for_gallery_lists":true,"disable_for_acidfree_gallery_lists":true,"enable_acidfree_videos":true,"slideshow_interval":5000,"slideshow_automatic_start":true,"slideshow_automatic_exit":true,"show_play_pause":true,"pause_on_next_click":false,"pause_on_previous_click":true,"loop_slides":false,"iframe_width":600,"iframe_height":400,"iframe_border":1,"enable_video":0,"useragent":"Mozilla\/5.0 (X11; Linux x86_64) AppleWebKit\/537.36 (KHTML, like Gecko) Chrome\/92.0.4515.131 Safari\/537.36"},"syntaxhighlighter":{"clipboard":"\/sites\/all\/libraries\/syntaxhighlighter\/scripts\/clipboard.swf","legacyMode":true},"annai_stats":{"params":"{\u0022nid\u0022:\u002237893\u0022}"},"field_group":{"div":"teaser_vertical"},"panelsTabs":{"tabsID":["tabs-0-middle"]},"urlIsAjaxTrusted":{"\/search\/site":true,"\/article\/37893":true},"superfish":{"1":{"id":"1","sf":{"animation":{"opacity":"show","height":"show"},"speed":"fast"},"plugins":{"touchscreen":{"mode":"always_active"},"smallscreen":{"mode":"window_width","breakpointUnit":"px","expandText":"\u5c55\u958b","collapseText":"\u6298\u308a\u305f\u305f\u3080","title":"\u30ab\u30c6\u30b4\u30ea\u30e1\u30cb\u30e5\u30fc\uff08PC\/\u30b9\u30de\u30db\u5171\u6709\uff09"},"supposition":true}}}}); //--><!]]> </script> <script src="https://cmp.impress.co.jp/ipc_show_cookie_banner.js"async></script> <!--[if lt IE 9]> <script> document.createElement('header'); document.createElement('nav'); document.createElement('section'); document.createElement('article'); document.createElement('aside'); document.createElement('footer'); </script> <![endif]--> <!-- GeoEdge begin --> <script> window.grumi = { cfg: { advs: { '73612282': true, '4723006721': true, '4693239831': true, '4696899522': true, '4719544775': true, '4719232311': true, '4693770225': true, '4704798158': true, '4487036810': true, '4757304394': true, '73661362': true, '4945929806': true, '91406122': true, '109470322': true, '5290088345': true, '5316270393': true, '5359049171': true }, }, key: '73a9870c-4ca2-4a34-a1a6-376ab3858cb8' }; </script> <script src="//rumcdn.geoedge.be/73a9870c-4ca2-4a34-a1a6-376ab3858cb8/grumi-ip.js" async></script> <!-- GeoEdge end --> <!-- Cxense script begin --> <script type="text/javascript"> function hasLocalStorage() { try { return typeof window.localStorage === 'object' && typeof window.localStorage.getItem === 'function'; } catch (e) { return false; } } function cx_getOptOutStatus(key) { var status = false; if (hasLocalStorage()) { var optedOut = window.localStorage.getItem(key); if (optedOut && optedOut === 'true') { status = true; } } return status; } var cX = cX || { options : { consent: cx_getOptOutStatus('cx_optOut') } }; cX.callQueue = cX.callQueue || []; cX.callQueue.push(['setSiteId', '1135108184472036681']); cX.callQueue.push(['sendPageViewEvent']); </script> <script type="text/javascript"> (function(d,s,e,t){e=d.createElement(s);e.type='text/java'+s;e.async='async'; e.src='http'+('https:'===location.protocol?'s://s':'://')+'cdn.cxense.com/cx.js'; t=d.getElementsByTagName(s)[0];t.parentNode.insertBefore(e,t);})(document,'script'); </script> <!-- Cxense script end --> <!-- DFP&Cxense start --> <script async='async' src='https://securepubads.g.doubleclick.net/tag/js/gpt.js'></script> <script> var googletag = googletag || {}; googletag.cmd = googletag.cmd || []; </script> <script> var cX = cX || {};cX.callQueue = cX.callQueue || []; cX.callQueue.push(['invoke',function(){ googletag.cmd.push(function() { googletag.defineSlot('/49282802/ipc-thinkit/pc-all/super01', [728, 90], 'div-gpt-ad-1450940771091-0').addService(googletag.pubads()); googletag.defineSlot('/49282802/ipc-thinkit/pc-all/rect01', [[300, 250], [300, 300], [300, 600]], 'div-gpt-ad-1450940771091-1').addService(googletag.pubads()); googletag.defineSlot('/49282802/ipc-thinkit/pc-all/rect02', [[300, 250], [300, 300], [300, 600]], 'div-gpt-ad-1450940771091-2').addService(googletag.pubads()); googletag.defineSlot('/49282802/ipc-thinkit/pc-all/rect03', [[300, 250], [300, 300], [300, 600]], 'div-gpt-ad-1450940771091-3').addService(googletag.pubads()); googletag.defineSlot('/49282802/ipc-thinkit/pc-all/text01', [468, 60], 'div-gpt-ad-1450940771091-4').addService(googletag.pubads()); googletag.defineSlot('/49282802/ipc-thinkit/pc-all/text02', [468, 60], 'div-gpt-ad-1450940771091-5').addService(googletag.pubads()); googletag.defineSlot('/49282802/ZTEST/ztest-oyabu/ti-video001', [[1, 1], [320, 50]], 'div-gpt-ad-1535625745021-0').addService(googletag.pubads()); googletag.pubads().setTargeting("CxSegments",cX.getUserSegmentIds({persistedQueryId:'6731ab9b80b5141d3c1f6e46ba04f4dab6a0d658'})); googletag.enableServices(); }); }]); </script> <!-- DFP&Cxense end --> </head> <body class="html not-front not-logged-in no-sidebars page-node page-node- page-node-37893 node-type-article panel-layout-thinkit_default panel-region-contentmain" > <!-- Google Tag Manager (noscript) --> <noscript><iframe src="https://www.googletagmanager.com/ns.html?id=GTM-M63V4ZF" height="0" width="0" style="display:none;visibility:hidden"></iframe></noscript> <!-- End Google Tag Manager (noscript) --> <script type="text/javascript" src="/sites/all/themes/radix_thinkit/assets/javascripts/cx-scrolldepth.js"></script> <script> function sendEvent(percentage) { cX.sendEvent('scroll', {verticalpos:String(percentage)+'%'}); } cX.callQueue.push(['invoke', function() { cX.setEventAttributes({origin: 'imp-website', persistedQueryId: '88d9edd75a775acbd8ac1f4141560c1880395d68'}); cX.sendEvent('scroll', {verticalpos:'0%'}); cxScrollDepth.init(sendEvent, 1, 'pane-node', true, 1000); }]); </script> <section id="top-menu" class="visible-lg visible-md"> <div class="fixed-area container"> <div class="region region-top-menu"> <div id="block-menu-menu-top-menu" class="block block-menu first last odd block-menu-menu-top-menu" role="navigation"> <div class="block-content"> <div class="block__title block-title"> <a href="https://www.impress.co.jp/business.html#03_bm" target="_blank"><img src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAFQAAAAmCAMAAABtX0w5AAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAADBQTFRFycbGUUtKgICAb2pp4uHhvr6+Ni4s1tTTAAAArquqn52c////IxgVkYyL8PDwg317d4vHOQAAAn1JREFUeNrslu2O7CAIhkUUW0V7/3d7XtB2PnJ2J5sz8+Mk20ymIvqAQGlD1U1Ge+8VdNs2fjcUzE0+4Wl8N7TIxm+Paco522DYfY+ljT36RCs5l9R7cgHLSl6KUWOMaQFSvxNMUQGNOL7J2WJrSZMzc7RtFputmhBd8DgVn53TbZ9Cd2PiYxkP0NtlM7LGOiZ0BX8Ao6Zzt0+hLMOCCX6AMp1/y9Mtx+XTDVqdJ+s4EKhzL2uDxEj50dOcT87pqU/HBfUzuq3tKsQ1dgO8Tla+gdIzND9C6Q7kBoMu6itP9zvozDD7QuY4Ha9EeloYTJ6IF556gPcHqMWU0DGcA0H2vOoCt575e+iV/fYAvc6fVylcwhkKfuGpWNyfoMk364xwcBO6uxDNhHILXz9sHtOS/6bKOV3jcS/guTNLX0Pp5txPn/2vVUglvR36D13q/4F+5NIPXL9Q6b2zKHdV6qQHJNXeMWAVElNjRL0fogItQYsV9sdQERYcmGMylCzobIUSGta17q2B0ZkU1SaYoNk35keCVyBBK9gGsYTAGATsCN328wUtNBotqLXdcEKrQwsR9ZYkB0wfh2kLay2AwjvsVz2GQ1MtF3QUd+L0NO0yoWFUgw53B46yGXLtkTUd2LP3LoyN2gzKSQdd0DDs+GJQPfJoaUK5pQU9lCqaGolpszZplGhB6YKG0NN+O36y4x+SGj6BiNHQHWpv/G6xszNkSPAXgUAUNKdKz8cXBLcMuU+Uv2WL+IdHXdDerkTZF0UST+MBKDdanhKsFk/Ubl4OniWFPBD4wl4p5AWCdyRqTGbFWEmZVi4tNtnPS4pmSaH7Wj2R/D6mn4D+EWAAejl4RS22Fx8AAAAASUVORK5CYII=" alt="インプレス ビジネスメディア" title="インプレスのビジネス向けWebメディア" width="84" height="38"/></a> </div> <div class="gnavi-bm clearfix"> <ul class="gnavi-1"> <li class="gnavi-thinkit"><span title="Think IT">ソフト開発</span></li> <li class="gnavi-itl"><a href="http://it.impressbm.co.jp/?utm_source=thinkit.co.jp&utm_medium=referral&utm_campaign=global-navigation&utm_content=thinkit" title="IT Leaders" target="_blank">企業IT</a></li> <li class="gnavi-ibl"><a href="https://b-library.impress.co.jp/?utm_source=thinkit.co.jp&utm_medium=referral&utm_campaign=global-navigation&utm_content=thinkit" title="Impress Business Library" target="_blank">製品導入</a></li> </ul> <div class="gnavi-2"> <ul> <li class="gnavi-webtan"><a href="https://webtan.impress.co.jp/?utm_source=thinkit.co.jp&utm_medium=referral&utm_campaign=global-navigation&utm_content=thinkit" title="Web担当者フォーラム" target="_blank">Web担当者</a></li> <li class="gnavi-nettan"><a href="https://netshop.impress.co.jp/?utm_source=thinkit.co.jp&utm_medium=referral&utm_campaign=global-navigation&utm_content=thinkit" title="ネットショップ担当者フォーラム" target="_blank">EC担当者</a></li> <li class="gnavi-digitalx"><a href="https://dcross.impress.co.jp/?utm_source=thinkit.co.jp&utm_medium=referral&utm_campaign=global-navigation&utm_content=thinkit" title="DIGITAL X" target="_blank">IoT・AI</a></li> <li class="gnavi-cloudwatch"><a href="https://cloud.watch.impress.co.jp/?utm_source=thinkit.co.jp&utm_medium=referral&utm_campaign=global-navigation&utm_content=thinkit" title="クラウド Watch" target="_blank">DCクラウド</a></li> <li class="gnavi-ill"><a href="https://research.impress.co.jp/?utm_source=thinkit.co.jp&utm_medium=referral&utm_campaign=global-navigation&utm_content=thinkit" title="インプレス総合研究所" target="_blank">研究・調査</a></li> </ul> <ul> <li class="gnavi-sgforum"><a href="https://sgforum.impress.co.jp/?utm_source=thinkit.co.jp&utm_medium=referral&utm_campaign=global-navigation&utm_content=thinkit" title="SmartGridフォーラム" target="_blank">エネルギー</a></li> <li class="gnavi-drone"><a href="https://www.watch.impress.co.jp/drone/?utm_source=thinkit.co.jp&utm_medium=referral&utm_campaign=global-navigation&utm_content=thinkit" title="ドローンジャーナル" target="_blank">ドローン</a></li> <li class="gnavi-seminar"><a href="https://b-event.impress.co.jp/?utm_source=thinkit.co.jp&utm_medium=referral&utm_campaign=global-navigation&utm_content=thinkit" title="インプレスセミナー" target="_blank">イベント・セミナー</a></li> </ul> </div> </div> </div> </div> </div> </div> </section> <header id="header" class="header" role="header"> <div class="visible-xs"> <nav class="navbar navbar-default navbar-inverse navbar-xs" role="navigation"> <div class="col-xs-6"> <div class="text-center"> <a class="offcanvas-toggle" data-toggle="offcanvas" data-target="#js-bootstrap-offcanvas"> <i class="fa fa-bars fa-2x"></i> <span class="menu">メニュー</span> <span class="sr-only">メニュー</span> </a> </div> </div> <div class="col-xs-12"> <div class="navbar-header"> <a href="/"> <img src="https://thinkit.co.jp/sites/all/themes/radix_thinkit/logo.png" alt="オープンソース技術の実践活用メディア" title="オープンソース技術の実践活用メディア" id="logo" class="center-block" /> </a> </div> </div> <div class="col-xs-6"> <div class="text-center"> <a id="search-button"> <i class="fa fa-search fa-2x"></i> <span class="menu">記事検索</span> <span class="sr-only">記事検索</span> </a> </div> </div> </nav> </div> <nav class="navbar navbar-default navbar-inverse navbar-offcanvas navbar-offcanvas-touch drawer-wrapper" role="navigation" id="js-bootstrap-offcanvas"> <div class="container"> <div class="navbar-header"> <a class="navbar-brand hidden-xs" href="/"> <img src="https://thinkit.co.jp/sites/all/themes/radix_thinkit/logo.png" alt="オープンソース技術の実践活用メディア" title="オープンソース技術の実践活用メディア" id="logo"/> </a> <button type="button" class="close navbar-toggle offcanvas-toggle" data-toggle="offcanvas" data-target="#js-bootstrap-offcanvas" aria-label="Close"> <span aria-hidden="true">×</span> </button> </div> <div> <div class="drawer-sns visible-xs"> <div><a href="http://www.facebook.com/thinkit.co.jp" title="Facebook"><i class="fa fa-facebook-official"></i></a></div> <div><a href="https://twitter.com/thinkitcojp" title="Twitter"><i class="fa-brands fa-x-twitter"></i></a></div> <div><a href="http://thinkit.co.jp/rss.xml" title="RSS"><i class="fa fa-rss"></i></a></div> </div> <div id="block-superfish-1" class="clear-block block block-superfish"> <div class="content"> <ul id="superfish-1" class="menu sf-menu sf-menu-menu-category sf-horizontal sf-style-none sf-total-items-5 sf-parent-items-5 sf-single-items-0"><li id="menu-15965-1" class="first odd sf-item-1 sf-depth-1 sf-total-children-6 sf-parent-children-0 sf-single-children-6 menuparent"><a href="/category/4502" title="" class="sf-depth-1 menuparent">ITインフラ</a><ul><li id="menu-17121-1" class="first odd sf-item-1 sf-depth-2 sf-no-children"><a href="/category/4503" title="" class="sf-depth-2">サーバー</a></li><li id="menu-17122-1" class="middle even sf-item-2 sf-depth-2 sf-no-children"><a href="/category/4504" title="" class="sf-depth-2">ネットワーク</a></li><li id="menu-17123-1" class="middle odd sf-item-3 sf-depth-2 sf-no-children"><a href="/category/4505" title="" class="sf-depth-2">ストレージ</a></li><li id="menu-17124-1" class="middle even sf-item-4 sf-depth-2 sf-no-children"><a href="/category/4506" title="" class="sf-depth-2">クラウド</a></li><li id="menu-17125-1" class="middle odd sf-item-5 sf-depth-2 sf-no-children"><a href="/category/4507" title="" class="sf-depth-2">仮想化/コンテナ</a></li><li id="menu-17126-1" class="last even sf-item-6 sf-depth-2 sf-no-children"><a href="/category/6911" title="" class="sf-depth-2">IoT/組み込み</a></li></ul></li><li id="menu-15966-1" class="middle even sf-item-2 sf-depth-1 sf-total-children-7 sf-parent-children-0 sf-single-children-7 menuparent"><a href="/category/4508" title="" class="sf-depth-1 menuparent">システム開発</a><ul><li id="menu-17127-1" class="first odd sf-item-1 sf-depth-2 sf-no-children"><a href="/category/4509" title="" class="sf-depth-2">OS</a></li><li id="menu-17128-1" class="middle even sf-item-2 sf-depth-2 sf-no-children"><a href="/category/4510" title="" class="sf-depth-2">ミドルウェア</a></li><li id="menu-17129-1" class="middle odd sf-item-3 sf-depth-2 sf-no-children"><a href="/category/4511" title="" class="sf-depth-2">データベース</a></li><li id="menu-17130-1" class="middle even sf-item-4 sf-depth-2 sf-no-children"><a href="/category/4512" title="" class="sf-depth-2">設計/手法/テスト</a></li><li id="menu-17131-1" class="middle odd sf-item-5 sf-depth-2 sf-no-children"><a href="/category/4513" title="" class="sf-depth-2">開発言語</a></li><li id="menu-17132-1" class="middle even sf-item-6 sf-depth-2 sf-no-children"><a href="/category/4514" title="" class="sf-depth-2">開発ツール</a></li><li id="menu-17133-1" class="last odd sf-item-7 sf-depth-2 sf-no-children"><a href="/category/4515" title="" class="sf-depth-2">Web開発</a></li></ul></li><li id="menu-15967-1" class="middle odd sf-item-3 sf-depth-1 sf-total-children-6 sf-parent-children-0 sf-single-children-6 menuparent"><a href="/category/4516" title="" class="sf-depth-1 menuparent">業務アプリ</a><ul><li id="menu-17134-1" class="first odd sf-item-1 sf-depth-2 sf-no-children"><a href="/category/4517" title="" class="sf-depth-2">データ解析</a></li><li id="menu-17135-1" class="middle even sf-item-2 sf-depth-2 sf-no-children"><a href="/category/4518" title="" class="sf-depth-2">モバイル</a></li><li id="menu-17136-1" class="middle odd sf-item-3 sf-depth-2 sf-no-children"><a href="/category/4519" title="" class="sf-depth-2">CRM/ERP</a></li><li id="menu-17137-1" class="middle even sf-item-4 sf-depth-2 sf-no-children"><a href="/category/4520" title="" class="sf-depth-2">OSS</a></li><li id="menu-17138-1" class="middle odd sf-item-5 sf-depth-2 sf-no-children"><a href="/category/5755" title="" class="sf-depth-2">VR/AR</a></li><li id="menu-17139-1" class="last even sf-item-6 sf-depth-2 sf-no-children"><a href="/category/6904" title="" class="sf-depth-2">AI・人工知能</a></li></ul></li><li id="menu-15968-1" class="middle even sf-item-4 sf-depth-1 sf-total-children-5 sf-parent-children-0 sf-single-children-5 menuparent"><a href="/category/4521" title="" class="sf-depth-1 menuparent">運用・管理</a><ul><li id="menu-17140-1" class="first odd sf-item-1 sf-depth-2 sf-no-children"><a href="/category/4522" title="" class="sf-depth-2">プロジェクト管理</a></li><li id="menu-17141-1" class="middle even sf-item-2 sf-depth-2 sf-no-children"><a href="/category/4523" title="" class="sf-depth-2">システム運用</a></li><li id="menu-17142-1" class="middle odd sf-item-3 sf-depth-2 sf-no-children"><a href="/category/4524" title="" class="sf-depth-2">BCP/DR</a></li><li id="menu-17143-1" class="middle even sf-item-4 sf-depth-2 sf-no-children"><a href="/category/4525" title="" class="sf-depth-2">運用監視</a></li><li id="menu-17144-1" class="last odd sf-item-5 sf-depth-2 sf-no-children"><a href="/category/4526" title="" class="sf-depth-2">セキュリティ</a></li></ul></li><li id="menu-16867-1" class="last odd sf-item-5 sf-depth-1 sf-total-children-6 sf-parent-children-0 sf-single-children-6 menuparent"><a href="/category/6905" title="" class="sf-depth-1 menuparent">働き方</a><ul><li id="menu-17145-1" class="first odd sf-item-1 sf-depth-2 sf-no-children"><a href="/category/5546" title="" class="sf-depth-2">資格・試験</a></li><li id="menu-17146-1" class="middle even sf-item-2 sf-depth-2 sf-no-children"><a href="/category/6906" title="" class="sf-depth-2">キャリア・人材</a></li><li id="menu-17147-1" class="middle odd sf-item-3 sf-depth-2 sf-no-children"><a href="/category/6907" title="" class="sf-depth-2">フリーランス/起業</a></li><li id="menu-17148-1" class="middle even sf-item-4 sf-depth-2 sf-no-children"><a href="/category/6908" title="" class="sf-depth-2">ライフハック</a></li><li id="menu-17149-1" class="middle odd sf-item-5 sf-depth-2 sf-no-children"><a href="/category/6909" title="" class="sf-depth-2">教育</a></li><li id="menu-17150-1" class="last even sf-item-6 sf-depth-2 sf-no-children"><a href="/category/6910" title="" class="sf-depth-2">制度・法律</a></li></ul></li></ul> </div> </div> <span class="hidden-xs"> <form class="navbar-form navbar-right" action="/article/37893" method="post" id="search-block-form" accept-charset="UTF-8"><div><div class="container-inline form-inline"> <h2 class="element-invisible">検索フォーム</h2> <div class="form-item form-type-textfield form-item-search-block-form form-group"> <label class="element-invisible" for="edit-search-block-form--2">Search </label> <input placeholder="記事検索" class="form-control input-sm form-control form-text" type="text" id="edit-search-block-form--2" name="search_block_form" value="" size="15" maxlength="128" /> </div> <div class="form-actions form-wrapper" id="edit-actions"><input type="submit" id="edit-submit--2" name="op" value="検索" class="form-submit btn btn-default btn-primary" /></div><input type="hidden" name="form_build_id" value="form-vy4z7O64g4p6svIutAs58Lge5tTn86ATtFswMJh33vI" /> <input type="hidden" name="form_id" value="search_block_form" /> </div> </div></form> </span> <ul class="nav navbar-ichiran hidden-xs hidden-sm"><li class="menu-16167 first"><a href="/category/top">カテゴリ一覧</a></li> <li class="menu-16169 last"><a href="/series/top">連載一覧</a></li> </ul><ul class="nav navbar-nav visible-xs drawer drawer-sub"><li class="menu-16167 first"><a href="/category/top">カテゴリ一覧</a></li> <li class="menu-16169 last"><a href="/series/top">連載一覧</a></li> </ul><ul class="nav navbar-nav visible-xs drawer drawer-sub drawer-sub-sub"><li class="menu-16988 first"><a href="/category/6904" title="">AI・人工知能</a></li> <li class="menu-15948"><a href="/tag/4262" title="">Kubernetes</a></li> <li class="menu-15947"><a href="/tag/3072" title="">OpenStack</a></li> <li class="menu-15945"><a href="/type/4532" title="">イベントレポート</a></li> <li class="menu-15951"><a href="/type/4531" title="">インタビュー</a></li> <li class="menu-16947"><a href="https://thinkit.co.jp/tag/4291" title="">VR</a></li> <li class="menu-16987"><a href="/lifehack" title="">マンガ</a></li> <li class="menu-17001"><a href="/tibooks" title="">Think ITの書籍</a></li> <li class="menu-17112 last"><a href="/OSSfm" title="">OSSfm</a></li> </ul> </div> </div> </nav> <section id="hidden-search-box" style="display: none;"> <form class="navbar-form navbar-right" action="/article/37893" method="post" id="search-block-form" accept-charset="UTF-8"><div><div class="container-inline form-inline"> <h2 class="element-invisible">検索フォーム</h2> <div class="form-item form-type-textfield form-item-search-block-form form-group"> <label class="element-invisible" for="edit-search-block-form--2">Search </label> <input placeholder="記事検索" class="form-control input-sm form-control form-text" type="text" id="edit-search-block-form--2" name="search_block_form" value="" size="15" maxlength="128" /> </div> <div class="form-actions form-wrapper" id="edit-actions"><input type="submit" id="edit-submit--2" name="op" value="検索" class="form-submit btn btn-default btn-primary" /></div><input type="hidden" name="form_build_id" value="form-vy4z7O64g4p6svIutAs58Lge5tTn86ATtFswMJh33vI" /> <input type="hidden" name="form_id" value="search_block_form" /> </div> </div></form></section> <div class="navbar-sub visible-lg visible-md visible-sm"> <div class="container"> <div class="navbar-sub-cell hot-words hidden-sm"> <ul class="links"><li class="menu-16988 first"><a href="/category/6904" title="">AI・人工知能</a></li> <li class="menu-15948"><a href="/tag/4262" title="">Kubernetes</a></li> <li class="menu-15947"><a href="/tag/3072" title="">OpenStack</a></li> <li class="menu-15945"><a href="/type/4532" title="">イベントレポート</a></li> <li class="menu-15951"><a href="/type/4531" title="">インタビュー</a></li> <li class="menu-16947"><a href="https://thinkit.co.jp/tag/4291" title="">VR</a></li> <li class="menu-16987"><a href="/lifehack" title="">マンガ</a></li> <li class="menu-17001"><a href="/tibooks" title="">Think ITの書籍</a></li> <li class="menu-17112 last"><a href="/OSSfm" title="">OSSfm</a></li> </ul> </div> <div class="navbar-sub-cell sns-icons"> <ul class="nav nav-pills pull-right"> <li><a href="http://www.facebook.com/thinkit.co.jp" title="Facebook" target="_blank"><i class="fa fa-facebook-official"></i></a></li> <li><a href="https://twitter.com/thinkitcojp" title="Twitter" target="_blank"><i class="fa-brands fa-x-twitter"></i></a></li> <li><a href="http://thinkit.co.jp/rss.xml" title="RSS"><i class="fa fa-rss"></i></a></li> </ul> </div> </div> </div> <!-- /49282802/ZTEST/ztest-oyabu/ti-video001 --> <div id='div-gpt-ad-1535625745021-0'> <script> cX.callQueue.push(['invoke', function() { googletag.cmd.push(function() { googletag.display('div-gpt-ad-1535625745021-0'); }); }]); </script> </div> </header> <div id="main-wrapper"> <div id="main" class="main"> <div class="container"> <div class="row container"> <div class="col-md-24 radix-layouts-topcol"> <div class="region region-head-ad"> <div id="block-block-83" class="clear-block block block-block"> <div class="content"> <div class="tex2jax"><!--smart_paging_filter--><!-- /49282802/ipc-thinkit/pc-all/super01 --> <div id='div-gpt-ad-1450940771091-0' style='height:90px; width:728px;'> <script type='text/javascript'> cX.callQueue.push(['invoke',function(){ googletag.cmd.push(function() { googletag.display('div-gpt-ad-1450940771091-0'); }); }]); </script> </div></div> </div> </div> </div> </div> </div> </div> <div id="content" class="container"> <div id="page-header"> </div> <div class="container-fluid"> <div class="row container"> <div class="col-md-16 radix-layouts-content"> <div id="breadcrumb" class="visible-desktop"> <h2 class="element-invisible">現在地</h2><div class="breadcrumb"><a href="/">Think IT</a> > <a href="/category/top">カテゴリ一覧</a> > <a href="/category/4508">システム開発</a> > <a href="/category/4514">開発ツール</a></div> </div> <div class="region region-content"> <div class="thinkit_default clearfix thinkit-default" id="article"> <article class="node"> <div class="panel-pane pane-entity-view pane-taxonomy-term" > <div class="pane-content"> <div class="taxonomy-term vocabulary-serial-article view-mode-serial_header clearfix"> <div class="row"> <div class="col-sm-24 "> </div> </div> </div> <!-- Needed to activate display suite support on forms --> </div> </div> <div class="panel-pane pane-entity-view pane-node" > <div class="pane-content"> <div class="node node-article node-promoted node-sticky view-mode-full clearfix"> <div class="row"> <div class="col-sm-24 "> <div class="taxonomy-main"><a href="/category/4514">開発ツール</a></div><div class="category-label"><a href="/type/4529">技術解説</a></div><div class="field field-name-view-serial-count field-type-ds field-label-hidden"> <div class="field-items"> <div class="field-item even"><div class="field field-label-inline clearfix"><div class="field-label">連載 [第7回] :</div> <a href="/series/11545">Windowsユーザーのための WSL2で始める Linux環境構築術</a></div></div> </div> </div> <div class="field field-name-title field-type-ds field-label-hidden"> <div class="field-items"> <div class="field-item even"><h1 class="page-header">「Bash」をカスタマイズして、Linuxをより便利に使いこなそう</h1></div> </div> </div> <div id="node-article-full-group-aside-attribute" class="aside_attribute group_aside_attribute field-group-div"><div class="field field-name-created-date field-type-ds field-label-hidden"> <div class="field-items"> <div class="field-item even"><span class="created-date"><i class="fa fa-clock-o"></i> 2025年2月5日(水)</span></div> </div> </div> <span class="author"><i class="fa fa-user"></i> <span class="person"><a href="/author/22764">水野 源</a></span></span></div><div class="field field-name-field-main-image field-type-image field-label-hidden"> <div class="field-items"> <div class="field-item even"><img class="img-responsive" src="https://thinkit.co.jp/sites/default/files/styles/main_image_730x/public/main_images/ren_wsl2_vtj_cover2_5.png?itok=cbLQxnJw" width="650" height="277" alt=""></div> </div> </div> <div class="easy_social_box clearfix horizontal easy_social_lang_ja"> <div class="easy_social-widget easy_social-widget-twitter first"><a href="http://twitter.com/share" class="twitter-share-button" data-url="https://thinkit.co.jp/article/37893" data-count="horizontal" data-lang="ja" data-via="thinkitcojp" data-related=":" data-text="「Bash」をカスタマイズして、Linuxをより便利に使いこなそう">Tweet</a></div> <div class="easy_social-widget easy_social-widget-facebook"><like href="https://thinkit.co.jp/article/37893" send="true" layout="button_count" width="100" show_faces="false" action="like" colorscheme="light" font=""></like></div> <div class="easy_social-widget easy_social-widget-googleplus"><div class="g-plusone" data-size="medium" data-annotation="bubble" data-href="https://thinkit.co.jp/article/37893"></div></div> <div class="easy_social-widget easy_social-widget-hatena last"> <a href="https://thinkit.co.jp/article/37893" class="hatena-bookmark-button" data-hatena-bookmark-title="「Bash」をカスタマイズして、Linuxをより便利に使いこなそう" data-hatena-bookmark-layout="standard-balloon" data-hatena-bookmark-lang="ja" title="この記事をはてなブックマークに追加"> <img src="//b.st-hatena.com/images/entry-button/button-only@2x.png" alt="このエントリーをはてなブックマークに追加" width="20" height="20" style="border: none;"> </a></div> </div> <!-- /.easy_social_box --><div class="deck">第7回の今回は、Bashの仕組みを解説し、履歴管理やプロンプトをカスタマイズしてCLI環境を向上する方法を解説します。</div><br><div id="table-of-contents-links"> <a name="table-of-contents"></a><div class="toc_title">目次</div> <div class="item-list"><ul class="toc-node-numbers"><li class="toc-node-level-1 first"><a href="/article/37893#toc-1"><span class="toc-number">1</span> <span class="toc-text">はじめに</span></a></li> <li class="toc-node-level-1"><a href="/article/37893#toc-2"><span class="toc-number">2</span> <span class="toc-text">Bashの設定ファイルと読み込み順</span></a></li> <li class="toc-node-level-1"><a href="/article/37893#toc-3"><span class="toc-number">3</span> <span class="toc-text">Bashをカスタマイズしよう</span></a></li> <li class="toc-node-level-2"><a href="/article/37893#toc-5"><span class="toc-number">3.1</span> <span class="toc-text">シェルオプションを使う</span></a></li> <li class="toc-node-level-2"><a href="/article/37893#toc-6"><span class="toc-number">3.2</span> <span class="toc-text">記録できる履歴の件数を増やす</span></a></li> <li class="toc-node-level-2"><a href="/article/37893#toc-7"><span class="toc-number">3.3</span> <span class="toc-text">履歴の前方検索を有効にする</span></a></li> <li class="toc-node-level-2"><a href="/article/37893#toc-8"><span class="toc-number">3.4</span> <span class="toc-text">履歴のあいまい検索を可能にする</span></a></li> <li class="toc-node-level-2"><a href="/article/37893#toc-9"><span class="toc-number">3.5</span> <span class="toc-text">ターミナル間で履歴を共有する</span></a></li> <li class="toc-node-level-2"><a href="/article/37893#toc-10"><span class="toc-number">3.6</span> <span class="toc-text">プロンプトのカスタマイズ</span></a></li> <li class="toc-node-level-2"><a href="/article/37893#toc-11"><span class="toc-number">3.7</span> <span class="toc-text">2段プロンプトのすすめ</span></a></li> <li class="toc-node-level-1 last"><a href="/article/37893#toc-4"><span class="toc-number">4</span> <span class="toc-text">おわりに</span></a></li> </ul></div></div><div class="field field-name-body field-type-text-with-summary field-label-hidden"> <div class="field-items"> <div class="field-item even"><div class="tex2jax"><div class="toc-item-anchor"><a name="toc-1"></a></div><h2 class=" toc-headings">はじめに</h2> <p>どのようなアプリにも、個人用の設定というものが存在します。例えば、Webブラウザはフォントやカラーテーマ、タブの細かい挙動などを個人の好みに応じてカスタマイズできます。Linuxで使われる様々なツールもこうした例に漏れず、非常に柔軟なカスタマイズや機能拡張が可能です。有名なテキストエディタであるVimやEmacsなどがその代表格で、そのカスタマイズの柔軟さと奥の深さは、想像を絶するものがあります<sup><strong>*</strong>1</sup>。</p> <font color="#999999" size="2"><strong>*</strong>1: Emacsは一見テキストエディタのように見えますが、その実体はEmacs Lisp言語の実行環境です。Emacs Lisp言語で実装可能なあらゆる機能をエディタ上で実行できるため、無限の拡張性を持っています。そしてLinuxを使いはじめたばかりのユーザーは、こうしたツールの「カスタマイズ沼」にはまり、休日を溶かすのが定番です。筆者は何度もやらかしています。</font> <p>こうしたアプリは、自分用に細かくカスタマイズすることで、作業効率が大幅に上がることも決して珍しくありません。そこで今回は、LinuxのCLI操作のすべての起点となる、シェル(Bash)の便利なカスタマイズを紹介します。本記事を参考に、BashをカスタマイズしてLinux/WSLをより便利に使いこなしましょう。</p> <div class="toc-item-anchor"><a name="toc-2"></a></div><h2 class=" toc-headings">Bashの設定ファイルと読み込み順</h2> <p>LinuxをはじめとするUnixライクなOSでは、基本的に設定はテキストファイルで管理します。Bashの設定もまた、テキストで記述されています。まずはBashの設定ファイルから見ていきましょう。 </p> <p>Bashの設定ファイルは大きく、システム全体で利用される共通の設定ファイルと、個人ごとの設定ファイルに分けられます。システム全体で利用される設定ファイルが「/etc/profile」です。対して、各ユーザーのホームディレクトリに作られる個人用な設定ファイルは「.bash_profile」「.bash_login」「.profile」「.bashrc」などに分けられています。それでは、カスタマイズの設定は具体的にどのファイルに書けば良いのでしょうか。</p> <p>Bashはその起動のされ方によって「ログインシェル」と、それ以外の「対話的シェル」に分けられます。仮想コンソールやSSHでログインしたときに起動されるシェルがログインシェルです。そしてbashコマンドを実行するなどして起動された、それ以外のシェルが対話的シェルとなります。どのような違いがあるかと言えば、起動時に読み込まれる設定ファイルが異なります。</p> <p>Bashはログインシェルとして起動されると、まず「/etc/profile」を読み込みます。その後にホームディレクトリから「.bash_profile」「.bash_login」「.profile」の順にファイルの存在を調べ、最初に見つかったもの「だけ」を読み込みます。そしてログインシェルでない対話的シェルとして起動した場合は、代わりにホームディレクトリの「.bashrc」を読み込みます。ここまでが標準的なBashの挙動です。</p> <p>Ubuntuでは少し事情が異なります。まず、システムワイドな設定として「/etc/profile.d」というディレクトリが用意されています。そして「/etc/profile」の中で、このディレクトリ内にある拡張子が「.sh」のファイルをすべて追加で読み込むように設定されています。そのため、UbuntuにおけるシステムワイドなBashの設定は、適切な粒度で別ファイルに分割できるのです。これによってメンテナンス性も向上します。</p> <p>続いて個人用の設定ファイルですが、Ubuntuでは各ユーザーのホームディレクトリに、デフォルトで「.profile」と「.bashrc」のみが作成されます。そして「.profile」の中で「.bashrc」を読み込むように設定されています。つまり、ログインシェルか対話的シェルであるかに関わらず「.bashrc」が必ず読み込まれるため、すべての設定はここに書くのがお勧めです。</p> <p>なお「.bash_profile」や「.bash_login」といったファイルを「作ってはいけない」という点に注意してください。これらのファイルは「.profile」よりも優先順位が上のため、ファイルを作ってしまうとデフォルトの設定が読み込まれなくなってしまいます。</p> <p>結論をまとめると、UbuntuにおけるBashの設定は以下のようになります。</p> <ul> <li>複数のユーザーが利用するようなサーバーで、全ユーザーに共通のカスタマイズを施したい場合は「/etc/profile.d」以下に設定ファイルを作成すれば良い</li> <li>個人用の設定はすべて「.bashrc」に書けば良い</li> </ul> <p>Bashの設定ファイルの中身は、Bashがそのまま実行可能なシェルスクリプトそのものです。今回は具体的な設定内容の紹介に留め、シェルスクリプトの文法や理屈については解説しません。そのため、興味があれば、ぜひ専門の文献などを当たってみてください。</p> <div class="toc-item-anchor"><a name="toc-3"></a></div><h2 class=" toc-headings">Bashをカスタマイズしよう</h2> <p>それでは、筆者が実際に行っているお勧めのカスタマイズを紹介していきます。</p> <div class="toc-item-anchor"><a name="toc-5"></a></div><h3 class=" toc-headings">シェルオプションを使う</h3> <p>Bashには様々な「オプション」が用意されています。このオプションを設定するコマンドが「shopt」です。まずは実行してみましょう。</p> <pre class="brush: plain">$ shopt</pre> <div class="image" id="id_ren_wsl2_vtj_07_01"> <a href="/sites/default/files/article_node/ren_wsl2_vtj_07_01.png" rel="lightbox"><img src="/sites/default/files/article_node/ren_wsl2_vtj_07_01.png" width="500"></a> <p class="caption">shoptコマンドを実行すると、シェルオプションの一覧が表示される</p> </div> <p>shoptコマンドを実行すると、シェルオプションの一覧と現在の有効/無効(on/off)が表示されました。</p> <p>各シェルオプションを有効にするには「-s」オプション<sup><strong>*</strong>2</sup>に続けてシェルオプション名を指定します。また、シェルオプションを無効にするには「-u」オプションとシェルオプション名を指定します。</p> <font color="#999999" size="2"><strong>*</strong>2: まぎらわしいですが、ここで言う「オプション」とは、コマンドラインに指定するオプションのことです。</font> <p>見ての通り、非常に多くのシェルオプションが用意されていますが、その中でもお勧めなのが「autocd」です。これはcdコマンドを入力せずに、ディレクトリ名のみでカレントディレクトリを移動できるシェルの機能です。試しに有効化してみましょう。</p> <pre class="brush: plain">$ shopt -s autocd</pre> <p>以下のように、ディレクトリ名のパス(ここでは/usr/bin)を入力するだけで、内部的にcdコマンドが実行されます。</p> <pre class="brush: plain">$ pwd /home/mizuno $ /usr/bin cd -- /usr/bin $ pwd /usr/bin</pre> <p>LinuxのCLIにおいて、ワーキングディレクトリを変更するcdコマンドは何度も繰り返し実行するコマンドです。これを省略できるのは、一見地味ですが慣れると手放せなくなる便利機能です。ぜひ試してみてください。</p> <p>以下のコマンドを実行すると「.bashrc」の末尾に「shopt -s autocd」という1行を追記します。以後Bashを起動すれば、自動的にautocdが有効になります。</p> <pre class="brush: plain">$ echo 'shopt -s autocd' >> ~/.bashrc</pre> <p>autocd以外のシェルオプションについても<a href="https://www.gnu.org/software/bash/manual/html_node/The-Shopt-Builtin.html" target="blank">マニュアル</a>を参考に、色々と試してみると良いでしょう。</p> <div class="toc-item-anchor"><a name="toc-6"></a></div><h3 class=" toc-headings">記録できる履歴の件数を増やす</h3> <p>筆者は、Bashの機能で最も便利なものは何かと言えば「履歴」だと考えています。Bashは過去に実行したコマンドの履歴を保存しており、簡単に呼び出すことができるのです。試してみましょう。まず、以下のようにlsコマンドを「-a」オプション付きで実行してください。</p> <pre class="brush: plain">$ ls -a</pre> <p>通常通りコマンドが実行され、カレントディレクトリの内容が表示されます。再びプロンプトが表示されたら、カーソルキーの[↑]キーか[Ctr]キー+[P]キーを押してみましょう。直前に実行した「ls -a」がプロンプトの後に自動的に入力されます。つまり[↑]キーと[Enter]キーだけで、以前に実行したコマンドを再実行できるというわけです。</p> <p>なお、履歴から呼び出したコマンドは、キーボードから入力を終えて[Enter]キーの押下を待っているのと同じ状態になっています。つまり、この状態で[←]キーや[→]キー、[BackSpace]キーを使って一部だけを編集可能です。例えば、履歴からコマンドを呼び出し、オプションや引数だけ書き換えて再利用することもできるのです。</p> <pre class="brush: plain">$ ← プロンプトが表示されている状態で[↑]キーか[Ctrl]キー+[P]キーを押す $ ls -a ← 直前に実行したコマンドが入力された状態となる</pre> <p>さらに[↑]キーを続けて押すと、より古いコマンドを順番に呼び出すことができます。また[↓]キーか[Ctrl]キー+[N]キーを押すと、新しい方向に履歴を辿れます。うっかり[↑]キーを押しすぎてしまったら、[↓]キーを押して戻りましょう。ls程度のシンプルなコマンドであればそれほど恩恵はありませんが、複雑なコマンドの場合は毎回キーボードからコマンドを入力していると時間もかかりますし、タイプミスで実行に失敗してしまうこともあるでしょう。過去に一度でも実行したコマンドは、なるべく履歴を活用することを推奨します。</p> <p>履歴はコマンドの実行効率を上げる資産であり、老舗のウナギ屋のタレのようなものです。Linuxを使い込めば使い込むほど、その大切さが身にしみてくるでしょう。実際に、筆者も新しいPCをセットアップしたら、まず最初にシェルの履歴ファイルをコピーして移植するほどです。Ubuntuのデフォルトの設定では直近から2,000件の履歴を「.bash_history」というファイルに保存しており、そのうち新しい方から1,000件をBashの起動時に読み込みます。しかし、筆者は1,000件では「まったく足りない」と考えているので、履歴の保存件数を増やすカスタマイズを推奨します。</p> <p>実際にやってみましょう。Bashの履歴の件数は.bashrcの20行目付近で設定されています。以下の部分です。</p> <pre class="brush: plain">HISTSIZE=1000 HISTFILESIZE=2000</pre> <p>「HISTFILESIZE」が「.bash_history」に保存される件数で、「HISTSIZE」がBashの起動時に読み込まれる件数です。ざっくりですが、どちらも「100,000」くらいにしておけば十分でしょう<sup><strong>*</strong>3</sup>。テキストエディタで該当部分を書き換えてから、Bashを再起動してください。</p> <font color="#999999" size="2"><strong>*</strong>3: 筆者の業務PCの履歴ファイルをカウントしてみたら、本日時点で75,000件ほど記録されていました。</font> <div class="toc-item-anchor"><a name="toc-7"></a></div><h3 class=" toc-headings">履歴の前方検索を有効にする</h3> <p>前述のカスタマイズで、履歴を10万件保存できるようになりましたが、10万回前に実行したコマンドを呼び出したい場合に[↑]キーを10万回押すのは非現実的です。そこで活用したいのが履歴の検索です。プロンプトが表示されている状態で[Ctrl]キー+[R]キーを押すと、プロンプトが「reverse-i-search」という表示に変わります。ここに検索したい文字列を入力すると、履歴の中からその文字列を含むコマンドを検索できるのです。</p> <div class="image" id="id_ren_wsl2_vtj_07_02"> <a href="/sites/default/files/article_node/ren_wsl2_vtj_07_02.png" rel="lightbox"><img src="/sites/default/files/article_node/ren_wsl2_vtj_07_02.png" width="500"></a> <p class="caption">[Ctrl]キー+[R]キーを押した状態で「apt」と入力した例。「sudo apt update」コマンドがヒットした</p> </div> <p>履歴の検索はインクリメンタルサーチとなっているため、検索文字を長く入力するほど候補を絞り込めます。履歴の中に複数の候補がある場合は、文字の入力中に追加で[Ctrl]キー+[R]キーを押すと次の候補を呼び出せます。目的のコマンドが見つかったら、[Enter]キーを押せばコマンドを実行できる点は[↑]キーによる履歴の呼び出しと同様です。</p> <p>[↑]キーに対する[↓]キーのように、履歴の検索でも[Ctrl]キー+[R]キーを押しすぎてしまった場合は[Ctrl]キー+[S]キーを押せば新しい履歴に戻って来られますが、Ubuntuのデフォルトの状態では、このキーは動作しません。正確に言うと、このキーを押すとターミナルの出力が停止して、操作できなくなってしまいます<sup><strong>*</strong>4</sup>。</p> <font color="#999999" size="2"><strong>*</strong>4: この状態になってしまったら、[Ctrl]キー+[Q]キーを押すことで出力を再開できます。</font> <p>正直なところ、ターミナルの出力を停止したいというシーンはほとんどないでしょう。そこで、このキーバインドを解除して履歴の順方向検索を有効にしましょう。「.bashrc」の末尾に、以下の1行を追加してください。ファイルを書き換えたら、Bashを再起動しておきましょう。</p> <pre class="brush: plain">stty stop undef</pre> <div class="image" id="id_ren_wsl2_vtj_07_03"> <a href="/sites/default/files/article_node/ren_wsl2_vtj_07_03.png" rel="lightbox"><img src="/sites/default/files/article_node/ren_wsl2_vtj_07_03.png" width="500"></a> <p class="caption">[Ctrl]キー+[R]キーを何度か押して、aptで履歴を検索している最中に[Ctrl]キー+[S]キーを押した状態。プロンプトの表示が「i-search」となり、順方向の検索が動作していることが分かる</p> </div> <p>履歴の検索を利用すれば、大昔に実行したコマンドや、名前の一部だけしか覚えていないコマンドでも簡単に探し出すことができます。直前に実行したコマンドを繰り返すときは[↑]キーが便利ですが、過去のコマンドを再実行したいときは検索を活用するのがお勧めです。</p> <div class="toc-item-anchor"><a name="toc-8"></a></div><h3 class=" toc-headings">履歴のあいまい検索を可能にする</h3> <p>履歴は部分一致で検索されるため「ls -la」という履歴は「ls」「-la」「ls -l」のいずれで検索してもヒットしますが、「ls -a」ではヒットしません。このように、オプションの並び順が変わっただけでヒットしなくなるのは少し使いづらいでしょう。そこで、もう少し柔軟な検索が可能になるカスタマイズを紹介します。</p> <p>まず、以下のコマンドで「fzf」パッケージをインストールしてください。これはあいまい検索フィルターである<a href="https://github.com/junegunn/fzf" target="blank">fzf</a>のパッケージをインストールします。</p> <pre class="brush: plain">$ sudo apt install -U -y fzf</pre> <p>「.bashrc」の末尾に以下の1行を追記して、Bashを再起動してください。</p> <pre class="brush: plain">source /usr/share/doc/fzf/examples/key-bindings.bash</pre> <p>再起動したBashで[Ctrl]キー+[R]キーを押すと、通常の履歴検索の代わりに「__fzf_history__」というシェル関数が呼び出されるようになっています。この関数は、Bashの履歴を表示する「history」コマンドの出力をフィルタである「fzf」コマンドに渡し、あいまいな検索を可能にしています。</p> <div class="image" id="id_ren_wsl2_vtj_07_04"> <a href="/sites/default/files/article_node/ren_wsl2_vtj_07_04.png" rel="lightbox"><img src="/sites/default/files/article_node/ren_wsl2_vtj_07_04.png" width="500"></a> <p class="caption">__fzf_history__を有効にして[Ctrl]キー+[R]キーを押した状態。過去の履歴が一覧表示されている</p> </div> <p>通常の履歴の検索と同様に、検索文字列を入力してみましょう。候補が絞り込まれていきますが、その挙動が「あいまい検索」になっていることが分かるでしょう。</p> <div class="image" id="id_ren_wsl2_vtj_07_005"> <a href="/sites/default/files/article_node/ren_wsl2_vtj_07_005.png" rel="lightbox"><img src="/sites/default/files/article_node/ren_wsl2_vtj_07_005.png" width="500"></a> <p class="caption">__fzf_history__に「ls -a」と入力した状態。「ls -a」コマンドそのものはもとより、オプションの並び順が異なる「ls -la」コマンドや、その文字を含む「lsb_release -a」コマンドもヒットしていることが分かる</p> </div> <p>履歴がある程度絞り込めたら、[↑]キーと[↓]キーで履歴を選択して[Enter]キーで実行できます。ヒットした複数の候補が一覧表示されるため、1行ずつしか表示できなかった通常の検索と比較して、飛躍的に視認性も向上しています。fzfを使った履歴のあいまい検索は、筆者にとっては手放せない定番のカスタマイズとなっています。</p> <div class="toc-item-anchor"><a name="toc-9"></a></div><h3 class=" toc-headings">ターミナル間で履歴を共有する</h3> <p>LinuxのCLIを使いこなせるようになると複数のターミナルを起動して異なる作業を同時並行することもよくありますが、標準状態のBashではターミナル間で履歴を共有できません。例えば、ターミナルAであるコマンドを実行し、その直後にターミナルBで[↑]キーを押しても、ターミナルAの履歴は読み込めないのです。これでは非常に不便です。そこで、「.bashrc」の末尾に以下の設定を追記してください。</p> <pre class="brush: plain">export PROMPT_COMMAND="history -n; history -w; history -c; history -r; $PROMPT_COMMAND"</pre> <p>環境変数「PROMPT_COMMAND」には、シェルがプロンプトを表示する直前に実行するコマンドを定義できます。ここでは、以下の4つのコマンドを順次実行するように設定しています。</p> <div id="NIC" class="table"> <table> <thead> <th><b>コマンド</b></th> <th><b>挙動</b></th> </thead> <tbody> <tr> <td>history -n</td> <td>履歴ファイルからまだ読み込んでいない履歴を読み込む</td> </tr> <tr> <td>history -w</td> <td>現在の履歴をファイルに書き込む</td> </tr> <tr> <td>history -c</td> <td>履歴をクリアする</td> </tr> <tr> <td>history -r</td> <td>ファイルから履歴を読み込む</td> </tr> </tbody> </table> </div> <p>つまり、コマンドを実行する(次のプロンプトが表示される)たびに「別のシェルで更新されている可能性のある履歴をファイルから追加で読み込む」「現在の履歴の内容を履歴ファイルに書き込む」「現在の履歴をクリアしてファイルから読み込み直す」という処理を行っています。これをすべてのシェルで行うことにより、ターミナル間で半リアルタイムに履歴を同期できるというわけです。</p> <p>注意点として、履歴ファイルを介した履歴の同期はプロンプトが表示される直前に行われるという点です。つまり、ターミナルAで実行した直前のコマンドをターミナルBからすぐに呼び出したい場合は、ターミナルBで一度[Enter]キーを押してプロンプトを再表示する必要があります。</p> <div class="toc-item-anchor"><a name="toc-10"></a></div><h3 class=" toc-headings">プロンプトのカスタマイズ</h3> <p>UbuntuのBashのプロンプトには、デフォルトで「ユーザー名@ホスト名:カレントディレクトリ$」と表示されています。コマンドを実行する度に表示されるプロンプトは「現在のCLIの状態を確認する」という意味で非常に重要な情報源です。ここに様々な情報を追加するカスタマイズ、例えばプロジェクトのディレクトリ内では、現在のGitのブランチを表示したり、使用中のAWSのプロファイル名を表示したりなどは、シェルの定番のカスタマイズとなっています。</p> <p>Bashのプロンプトは、環境変数「PS1」でコントロールできます。実際にやってみましょう。「.bashrc」の末尾に、以下を追記してください。gitコマンドを実行して現在のブランチを表示するシェル関数を定義し、その関数をプロンプト文字列の中に埋め込んでいます(Ubuntuのデフォルトのプロンプト設定の末尾に「$(_current_branch)」の部分を足しています)。</p> <pre class="brush: plain">function _current_branch() { _git_branch=$(git branch --show-current 2>/dev/null) && echo "[$_git_branch] " } export PS1='\[\e]0;\u@\h: \w\a\]${debian_chroot:+($debian_chroot)}\[\033[01;32m\]\u@\h\[\033[00m\]:\[\033[01;34m\]\w\[\033[00m\] $(_current_branch)\$ '</pre> <div class="image" id="id_ren_wsl2_vtj_07_06"> <a href="/sites/default/files/article_node/ren_wsl2_vtj_07_06.png" rel="lightbox"><img src="/sites/default/files/article_node/ren_wsl2_vtj_07_06.png" width="500"></a> <p class="caption">カレントディレクトリをGitで管理されているディレクトリに変更すると、プロンプトの最後に現在のブランチが表示されるようになった</p> </div> <div class="toc-item-anchor"><a name="toc-11"></a></div><h3 class=" toc-headings">2段プロンプトのすすめ</h3> <p>プロンプトのカスタマイズは便利なので、とにかく色々な情報を表示したくなります。しかし、プロンプトが長くなると相対的にコマンドを入力するスペースが狭くなり、使い勝手が低下してしまいます。そこで筆者が強く推奨するのが「2段プロンプト」です。文字通り、プロンプトの中に改行を埋め込むことでプロンプトを2段にしてしまおうという発想です。先ほど「.bashrc」に記述したプロンプトの設定を、以下のように書き換えてください。</p> <pre class="brush: plain">function _current_branch() { _git_branch=$(git branch --show-current 2>/dev/null) && echo "[$_git_branch] " } function _1st_line() { DATE="[$(date '+%Y-%m-%d %H:%M:%S')]" WIDTH=$(tput cols) printf "%$(( $WIDTH - ${#DATE} - 1 ))s" | tr ' ' '-' echo " $DATE" } export PS1='$(_1st_line)\[\e]0;\u@\h: \w\a\]${debian_chroot:+($debian_chroot)}\[\033[01;32m\]\u@\h\[\033[00m\]:\[\033[01;34m\]\w\[\033[00m\] $(_current_branch)\$ '</pre> <p>新しくプロンプトの1段目を表示するシェル関数を定義しています。具体的な処理としては、dateコマンドで現在時刻を、tputコマンドでターミナルの横幅を取得しています。そして、現在時刻の文字数をターミナルの幅から引き(実際にはスペースを入れるため、もう1文字分を引いています)、その数だけprintfコマンドでスペースを出力し、trコマンドでスペースをハイフンに置換したものを現在時刻と合わせて出力しています。この関数をプロンプト文字列の先頭に埋め込みました。関数の最後で時刻を表示しているechoコマンドが改行を出力するため、プロンプト内で改行されるというわけです。</p> <div class="image" id="id_ren_wsl2_vtj_07_07"> <a href="/sites/default/files/article_node/ren_wsl2_vtj_07_07.png" rel="lightbox"><img src="/sites/default/files/article_node/ren_wsl2_vtj_07_07.png" width="500"></a> <p class="caption">2段プロンプトの例。1段目にセパレーターとして水平線と現在時刻を表示してみた。セパレーターによって視認性が向上するだけでなく、コマンドを実行した時刻がターミナル上に残るため記録としても便利だ</p> </div> <p>プロンプトには、様々な<a href="https://www.gnu.org/software/bash/manual/bash.html#Controlling-the-Prompt" target="blank">特殊文字</a>を指定できます。マニュアルを参考に、自分だけの使いやすいプロンプトを作ってみてください。</p> <div class="toc-item-anchor"><a name="toc-4"></a></div><h2 class=" toc-headings">おわりに</h2> <p>今回はBashの使い勝手をより向上させるため、履歴とプロンプトの見た目を改善するカスタマイズを紹介しました。これ以外にも、Bashには様々な機能が用意されています。ぜひマニュアルを読んだり、専門の文献に当たるなどして、自分なりの使いやすいCLI環境を構築してみましょう。またCLIの使い勝手をさらに向上させたいのであれば、Bashよりも高機能なシェルに乗り換えるというのも1つの手段でしょう。興味があれば検討してみてください。</p> <p>今回はBashの設定ファイルを変更しましたが、こうした個人向けの設定ファイル群の管理にもノウハウがあります。次回は、Linuxにおける設定ファイルの上手な管理方法を紹介します。</p></div></div> </div> </div> <div class="easy_social_box clearfix horizontal easy_social_lang_ja"> <div class="easy_social-widget easy_social-widget-twitter first"><a href="http://twitter.com/share" class="twitter-share-button" data-url="https://thinkit.co.jp/article/37893" data-count="horizontal" data-lang="ja" data-via="thinkitcojp" data-related=":" data-text="「Bash」をカスタマイズして、Linuxをより便利に使いこなそう">Tweet</a></div> <div class="easy_social-widget easy_social-widget-facebook"><like href="https://thinkit.co.jp/article/37893" send="true" layout="button_count" width="100" show_faces="false" action="like" colorscheme="light" font=""></like></div> <div class="easy_social-widget easy_social-widget-googleplus"><div class="g-plusone" data-size="medium" data-annotation="bubble" data-href="https://thinkit.co.jp/article/37893"></div></div> <div class="easy_social-widget easy_social-widget-hatena last"> <a href="https://thinkit.co.jp/article/37893" class="hatena-bookmark-button" data-hatena-bookmark-title="「Bash」をカスタマイズして、Linuxをより便利に使いこなそう" data-hatena-bookmark-layout="standard-balloon" data-hatena-bookmark-lang="ja" title="この記事をはてなブックマークに追加"> <img src="//b.st-hatena.com/images/entry-button/button-only@2x.png" alt="このエントリーをはてなブックマークに追加" width="20" height="20" style="border: none;"> </a></div> </div> <!-- /.easy_social_box --><div class="tags"><i class="fa fa-tags"></i> <span class="tag"><a href="/tag/11539">Windows 11</a> / <a href="/tag/850">Linux</a> / <a href="/tag/11540">Windows Subsystem for Linux</a> / <a href="/tag/11541">WSL</a></span></div> </div> </div> </div> <!-- Needed to activate display suite support on forms --> </div> </div> <div class="panel-pane pane-entity-view pane-taxonomy-term" > <div class="pane-content"> <div class="taxonomy-term vocabulary-serial-article view-mode-serial_footer clearfix"> <div class="row"> <div class="col-sm-24 "> </div> </div> </div> <!-- Needed to activate display suite support on forms --> </div> </div> <div class="panel-pane pane-views-panes pane-restrict-panel-pane-1" id="download-content" > <div class="pane-content"> <div class="view view-restrict view-id-restrict view-display-id-panel_pane_1 member-contents view-dom-id-951a1571c8680722ccc9b8845fb63612"> <div class="view-content"> <div> </div> </div> </div> </div> </div> <div class="panel-pane pane-views pane-pager" > <div class="pane-content"> <div class="freepager"> <div class="row"> <div class="col-xs-12 freepager-previous"> <a href="/article/37861" rel="prev"><div class="direction-prev"> <div class="freepager-direction-prev"> <i class="fa fa-chevron-left"></i> <span>前の記事</span> </div> <div class="freepager-item"> <div class="freepager-img"><img class="img-responsive" src="https://thinkit.co.jp/sites/default/files/styles/50x50/public/main_images/ren_wsl2_vtj_cover2_4.png?itok=FMOgF92r" width="50" height="50" alt="" /></div> <div class="freepager-title">第6回 <br />Linuxの基礎コマンド群「Coreutils」を使いこなそう</div> </div> </div></a> </div> <div class="col-xs-12 freepager-next"> <a href="/article/37943" rel="next"><div class="direction-next"> <div class="freepager-direction-next"> <i class="fa fa-chevron-right"></i> <span>次の記事</span> </div> <div class="freepager-item"> <div class="freepager-img"><img class="img-responsive" src="https://thinkit.co.jp/sites/default/files/styles/50x50/public/main_images/ren_wsl2_vtj_cover2_6.png?itok=9sgT9UpA" width="50" height="50" alt="" /></div> <div class="freepager-title">第8回 <br />WSLとWindowsの設定ファイルを「chezmoi」を使って安全に管理しよう</div> </div> </div></a> </div> </div> </div> </div> </div> <div class="panel-pane pane-views-panes pane-article-ref-panel-pane-1" > <div class="pane-content"> <div class="view view-article-ref view-id-article_ref view-display-id-panel_pane_1 view-dom-id-29e21ec48c02200de83125ec0e931a35"> <div class="view-content"> <div class="views-row views-row-1 views-row-odd views-row-first views-row-last"> <div class="node node-author node-promoted node-teaser view-mode-teaser clearfix"> <div class=""> <div class="author-wrapper"> <div class="author-name-table"> <div class="author-name-box"> <span class="author-label">著者</span><span class="author-name"><div class="field field-name-title field-type-ds field-label-hidden"> <div class="field-items"> <div class="field-item even">水野 源</div> </div> </div> </span> </div> <div class="author-button-box"> <a class="author-button hidden-xs" href="/author/22764" role="button">この著者の記事一覧</a> <a class="author-button hidden-sm hidden-md hidden-lg" href="/author/22764" role="button">この著者の<br>記事一覧</a> </div> </div> <div class="author-info-box"> <div class="author-img"> </div> <div class="author-info"> <div class="field field-name-field-op-author-jobtitle field-type-text field-label-hidden"> <div class="field-items"> <div class="field-item even">日本仮想化技術株式会社</div> </div> </div> <div class="field field-name-body field-type-text-with-summary field-label-hidden"> <div class="field-items"> <div class="field-item even"><div class="tex2jax">Ubuntu Japanese Teamメンバー。理想のフリーデスクトップ環境を求めて東へ西へ……のはずが,気がついたら北の大地で就職していたインフラ寄りのエンジニア。最近レンズ沼にハマる。日本仮想化技術株式会社所属。</div></div> </div> </div> </div> </div> </div> </div> </div> </div> </div> </div> </div> </div> <div class="panel-pane pane-custom pane-1 adsense_pane_node" > <div class="pane-content"> <div class="adsense adsense-under-node1 col-sm-12"> <script async src="//pagead2.googlesyndication.com/pagead/js/adsbygoogle.js"></script> <!-- thinkit_u-article01 --> <ins class="adsbygoogle" style="display:inline-block;width:300px;height:250px" data-ad-client="ca-pub-4894439427301282" data-ad-slot="8355601071"></ins> <script> (adsbygoogle = window.adsbygoogle || []).push({}); </script> </div> <div class="adsense adsense-under-node2 col-sm-12"> <script async src="//pagead2.googlesyndication.com/pagead/js/adsbygoogle.js"></script> <!-- thinkit_u-article02 --> <ins class="adsbygoogle" style="display:inline-block;width:300px;height:250px" data-ad-client="ca-pub-4894439427301282" data-ad-slot="9832334271"></ins> <script> (adsbygoogle = window.adsbygoogle || []).push({}); </script> </div> </div> </div> <div class="panel-pane pane-views-panes pane-article-same-serial-panel-pane-1" > <h2 class="pane-title"> <i class="fa fa-history"></i> 連載バックナンバー </h2> <div class="pane-content"> <div class="view view-article-same-serial view-id-article_same_serial view-display-id-panel_pane_1 article-list view-dom-id-29843f7fbbc059a376d007408c9fd4ba"> <div class="view-content"> <div class="views-row views-row-1 views-row-odd views-row-first"> <div class="ds-1col node node-article node-promoted node-sticky node-teaser view-mode-teaser clearfix"> <a href="/article/37985"><img class="img-responsive" src="https://thinkit.co.jp/sites/default/files/styles/articlethumbnail650x277/public/main_images/ren_wsl2_vtj_cover2_7.png?itok=0gxCkT3V" width="650" height="277" alt="" /></a><div class="group-rensai-texts field-group-div"><span class="category-label"><a href="/category/4514">開発ツール</a></span><span class="category-label"><a href="/type/4529">技術解説</a></span><div class="field field-name-field-serial-number field-type-number-integer field-label-hidden"> <div class="field-items"> <div class="field-item even">第9回</div> </div> </div> <h2 class="list"><a href="/article/37985">Windowsでもコンテナを使いたい! WSLで「Docker」に入門しよう</a></h2><div class="date">2025/3/4</div><div class="deck">第9回の今回は、WSLを利用してWindows上でコンテナの実行環境「Docker」を動かす方法について解説します。</div><div class="field field-name-node-link field-type-ds field-label-hidden"> <div class="field-items"> <div class="field-item even"><a href="/article/37985" class="">続きを読む</a></div> </div> </div> </div></div> </div> <div class="views-row views-row-2 views-row-even"> <div class="ds-1col node node-article node-promoted node-sticky node-teaser view-mode-teaser clearfix"> <a href="/article/37943"><img class="img-responsive" src="https://thinkit.co.jp/sites/default/files/styles/articlethumbnail650x277/public/main_images/ren_wsl2_vtj_cover2_6.png?itok=lPvM_N6O" width="650" height="277" alt="" /></a><div class="group-rensai-texts field-group-div"><span class="category-label"><a href="/category/4514">開発ツール</a></span><span class="category-label"><a href="/type/4529">技術解説</a></span><div class="field field-name-field-serial-number field-type-number-integer field-label-hidden"> <div class="field-items"> <div class="field-item even">第8回</div> </div> </div> <h2 class="list"><a href="/article/37943">WSLとWindowsの設定ファイルを「chezmoi」を使って安全に管理しよう</a></h2><div class="date">2025/2/19</div><div class="deck">第8回の今回は、「chezmoi」を活用してdotfilesを安全に管理する方法を解説します。</div><div class="field field-name-node-link field-type-ds field-label-hidden"> <div class="field-items"> <div class="field-item even"><a href="/article/37943" class="">続きを読む</a></div> </div> </div> </div></div> </div> <div class="views-row views-row-3 views-row-odd views-row-last"> <div class="ds-1col node node-article node-promoted node-sticky node-teaser view-mode-teaser clearfix"> <a href="/article/37893" class="active"><img class="img-responsive" src="https://thinkit.co.jp/sites/default/files/styles/articlethumbnail650x277/public/main_images/ren_wsl2_vtj_cover2_5.png?itok=ClPV1-es" width="650" height="277" alt=""></a><div class="group-rensai-texts field-group-div"><span class="category-label"><a href="/category/4514">開発ツール</a></span><span class="category-label"><a href="/type/4529">技術解説</a></span><div class="field field-name-field-serial-number field-type-number-integer field-label-hidden"> <div class="field-items"> <div class="field-item even">第7回</div> </div> </div> <div class="toc-item-anchor"><a name="toc-1"></a></div><h2 class="list toc-headings"><a href="/article/37893" class="active">「Bash」をカスタマイズして、Linuxをより便利に使いこなそう</a></h2><div class="date">2025/2/5</div><div class="deck">第7回の今回は、Bashの仕組みを解説し、履歴管理やプロンプトをカスタマイズしてCLI環境を向上する方法を解説します。</div><div class="field field-name-node-link field-type-ds field-label-hidden"> <div class="field-items"> <div class="field-item even"><a href="/article/37893" class=" active">続きを読む</a></div> </div> </div> </div></div> </div> </div> </div> </div> </div> <div class="panel-pane pane-custom pane-2" > <h2 class="pane-title"> <i class="fa fa-cloud-download"></i>Think ITメルマガ会員登録受付中 </h2> <div class="pane-content"> <div class="tex2jax"><!--smart_paging_filter--><style> .button_whitepaper_submit { display:block; width:50%; margin:2em auto 3em; padding:1em; border-radius:4px; background:#f1b000; color:#fff; text-decoration:none; text-align:center; } </style> Think ITでは、技術情報が詰まったメールマガジン「Think IT Weekly」の配信サービスを提供しています。メルマガ会員登録を済ませれば、メルマガだけでなく、さまざまな限定特典を入手できるようになります。 <p><a class="button_whitepaper_submit" href="https://thinkit.co.jp/member" >Think ITメルマガ会員のサービス内容を見る</a></p></div> </div> </div> <div class="panel-pane pane-views-panes pane-article-related-panel-pane-1" > <h2 class="pane-title"> <i class="fa fa-thumbs-up"></i> 他にもこの記事が読まれています </h2> <div class="pane-content"> <div class="view view-article-related view-id-article_related view-display-id-panel_pane_1 whatsnew-list view-dom-id-7269d9918a4a0c01bbddf4cc6b5efde3"> <div class="view-content"> <div class="views-responsive-grid views-responsive-grid-horizontal views-columns-3 row"> <div class="views-row views-row-1 views-row-first"> <div class="views-column col-sm-8 views-column-1 views-column-first"> <div class="node node-article node-promoted node-sticky view-mode-teaser_vertical clearfix"> <div class=""> <div class="field field-name-field-main-image"><a href="/article/38030"><img class="img-responsive" src="https://thinkit.co.jp/sites/default/files/styles/articlethumbnail650x277/public/main_images/ren_AI_software-test_main_1.png?itok=3UHc0zBV" width="650" height="277" alt="" /></a></div><div class="group-teaser-vertical-text field-group-div"><span class="category-label-inverse"><a href="/category/4512">設計/手法/テスト</a></span><span class="category-label-inverse"><a href="/type/4529">技術解説</a></span><div class="field field-name-title"><h2 class="title"><a href="/article/38030">AIを活用したDevOps : 導入のベストプラクティス</a></h2></div><div class="date pull-right">2025/3/24</div></div></div> </div> </div> <div class="views-column col-sm-8 views-column-2"> <div class="node node-article node-promoted node-sticky view-mode-teaser_vertical clearfix"> <div class=""> <div class="field field-name-field-main-image"><a href="/article/38029"><img class="img-responsive" src="https://thinkit.co.jp/sites/default/files/styles/articlethumbnail650x277/public/main_images/ren_krita_python_cover_12.png?itok=UJVbE9cr" width="650" height="277" alt="" /></a></div><div class="group-teaser-vertical-text field-group-div"><span class="category-label-inverse"><a href="/category/4513">開発言語</a></span><span class="category-label-inverse"><a href="/type/4529">技術解説</a></span><div class="field field-name-title"><h2 class="title"><a href="/article/38029">「Krita」と「Python」でプラグインを作ろう</a></h2></div><div class="date pull-right">2025/3/21</div></div></div> </div> </div> <div class="views-column col-sm-8 views-column-3 views-column-last"> <div class="node node-article node-promoted node-sticky view-mode-teaser_vertical clearfix"> <div class=""> <div class="field field-name-field-main-image"><a href="/article/38050"><img class="img-responsive" src="https://thinkit.co.jp/sites/default/files/styles/articlethumbnail650x277/public/main_images/38050_main.jpg?itok=7uhWJ0vm" width="650" height="277" alt="" /></a></div><div class="group-teaser-vertical-text field-group-div"><span class="category-label-inverse"><a href="/category/4511">データベース</a></span><span class="category-label-inverse"><a href="/type/4529">技術解説</a></span><div class="field field-name-title"><h2 class="title"><a href="/article/38050">ClickHouseを使ったデータレイクの概要を解説する動画を紹介</a></h2></div><div class="date pull-right">2025/3/21</div></div></div> </div> </div> </div> <div class="views-row views-row-2 views-row-last"> <div class="views-column col-sm-8 views-column-1 views-column-first"> <div class="node node-article node-promoted node-sticky view-mode-teaser_vertical clearfix"> <div class=""> <div class="field field-name-field-main-image"><a href="/article/38018"><img class="img-responsive" src="https://thinkit.co.jp/sites/default/files/styles/articlethumbnail650x277/public/main_images/ren_devrel_cover_main_32.png?itok=qZZhJxQt" width="650" height="277" alt="" /></a></div><div class="group-teaser-vertical-text field-group-div"><span class="category-label-inverse"><a href="/category/4508">システム開発</a></span><span class="category-label-inverse"><a href="/type/4529">技術解説</a></span><div class="field field-name-title"><h2 class="title"><a href="/article/38018">インドでDevRelコミュニティを立ち上げた話</a></h2></div><div class="date pull-right">2025/3/18</div></div></div> </div> </div> <div class="views-column col-sm-8 views-column-2"> <div class="node node-article node-promoted node-sticky view-mode-teaser_vertical clearfix"> <div class=""> <div class="field field-name-field-main-image"><a href="/article/38040"><img class="img-responsive" src="https://thinkit.co.jp/sites/default/files/styles/articlethumbnail650x277/public/main_images/38040_main.jpg?itok=biPNGUlf" width="650" height="277" alt="" /></a></div><div class="group-teaser-vertical-text field-group-div"><span class="category-label-inverse"><a href="/category/4506">クラウド</a></span><span class="category-label-inverse"><a href="/type/4532">イベント</a></span><div class="field field-name-title"><h2 class="title"><a href="/article/38040">KubeCon North America 2024、初日のキーノートでパテントトロール対策を解説。その意図を探る</a></h2></div><div class="date pull-right">2025/3/17</div></div></div> </div> </div> <div class="views-column col-sm-8 views-column-3 views-column-last"> <div class="node node-article node-promoted node-sticky view-mode-teaser_vertical clearfix"> <div class=""> <div class="field field-name-field-main-image"><a href="/article/38002"><img class="img-responsive" src="https://thinkit.co.jp/sites/default/files/styles/articlethumbnail650x277/public/main_images/ren_bft_kobayashi_eng-dojo_cover_7.png?itok=2zvJp8UE" width="650" height="277" alt="" /></a></div><div class="group-teaser-vertical-text field-group-div"><span class="category-label-inverse"><a href="/category/6906">キャリア・人材</a></span><span class="category-label-inverse"><a href="/type/4529">技術解説</a></span><div class="field field-name-title"><h2 class="title"><a href="/article/38002">他業種の人たちと働く経験を通じて、自分のエンジニアとしての「引き出し」を増やそう</a></h2></div><div class="date pull-right">2025/3/14</div></div></div> </div> </div> </div> </div> </div> </div> </div> </div> <div class="panel-pane pane-block pane-apachesolr-search-mlt-001 pane-apachesolr-search" > <h2 class="pane-title"> <i class="fa fa-search"></i> 全文検索エンジンによるおすすめ記事 </h2> <div class="pane-content"> <div class="item-list"><ul><li class="first"><a href="/article/37943">WSLとWindowsの設定ファイルを「chezmoi」を使って安全に管理しよう</a></li> <li><a href="/story/2013/01/17/3919">Node.jsとExpress.jsで開発したWebアプリをeXcaleで動かす</a></li> <li><a href="/article/37792">「WSLg」を使ってWindows上でLinuxのGUIアプリを動かしてみよう</a></li> <li><a href="/article/37696">「Windows Terminal」を使いこなす</a></li> <li><a href="/article/74/1">Gaucheをはじめてみませんか?</a></li> <li><a href="/free/article/0708/2/4">TomcatをLinuxへインストールしよう!(圧縮アーカイブ編)</a></li> <li><a href="/article/37861">Linuxの基礎コマンド群「Coreutils」を使いこなそう</a></li> <li><a href="/article/9515">CoreOS&Docker環境においてOracle Database 11g Release 2をインストールするためのポイント</a></li> <li><a href="/article/37737">「Ubuntu」のパッケージ管理を学ぼう</a></li> <li class="last"><a href="/story/2015/04/07/5841">JBoss Fuseを使ってみる その1:インストール編</a></li> </ul></div> </div> </div> </article> </div><!-- /.thinkit-default--> </div> <div class="container m-t-lg"> <small class="pull-right"><a href="#" class="btn btn-default">Topへ戻る</a></small> </div> </div> <div class="col-md-7 col-md-offset-1 radix-layouts-sidebar"> <aside class="sidebar"> <div class="region region-sidebar"> <div id="block-block-80" class="clear-block block block-block"> <div class="content"> <div class="tex2jax"><!--smart_paging_filter--><!-- /49282802/ipc-thinkit/pc-all/rect01 --> <div id='div-gpt-ad-1450940771091-1'> <script type='text/javascript'> cX.callQueue.push(['invoke',function(){ googletag.cmd.push(function() { googletag.display('div-gpt-ad-1450940771091-1'); }); }]); </script> </div></div> </div> </div> <div id="block-block-74" class="clear-block block block-block"> <div class="content"> <div class="tex2jax"><!--smart_paging_filter--><p> <a href="/member"><img alt="" src="/sites/default/files/btn-member.png" style="width: 300px; height: 100px;" /></a></p> <p> <!-- <a href="/membership-end"><img alt="" src="/sites/default/files/btn-membership-end.png" style="width: 300px; height: 100px;" /></a></p> --> <p> <!-- <a href="https://b-library.impress.co.jp/ud/product/code/WD-2020-0080?utm_source=thinkit.co.jp&utm_medium=referral&utm_campaign=WD-2020-0080"><img alt="" src="/sites/default/files/banner_cndt2020_rep_dl_2.jpg" style="width: 300px; height: 100px;" /></a> --> <a href="/reader-presents"><img alt="" src="/sites/default/files/images/bnr-ti-present_2503_w300.jpg" style="width: 300px; height: 250px;" /></a> </p> <p> <a href="/page/38013">利用規約改定に関するお知らせ</a> </p> </div> </div> </div> <div id="block-panels_mini-ranking" class="clear-block block block-panels_mini"> <h2><div class="tex2jax"><!--smart_paging_filter--><i class="fa fa-line-chart"></i> ランキング</div></h2> <div class="content"> <div class="panel-display panel-1col clearfix" id="mini-panel-ranking"> <div class="panel-panel panel-col"> <div><div id="tabs-0-middle"><div class="item-list"><ul><li class="first"><a href="#tabs-0-middle-1">24時間</a></li> <li><a href="#tabs-0-middle-2">1週間</a></li> <li class="last"><a href="#tabs-0-middle-3">1ヶ月</a></li> </ul></div><div id="tabs-0-middle-1"><div class="panel-pane pane-views-panes pane-ranking-ranking-block-24h" > <div class="pane-content"> <div class="view view-ranking view-id-ranking view-display-id-ranking_block_24h view-dom-id-724a3a473902f0e0a0864a13ea4fc239"> <div class="view-content"> <div class="ranking"> <ol class="number-list"> <li class="views-row views-row-1 views-row-odd views-row-first"> <div class="views-field views-field-title"> <span class="field-content"><a href="/article/37997">Gitのブランチ戦略の基本とルールを学んで使いこなそう</a></span> </div></li> <li class="views-row views-row-2 views-row-even"> <div class="views-field views-field-title"> <span class="field-content"><a href="/story/2015/04/16/5792">「全二重」と「半二重」の違いって?</a></span> </div></li> <li class="views-row views-row-3 views-row-odd"> <div class="views-field views-field-title"> <span class="field-content"><a href="/article/706/1">美しく文字を組む</a></span> </div></li> <li class="views-row views-row-4 views-row-even"> <div class="views-field views-field-title"> <span class="field-content"><a href="/article/37792">「WSLg」を使ってWindows上でLinuxのGUIアプリを動かしてみよう</a></span> </div></li> <li class="views-row views-row-5 views-row-odd"> <div class="views-field views-field-title"> <span class="field-content"><a href="/article/19737">Windows 11でLinuxを使う:Windows Subsystem for Linux 2の設定</a></span> </div></li> <li class="views-row views-row-6 views-row-even"> <div class="views-field views-field-title"> <span class="field-content"><a href="/article/38030">AIを活用したDevOps : 導入のベストプラクティス</a></span> </div></li> <li class="views-row views-row-7 views-row-odd"> <div class="views-field views-field-title"> <span class="field-content"><a href="/article/38058">注目のVRヘッドセット/AIを使った3D生成の新たな動き</a></span> </div></li> <li class="views-row views-row-8 views-row-even"> <div class="views-field views-field-title"> <span class="field-content"><a href="/article/37900">なぜ「Flutter」なのか、そしてなぜ「Dart」なのか</a></span> </div></li> <li class="views-row views-row-9 views-row-odd"> <div class="views-field views-field-title"> <span class="field-content"><a href="/article/38037">【完全ガイド】「Deep Research」の全貌&「Dify」でAIエージェント構築入門</a></span> </div></li> <li class="views-row views-row-10 views-row-even views-row-last"> <div class="views-field views-field-title"> <span class="field-content"><a href="/article/11837">ミドルウェア(Web、AP、DB)について知ろう</a></span> </div></li> </ol></div> </div> <div class="more-link"> <a href="/ranking/daily"> ランキングをもっと見る </a> </div> </div> </div> </div> </div><div id="tabs-0-middle-2"><div class="panel-pane pane-views-panes pane-ranking-ranking-block-1w" > <div class="pane-content"> <div class="view view-ranking view-id-ranking view-display-id-ranking_block_1w view-dom-id-d01e2f56edc78dea6ae9cc59afd9bd33"> <div class="view-content"> <div class="ranking"> <ol class="number-list"> <li class="views-row views-row-1 views-row-odd views-row-first"> <div class="views-field views-field-title"> <span class="field-content"><a href="/article/38037">【完全ガイド】「Deep Research」の全貌&「Dify」でAIエージェント構築入門</a></span> </div></li> <li class="views-row views-row-2 views-row-even"> <div class="views-field views-field-title"> <span class="field-content"><a href="/story/2015/04/16/5792">「全二重」と「半二重」の違いって?</a></span> </div></li> <li class="views-row views-row-3 views-row-odd"> <div class="views-field views-field-title"> <span class="field-content"><a href="/article/19737">Windows 11でLinuxを使う:Windows Subsystem for Linux 2の設定</a></span> </div></li> <li class="views-row views-row-4 views-row-even"> <div class="views-field views-field-title"> <span class="field-content"><a href="/article/11837">ミドルウェア(Web、AP、DB)について知ろう</a></span> </div></li> <li class="views-row views-row-5 views-row-odd"> <div class="views-field views-field-title"> <span class="field-content"><a href="/article/37900">なぜ「Flutter」なのか、そしてなぜ「Dart」なのか</a></span> </div></li> <li class="views-row views-row-6 views-row-even"> <div class="views-field views-field-title"> <span class="field-content"><a href="/article/37792">「WSLg」を使ってWindows上でLinuxのGUIアプリを動かしてみよう</a></span> </div></li> <li class="views-row views-row-7 views-row-odd"> <div class="views-field views-field-title"> <span class="field-content"><a href="/article/37997">Gitのブランチ戦略の基本とルールを学んで使いこなそう</a></span> </div></li> <li class="views-row views-row-8 views-row-even"> <div class="views-field views-field-title"> <span class="field-content"><a href="/article/23087">実に6年ぶり!「MySQL」のメジャーバージョン「8.4.0 LTS」が新しいリリーススタイルで登場</a></span> </div></li> <li class="views-row views-row-9 views-row-odd"> <div class="views-field views-field-title"> <span class="field-content"><a href="/article/9658">SQL実行計画の疑問解決には「とりあえずEXPLAIN」しよう</a></span> </div></li> <li class="views-row views-row-10 views-row-even views-row-last"> <div class="views-field views-field-title"> <span class="field-content"><a href="/story/2012/10/17/3722">ホスト型とハイパーバイザー型の違いは何?VMware vSphere Hypervisor の概要</a></span> </div></li> </ol></div> </div> <div class="more-link"> <a href="/ranking/weekly"> ランキングをもっと見る </a> </div> </div> </div> </div> </div><div id="tabs-0-middle-3"><div class="panel-pane pane-views-panes pane-ranking-ranking-block-1m" > <div class="pane-content"> <div class="view view-ranking view-id-ranking view-display-id-ranking_block_1m view-dom-id-287c36d7d93f517ac93cb01073d84bb6"> <div class="view-content"> <div class="ranking"> <ol class="number-list"> <li class="views-row views-row-1 views-row-odd views-row-first"> <div class="views-field views-field-title"> <span class="field-content"><a href="/article/37988">「kubeshark」でKubernetesのトラフィックをリアルタイムに可視化する</a></span> </div></li> <li class="views-row views-row-2 views-row-even"> <div class="views-field views-field-title"> <span class="field-content"><a href="/story/2015/04/16/5792">「全二重」と「半二重」の違いって?</a></span> </div></li> <li class="views-row views-row-3 views-row-odd"> <div class="views-field views-field-title"> <span class="field-content"><a href="/article/38014">新たな国産スマートグラス、NTTコノキューから今夏発売</a></span> </div></li> <li class="views-row views-row-4 views-row-even"> <div class="views-field views-field-title"> <span class="field-content"><a href="/article/11837">ミドルウェア(Web、AP、DB)について知ろう</a></span> </div></li> <li class="views-row views-row-5 views-row-odd"> <div class="views-field views-field-title"> <span class="field-content"><a href="/article/19737">Windows 11でLinuxを使う:Windows Subsystem for Linux 2の設定</a></span> </div></li> <li class="views-row views-row-6 views-row-even"> <div class="views-field views-field-title"> <span class="field-content"><a href="/article/37792">「WSLg」を使ってWindows上でLinuxのGUIアプリを動かしてみよう</a></span> </div></li> <li class="views-row views-row-7 views-row-odd"> <div class="views-field views-field-title"> <span class="field-content"><a href="/article/12098">【番外編】PCの歴史を振り返るー懐かしい? 古いのがかえって新鮮? レトロPC</a></span> </div></li> <li class="views-row views-row-8 views-row-even"> <div class="views-field views-field-title"> <span class="field-content"><a href="/article/23087">実に6年ぶり!「MySQL」のメジャーバージョン「8.4.0 LTS」が新しいリリーススタイルで登場</a></span> </div></li> <li class="views-row views-row-9 views-row-odd"> <div class="views-field views-field-title"> <span class="field-content"><a href="/article/9658">SQL実行計画の疑問解決には「とりあえずEXPLAIN」しよう</a></span> </div></li> <li class="views-row views-row-10 views-row-even views-row-last"> <div class="views-field views-field-title"> <span class="field-content"><a href="/article/37900">なぜ「Flutter」なのか、そしてなぜ「Dart」なのか</a></span> </div></li> </ol></div> </div> <div class="more-link"> <a href="/ranking/monthly"> ランキングをもっと見る </a> </div> </div> </div> </div> </div></div></div> </div> </div> </div> </div> <div id="block-views-list_article-block_11" class="clear-block block block-views"> <h2><i class="fa fa-bookmark"></i> Sponsored<a href="/type/4535"><span class="pull-right">記事一覧</span></a></h2> <div class="content"> <div class="view view-list-article view-id-list_article view-display-id-block_11 pr-list view-dom-id-0f34ff7ad87ecf458b8d7bd0e856f530"> <div class="view-content"> <div class="media"> <div class="media-left"><a href="/article/37937"><img src="/sites/default/files/styles/60x60/public/main_images/ren_kong_interview_main.png?itok=nu3PgoLl" class="media-object"></a></div> <div class="media-body"><a href="/article/37937"><span class="title">API管理をより簡単にする「Kong Konnect」が解決する課題とその主要機能</span></a></div> </div> <div class="media"> <div class="media-left"><a href="/article/37827"><img src="/sites/default/files/styles/60x60/public/main_images/ren_cndw2024_01_main.jpg?itok=M_HsYIVe" class="media-object"></a></div> <div class="media-body"><a href="/article/37827"><span class="title">目指すはプロセス連結によるサイロ化の打破! ガバナンス強化にも寄与する自動化プラットフォームとは</span></a></div> </div> <div class="media"> <div class="media-left"><a href="/article/37684"><img src="/sites/default/files/styles/60x60/public/main_images/event_think-it-day_main_0.png?itok=IMiDJcCf" class="media-object"></a></div> <div class="media-body"><a href="/article/37684"><span class="title">AIで激変する「DevOpsの未来」と「IT組織のリーダーが備えるべきこと」とは</span></a></div> </div> <div class="media"> <div class="media-left"><a href="/article/37666"><img src="/sites/default/files/styles/60x60/public/main_images/rep_tiday_autify_main.jpg?itok=RkgG_XEt" class="media-object"></a></div> <div class="media-body"><a href="/article/37666"><span class="title">仕様書からテストケースを自動生成! Autify Genesisが変えるソフトウェアテストの未来</span></a></div> </div> <div class="media"> <div class="media-left"><a href="/article/37597"><img src="/sites/default/files/styles/60x60/public/main_images/rep_tiday_kong_main.jpg?itok=XZ5qMYyK" class="media-object"></a></div> <div class="media-body"><a href="/article/37597"><span class="title">LLMを自由に切り替え! Kongが提案するAIゲートウェイ活用法</span></a></div> </div> <div class="media"> <div class="media-left"><a href="/article/23175"><img src="/sites/default/files/styles/60x60/public/main_images/rep_cnds2024_01_main.jpg?itok=HfmxEBqX" class="media-object"></a></div> <div class="media-body"><a href="/article/23175"><span class="title">アプリケーションをモジュラーモノリスとして記述し、容易にマイクロサービスとしてデプロイできるフレームワーク「Service Weaver」</span></a></div> </div> <div class="media"> <div class="media-left"><a href="/article/22923"><img src="/sites/default/files/styles/60x60/public/main_images/f_Generation-AI_2024_ti_top.png?itok=B-LT0RMX" class="media-object"></a></div> <div class="media-body"><a href="/article/22923"><span class="title">「生成AI×オブザーバビリティ」でDevOpsが変わる、企業のデジタル競争力が変わる</span></a></div> </div> <div class="media"> <div class="media-left"><a href="/article/22717"><img src="/sites/default/files/styles/60x60/public/main_images/rep_cndt2023_dynatrace_main.jpg?itok=VJaUeEba" class="media-object"></a></div> <div class="media-body"><a href="/article/22717"><span class="title">システム障害の検知と原因特定を、予測・因果・生成の3つのAIで自動化─Dynatraceが説くAIOpsの最先端</span></a></div> </div> </div> </div> </div> </div> <div id="block-block-81" class="clear-block block block-block"> <div class="content"> <div class="tex2jax"><!--smart_paging_filter--><!-- /49282802/ipc-thinkit/pc-all/rect02 --> <div id='div-gpt-ad-1450940771091-2'> <script type='text/javascript'> cX.callQueue.push(['invoke',function(){ googletag.cmd.push(function() { googletag.display('div-gpt-ad-1450940771091-2'); }); }]); </script> </div></div> </div> </div> <div id="block-block-82" class="clear-block block block-block"> <div class="content"> <div class="tex2jax"><!--smart_paging_filter--><!-- /49282802/ipc-thinkit/pc-all/rect03 --> <div id='div-gpt-ad-1450940771091-3'> <script type='text/javascript'> cX.callQueue.push(['invoke',function(){ googletag.cmd.push(function() { googletag.display('div-gpt-ad-1450940771091-3'); }); }]); </script> </div></div> </div> </div> <div id="block-block-100" class="clear-block block block-block"> <h2><div class="tex2jax"><!--smart_paging_filter--><i class="fa fa-headphones"></i> OSSfm配信中!</div></h2> <div class="content"> <div class="tex2jax"><!--smart_paging_filter--><iframe width="100%" height="300" scrolling="no" frameborder="no" allow="autoplay" src="https://w.soundcloud.com/player/?url=https%3A//api.soundcloud.com/tracks/488955459&color=%23ff5500&auto_play=false&hide_related=false&show_comments=true&show_user=true&show_reposts=false&show_teaser=true&visual=true"></iframe> <p class="orig_source">「<a href="/OSSfm" target="_blank">OSSfm</a>」は“オープンソース技術の実践活用メディア”であるThink ITがお届けするポッドキャストです。</p></div> </div> </div> </div> </aside> </div> </div> </div> </div> </div> <!-- /#main --> </div> <!-- /#main-wrapper --> <footer id="footer" class="footer" role="footer"> <!-- #footer.container_wrap --> <section id="footer-links" class="container"> <div class="row site_links text-center"> <ul> <li><a href="/about">Think ITについて</a></li> <li><a href="/member">会員サービスのご案内</a></li> <li><a href="/tibooks">Think IT Booksシリーズ</a></li> <li><a href="/tievents">Think ITのイベント</a></li> <li><a href="/maniaxjp">マニアックスシリーズ</a></li> <li><a href="/contact">お問い合わせ</a></li> <li><a href="/admenu">広告掲載のご案内</a></li> </ul> <ul> <li><a href="http://www.impress.co.jp/business/about_web/" target="_blank">本サイトのご利用について</a></li> <li><a href="http://www.impress.co.jp/privacy_policy/" target="_blank">プライバシーポリシー</a></li> <li><a href="http://www.impress.co.jp/specific_trade_law/index_bm.html" target="_blank">特定商取引法に基づく表示</a></li> <li><a href="http://www.impress.co.jp/profile/" target="_blank">会社概要</a></li> <li><a href="http://www.impressholdings.com/" target="_blank">インプレスグループ</a></li> </ul> </div> <div class="row hidden-xs"> <div class="col-md-6 manage_company"> <ul> <li> <a href="https://www.impress.co.jp/" target="_blank"> <span class="icon_iph"></span>株式会社インプレス</a> </li> </ul> </div> <div class="col-md-18 hidden-xs manage_sites"> <ul> <li class="clear"> <a href="https://dc-cloud.impress.co.jp/" target="_blank"><span class="icon_DCguide"></span>データセンターを検索・見積「クラウド&データセンター完全ガイド」</a> </li> <li> <a href="https://thinkit.co.jp/"> <span class="icon_ThinkIT"></span>ソフトウェア開発エンジニアに「Think IT」</a> </li> <li> <a href="http://web-tan.forum.impressrd.jp/" target="_blank"> <span class="icon_Webtan"></span>ホームページとネットマーケティング「Web担当者Forum」</a> </li> <li> <a href="https://research.impress.co.jp/" target="_blank"> <span class="icon_iil"></span>インターネットメディアの総合研究所 調査報告書</a> </li> <li class="clear"> <a href="http://cloud.watch.impress.co.jp/" target="_blank"> <span class="icon_cloudwatch"></span>法人向けIT・クラウドソリューションの最新ニュース「クラウドWatch」</a> </li> <li> <a href="http://it.impressbm.co.jp/" target="_blank"> <span class="icon_ITLeaders"></span>日本のITを変える人たちへ!「IT Leaders」</a> </li> <li> <a href="http://sgforum.impress.co.jp/" target="_blank"> <span class="icon_WBBforum"></span>エネルギーと情報通信の融合時代を拓くスマートグリッド専門サイト</a> </li> <li class="clear"> <a href="https://netshop.impress.co.jp/" target="_blank"> <span class="icon_netshop"></span>ECに携わる人のためのメディア「ネットショップ担当者フォーラム」</a> <li> <a href="https://b-library.impress.co.jp/" target="_blank"> <span class="icon_ibl"></span>製品 ⁄ サービスの資料を入手「Impress Business Library」</a> </li> <li> <a href="https://dcross.impress.co.jp/" target="_blank"> <span class="icon_digitalX"></span>デジタルが生みだす未来を考える「DIGITAL X」</a> </li> </ul> </div> </section> <!-- /#footer.container_wrap --> </footer> <div class="copyright text-center"> Copyright © 2004-2025 Impress Corporation. An Impress Group Company. All rights reserved. </div> <a href="#" id="backtotop"><i class="fa fa-chevron-up"></i></a> <script type="text/javascript" src="https://thinkit.co.jp/sites/default/files/js/js_Rk5YIkK6m2gKTGH-GrMu0pM_PlMKXnI0ktQUgXw1XgA.js"></script> <script type="text/javascript" src="https://thinkit.co.jp/sites/default/files/js/js_DgOMLrB0OjiCcD2cmT1loWlyilT4kC08zZjnvrF33ac.js"></script> <script type="text/javascript"> <!--//--><![CDATA[//><!-- da2a.targets=[ {title:"\u300cBash\u300d\u3092\u30ab\u30b9\u30bf\u30de\u30a4\u30ba\u3057\u3066\u3001Linux\u3092\u3088\u308a\u4fbf\u5229\u306b\u4f7f\u3044\u3053\u306a\u305d\u3046",url:"https:\/\/thinkit.co.jp\/article\/37893"}, {title:"Windows\u3067\u3082\u30b3\u30f3\u30c6\u30ca\u3092\u4f7f\u3044\u305f\u3044! WSL\u3067\u300cDocker\u300d\u306b\u5165\u9580\u3057\u3088\u3046",url:"https:\/\/thinkit.co.jp\/article\/37985"}, {title:"WSL\u3068Windows\u306e\u8a2d\u5b9a\u30d5\u30a1\u30a4\u30eb\u3092\u300cchezmoi\u300d\u3092\u4f7f\u3063\u3066\u5b89\u5168\u306b\u7ba1\u7406\u3057\u3088\u3046",url:"https:\/\/thinkit.co.jp\/article\/37943"}, {title:"\u300cBash\u300d\u3092\u30ab\u30b9\u30bf\u30de\u30a4\u30ba\u3057\u3066\u3001Linux\u3092\u3088\u308a\u4fbf\u5229\u306b\u4f7f\u3044\u3053\u306a\u305d\u3046",url:"https:\/\/thinkit.co.jp\/article\/37893"}, {title:"AI\u3092\u6d3b\u7528\u3057\u305fDevOps : \u5c0e\u5165\u306e\u30d9\u30b9\u30c8\u30d7\u30e9\u30af\u30c6\u30a3\u30b9",url:"https:\/\/thinkit.co.jp\/article\/38030"}, {title:"\u300cKrita\u300d\u3068\u300cPython\u300d\u3067\u30d7\u30e9\u30b0\u30a4\u30f3\u3092\u4f5c\u308d\u3046",url:"https:\/\/thinkit.co.jp\/article\/38029"}, {title:"ClickHouse\u3092\u4f7f\u3063\u305f\u30c7\u30fc\u30bf\u30ec\u30a4\u30af\u306e\u6982\u8981\u3092\u89e3\u8aac\u3059\u308b\u52d5\u753b\u3092\u7d39\u4ecb",url:"https:\/\/thinkit.co.jp\/article\/38050"}, {title:"\u30a4\u30f3\u30c9\u3067DevRel\u30b3\u30df\u30e5\u30cb\u30c6\u30a3\u3092\u7acb\u3061\u4e0a\u3052\u305f\u8a71",url:"https:\/\/thinkit.co.jp\/article\/38018"}, {title:"KubeCon North America 2024\u3001\u521d\u65e5\u306e\u30ad\u30fc\u30ce\u30fc\u30c8\u3067\u30d1\u30c6\u30f3\u30c8\u30c8\u30ed\u30fc\u30eb\u5bfe\u7b56\u3092\u89e3\u8aac\u3002\u305d\u306e\u610f\u56f3\u3092\u63a2\u308b",url:"https:\/\/thinkit.co.jp\/article\/38040"}, {title:"\u4ed6\u696d\u7a2e\u306e\u4eba\u305f\u3061\u3068\u50cd\u304f\u7d4c\u9a13\u3092\u901a\u3058\u3066\u3001\u81ea\u5206\u306e\u30a8\u30f3\u30b8\u30cb\u30a2\u3068\u3057\u3066\u306e\u300c\u5f15\u304d\u51fa\u3057\u300d\u3092\u5897\u3084\u305d\u3046",url:"https:\/\/thinkit.co.jp\/article\/38002"}]; da2a.html_done=true;if(da2a.script_ready&&!da2a.done)da2a.init();da2a.script_load(); //--><!]]> </script> </body> </html> <!-- Page cached by Boost @ 2025-03-24 11:52:26, expires @ 2025-03-27 11:52:26, lifetime 3日 -->