Automate Daily Development Tasks with Bash

Brought by: 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
Go to course

Automate Daily Development Tasks with Bash

Brought by: egghead.io

  • egghead.io
  • Paid
  • English
  • Certificate Not Available
  • Available at any time
  • All
  • N/A
8.1.2PHP Version991msRequest Duration2MBMemory UsageGET en/courses/{slug}Route
    • Booting (651ms)
    • Application (337ms)
    • 1 x Booting (65.73%)
      651.27ms
      1 x Application (34.03%)
      337.16ms
      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 en/courses/{slug}
      middleware
      web, localize:en
      controller
      App\Http\Controllers\CourseController@show
      as
      en.courses.show
      namespace
      prefix
      /en
      where
      file
      app/Http/Controllers/CourseController.php:17-35
      6 statements were executed11.98ms
      • select * from `courses` where `slug_en` = 'automate-daily-development-tasks-with-bash' limit 1
        10.49ms/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-07-04 23:11:56' where `id` = 2111
        580μs/app/Http/Controllers/CourseController.php:21corspedia
        Metadata
        Bindings
        • 0. 2025-07-04 23:11:56
        • 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)
        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
        220μ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
        270μ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
        A7wKaKp8CemC7BX3sKjlWHKOlo9Y5w6P8XELw0Up
        locale
        en
        _previous
        array:1 [ "url" => "https://www.corspedia.com/en/courses/automate-daily-development-tasks-with-bas...
        _flash
        array:2 [ "old" => [] "new" => [] ]
        PHPDEBUGBAR_STACK_DATA
        []
        path_info
        /en/courses/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 [ "cf-ipcountry" => array:1 [ 0 => "US" ] "cf-connecting-ip" => array:1 [ 0 => "216.73.216.78" ] "cdn-loop" => array:1 [ 0 => "cloudflare; loops=1" ] "x-forwarded-proto" => array:1 [ 0 => "https" ] "x-forwarded-for" => array:1 [ 0 => "216.73.216.78" ] "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 => "95a24df5ceb0114a-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.78" "HTTP_CDN_LOOP" => "cloudflare; loops=1" "HTTP_X_FORWARDED_PROTO" => "https" "HTTP_X_FORWARDED_FOR" => "216.73.216.78" "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" => "95a24df5ceb0114a-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" => "46550" "REMOTE_ADDR" => "172.69.58.142" "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" => "/en/courses/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" => 1751670716.0593 "REQUEST_TIME" => 1751670716 ]
        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 => "Fri, 04 Jul 2025 23:11:56 GMT" ] "set-cookie" => array:2 [ 0 => "XSRF-TOKEN=eyJpdiI6IkhseEdKT0Q3eWtxLzg1Rmx5ZC8xYmc9PSIsInZhbHVlIjoiTExCVjdYVzlhSkNOaDZFR05kaTJsZnNuOWN1UFJyTjhwZ3VIQUFiemg2bys3SXh2SHZuaVIxTW5RVGxOSVNQRnJjdjZNMU9TemE0SC95MDNLUlNzbTNZakZEZlFXQi96SzhZYkxBeTdSRVJrcEphcGlrYk5JMXZza2hDRVRoQUUiLCJtYWMiOiI4ZTU3NTM2MWMyMDAyMTllY2VmN2IxN2MxNDY0ZjY2ZjA3NjkzNDVmZmI3ODFiMWUwNTBjMjIwZjlkZjljZWIzIiwidGFnIjoiIn0%3D; expires=Sat, 05 Jul 2025 01:11:57 GMT; Max-Age=7200; path=/; samesite=laxXSRF-TOKEN=eyJpdiI6IkhseEdKT0Q3eWtxLzg1Rmx5ZC8xYmc9PSIsInZhbHVlIjoiTExCVjdYVzlhSkNOaDZFR05kaTJsZnNuOWN1UFJyTjhwZ3VIQUFiemg2bys3SXh2SHZuaVIxTW5RVGxOSVNQRnJjdjZNM" 1 => "laravel_session=eyJpdiI6InhycUdJRkxudVF3MmdTbjA2eXQvcnc9PSIsInZhbHVlIjoiRmdxbk5jUTkvYmRFRHVrbHZmci9pUHhoZUNjNDlQYSszWjR4Mmo0d3pNSjZ0Y2lXUzVPTGVMK3UwMTV6WUVmWDdNd1pEQjlQUDVmY1A4WVRQdC81Y21jZzRCWGxqd2RtUDRYdjBxU05tTndNMEFPUGhXQnJEYjgzaExhY01YNnYiLCJtYWMiOiI1OGQ1NDk0ODhjNzhhMmM2MDliYWU3ZGY4NTUwZTM2NGQ5ZWRmZTFlM2ZmOGNkZTE4YjNkOTUzOTA0NGI2MjcwIiwidGFnIjoiIn0%3D; expires=Sat, 05 Jul 2025 01:11:57 GMT; Max-Age=7200; path=/; httponly; samesite=laxlaravel_session=eyJpdiI6InhycUdJRkxudVF3MmdTbjA2eXQvcnc9PSIsInZhbHVlIjoiRmdxbk5jUTkvYmRFRHVrbHZmci9pUHhoZUNjNDlQYSszWjR4Mmo0d3pNSjZ0Y2lXUzVPTGVMK3UwMTV6WUVmWDdN" ] "Set-Cookie" => array:2 [ 0 => "XSRF-TOKEN=eyJpdiI6IkhseEdKT0Q3eWtxLzg1Rmx5ZC8xYmc9PSIsInZhbHVlIjoiTExCVjdYVzlhSkNOaDZFR05kaTJsZnNuOWN1UFJyTjhwZ3VIQUFiemg2bys3SXh2SHZuaVIxTW5RVGxOSVNQRnJjdjZNMU9TemE0SC95MDNLUlNzbTNZakZEZlFXQi96SzhZYkxBeTdSRVJrcEphcGlrYk5JMXZza2hDRVRoQUUiLCJtYWMiOiI4ZTU3NTM2MWMyMDAyMTllY2VmN2IxN2MxNDY0ZjY2ZjA3NjkzNDVmZmI3ODFiMWUwNTBjMjIwZjlkZjljZWIzIiwidGFnIjoiIn0%3D; expires=Sat, 05-Jul-2025 01:11:57 GMT; path=/XSRF-TOKEN=eyJpdiI6IkhseEdKT0Q3eWtxLzg1Rmx5ZC8xYmc9PSIsInZhbHVlIjoiTExCVjdYVzlhSkNOaDZFR05kaTJsZnNuOWN1UFJyTjhwZ3VIQUFiemg2bys3SXh2SHZuaVIxTW5RVGxOSVNQRnJjdjZNM" 1 => "laravel_session=eyJpdiI6InhycUdJRkxudVF3MmdTbjA2eXQvcnc9PSIsInZhbHVlIjoiRmdxbk5jUTkvYmRFRHVrbHZmci9pUHhoZUNjNDlQYSszWjR4Mmo0d3pNSjZ0Y2lXUzVPTGVMK3UwMTV6WUVmWDdNd1pEQjlQUDVmY1A4WVRQdC81Y21jZzRCWGxqd2RtUDRYdjBxU05tTndNMEFPUGhXQnJEYjgzaExhY01YNnYiLCJtYWMiOiI1OGQ1NDk0ODhjNzhhMmM2MDliYWU3ZGY4NTUwZTM2NGQ5ZWRmZTFlM2ZmOGNkZTE4YjNkOTUzOTA0NGI2MjcwIiwidGFnIjoiIn0%3D; expires=Sat, 05-Jul-2025 01:11:57 GMT; path=/; httponlylaravel_session=eyJpdiI6InhycUdJRkxudVF3MmdTbjA2eXQvcnc9PSIsInZhbHVlIjoiRmdxbk5jUTkvYmRFRHVrbHZmci9pUHhoZUNjNDlQYSszWjR4Mmo0d3pNSjZ0Y2lXUzVPTGVMK3UwMTV6WUVmWDdN" ] ]
        session_attributes
        0 of 0
        array:5 [ "_token" => "A7wKaKp8CemC7BX3sKjlWHKOlo9Y5w6P8XELw0Up" "locale" => "en" "_previous" => array:1 [ "url" => "https://www.corspedia.com/en/courses/automate-daily-development-tasks-with-bash" ] "_flash" => array:2 [ "old" => [] "new" => [] ] "PHPDEBUGBAR_STACK_DATA" => [] ]