Home > Store

Learn Enough Developer Tools to Be Dangerous: Command Line, Text Editor, and Git Version Control Essentials (LiveLessons)

Learn Enough Developer Tools to Be Dangerous: Command Line, Text Editor, and Git Version Control Essentials (LiveLessons)

Your browser doesn't support playback of this video. Please download the file to view it.

Online Video

Register your product to gain access to bonus material or receive a coupon.


  • Copyright 2022
  • Edition: 1st
  • Online Video
  • ISBN-10: 0-13-784242-2
  • ISBN-13: 978-0-13-784242-1

4+ Hours of Video Instruction

In Learn Enough Developer Tools to Be Dangerous: Command Line, Text Editor, and Git Version Control Essentials, renowned instructor Michael Hartl teaches the foundational tools and skills you need to to work with developers or become a developer yourself.


Learn Enough Developer Tools to Be Dangerous teaches you three essential tools for modern software development: the Unix command line, a text editor, and version control with Git. All three are ubiquitous in the contemporary technology landscape, and yet there are surprisingly few resources for learning them from scratch and seeing how they all fit together. Learn Enough Developer Tools to Be Dangerous, which assumes no prerequisites other than general computer knowledge, fills this gap.

The skills you'll learn are valuable whether your interest is in collaborating with developers or becoming a developer yourself. No matter what you want to do--level up in your current job, start a new career, or even start your own company--Learn Enough Developer Tools to Be Dangerous is a great place to start.

And staying true to the Learn Enough philosophy, the course focuses on the most important aspects of the respective technologies. You don't have to learn everything to get started--you just have to learn enough to be dangerous.

About the Instructor

Michael Hartl is the creator of the Ruby on Rails Tutorial, one of the leading introductions to web development, and is cofounder and principal author at Learn Enough. Previously, he was a physics instructor at the California Institute of Technology (Caltech), where he received a Lifetime Achievement Award for Excellence in Teaching. He is a graduate of Harvard College, has a PhD in Physics from Caltech, and is an alumnus of the Y Combinator entrepreneur program.

Skill Level

  • Beginner to intermediate

Learn How To

  • Run a terminal
  • Manipulate, inspect, and search through files
  • Understand directories, including making, navigating, renaming, copying, and deleting them
  • Understand text-editor basics, including Minimum Viable Vim
  • Use a modern text editor
  • Use advanced techniques, including writing source code and executable scripts
  • Use Git version control
  • Use GitHub for remote version control
  • Branch and merge
  • Recover from errors
  • Collaborate with others on software projects

Who Should Take This Course

  • Those wishing to work with developers on projects or who want to become developers themselves. The course can serve as a base from which to learn how to make modern websites with HTML and CSS and how to develop software with JavaScript or Ruby.

Course Requirements

  • No prerequisites other than general computer knowledge
  • A willingness to learn new things

Lesson Descriptions

Lesson 1: Basics
In Lesson 1, you learn the basics of the Unix command line. Using a command line interface, or CLI, involves typing commands that tell the computer to perform particular tasks, like renaming or deleting files, making directories, or launching other programs. Unix refers to a family of operating systems that includes Linux, Android, and iOS (iPhone and iPad, and Mac OS). Unix systems serve most of the software on the World Wide Web, run most mobile and tablet devices, and power many of the world's desktop computers as well. As a result, understanding the basics of the command line is absolutely essential to becoming a skilled developer. You start by launching and using a terminal, which is the program that gets you to the command line. After an introduction to the command line prompt, you begin learning how to execute simple Unix commands. You also see how to use so-called man pages to let you use the command line itself to learn more about any given command. The lesson ends with some tricks for editing the command line, and then you learn how to exit it when you are done.

Lesson 2: Manipulating Files
In Lesson 2, you learn how to manipulate files, one of the most important tasks of the command line. Because Module 1 assumes no technical prerequisites, you are not assumed to have any familiarity with a text editor, which is covered in Module 2. This means that you need to create files by hand at the command line. But this is a feature, not a bug, because learning to create files at the command line is a valuable skill in itself. You begin by learning how to redirect output, which will enable you to use the echo command from the previous lesson to create a new file at the command line. You also learn how to add more lines to the end of a file, a process known as appending. Next, you learn various ways to list the details of files, including both short and long forms, and reverse by modification time. Finally, you see how to rename, copy and delete files, including how to use wildcards to make changes that can be hard to make using a graphical user interface but are easy using a CLI.

Lesson 3: Inspecting Files
Having seen how to create and manipulate files in Lesson 2, in Lesson 3 it is time to learn how to examine their contents. This is especially important for files that are too long to fit on a single screen. In particular, you saw in the last lesson how to use the cat command to dump the file contents to the screen, but this doesn't work well for longer files. To get started with a file too long to cat, you use a powerful program called curl, which lets you interact with the Internet via the command line. You use curl to download a long text file from the web and then use the head and tail commands to examine its beginning and end, respectively. You then use the interactive less command to examine your files contents more thoroughly. Finally, you use the important grep command to search for patterns inside your file using both ordinary strings and so-called regular expressions.

Lesson 4: Directories
Having examined many of the Unix utilities for dealing with files, in Lesson 4 you learn about directories, sometimes known as folders. As you'll see, many of the ideas developed in the context of files also apply to directories, but there are many differences as well. The lesson starts with a big-picture overview of the Unix directory structure. You then learn how to make directories ourselves. Next, you learn how to change directories. Then, as with files, you learn how to rename, copy, and delete directories. Finally, you learn how to use the grep utility, introduced in the previous lesson, to search inside some or all of the files in a directory.

Lesson 5: Introduction to Text Editors
In Lesson 5, the first lesson of Module 2, "Learn Enough Text Editor to Be Dangerous," you learn the basics of how to use a text editor. Unlike most other text-editor tutorials, which are typically tied to a specific editor, Learn Enough Developer Tools to Be Dangerous introduces the entire category of application, a category many people do not even know exists. A text editor is an application used to edit plain text, often called just text for short, which is the most common document format for code, markup, configuration files, and many other things. After a general overview of what text editors are and what they can do, the lesson dives into the important, if somewhat obscure, Vim editor. The lesson includes only Minimum Viable Vim, not even really enough to be dangerous, but enough to get started. You begin by learning how to launch Vim right at the command line and then how to exit it safely using the Most Important Vim CommandTM. You then learn how to use Vim to edit, save, and quit small files and how to delete content in files. The lesson ends by teaching you how to use Vim to navigate, search, and edit larger files as well.

Lesson 6: Modern Text Editors
Lesson 6 builds on the basic Vim text editing you learned in Lesson 5 to introduce so-called modern text editors such as Sublime Text, Visual Studio Code, and Atom. Modern editors are distinguished by their combination of power and ease of use. You can do fancy things like global search-and-replace, but unlike Vim, they let you just click in a window and start typing. In addition, many modern editors include an option to run in Vim compatibility mode. So even if you end up loving Vim, you can still use a modern editor without having to give Vim up entirely. Although we'll mainly be using the Atom editor in the videos, the ideas covered in this lesson and the next broadly apply to any modern editor. You learn how to open files, how to move around inside them, how to select text, and how to cut, copy, and paste. You then learn how to delete text, and perhaps most importantly, how to undo such deletions. Next, you learn how to save files, and the lesson ends by teaching you how to find and replace text based on exact string matches. As part of all this, you also get an introduction to Markdown, a useful human-readable markup language designed to be easy to convert to HTML, the language of the World Wide Web.

Lesson 7: Advanced Text Editing
Having covered the basic functions of modern text editors in Lesson 6, in Lesson 7 you learn about a few of the most common advanced topics. Even more than in Lesson 6, details will vary based on the exact editor you choose. So use your growing technical sophistication to figure out any necessary details. The most important point is that the advanced functions in this lesson are all things that any professional editor can do. So you should be able to figure out how to do them no matter which editor you are using. The lesson begins with autocomplete and tab triggers, which are two powerful techniques for generating longer strings of text automatically. Next, you learn some tricks and techniques for writing source code. You apply this knowledge to write a working executable script, which extends the capabilities of the command line introduced in Module 1. The lesson ends with a discussion of how to use a text editor to work on an entire project consisting of many files and directories, such as a Ruby on Rails web application, including how to find and replace using the regular expressions introduced in Lesson 3.

Lesson 8: Getting Started with Git
In Lesson 8, the first lesson of Module 3, "Learn Enough Git to Be Dangerous," you'll learn the basics of the Git Version Control System, or VCS, which provides an automatic way to track changes in software and other text-based projects. Fluency in at least one VCS is an essential component of technical sophistication. Nowadays, by far the most popular choice of VCS is Git, designed by Linux creator Linus Torvalds. Because Git runs as a command-line program and tracks changes in plain text files, you will have a chance to apply many of the things you learned in Modules 1 and 2. You begin by covering the installation and initial setup needed to get started with Git. You then initialize a new Git repository to contain our project consisting of a simple website, create a new file, and record the change by making our first commit. Next you make a change to the file and view the change using Git's version of the diff command introduced in Lesson 2. You then make and commit several more changes. Along the way you learn a little about Hypertext Markup Language, or HTML, the language of the World Wide Web.

Lesson 9: Backing Up and Sharing
In Lesson 9, you learn how to use Git to back up and share the work you did in Lesson 8, by pushing a copy of your project up to a remote repository. This will serve as a backup of our project and its history and will also make it easier for collaborators to work with us on our site. You start by signing up for GitHub, a site designed to facilitate collaboration with Git repositories. First, you create a remote repository at GitHub and then use git add to connect it to our local repository. You then use git push to push our local copy up to GitHub. Next, you add an explanatory README file using the same Markdown formatting language covered in Module 2. After pushing up our repository again, you will discover that GitHub automatically converts Markdown to HTML and displays the result.

Lesson 10: Intermediate Workflow
In Lesson 10, you practice and extend the basic workflow introduced in Lesson 9. This includes adding a new directory to your project, learning how to tell Git to ignore certain files, how to branch and merge, and how to recover from errors. Rather than providing an encyclopedic coverage of Git's many commands, the focus is on covering practical techniques used every day by software developers and other users of Git. You start by reviewing the process of committing and pushing covered in the previous lesson. You then discuss how to get Git to ignore things like temporary and log files that we don't want to keep in version control. You then learn how to make an efficient copy of your code using a branch, which enables us to make changes safely without affecting the main project. Then you learn how to incorporate those changes using a merge. You end with the discussion of how Git helps you recover from errors such as accidentally deleting the files in your project.

Lesson 11: Collaborating
Now that we've covered some of the tools needed to use Git effectively on solo projects, in Lesson 11, you learn about what is perhaps Git's greatest strength: making it easier to collaborate with other people. This is especially the case when using repository hosts like GitHub or Bitbucket, but it is also possible to host Git repositories on private servers, sometimes using software like GitLab to get many GitHub-like benefits. You begin by making a copy of your project's repository using the git clone command, and then you learn how to use git pull to pull in changes pushed by your collaborators. As part of this, you learn how to deal with the inevitable conflicts that arise from having multiple people working on the same source files. You also learn how to push the kinds of branches introduced in Lesson 10 so that you can collaborate with others on possibly dangerous changes and then merge them in only when you are confident you want to keep them. The lesson ends with a special surprise bonus that will give you bragging rights with all of your friends. In a final optional section, you can learn some more advanced Git setup, such as aliases and tab completion.

About Pearson Video Training

Pearson publishes expert-led video tutorials covering a wide selection of technology topics designed to teach you the skills you need to succeed. These professional and personal technology videos feature world-leading author instructors published by your trusted technology brands: Addison-Wesley, Cisco Press, Pearson IT Certification, Sams, and Que. Topics include: IT Certification, Network Security, Cisco Technology, Programming, Web Development, Mobile Development, and more. Learn more about Pearson Video training at http://www.informit.com/video.

Video Lessons are available for download for offline viewing within the streaming format. Look for the green arrow in each lesson.

Sample Content

Table of Contents


Module 1: Command Line

Lesson 1: Basics
1.1 Introduction
1.2 Running a terminal
1.3 Our first command
1.4 Man pages
1.5 Editing the line
1.6 Cleaning up

Lesson 2: Manipulating Files
2.1 Redirecting and appending
2.2 Listing
2.3 Renaming, copying, deleting

Lesson 3: Inspecting Files
3.1 Downloading a file
3.2 Making heads and tails of it
3.3 Less is more
3.4 Grepping

Lesson 4: Directories
4.1 Directory structure
4.2 Making directories
4.3 Navigating directories
4.4 Renaming, copying, and deleting directories
4.5 Conclusion

Module 2: Text Editors

Lesson 5: Introduction to Text Editors
5.1 Minimum Viable Vim
5.2 Starting Vim
5.3 Editing small files
5.4 Saving and quitting files
5.5 Deleting content
5.6 Editing large files

Lesson 6: Modern Text Editors
6.1 Choosing a text editor
6.2 Opening
6.3 Moving
6.4 Selecting text
6.5 Cut, copy, paste
6.6 Deleting and undoing
6.7 Saving
6.8 Finding and replacing

Lesson 7: Advanced Text Editing
7.1 Autocomplete and tab triggers
7.2 Writing source code
7.3 Writing an executable script
7.4 Editing projects
7.5 Customization
7.6 Conclusion

Module 3: Git

Lesson 8: Getting Started
8.1 Installation and setup
8.2 Initializing the repo
8.3 Our first commit
8.4 Viewing the diff
8.5 Adding an HTML tag
8.6 Adding HTML structure

Lesson 9: Backing Up and Sharing
9.1 Signing up for GitHub
9.2 Remote repo
9.3 Adding a README

Lesson 10: Immediate Workflow
10.1 Commit, push, repeat
10.2 Ignoring files
10.3 Branching and merging
10.4 Recovering from errors

Lesson 11: Collaborating
11.1 Clone, push, pull
11.2 Pulling and merge conflicts
11.3 Pushing branches
11.4 A surprise bonus
11.5 Advanced setup
11.6 Conclusion



Submit Errata

More Information

InformIT Promotional Mailings & Special Offers

I would like to receive exclusive offers and hear about products from InformIT and its family of brands. I can unsubscribe at any time.


Pearson Education, Inc., 221 River Street, Hoboken, New Jersey 07030, (Pearson) presents this site to provide information about products and services that can be purchased through this site.

This privacy notice provides an overview of our commitment to privacy and describes how we collect, protect, use and share personal information collected through this site. Please note that other Pearson websites and online products and services have their own separate privacy policies.

Collection and Use of Information

To conduct business and deliver products and services, Pearson collects and uses personal information in several ways in connection with this site, including:

Questions and Inquiries

For inquiries and questions, we collect the inquiry or question, together with name, contact details (email address, phone number and mailing address) and any other additional information voluntarily submitted to us through a Contact Us form or an email. We use this information to address the inquiry and respond to the question.

Online Store

For orders and purchases placed through our online store on this site, we collect order details, name, institution name and address (if applicable), email address, phone number, shipping and billing addresses, credit/debit card information, shipping options and any instructions. We use this information to complete transactions, fulfill orders, communicate with individuals placing orders or visiting the online store, and for related purposes.


Pearson may offer opportunities to provide feedback or participate in surveys, including surveys evaluating Pearson products, services or sites. Participation is voluntary. Pearson collects information requested in the survey questions and uses the information to evaluate, support, maintain and improve products, services or sites, develop new products and services, conduct educational research and for other purposes specified in the survey.

Contests and Drawings

Occasionally, we may sponsor a contest or drawing. Participation is optional. Pearson collects name, contact information and other information specified on the entry form for the contest or drawing to conduct the contest or drawing. Pearson may collect additional personal information from the winners of a contest or drawing in order to award the prize and for tax reporting purposes, as required by law.


If you have elected to receive email newsletters or promotional mailings and special offers but want to unsubscribe, simply email information@informit.com.

Service Announcements

On rare occasions it is necessary to send out a strictly service related announcement. For instance, if our service is temporarily suspended for maintenance we might send users an email. Generally, users may not opt-out of these communications, though they can deactivate their account information. However, these communications are not promotional in nature.

Customer Service

We communicate with users on a regular basis to provide requested services and in regard to issues relating to their account we reply via email or phone in accordance with the users' wishes when a user submits their information through our Contact Us form.

Other Collection and Use of Information

Application and System Logs

Pearson automatically collects log data to help ensure the delivery, availability and security of this site. Log data may include technical information about how a user or visitor connected to this site, such as browser type, type of computer/device, operating system, internet service provider and IP address. We use this information for support purposes and to monitor the health of the site, identify problems, improve service, detect unauthorized access and fraudulent activity, prevent and respond to security incidents and appropriately scale computing resources.

Web Analytics

Pearson may use third party web trend analytical services, including Google Analytics, to collect visitor information, such as IP addresses, browser types, referring pages, pages visited and time spent on a particular site. While these analytical services collect and report information on an anonymous basis, they may use cookies to gather web trend information. The information gathered may enable Pearson (but not the third party web trend services) to link information with application and system log data. Pearson uses this information for system administration and to identify problems, improve service, detect unauthorized access and fraudulent activity, prevent and respond to security incidents, appropriately scale computing resources and otherwise support and deliver this site and its services.

Cookies and Related Technologies

This site uses cookies and similar technologies to personalize content, measure traffic patterns, control security, track use and access of information on this site, and provide interest-based messages and advertising. Users can manage and block the use of cookies through their browser. Disabling or blocking certain cookies may limit the functionality of this site.

Do Not Track

This site currently does not respond to Do Not Track signals.


Pearson uses appropriate physical, administrative and technical security measures to protect personal information from unauthorized access, use and disclosure.


This site is not directed to children under the age of 13.


Pearson may send or direct marketing communications to users, provided that

  • Pearson will not use personal information collected or processed as a K-12 school service provider for the purpose of directed or targeted advertising.
  • Such marketing is consistent with applicable law and Pearson's legal obligations.
  • Pearson will not knowingly direct or send marketing communications to an individual who has expressed a preference not to receive marketing.
  • Where required by applicable law, express or implied consent to marketing exists and has not been withdrawn.

Pearson may provide personal information to a third party service provider on a restricted basis to provide marketing solely on behalf of Pearson or an affiliate or customer for whom Pearson is a service provider. Marketing preferences may be changed at any time.

Correcting/Updating Personal Information

If a user's personally identifiable information changes (such as your postal address or email address), we provide a way to correct or update that user's personal data provided to us. This can be done on the Account page. If a user no longer desires our service and desires to delete his or her account, please contact us at customer-service@informit.com and we will process the deletion of a user's account.


Users can always make an informed choice as to whether they should proceed with certain services offered by InformIT. If you choose to remove yourself from our mailing list(s) simply visit the following page and uncheck any communication you no longer want to receive: www.informit.com/u.aspx.

Sale of Personal Information

Pearson does not rent or sell personal information in exchange for any payment of money.

While Pearson does not sell personal information, as defined in Nevada law, Nevada residents may email a request for no sale of their personal information to NevadaDesignatedRequest@pearson.com.

Supplemental Privacy Statement for California Residents

California residents should read our Supplemental privacy statement for California residents in conjunction with this Privacy Notice. The Supplemental privacy statement for California residents explains Pearson's commitment to comply with California law and applies to personal information of California residents collected in connection with this site and the Services.

Sharing and Disclosure

Pearson may disclose personal information, as follows:

  • As required by law.
  • With the consent of the individual (or their parent, if the individual is a minor)
  • In response to a subpoena, court order or legal process, to the extent permitted or required by law
  • To protect the security and safety of individuals, data, assets and systems, consistent with applicable law
  • In connection the sale, joint venture or other transfer of some or all of its company or assets, subject to the provisions of this Privacy Notice
  • To investigate or address actual or suspected fraud or other illegal activities
  • To exercise its legal rights, including enforcement of the Terms of Use for this site or another contract
  • To affiliated Pearson companies and other companies and organizations who perform work for Pearson and are obligated to protect the privacy of personal information consistent with this Privacy Notice
  • To a school, organization, company or government agency, where Pearson collects or processes the personal information in a school setting or on behalf of such organization, company or government agency.


This web site contains links to other sites. Please be aware that we are not responsible for the privacy practices of such other sites. We encourage our users to be aware when they leave our site and to read the privacy statements of each and every web site that collects Personal Information. This privacy statement applies solely to information collected by this web site.

Requests and Contact

Please contact us about this Privacy Notice or if you have any requests or questions relating to the privacy of your personal information.

Changes to this Privacy Notice

We may revise this Privacy Notice through an updated posting. We will identify the effective date of the revision in the posting. Often, updates are made to provide greater clarity or to comply with changes in regulatory requirements. If the updates involve material changes to the collection, protection, use or disclosure of Personal Information, Pearson will provide notice of the change through a conspicuous notice on this site or other appropriate way. Continued use of the site after the effective date of a posted revision evidences acceptance. Please contact us if you have questions or concerns about the Privacy Notice or any objection to any revisions.

Last Update: November 17, 2020