Introduction to Bash, VIM & Regex

بواسطة: Frontend Masters

Overview

In this course James Halliday (Substack), author with more than 750 packages at npm, walks you through an illuminating guide to everything Unix! You'll learn how to take control of the Unix command line to write your own tools, automate tasks with shell scripts and the pipeline, compose regular expressions to master search patterns, and easily edit files with the popular Vim editor.

Syllabus

  • Introducing UNIX
  • Introducing the Unix Shell
  • Using Shell
  • Introducting Aliases
  • Special Directories
  • Combining and Copying Files
  • Moving Files and Creating Directories
  • Commands to Help Reduce Repetitive Typing
  • Deleting Files and Counting Words
  • Documentation and Options
  • Paths
  • Writing and Reading Files
  • Pipes
  • Curl, Grep, and Pipeline
  • head and tail commands
  • Calendar and Dates
  • Shorten Lines
  • More Curl and Grep
  • Backticks and Arithmetic
  • Q&A: Watch and Weather
  • Environment Variables
  • Quotes
  • Introducing Scripts
  • Read, Loops and While
  • $PATH
  • Permissions
  • Exit Codes, Operators, and Subshells
  • Job Control
  • Screen
  • Introducing Regular Expressions
  • Regular Expressions in JavaScript
  • Flags, Metacharacters, and Quantifiers
  • Character Class Ranges
  • Anchors, Groups, and sed
  • QA: Regular Expressions Reference
  • Wrapping Up Regular Expressions
  • Introducing Vim
  • Using Vim
  • Modes and Moving Around
  • Deleting and Searching
  • Search and Replace
  • Visual Select
  • Paste Buffer and Insert Modes
  • Wrapping up Vim

Taught by

James Halliday

Introduction to Bash, VIM & Regex
الذهاب الي الدورة

Introduction to Bash, VIM & Regex

بواسطة: Frontend Masters

  • Frontend Masters
  • مدفوعة
  • الإنجليزية
  • متاح شهادة
  • متاح في أي وقت
  • الجميع
  • N/A
8.1.2PHP Version1.08sRequest Duration2MBMemory UsageGET ar/الدورات/{slug}Route
    • Booting (718ms)
    • Application (363ms)
    • 1 x Booting (66.28%)
      718.42ms
      1 x Application (33.49%)
      363.02ms
      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 executed12.9ms
      • select * from `courses` where `slug_ar` = 'introduction-to-bash,-vim-&-regex' limit 1
        11.4ms/app/Http/Controllers/CourseController.php:20corspedia
        Metadata
        Bindings
        • 0. introduction-to-bash,-vim-&-regex
        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-12 20:43:35' where `id` = 2148
        610μs/app/Http/Controllers/CourseController.php:21corspedia
        Metadata
        Bindings
        • 0. 2025-06-12 20:43:35
        • 1. 2148
        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 (44)
        310μ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)
        180μ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 (41) and `providers`.`deleted_at` is null
        190μ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` = 2139 limit 1
        210μs/app/Models/Course.php:84corspedia
        Metadata
        Bindings
        • 0. 2139
        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
        qkULhMpV9NCMHT5vq1rXWlwRIaUymaVLxo7WRTvA
        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/introd...
        _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/introduction-to-bash,-vim-&-regex
        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.168" ] "cdn-loop" => array:1 [ 0 => "cloudflare; loops=1" ] "x-forwarded-proto" => array:1 [ 0 => "https" ] "x-forwarded-for" => array:1 [ 0 => "216.73.216.168" ] "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 => "94ec2e627afd90cb-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.168" "HTTP_CDN_LOOP" => "cloudflare; loops=1" "HTTP_X_FORWARDED_PROTO" => "https" "HTTP_X_FORWARDED_FOR" => "216.73.216.168" "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" => "94ec2e627afd90cb-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" => "13846" "REMOTE_ADDR" => "172.69.58.214" "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/introduction-to-bash,-vim-&-regex" "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" => 1749761014.4282 "REQUEST_TIME" => 1749761014 ]
        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 => "Thu, 12 Jun 2025 20:43:35 GMT" ] "set-cookie" => array:2 [ 0 => "XSRF-TOKEN=eyJpdiI6IkM4TlJpQ296em93UlRPR3BoQnpHQ2c9PSIsInZhbHVlIjoiUlYvNjFQNFkzSnh0Z2NVTnFLcElvVThTeFFQWGdiRUszQ0czQW9ueHV5R1lHdjJHZVE2djJMV09HWFRLa2ZKSmNNNHZlTjlDaXdrVnUzSnpMUTJvQldCUU14UkhzUWhTOUJBR0ZqZk1hanN0T2VQWWk5Z3lhVjlRc0U0VEowU1kiLCJtYWMiOiIxZTQ0ODY2Y2QxN2U4MDQ4YTdlMDA4YjVlNzhkYmQ2NTcyNzhiZWYwMDQ2MzAyNTdmZTc4NWMxOTFjYjRmN2M1IiwidGFnIjoiIn0%3D; expires=Thu, 12 Jun 2025 22:43:35 GMT; Max-Age=7200; path=/; samesite=laxXSRF-TOKEN=eyJpdiI6IkM4TlJpQ296em93UlRPR3BoQnpHQ2c9PSIsInZhbHVlIjoiUlYvNjFQNFkzSnh0Z2NVTnFLcElvVThTeFFQWGdiRUszQ0czQW9ueHV5R1lHdjJHZVE2djJMV09HWFRLa2ZKSmNNNHZlT" 1 => "laravel_session=eyJpdiI6IlhueFlYZUY0dDY1MmhKTHNBTGthcEE9PSIsInZhbHVlIjoiN1lIam4rQU5NS09PYUY4TkNjSUk5blJRR2hCL0VwbGFNWVlyaWFWdFlHSi9mR0FRbUhHY0lMdk1RdmZYYTE5L3VwMUxDVEVDcFF2K0dIaUdNaC8yNUQ5Sjl6ZVBKNnRSOFBMa1RyNUJMQWxYM3VEQnpEOU5BMDFYSmFhZXBRQS8iLCJtYWMiOiI2ZWFkYTk4N2JjYzQyYmYxYjhlY2NlMWRlNjAyNGEzNzI5ZDdkMmM5ZGFkMjEwNmExYTkzMTg3MmExYmIxMDJiIiwidGFnIjoiIn0%3D; expires=Thu, 12 Jun 2025 22:43:35 GMT; Max-Age=7200; path=/; httponly; samesite=laxlaravel_session=eyJpdiI6IlhueFlYZUY0dDY1MmhKTHNBTGthcEE9PSIsInZhbHVlIjoiN1lIam4rQU5NS09PYUY4TkNjSUk5blJRR2hCL0VwbGFNWVlyaWFWdFlHSi9mR0FRbUhHY0lMdk1RdmZYYTE5L3Vw" ] "Set-Cookie" => array:2 [ 0 => "XSRF-TOKEN=eyJpdiI6IkM4TlJpQ296em93UlRPR3BoQnpHQ2c9PSIsInZhbHVlIjoiUlYvNjFQNFkzSnh0Z2NVTnFLcElvVThTeFFQWGdiRUszQ0czQW9ueHV5R1lHdjJHZVE2djJMV09HWFRLa2ZKSmNNNHZlTjlDaXdrVnUzSnpMUTJvQldCUU14UkhzUWhTOUJBR0ZqZk1hanN0T2VQWWk5Z3lhVjlRc0U0VEowU1kiLCJtYWMiOiIxZTQ0ODY2Y2QxN2U4MDQ4YTdlMDA4YjVlNzhkYmQ2NTcyNzhiZWYwMDQ2MzAyNTdmZTc4NWMxOTFjYjRmN2M1IiwidGFnIjoiIn0%3D; expires=Thu, 12-Jun-2025 22:43:35 GMT; path=/XSRF-TOKEN=eyJpdiI6IkM4TlJpQ296em93UlRPR3BoQnpHQ2c9PSIsInZhbHVlIjoiUlYvNjFQNFkzSnh0Z2NVTnFLcElvVThTeFFQWGdiRUszQ0czQW9ueHV5R1lHdjJHZVE2djJMV09HWFRLa2ZKSmNNNHZlT" 1 => "laravel_session=eyJpdiI6IlhueFlYZUY0dDY1MmhKTHNBTGthcEE9PSIsInZhbHVlIjoiN1lIam4rQU5NS09PYUY4TkNjSUk5blJRR2hCL0VwbGFNWVlyaWFWdFlHSi9mR0FRbUhHY0lMdk1RdmZYYTE5L3VwMUxDVEVDcFF2K0dIaUdNaC8yNUQ5Sjl6ZVBKNnRSOFBMa1RyNUJMQWxYM3VEQnpEOU5BMDFYSmFhZXBRQS8iLCJtYWMiOiI2ZWFkYTk4N2JjYzQyYmYxYjhlY2NlMWRlNjAyNGEzNzI5ZDdkMmM5ZGFkMjEwNmExYTkzMTg3MmExYmIxMDJiIiwidGFnIjoiIn0%3D; expires=Thu, 12-Jun-2025 22:43:35 GMT; path=/; httponlylaravel_session=eyJpdiI6IlhueFlYZUY0dDY1MmhKTHNBTGthcEE9PSIsInZhbHVlIjoiN1lIam4rQU5NS09PYUY4TkNjSUk5blJRR2hCL0VwbGFNWVlyaWFWdFlHSi9mR0FRbUhHY0lMdk1RdmZYYTE5L3Vw" ] ]
        session_attributes
        0 of 0
        array:5 [ "_token" => "qkULhMpV9NCMHT5vq1rXWlwRIaUymaVLxo7WRTvA" "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/introduction-to-bash,-vim-&-regex" ] "_flash" => array:2 [ "old" => [] "new" => [] ] "PHPDEBUGBAR_STACK_DATA" => [] ]