Automate Daily Development Tasks with Bash

بواسطة: egghead.io

Overview

Humans were never meant to repeat joyless tasks in a precise manner, over and over and over. Computers are meant precisely for these types of tasks.
Bash is a ubiquitous technology in web development that gives you the immense power of automating repetitive tasks you find yourself performing throughout the day.
The topics we cover will give you confidence in creating build scripts that run on continuous integration servers or quickly testing and debugging an API with curl.

Syllabus

  • Course Overview: Automate Daily Development Tasks with Bash
  • Navigate the Filesystem in Bash
  • View Files and Folders in Bash
  • Create and Delete Files and Folders in Bash
  • Move and Copy Files and Folders with Bash
  • Find Files and Folders with `find` in Bash
  • Search for Text with `grep`
  • Make HTTP Requests in Bash with `curl`
  • Create and Run Bash Scripts with Command Line Arguments
  • Store and Use Values with Bash Variables
  • Understand and Use Functions in Bash
  • Understand Exit Statuses in Bash
  • Use Conditional Statements in Bash
  • Chain Commands with Pipes and Redirect Output in Bash

Taught by

Cameron Nokes

Automate Daily Development Tasks with Bash
الذهاب الي الدورة

Automate Daily Development Tasks with Bash

بواسطة: egghead.io

  • egghead.io
  • مدفوعة
  • الإنجليزية
  • متاح شهادة
  • متاح في أي وقت
  • الجميع
  • N/A
8.1.2PHP Version218msRequest Duration2MBMemory UsageGET ar/الدورات/{slug}Route
    • Booting (106ms)
    • Application (112ms)
    • 1 x Application (51.27%)
      111.54ms
      1 x Booting (48.53%)
      105.59ms
      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 executed8.69ms
      • select * from `courses` where `slug_ar` = 'automate-daily-development-tasks-with-bash' limit 1
        7.12ms/app/Http/Controllers/CourseController.php:20corspedia
        Metadata
        Bindings
        • 0. automate-daily-development-tasks-with-bash
        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-01-11 12:59:16' where `id` = 2111
        310μs/app/Http/Controllers/CourseController.php:21corspedia
        Metadata
        Bindings
        • 0. 2025-01-11 12:59:16
        • 1. 2111
        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)
        320μ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)
        290μ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
        320μ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` = 2102 limit 1
        330μs/app/Models/Course.php:84corspedia
        Metadata
        Bindings
        • 0. 2102
        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
        EKsMceVILRirL9rdpYjM1kpUhXBp3ZPTalAGDYoP
        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/automa...
        _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/automate-daily-development-tasks-with-bash
        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 [ "sec-ch-ua-mobile" => array:1 [ 0 => "?0" ] "sec-ch-ua" => array:1 [ 0 => ""HeadlessChrome";v="129", "Not=A?Brand";v="8", "Chromium";v="129"" ] "cache-control" => array:1 [ 0 => "no-cache" ] "pragma" => array:1 [ 0 => "no-cache" ] "cdn-loop" => array:1 [ 0 => "cloudflare; loops=1" ] "sec-fetch-dest" => array:1 [ 0 => "document" ] "upgrade-insecure-requests" => array:1 [ 0 => "1" ] "priority" => array:1 [ 0 => "u=0, i" ] "cf-connecting-ip" => array:1 [ 0 => "18.224.57.58" ] "user-agent" => array:1 [ 0 => "Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; ClaudeBot/1.0; +claudebot@anthropic.com)" ] "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" ] "cf-visitor" => array:1 [ 0 => "{"scheme":"https"}" ] "sec-fetch-site" => array:1 [ 0 => "none" ] "sec-fetch-mode" => array:1 [ 0 => "navigate" ] "x-forwarded-proto" => array:1 [ 0 => "https" ] "cf-ipcountry" => array:1 [ 0 => "US" ] "accept-encoding" => array:1 [ 0 => "gzip, br" ] "sec-fetch-user" => array:1 [ 0 => "?1" ] "sec-ch-ua-platform" => array:1 [ 0 => ""Windows"" ] "x-forwarded-for" => array:1 [ 0 => "18.224.57.58" ] "cf-ray" => array:1 [ 0 => "9005154278baeb0b-ORD" ] "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_SEC_CH_UA_MOBILE" => "?0" "HTTP_SEC_CH_UA" => ""HeadlessChrome";v="129", "Not=A?Brand";v="8", "Chromium";v="129"" "HTTP_CACHE_CONTROL" => "no-cache" "HTTP_PRAGMA" => "no-cache" "HTTP_CDN_LOOP" => "cloudflare; loops=1" "HTTP_SEC_FETCH_DEST" => "document" "HTTP_UPGRADE_INSECURE_REQUESTS" => "1" "HTTP_PRIORITY" => "u=0, i" "HTTP_CF_CONNECTING_IP" => "18.224.57.58" "HTTP_USER_AGENT" => "Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; ClaudeBot/1.0; +claudebot@anthropic.com)" "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_CF_VISITOR" => "{"scheme":"https"}" "HTTP_SEC_FETCH_SITE" => "none" "HTTP_SEC_FETCH_MODE" => "navigate" "HTTP_X_FORWARDED_PROTO" => "https" "HTTP_CF_IPCOUNTRY" => "US" "HTTP_ACCEPT_ENCODING" => "gzip, br" "HTTP_SEC_FETCH_USER" => "?1" "HTTP_SEC_CH_UA_PLATFORM" => ""Windows"" "HTTP_X_FORWARDED_FOR" => "18.224.57.58" "HTTP_CF_RAY" => "9005154278baeb0b-ORD" "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" => "11060" "REMOTE_ADDR" => "172.71.254.191" "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/automate-daily-development-tasks-with-bash" "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" => 1736600356.4885 "REQUEST_TIME" => 1736600356 ]
        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 => "Sat, 11 Jan 2025 12:59:16 GMT" ] "set-cookie" => array:2 [ 0 => "XSRF-TOKEN=eyJpdiI6InU2MzMrWU1MaVRobHFVQWVmZVZOOGc9PSIsInZhbHVlIjoiekQyRlU0anFibi80Vkk4ZmtuNTF1aFhmb1UvdnlvVWpQWTFHamZSdVlpQzhDU04xOFY4QlJtTGRybnI2aFpObFdUdWk1MGtUeUc5dUhvM3IrYUdSeXQ2T3VRK2JzcEs5NnI0WkJkNUZQMkJuMEM0ajJIRHJ6UVBBZlcxZkZVaGciLCJtYWMiOiJkYzMzNzIzM2UyMWU4YWMxNjcwNDBiZmRkYmExODMyYmQwMjNkOGZjNzAwMmI4MzUyNWNkNTIxZjViNGY1N2Q1IiwidGFnIjoiIn0%3D; expires=Sat, 11 Jan 2025 14:59:16 GMT; Max-Age=7200; path=/; samesite=laxXSRF-TOKEN=eyJpdiI6InU2MzMrWU1MaVRobHFVQWVmZVZOOGc9PSIsInZhbHVlIjoiekQyRlU0anFibi80Vkk4ZmtuNTF1aFhmb1UvdnlvVWpQWTFHamZSdVlpQzhDU04xOFY4QlJtTGRybnI2aFpObFdUdWk1M" 1 => "laravel_session=eyJpdiI6IjVuZjNtbGV6R29UaUg4Nk5FcURUMWc9PSIsInZhbHVlIjoiQlM1L05aQlBQZU53THRDZUVESmlrNlZTcDFDQ204dThUVy9URjlHRzBYN0hGKzk4aWFMNDAya3ZTOU9HMUVObS90Ynd1Q3NvNDNDMlEwR2lTalp0R3JjWVVsQnFLQWd6MFROOTVFRzJIQlNpM28yNyt1ZmU4TXVVSnRrb1NQcFIiLCJtYWMiOiIxYjY4NTU4ODJkYWMwNGY3YjJkMjJjNzhmOTI5MThkNzhiYTZmMWE4MzdhZDc2OWJlMTdmNTI5YTdiY2ZiODczIiwidGFnIjoiIn0%3D; expires=Sat, 11 Jan 2025 14:59:16 GMT; Max-Age=7200; path=/; httponly; samesite=laxlaravel_session=eyJpdiI6IjVuZjNtbGV6R29UaUg4Nk5FcURUMWc9PSIsInZhbHVlIjoiQlM1L05aQlBQZU53THRDZUVESmlrNlZTcDFDQ204dThUVy9URjlHRzBYN0hGKzk4aWFMNDAya3ZTOU9HMUVObS90" ] "Set-Cookie" => array:2 [ 0 => "XSRF-TOKEN=eyJpdiI6InU2MzMrWU1MaVRobHFVQWVmZVZOOGc9PSIsInZhbHVlIjoiekQyRlU0anFibi80Vkk4ZmtuNTF1aFhmb1UvdnlvVWpQWTFHamZSdVlpQzhDU04xOFY4QlJtTGRybnI2aFpObFdUdWk1MGtUeUc5dUhvM3IrYUdSeXQ2T3VRK2JzcEs5NnI0WkJkNUZQMkJuMEM0ajJIRHJ6UVBBZlcxZkZVaGciLCJtYWMiOiJkYzMzNzIzM2UyMWU4YWMxNjcwNDBiZmRkYmExODMyYmQwMjNkOGZjNzAwMmI4MzUyNWNkNTIxZjViNGY1N2Q1IiwidGFnIjoiIn0%3D; expires=Sat, 11-Jan-2025 14:59:16 GMT; path=/XSRF-TOKEN=eyJpdiI6InU2MzMrWU1MaVRobHFVQWVmZVZOOGc9PSIsInZhbHVlIjoiekQyRlU0anFibi80Vkk4ZmtuNTF1aFhmb1UvdnlvVWpQWTFHamZSdVlpQzhDU04xOFY4QlJtTGRybnI2aFpObFdUdWk1M" 1 => "laravel_session=eyJpdiI6IjVuZjNtbGV6R29UaUg4Nk5FcURUMWc9PSIsInZhbHVlIjoiQlM1L05aQlBQZU53THRDZUVESmlrNlZTcDFDQ204dThUVy9URjlHRzBYN0hGKzk4aWFMNDAya3ZTOU9HMUVObS90Ynd1Q3NvNDNDMlEwR2lTalp0R3JjWVVsQnFLQWd6MFROOTVFRzJIQlNpM28yNyt1ZmU4TXVVSnRrb1NQcFIiLCJtYWMiOiIxYjY4NTU4ODJkYWMwNGY3YjJkMjJjNzhmOTI5MThkNzhiYTZmMWE4MzdhZDc2OWJlMTdmNTI5YTdiY2ZiODczIiwidGFnIjoiIn0%3D; expires=Sat, 11-Jan-2025 14:59:16 GMT; path=/; httponlylaravel_session=eyJpdiI6IjVuZjNtbGV6R29UaUg4Nk5FcURUMWc9PSIsInZhbHVlIjoiQlM1L05aQlBQZU53THRDZUVESmlrNlZTcDFDQ204dThUVy9URjlHRzBYN0hGKzk4aWFMNDAya3ZTOU9HMUVObS90" ] ]
        session_attributes
        0 of 0
        array:5 [ "_token" => "EKsMceVILRirL9rdpYjM1kpUhXBp3ZPTalAGDYoP" "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/automate-daily-development-tasks-with-bash" ] "_flash" => array:2 [ "old" => [] "new" => [] ] "PHPDEBUGBAR_STACK_DATA" => [] ]