Use Grep for Fast Search from the Command Line

بواسطة: egghead.io

Overview

CMD+F in your text editor can only get you so far! In this course, we will learn to use grep and find, two powerful command-line utilities, to search through and explore our codebase. Learn to search specific files and folders, using regular expressions to look for -- or ignore! -- particular phrases. We'll cover how to search recursively, get more context on your results, and some simple tricks to make your searches faster and more targeted.
Once you're familiar with grep and find, you'll be able to quickly answer questions such as: Do I use this function anywhere other than my tests? Where does this file get imported? Whether you're working on a new feature, reading a codebase for the first time, or refactoring existing code, grep and find can help you work faster and more effectively.

Syllabus

  • Search the contents of files using grep
  • Search directory contents recursively using grep
  • Use find to search for filename patterns
  • Search matching files by combining find and grep with xargs
  • Search the contents of a git repository with git grep
  • Show context around matches using grep
  • Search for basic patterns using grep
  • Use grep's extended regular expressions to find complex patterns
  • Search for optional patterns with grep OR
  • Specify line beginning and end in patterns using grep
  • Match classes of characters using bracket expressions with grep
  • Search with groups using grep
  • Find matches excluding a pattern with grep

Taught by

Bonnie Eisenman

Use Grep for Fast Search from the Command Line
الذهاب الي الدورة

Use Grep for Fast Search from the Command Line

بواسطة: egghead.io

  • egghead.io
  • مدفوعة
  • الإنجليزية
  • متاح شهادة
  • متاح في أي وقت
  • الجميع
  • N/A
8.1.2PHP Version1.16sRequest Duration2MBMemory UsageGET ar/الدورات/{slug}Route
    • Booting (692ms)
    • Application (470ms)
    • 1 x Booting (59.43%)
      691.93ms
      1 x Application (40.34%)
      469.73ms
      14 templates were rendered
      • public.courses.show (resources/views/public/courses/show.blade.php)3bladefile
        Params
        0
        course
        1
        links
        2
        config
      • public.courses.partials.breadcrumbs (resources/views/public/courses/partials/breadcrumbs.blade.php)6bladefile
        Params
        0
        __env
        1
        app
        2
        errors
        3
        course
        4
        links
        5
        config
      • public.courses.partials.heading (resources/views/public/courses/partials/heading.blade.php)7bladefile
        Params
        0
        __env
        1
        app
        2
        errors
        3
        course
        4
        links
        5
        config
        6
        classes
      • public.courses.partials.details (resources/views/public/courses/partials/details.blade.php)6bladefile
        Params
        0
        __env
        1
        app
        2
        errors
        3
        course
        4
        links
        5
        config
      • public.courses.partials.breadcrumbs (resources/views/public/courses/partials/breadcrumbs.blade.php)6bladefile
        Params
        0
        __env
        1
        app
        2
        errors
        3
        course
        4
        links
        5
        config
      • public.courses.partials.heading (resources/views/public/courses/partials/heading.blade.php)7bladefile
        Params
        0
        __env
        1
        app
        2
        errors
        3
        course
        4
        links
        5
        config
        6
        classes
      • public.layouts.main (resources/views/public/layouts/main.blade.php)6bladefile
        Params
        0
        __env
        1
        app
        2
        errors
        3
        course
        4
        links
        5
        config
      • public.layouts.partials.meta (resources/views/public/layouts/partials/meta.blade.php)6bladefile
        Params
        0
        __env
        1
        app
        2
        errors
        3
        course
        4
        links
        5
        config
      • public.layouts.partials.navbar (resources/views/public/layouts/partials/navbar.blade.php)6bladefile
        Params
        0
        __env
        1
        app
        2
        errors
        3
        course
        4
        links
        5
        config
      • public.auth.profile.partials.links (resources/views/public/auth/profile/partials/links.blade.php)6bladefile
        Params
        0
        __env
        1
        app
        2
        errors
        3
        course
        4
        links
        5
        config
      • public.auth.profile.partials.link (resources/views/public/auth/profile/partials/link.blade.php)8bladefile
        Params
        0
        __env
        1
        app
        2
        errors
        3
        course
        4
        links
        5
        config
        6
        route
        7
        title
      • public.auth.profile.partials.link (resources/views/public/auth/profile/partials/link.blade.php)8bladefile
        Params
        0
        __env
        1
        app
        2
        errors
        3
        course
        4
        links
        5
        config
        6
        route
        7
        title
      • public.auth.profile.partials.link (resources/views/public/auth/profile/partials/link.blade.php)8bladefile
        Params
        0
        __env
        1
        app
        2
        errors
        3
        course
        4
        links
        5
        config
        6
        route
        7
        title
      • public.layouts.partials.flash-session (resources/views/public/layouts/partials/flash-session.blade.php)6bladefile
        Params
        0
        __env
        1
        app
        2
        errors
        3
        course
        4
        links
        5
        config
      uri
      GET ar/الدورات/{slug}
      middleware
      web, localize:ar
      controller
      App\Http\Controllers\CourseController@show
      as
      ar.courses.show
      namespace
      prefix
      /ar
      where
      file
      app/Http/Controllers/CourseController.php:17-35
      6 statements were executed10.98ms
      • select * from `courses` where `slug_ar` = 'use-grep-for-fast-search-from-the-command-line' limit 1
        9.34ms/app/Http/Controllers/CourseController.php:20corspedia
        Metadata
        Bindings
        • 0. use-grep-for-fast-search-from-the-command-line
        Backtrace
        • 17. /app/Http/Controllers/CourseController.php:20
        • 18. /vendor/laravel/framework/src/Illuminate/Routing/Controller.php:54
        • 19. /vendor/laravel/framework/src/Illuminate/Routing/ControllerDispatcher.php:43
        • 20. /vendor/laravel/framework/src/Illuminate/Routing/Route.php:260
        • 21. /vendor/laravel/framework/src/Illuminate/Routing/Route.php:205
      • update `courses` set `visitors` = `visitors` + 1, `courses`.`updated_at` = '2025-06-09 17:05:56' where `id` = 2120
        520μs/app/Http/Controllers/CourseController.php:21corspedia
        Metadata
        Bindings
        • 0. 2025-06-09 17:05:56
        • 1. 2120
        Backtrace
        • 17. /app/Http/Controllers/CourseController.php:21
        • 18. /vendor/laravel/framework/src/Illuminate/Routing/Controller.php:54
        • 19. /vendor/laravel/framework/src/Illuminate/Routing/ControllerDispatcher.php:43
        • 20. /vendor/laravel/framework/src/Illuminate/Routing/Route.php:260
        • 21. /vendor/laravel/framework/src/Illuminate/Routing/Route.php:205
      • select `id`, `name_en`, `name_ar`, `topic_id`, `slug_en`, `slug_ar` from `subjects` where `subjects`.`id` in (29)
        230μs/app/Http/Controllers/CourseController.php:23corspedia
        Metadata
        Backtrace
        • 20. /app/Http/Controllers/CourseController.php:23
        • 21. /vendor/laravel/framework/src/Illuminate/Routing/Controller.php:54
        • 22. /vendor/laravel/framework/src/Illuminate/Routing/ControllerDispatcher.php:43
        • 23. /vendor/laravel/framework/src/Illuminate/Routing/Route.php:260
        • 24. /vendor/laravel/framework/src/Illuminate/Routing/Route.php:205
      • select `id`, `name_en`, `name_ar`, `slug_en`, `slug_ar` from `topics` where `topics`.`id` in (1)
        190μs/app/Http/Controllers/CourseController.php:23corspedia
        Metadata
        Backtrace
        • 25. /app/Http/Controllers/CourseController.php:23
        • 26. /vendor/laravel/framework/src/Illuminate/Routing/Controller.php:54
        • 27. /vendor/laravel/framework/src/Illuminate/Routing/ControllerDispatcher.php:43
        • 28. /vendor/laravel/framework/src/Illuminate/Routing/Route.php:260
        • 29. /vendor/laravel/framework/src/Illuminate/Routing/Route.php:205
      • select * from `providers` where `providers`.`id` in (29) and `providers`.`deleted_at` is null
        410μs/app/Http/Controllers/CourseController.php:23corspedia
        Metadata
        Backtrace
        • 20. /app/Http/Controllers/CourseController.php:23
        • 21. /vendor/laravel/framework/src/Illuminate/Routing/Controller.php:54
        • 22. /vendor/laravel/framework/src/Illuminate/Routing/ControllerDispatcher.php:43
        • 23. /vendor/laravel/framework/src/Illuminate/Routing/Route.php:260
        • 24. /vendor/laravel/framework/src/Illuminate/Routing/Route.php:205
      • select * from `html_files` where `html_files`.`id` = 2111 limit 1
        290μs/app/Models/Course.php:84corspedia
        Metadata
        Bindings
        • 0. 2111
        Backtrace
        • 21. /app/Models/Course.php:84
        • 28. view::public.courses.show:29
        • 30. /vendor/laravel/framework/src/Illuminate/Filesystem/Filesystem.php:125
        • 31. /vendor/laravel/framework/src/Illuminate/View/Engines/PhpEngine.php:58
        • 32. /vendor/laravel/framework/src/Illuminate/View/Engines/CompilerEngine.php:72
      App\Models\HtmlFile
      1
      App\Models\Provider
      1
      App\Models\Topic
      1
      App\Models\Subject
      1
      App\Models\Course
      1
        _token
        IOdqCXZJAHgbjZBLbJGSWtljWsJDfhD1AZ3M8mYr
        locale
        ar
        _previous
        array:1 [ "url" => "https://www.corspedia.com/ar/%D8%A7%D9%84%D8%AF%D9%88%D8%B1%D8%A7%D8%AA/use-gr...
        _flash
        array:2 [ "old" => [] "new" => [] ]
        PHPDEBUGBAR_STACK_DATA
        []
        path_info
        /ar/%D8%A7%D9%84%D8%AF%D9%88%D8%B1%D8%A7%D8%AA/use-grep-for-fast-search-from-the-command-line
        status_code
        200
        
        status_text
        OK
        format
        html
        content_type
        text/html; charset=UTF-8
        request_query
        []
        
        request_request
        []
        
        request_headers
        0 of 0
        array:24 [ "cf-ipcountry" => array:1 [ 0 => "US" ] "cf-connecting-ip" => array:1 [ 0 => "216.73.216.127" ] "cdn-loop" => array:1 [ 0 => "cloudflare; loops=1" ] "x-forwarded-proto" => array:1 [ 0 => "https" ] "x-forwarded-for" => array:1 [ 0 => "216.73.216.127" ] "sec-fetch-site" => array:1 [ 0 => "none" ] "accept" => array:1 [ 0 => "text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.7" ] "user-agent" => array:1 [ 0 => "Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; ClaudeBot/1.0; +claudebot@anthropic.com)" ] "upgrade-insecure-requests" => array:1 [ 0 => "1" ] "sec-ch-ua-platform" => array:1 [ 0 => ""Windows"" ] "sec-ch-ua-mobile" => array:1 [ 0 => "?0" ] "sec-ch-ua" => array:1 [ 0 => ""Chromium";v="130", "HeadlessChrome";v="130", "Not?A_Brand";v="99"" ] "cache-control" => array:1 [ 0 => "no-cache" ] "pragma" => array:1 [ 0 => "no-cache" ] "sec-fetch-dest" => array:1 [ 0 => "document" ] "cf-ray" => array:1 [ 0 => "94d237738b9ff163-ORD" ] "accept-encoding" => array:1 [ 0 => "gzip, br" ] "priority" => array:1 [ 0 => "u=0, i" ] "sec-fetch-user" => array:1 [ 0 => "?1" ] "sec-fetch-mode" => array:1 [ 0 => "navigate" ] "cf-visitor" => array:1 [ 0 => "{"scheme":"https"}" ] "host" => array:1 [ 0 => "www.corspedia.com" ] "content-length" => array:1 [ 0 => "" ] "content-type" => array:1 [ 0 => "" ] ]
        request_server
        0 of 0
        array:50 [ "USER" => "www-data" "HOME" => "/var/www" "HTTP_CF_IPCOUNTRY" => "US" "HTTP_CF_CONNECTING_IP" => "216.73.216.127" "HTTP_CDN_LOOP" => "cloudflare; loops=1" "HTTP_X_FORWARDED_PROTO" => "https" "HTTP_X_FORWARDED_FOR" => "216.73.216.127" "HTTP_SEC_FETCH_SITE" => "none" "HTTP_ACCEPT" => "text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.7" "HTTP_USER_AGENT" => "Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; ClaudeBot/1.0; +claudebot@anthropic.com)" "HTTP_UPGRADE_INSECURE_REQUESTS" => "1" "HTTP_SEC_CH_UA_PLATFORM" => ""Windows"" "HTTP_SEC_CH_UA_MOBILE" => "?0" "HTTP_SEC_CH_UA" => ""Chromium";v="130", "HeadlessChrome";v="130", "Not?A_Brand";v="99"" "HTTP_CACHE_CONTROL" => "no-cache" "HTTP_PRAGMA" => "no-cache" "HTTP_SEC_FETCH_DEST" => "document" "HTTP_CF_RAY" => "94d237738b9ff163-ORD" "HTTP_ACCEPT_ENCODING" => "gzip, br" "HTTP_PRIORITY" => "u=0, i" "HTTP_SEC_FETCH_USER" => "?1" "HTTP_SEC_FETCH_MODE" => "navigate" "HTTP_CF_VISITOR" => "{"scheme":"https"}" "HTTP_HOST" => "www.corspedia.com" "REDIRECT_STATUS" => "200" "SERVER_NAME" => "corspedia.com" "SERVER_PORT" => "443" "SERVER_ADDR" => "141.95.147.152" "REMOTE_USER" => "" "REMOTE_PORT" => "63216" "REMOTE_ADDR" => "172.70.131.119" "SERVER_SOFTWARE" => "nginx/1.18.0" "GATEWAY_INTERFACE" => "CGI/1.1" "HTTPS" => "on" "REQUEST_SCHEME" => "https" "SERVER_PROTOCOL" => "HTTP/2.0" "DOCUMENT_ROOT" => "/var/www/corspedia/public" "DOCUMENT_URI" => "/index.php" "REQUEST_URI" => "/ar/%D8%A7%D9%84%D8%AF%D9%88%D8%B1%D8%A7%D8%AA/use-grep-for-fast-search-from-the-command-line" "SCRIPT_NAME" => "/index.php" "CONTENT_LENGTH" => "" "CONTENT_TYPE" => "" "REQUEST_METHOD" => "GET" "QUERY_STRING" => "" "SCRIPT_FILENAME" => "/var/www/corspedia/public/index.php" "PATH_INFO" => "" "FCGI_ROLE" => "RESPONDER" "PHP_SELF" => "/index.php" "REQUEST_TIME_FLOAT" => 1749488756.0419 "REQUEST_TIME" => 1749488756 ]
        request_cookies
        []
        
        response_headers
        0 of 0
        array:5 [ "content-type" => array:1 [ 0 => "text/html; charset=UTF-8" ] "cache-control" => array:1 [ 0 => "no-cache, private" ] "date" => array:1 [ 0 => "Mon, 09 Jun 2025 17:05:56 GMT" ] "set-cookie" => array:2 [ 0 => "XSRF-TOKEN=eyJpdiI6IjFSZ1ZWWjFyeldSM3JDeUUrUnJoSHc9PSIsInZhbHVlIjoiM2Rzc3VpZUNQSVlqd2UzSEhKaThUdEZLNXpoYmZGbktVcjl4RktFRHA0Q0I4cmhUN25vM0NlUmh4dUpTUGhRMWUvajFiVC9oQVVzcSszWm8xa0lEVGZTUENGMGZHTzhuNTBoUHZPdEU2Ykh5NFd0QzdmWHh3Tzc3T0hkVDNCOXkiLCJtYWMiOiIyNTEzMmFhODVhMWJlNzczNDk1MTg1ZTU3MzY4MDVmZDY1MjU4YzY0Y2UzZjkxMDNiMzNiY2RlZDM3YzA2YThjIiwidGFnIjoiIn0%3D; expires=Mon, 09 Jun 2025 19:05:57 GMT; Max-Age=7200; path=/; samesite=laxXSRF-TOKEN=eyJpdiI6IjFSZ1ZWWjFyeldSM3JDeUUrUnJoSHc9PSIsInZhbHVlIjoiM2Rzc3VpZUNQSVlqd2UzSEhKaThUdEZLNXpoYmZGbktVcjl4RktFRHA0Q0I4cmhUN25vM0NlUmh4dUpTUGhRMWUvajFiV" 1 => "laravel_session=eyJpdiI6IlpERkF3cDZBVmtBd2hOdmhXZkg2R2c9PSIsInZhbHVlIjoiTjJqakxJb0tDTGJ2RVh1YXFFSlBubUtrVzhqM202eXYrVXlrekg0M1FTSUszaXlxWjQ4amxjMkZVQ3oxazVDNzJBT0xJdTArNXlaeWtVNmcrdUxJSzBZcVZOdEJEUXpHL2k2OTF4aHVnQy92Yk04b1FSa29vUzdDUkJnQ0VxTFkiLCJtYWMiOiI2MjEyNGE2ZTI5MmFhZjZhNWYzMTVmMTZjNGQyODE3MWE3NTQ2MThhNzI4YzQ1MzI3YjdlNDlhMjIyNjE3ZjBiIiwidGFnIjoiIn0%3D; expires=Mon, 09 Jun 2025 19:05:57 GMT; Max-Age=7200; path=/; httponly; samesite=laxlaravel_session=eyJpdiI6IlpERkF3cDZBVmtBd2hOdmhXZkg2R2c9PSIsInZhbHVlIjoiTjJqakxJb0tDTGJ2RVh1YXFFSlBubUtrVzhqM202eXYrVXlrekg0M1FTSUszaXlxWjQ4amxjMkZVQ3oxazVDNzJB" ] "Set-Cookie" => array:2 [ 0 => "XSRF-TOKEN=eyJpdiI6IjFSZ1ZWWjFyeldSM3JDeUUrUnJoSHc9PSIsInZhbHVlIjoiM2Rzc3VpZUNQSVlqd2UzSEhKaThUdEZLNXpoYmZGbktVcjl4RktFRHA0Q0I4cmhUN25vM0NlUmh4dUpTUGhRMWUvajFiVC9oQVVzcSszWm8xa0lEVGZTUENGMGZHTzhuNTBoUHZPdEU2Ykh5NFd0QzdmWHh3Tzc3T0hkVDNCOXkiLCJtYWMiOiIyNTEzMmFhODVhMWJlNzczNDk1MTg1ZTU3MzY4MDVmZDY1MjU4YzY0Y2UzZjkxMDNiMzNiY2RlZDM3YzA2YThjIiwidGFnIjoiIn0%3D; expires=Mon, 09-Jun-2025 19:05:57 GMT; path=/XSRF-TOKEN=eyJpdiI6IjFSZ1ZWWjFyeldSM3JDeUUrUnJoSHc9PSIsInZhbHVlIjoiM2Rzc3VpZUNQSVlqd2UzSEhKaThUdEZLNXpoYmZGbktVcjl4RktFRHA0Q0I4cmhUN25vM0NlUmh4dUpTUGhRMWUvajFiV" 1 => "laravel_session=eyJpdiI6IlpERkF3cDZBVmtBd2hOdmhXZkg2R2c9PSIsInZhbHVlIjoiTjJqakxJb0tDTGJ2RVh1YXFFSlBubUtrVzhqM202eXYrVXlrekg0M1FTSUszaXlxWjQ4amxjMkZVQ3oxazVDNzJBT0xJdTArNXlaeWtVNmcrdUxJSzBZcVZOdEJEUXpHL2k2OTF4aHVnQy92Yk04b1FSa29vUzdDUkJnQ0VxTFkiLCJtYWMiOiI2MjEyNGE2ZTI5MmFhZjZhNWYzMTVmMTZjNGQyODE3MWE3NTQ2MThhNzI4YzQ1MzI3YjdlNDlhMjIyNjE3ZjBiIiwidGFnIjoiIn0%3D; expires=Mon, 09-Jun-2025 19:05:57 GMT; path=/; httponlylaravel_session=eyJpdiI6IlpERkF3cDZBVmtBd2hOdmhXZkg2R2c9PSIsInZhbHVlIjoiTjJqakxJb0tDTGJ2RVh1YXFFSlBubUtrVzhqM202eXYrVXlrekg0M1FTSUszaXlxWjQ4amxjMkZVQ3oxazVDNzJB" ] ]
        session_attributes
        0 of 0
        array:5 [ "_token" => "IOdqCXZJAHgbjZBLbJGSWtljWsJDfhD1AZ3M8mYr" "locale" => "ar" "_previous" => array:1 [ "url" => "https://www.corspedia.com/ar/%D8%A7%D9%84%D8%AF%D9%88%D8%B1%D8%A7%D8%AA/use-grep-for-fast-search-from-the-command-line" ] "_flash" => array:2 [ "old" => [] "new" => [] ] "PHPDEBUGBAR_STACK_DATA" => [] ]