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

    View Slide

  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

    View Slide

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

    View Slide

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

    View Slide

  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

    !
    !
    !
    !

    View Slide

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

    Screen

    Mosh

    Vagrant

    View Slide

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

    View Slide

  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

    View Slide

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

    View Slide

  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

    View Slide

  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)

    View Slide

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

    View Slide

  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)

    View Slide

  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

    View Slide

  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

    View Slide

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

    View Slide

  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

    View Slide

  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

    View Slide

  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

    View Slide

  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....

    View Slide

  21. View Slide

  22. 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

    View Slide

  23. 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

    View Slide

  24. 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/<*>

    View Slide

  25. 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

    View Slide

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

    • $argv[]

    • get_options()

    View Slide

  27. Chris Stone | E-Moxie | @cmstone | php[tek] 2014 | Shell Revolution | https://joind.in/10644 27
    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"!
    }

    View Slide

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

    View Slide

  29. 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

    View Slide

  30. 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

    View Slide

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

    View Slide

  32. 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

    View Slide

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

    View Slide

  34. 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

    View Slide