Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Shell Revolution

Shell Revolution

Using the command line is becoming a lost art, but should be one of the most powerful skills in your development arsenal. It is your friend, embrace it. Don't get me wrong, a GUI is great, but it has it's limitations and might not be as robust. You can't automate clicks as easily as you can commands and more times than not, you can just get things done quicker and more efficient. PHP has a great CLI. Use it! This talk will cover common command line tools (screen, grep, awk, cut, mysql, mosh, etc), shortcuts you can take advantage of now, and what you can do to step up your development game.

Chris Stone

May 23, 2014
Tweet

More Decks by Chris Stone

Other Decks in Technology

Transcript

  1. Chris Stone | E-Moxie | @cmstone | php[tek] 2014 |

    Shell Revolution | https://joind.in/10644 1 SHELL REVOLUTION https://joind.in/10644
  2. Chris Stone | E-Moxie | @cmstone | php[tek] 2014 |

    Shell Revolution | https://joind.in/10644 2 WHO AM I? •President and Co-Founder of E-Moxie - www.emoxie.com •Baltimore, MD •PHP Developer, System Administrator, Tinkerer •Meetup Organizer - Baltimore PHP/Mobile/API •Trainer •Maximize efficiencies and make life easier (mainly mine) •I’ve seen things, and learned a bit on the way ! [email protected] Twitter: @cmstone
  3. Chris Stone | E-Moxie | @cmstone | php[tek] 2014 |

    Shell Revolution | https://joind.in/10644 3
  4. Chris Stone | E-Moxie | @cmstone | php[tek] 2014 |

    Shell Revolution | https://joind.in/10644 4 LOST ART
  5. Chris Stone | E-Moxie | @cmstone | php[tek] 2014 |

    Shell Revolution | https://joind.in/10644 5 COULDN’T LIVE WITHOUT ls mv cp ps echo ! ! ! !
  6. Chris Stone | E-Moxie | @cmstone | php[tek] 2014 |

    Shell Revolution | https://joind.in/10644 6 INDISPENSABLE TOOLS Fish Screen Mosh Vagrant
  7. Chris Stone | E-Moxie | @cmstone | php[tek] 2014 |

    Shell Revolution | https://joind.in/10644 7 Fish
  8. Chris Stone | E-Moxie | @cmstone | php[tek] 2014 |

    Shell Revolution | https://joind.in/10644 8 FISH “Finally, a command line shell for the 90s” • Color • Web based Config • Auto suggest
  9. Chris Stone | E-Moxie | @cmstone | php[tek] 2014 |

    Shell Revolution | https://joind.in/10644 9 SCREEN
  10. Chris Stone | E-Moxie | @cmstone | php[tek] 2014 |

    Shell Revolution | https://joind.in/10644 10 SCREEN •Terminal multiplexer •Window manager for the terminal •Has been around since the beginning of time •Ability to create additional “windows” or terminals within one terminal window and switch between them
  11. Chris Stone | E-Moxie | @cmstone | php[tek] 2014 |

    Shell Revolution | https://joind.in/10644 11 QUICK START •screen -R (Reattach a detached session if not already attached) •screen -ls (List current screen sockets and their state) •Ctrl+a D (Detach current screen session) •Ctrl+a C (Create a new window) •Ctrl+a # (Switch to window) •Ctrl+a * (List windows)
  12. Chris Stone | E-Moxie | @cmstone | php[tek] 2014 |

    Shell Revolution | https://joind.in/10644 12 MOSH - The MObile SHell
  13. Chris Stone | E-Moxie | @cmstone | php[tek] 2014 |

    Shell Revolution | https://joind.in/10644 13 QUICK START •MIT Computer Science •Fairly new •Supports roaming •Intermittent Connectivity •Local Echo •SSH Replacement •Available for pretty much anything (even iOS and Android)
  14. Chris Stone | E-Moxie | @cmstone | php[tek] 2014 |

    Shell Revolution | https://joind.in/10644 14 HOW DO I GET IT Mac: brew install mobile-shell Linux: apt-get install mosh or yum install mosh Windows: Cygwin is experimental
  15. Chris Stone | E-Moxie | @cmstone | php[tek] 2014 |

    Shell Revolution | https://joind.in/10644 15 DOWNFALLS OF MOSH •Not installed by default in most installations •No terminal scrollback (use screen!) •Local echo
  16. Chris Stone | E-Moxie | @cmstone | php[tek] 2014 |

    Shell Revolution | https://joind.in/10644 16
  17. Chris Stone | E-Moxie | @cmstone | php[tek] 2014 |

    Shell Revolution | https://joind.in/10644 17 WHAT IS IT? •Awesome •Life changing •New kid on the block •The #1 tool you should have in your development arsenal •Development tool that every developer and project should be using •Manager for a virtualization provider (VirtualBox, VMWare, etc) •Automates your [development] environment (Puppet or Chef) •Support for Docker containers
  18. Chris Stone | E-Moxie | @cmstone | php[tek] 2014 |

    Shell Revolution | https://joind.in/10644 18 WHY? •Gets rid of the “it works for me” •EASY and FAST •Everyone on the same page •Closely resembles a production environment •Keeps your computer clean •Low barrier to entry
  19. Chris Stone | E-Moxie | @cmstone | php[tek] 2014 |

    Shell Revolution | https://joind.in/10644 19 THE HARD WAY 1. Someone new joins your company or team 2. They need to get their development environment setup 3. It takes two days to one week to get up and running 4. Install an IDE 5. Install MAMP or XAMP or something else that can serve pages 6. Make sure the PHP version is the same 7. Make sure the PHP config is the same
  20. Chris Stone | E-Moxie | @cmstone | php[tek] 2014 |

    Shell Revolution | https://joind.in/10644 20 THE HARD WAY 1. Install additional extensions 2. Configure MAMP 3. Always tackle “it works for me” problems in the environment 4. Environment relies on the local machine. Screwed it up? Do it again. 5. Production environment got updated? Let’s make sure everyone updates to the right version, do it again. Sounds fun....
  21. Chris Stone | E-Moxie | @cmstone | php[tek] 2014 |

    Shell Revolution | https://joind.in/10644 22 THE EASY WAY 1. Someone new joins your company or team and they need to get their development environment setup 2. Install IDE 3. Install VirtualBox 4. Install Vagrant 5. Clone git repository 6. Run ‘vagrant up’ 7. Make things
  22. Chris Stone | E-Moxie | @cmstone | php[tek] 2014 |

    Shell Revolution | https://joind.in/10644 23 MY PROCESS 1. New person shows 2. Install VirtualBox 3. Install Vagrant 4. Clone git repository 5. Run ‘vagrant up’ 6. Vagrant uses puppet to boostrap the system using a very similar config to production systems 7. Use IDE of choice
  23. Chris Stone | E-Moxie | @cmstone | php[tek] 2014 |

    Shell Revolution | https://joind.in/10644 24 MY PROCESS Zero Config for User 1. Apache is using dynamic virtual hosting 2. Local ~/development folder is mapped to /var/www in VM 3. *.dev.emoxie.com points to 192.168.1.50 4. Apache maps the * to /var/www/<*>
  24. Chris Stone | E-Moxie | @cmstone | php[tek] 2014 |

    Shell Revolution | https://joind.in/10644 25 WHAT DO I NEED 1. Vagrant - vagrantup.com 2. VirtualBox - virtualbox.org 3. PuPHPet - puphpet.com - GREAT Kickstarter to get you going 4. Not a PHP User? http://www.vagrantbox.es
  25. Chris Stone | E-Moxie | @cmstone | php[tek] 2014 |

    Shell Revolution | https://joind.in/10644 26 PHP • Not just for the web • $argv[] • get_options()
  26. Chris Stone | E-Moxie | @cmstone | php[tek] 2014 |

    Shell Revolution | https://joind.in/10644 27 PHP <?php var_dump($argv); ?> php script.php arg1 arg2 arg3 array(4) {! [0]=>! string(10) "script.php"! [1]=>! string(4) "arg1"! [2]=>! string(4) "arg2"! [3]=>! string(4) "arg3"! }
  27. Chris Stone | E-Moxie | @cmstone | php[tek] 2014 |

    Shell Revolution | https://joind.in/10644 28 Additional Tools
  28. Chris Stone | E-Moxie | @cmstone | php[tek] 2014 |

    Shell Revolution | https://joind.in/10644 29 SED Parses and transforms text ! sed 's/regexp/replacement/g' inputFile > outputFile sed 's/cat/dog/g' inputFile > outputFile macbook:~ chris$ cat file cat macbook:~ chris$ sed 's/cat/dog/g' file > dog macbook:~ chris$ cat dog dog
  29. Chris Stone | E-Moxie | @cmstone | php[tek] 2014 |

    Shell Revolution | https://joind.in/10644 30 AWK • Interpreted programming language used for text processing • Great for ! • length($0) > 80 macbook:~ chris$ ps ax | grep Dropbox | awk '{print $1}' 29835
  30. Chris Stone | E-Moxie | @cmstone | php[tek] 2014 |

    Shell Revolution | https://joind.in/10644 31 NANO
  31. Chris Stone | E-Moxie | @cmstone | php[tek] 2014 |

    Shell Revolution | https://joind.in/10644 32 ADDITIONAL RESOURCES 1. edx.org - Linux Foundations - Courses Start - Aug 1 2. Local LUG 3. User Groups
  32. Chris Stone | E-Moxie | @cmstone | php[tek] 2014 |

    Shell Revolution | https://joind.in/10644 33 QUESTIONS?
  33. Chris Stone | E-Moxie | @cmstone | php[tek] 2014 |

    Shell Revolution | https://joind.in/10644 34 THANKS! Please reach out to me @cmstone or [email protected] Please rate and give feedback!! https://joind.in/10644