{"id":377,"date":"2014-02-08T09:00:56","date_gmt":"2014-02-08T07:00:56","guid":{"rendered":"http:\/\/www.makes-it-work.de\/?p=377"},"modified":"2014-09-25T10:40:08","modified_gmt":"2014-09-25T08:40:08","slug":"ack-statt-grep-fuer-code-suche-mit-cakephp-config","status":"publish","type":"post","link":"https:\/\/www.makes-it-work.de\/en\/2014\/02\/08\/ack-statt-grep-fuer-code-suche-mit-cakephp-config\/","title":{"rendered":"ack statt grep f\u00fcr Code-Suche [mit CakePHP-Config]"},"content":{"rendered":"<p>F\u00fcr viele Entwickler ist <strong>grep<\/strong> unter Unix-artigen Betriebssystemen das Tool der Wahl, um Texte in Dateien zu suchen. Was liegt n\u00e4her als es auch zu nutzen, um sich einen \u00dcberblick \u00fcber Quellcode zu verschaffen?<br \/>\nPrinzipiell kann <strong>grep<\/strong> diese Aufgabe nat\u00fcrlich auch erf\u00fcllen, schlie\u00dflich ist Quellcode auch nur eine Form von Textdateien. Es gibt aber mit <strong>ack<\/strong> ein Programm, das genau auf den Anwendungszweck <strong>Code-Suche<\/strong> optimiert ist.<!-- more --><\/p>\n<p><strong>Ack<\/strong> liefert in vielen F\u00e4llen einen sehr guten \u00dcberblick \u00fcber fremden und eigenen Code und erm\u00f6glicht auch ohne eine ausgewachsene IDE Antworten auf Fragen wie: &#8220;<em>Wo wird eine Funktion aufgerufen, die ich gerade bearbeiten m\u00f6chte<\/em>?&#8221; oder &#8220;<em>An welcher Stelle wird dieser Text in ein Template geladen oder ausgegeben<\/em>?&#8221;<\/p>\n<p><!--more--><\/p>\n<h2>Features<\/h2>\n<p>Ack hat eine Reihe von Vorteilen gegen\u00fcber <strong>grep<\/strong>, wenn es um Code geht:<\/p>\n<ul>\n<li>Beschr\u00e4nkung auf konfigurierbare <strong>Dateitypen<\/strong><\/li>\n<li>Ausschlie\u00dfen von Verwaltungsverzeichnissen wie <strong>.git<\/strong> oder <strong>.svn<\/strong> sowie tempor\u00e4ren Dateien<\/li>\n<li>angenehme Darstellung von betroffener Datei und Fundstelle (inkl. <strong>Highlighting<\/strong>)<\/li>\n<li>rasend <strong>schnell<\/strong><\/li>\n<li>ein Zeichen weniger zu tippen schon beim Namen der Binary (mit einem Augenzwinkern und abh\u00e4ngig vom System!)<\/li>\n<\/ul>\n<p><a title=\"Vorteile von ack\" href=\"http:\/\/beyondgrep.com\/why-ack\/\" target=\"_blank\">Alle Gr\u00fcnde der Entwickler<\/a> finden sich auf der <a title=\"Ack-Homepage\" href=\"http:\/\/beyondgrep.com\/\" target=\"_blank\">Homepage von ack<\/a>.<\/p>\n<p>Ein \u00fcblicher Aufruf von ack ist erfreulich kurz:<\/p>\n<pre>ack test<\/pre>\n<h2><a href=\"http:\/\/www.makes-it-work.de\/wp-content\/uploads\/2014\/02\/ack.png\"><img loading=\"lazy\" alt=\"Suchergebnisse mit ack\" src=\"http:\/\/www.makes-it-work.de\/wp-content\/uploads\/2014\/02\/ack.png\" width=\"564\" height=\"258\" \/><\/a><\/h2>\n<h2>Installation<\/h2>\n<p>Die offiziellen Installationsanleitungen finden sich <a title=\"Installationsanleitungen ack\" href=\"http:\/\/beyondgrep.com\/install\/\" target=\"_blank\">auf der Entwicklerseite<\/a>, f\u00fcr viele Linux-Distributionen existieren fertige Pakete in den Repositorys:<\/p>\n<p>Ubuntu\/Debian:<\/p>\n<pre lang=\"bash\" line=\"1\" escaped=\"true\">sudo apt-get install ack-grep<\/pre>\n<p>Fedora:<\/p>\n<pre lang=\"bash\" line=\"1\" escaped=\"true\">sudo yum install ack<\/pre>\n<p>Mac OS X (via Homebrew):<\/p>\n<pre lang=\"bash\" line=\"1\" escaped=\"true\">brew install ack<\/pre>\n<h2>Config f\u00fcr CakePHP<\/h2>\n<p>F\u00fcr unsere CakePHP-Projekte haben wir einen eigenen Datentyp definiert, der die Suche auf die dort relevanten Dateitypen begrenzt. Die Konfiguration wird f\u00fcr den aktuellen User in der Datei <strong>~\/.ackrc<\/strong> hinterlegt:<\/p>\n<pre>--type-set\r\nctp=.ctp\r\n--type-set\r\ncake=.php,.ctp<\/pre>\n<p>Nutzen l\u00e4sst sich diese Typ-Konfiguration dann folgenderma\u00dfen:<\/p>\n<pre>ack --type=cake MeinController<\/pre>\n<p>Effizienz-Junkies k\u00f6nnen \u00fcber einen Alias noch weitere Tastenanschl\u00e4ge sparen, indem sie in die <strong>.bash_aliases<\/strong> folgendes eintragen:<\/p>\n<pre lang=\"bash\" line=\"1\" escaped=\"true\">alias ackc='ack --type=cake'<\/pre>\n<p>Nach einem Neustart der Shell steht der Verwendung von ack via Bash-Alias nicht mehr im Wege.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>F\u00fcr viele Entwickler ist grep unter Unix-artigen Betriebssystemen das Tool der Wahl, um Texte in Dateien zu suchen. Was liegt n\u00e4her als es auch zu nutzen, um sich einen \u00dcberblick \u00fcber Quellcode zu verschaffen? Prinzipiell kann grep diese Aufgabe nat\u00fcrlich auch erf\u00fcllen, schlie\u00dflich ist Quellcode auch nur eine Form von Textdateien. Es gibt aber mit&hellip;&nbsp;<a href=\"https:\/\/www.makes-it-work.de\/en\/2014\/02\/08\/ack-statt-grep-fuer-code-suche-mit-cakephp-config\/\" class=\"\" rel=\"bookmark\">Read More &raquo;<span class=\"screen-reader-text\">ack statt grep f\u00fcr Code-Suche [mit CakePHP-Config]<\/span><\/a><\/p>\n","protected":false},"author":8,"featured_media":389,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_mi_skip_tracking":false,"neve_meta_sidebar":"","neve_meta_container":"","neve_meta_enable_content_width":"","neve_meta_content_width":0,"neve_meta_title_alignment":"","neve_meta_author_avatar":"","neve_post_elements_order":"","neve_meta_disable_header":"","neve_meta_disable_footer":"","neve_meta_disable_title":"","_ti_tpc_template_sync":false,"_ti_tpc_template_id":"","_links_to":"","_links_to_target":""},"categories":[95,94],"tags":[23,66],"translation":{"provider":"WPGlobus","version":"2.12.0","language":"en","enabled_languages":["de","en"],"languages":{"de":{"title":true,"content":true,"excerpt":false},"en":{"title":false,"content":false,"excerpt":false}}},"jetpack_featured_media_url":"https:\/\/www.makes-it-work.de\/wp-content\/uploads\/2014\/02\/ack.png","yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v14.4.1 - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>ack statt grep f\u00fcr Code-Suche [mit CakePHP-Config] - Makes IT work - der Blog von OMG.de<\/title>\n<meta name=\"robots\" content=\"index, follow\" \/>\n<meta name=\"googlebot\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<meta name=\"bingbot\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/www.makes-it-work.de\/en\/2014\/02\/08\/ack-statt-grep-fuer-code-suche-mit-cakephp-config\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"ack statt grep f\u00fcr Code-Suche [mit CakePHP-Config] - Makes IT work - der Blog von OMG.de\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.makes-it-work.de\/en\/2014\/02\/08\/ack-statt-grep-fuer-code-suche-mit-cakephp-config\/\" \/>\n<meta property=\"og:site_name\" content=\"Makes IT work - der Blog von OMG.de\" \/>\n<meta property=\"article:published_time\" content=\"2014-02-08T07:00:56+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2014-09-25T08:40:08+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/www.makes-it-work.de\/wp-content\/uploads\/2014\/02\/ack.png\" \/>\n\t<meta property=\"og:image:width\" content=\"564\" \/>\n\t<meta property=\"og:image:height\" content=\"258\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:creator\" content=\"@omgde\" \/>\n<meta name=\"twitter:site\" content=\"@omgde\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"Organization\",\"@id\":\"https:\/\/www.makes-it-work.de\/en\/#organization\",\"name\":\"OMG.de\",\"url\":\"https:\/\/www.makes-it-work.de\/en\/\",\"sameAs\":[\"https:\/\/twitter.com\/omgde\"],\"logo\":{\"@type\":\"ImageObject\",\"@id\":\"https:\/\/www.makes-it-work.de\/en\/#logo\",\"inLanguage\":\"en-US\",\"url\":\"https:\/\/www.makes-it-work.de\/wp-content\/uploads\/2021\/11\/Logo_OMG_PNG-Kopie.png\",\"width\":358,\"height\":356,\"caption\":\"OMG.de\"},\"image\":{\"@id\":\"https:\/\/www.makes-it-work.de\/en\/#logo\"}},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/www.makes-it-work.de\/en\/#website\",\"url\":\"https:\/\/www.makes-it-work.de\/en\/\",\"name\":\"Makes IT work - der Blog von OMG.de\",\"description\":\"Themen und News rundum IT und Technik. Von den Spezialisten der OMG.de GmbH.\",\"publisher\":{\"@id\":\"https:\/\/www.makes-it-work.de\/en\/#organization\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":\"https:\/\/www.makes-it-work.de\/en\/?s={search_term_string}\",\"query-input\":\"required name=search_term_string\"}],\"inLanguage\":\"en-US\"},{\"@type\":\"ImageObject\",\"@id\":\"https:\/\/www.makes-it-work.de\/en\/2014\/02\/08\/ack-statt-grep-fuer-code-suche-mit-cakephp-config\/#primaryimage\",\"inLanguage\":\"en-US\",\"url\":\"https:\/\/www.makes-it-work.de\/wp-content\/uploads\/2014\/02\/ack.png\",\"width\":564,\"height\":258,\"caption\":\"Suchergebnisse mit ack\"},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/www.makes-it-work.de\/en\/2014\/02\/08\/ack-statt-grep-fuer-code-suche-mit-cakephp-config\/#webpage\",\"url\":\"https:\/\/www.makes-it-work.de\/en\/2014\/02\/08\/ack-statt-grep-fuer-code-suche-mit-cakephp-config\/\",\"name\":\"ack statt grep f\\u00fcr Code-Suche [mit CakePHP-Config] - Makes IT work - der Blog von OMG.de\",\"isPartOf\":{\"@id\":\"https:\/\/www.makes-it-work.de\/en\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\/\/www.makes-it-work.de\/en\/2014\/02\/08\/ack-statt-grep-fuer-code-suche-mit-cakephp-config\/#primaryimage\"},\"datePublished\":\"2014-02-08T07:00:56+00:00\",\"dateModified\":\"2014-09-25T08:40:08+00:00\",\"description\":\"Grep bei der Code-Suche durch ack ersetzen f\\u00fcr bessere Treffer.\",\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/www.makes-it-work.de\/en\/2014\/02\/08\/ack-statt-grep-fuer-code-suche-mit-cakephp-config\/\"]}]},{\"@type\":\"Article\",\"@id\":\"https:\/\/www.makes-it-work.de\/en\/2014\/02\/08\/ack-statt-grep-fuer-code-suche-mit-cakephp-config\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/www.makes-it-work.de\/en\/2014\/02\/08\/ack-statt-grep-fuer-code-suche-mit-cakephp-config\/#webpage\"},\"author\":{\"@id\":\"https:\/\/www.makes-it-work.de\/en\/#\/schema\/person\/59eb3f78485d68bbbf79e3928a1586ca\"},\"headline\":\"ack statt grep f\\u00fcr Code-Suche [mit CakePHP-Config]\",\"datePublished\":\"2014-02-08T07:00:56+00:00\",\"dateModified\":\"2014-09-25T08:40:08+00:00\",\"commentCount\":0,\"mainEntityOfPage\":{\"@id\":\"https:\/\/www.makes-it-work.de\/en\/2014\/02\/08\/ack-statt-grep-fuer-code-suche-mit-cakephp-config\/#webpage\"},\"publisher\":{\"@id\":\"https:\/\/www.makes-it-work.de\/en\/#organization\"},\"image\":{\"@id\":\"https:\/\/www.makes-it-work.de\/en\/2014\/02\/08\/ack-statt-grep-fuer-code-suche-mit-cakephp-config\/#primaryimage\"},\"keywords\":\"CakePHP,Linux\",\"articleSection\":\"Blog,Code\",\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\/\/www.makes-it-work.de\/en\/2014\/02\/08\/ack-statt-grep-fuer-code-suche-mit-cakephp-config\/#respond\"]}]},{\"@type\":[\"Person\"],\"@id\":\"https:\/\/www.makes-it-work.de\/en\/#\/schema\/person\/59eb3f78485d68bbbf79e3928a1586ca\",\"name\":\"Johannes Mitlmeier\",\"image\":{\"@type\":\"ImageObject\",\"@id\":\"https:\/\/www.makes-it-work.de\/en\/#personlogo\",\"inLanguage\":\"en-US\",\"url\":\"https:\/\/secure.gravatar.com\/avatar\/af5e7a1248b437d35c3569c860cb7269?s=96&d=mm&r=g\",\"caption\":\"Johannes Mitlmeier\"},\"description\":\"Als Webentwickler ist es meine Aufgabe die verf\\u00fcgbaren Techniken so zu verbinden, dass dabei gut bedienbare Produkte entstehen, die die Aufgabe l\\u00f6sen, die der Kunde an uns herangetragen hat.\"}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","_links":{"self":[{"href":"https:\/\/www.makes-it-work.de\/en\/wp-json\/wp\/v2\/posts\/377"}],"collection":[{"href":"https:\/\/www.makes-it-work.de\/en\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.makes-it-work.de\/en\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.makes-it-work.de\/en\/wp-json\/wp\/v2\/users\/8"}],"replies":[{"embeddable":true,"href":"https:\/\/www.makes-it-work.de\/en\/wp-json\/wp\/v2\/comments?post=377"}],"version-history":[{"count":14,"href":"https:\/\/www.makes-it-work.de\/en\/wp-json\/wp\/v2\/posts\/377\/revisions"}],"predecessor-version":[{"id":392,"href":"https:\/\/www.makes-it-work.de\/en\/wp-json\/wp\/v2\/posts\/377\/revisions\/392"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.makes-it-work.de\/en\/wp-json\/wp\/v2\/media\/389"}],"wp:attachment":[{"href":"https:\/\/www.makes-it-work.de\/en\/wp-json\/wp\/v2\/media?parent=377"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.makes-it-work.de\/en\/wp-json\/wp\/v2\/categories?post=377"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.makes-it-work.de\/en\/wp-json\/wp\/v2\/tags?post=377"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}