{"id":21013865,"url":"https://github.com/pyro2927/erin-cheet-sheets","last_synced_at":"2026-03-27T03:11:13.605Z","repository":{"id":66587821,"uuid":"62105700","full_name":"pyro2927/erin-cheet-sheets","owner":"pyro2927","description":null,"archived":false,"fork":false,"pushed_at":"2016-06-28T03:10:16.000Z","size":12,"stargazers_count":2,"open_issues_count":0,"forks_count":0,"subscribers_count":0,"default_branch":"master","last_synced_at":"2025-10-06T23:35:01.154Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":null,"has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/pyro2927.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2016-06-28T03:05:44.000Z","updated_at":"2016-08-09T20:43:36.000Z","dependencies_parsed_at":"2023-03-07T00:15:38.316Z","dependency_job_id":null,"html_url":"https://github.com/pyro2927/erin-cheet-sheets","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/pyro2927/erin-cheet-sheets","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pyro2927%2Ferin-cheet-sheets","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pyro2927%2Ferin-cheet-sheets/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pyro2927%2Ferin-cheet-sheets/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pyro2927%2Ferin-cheet-sheets/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/pyro2927","download_url":"https://codeload.github.com/pyro2927/erin-cheet-sheets/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pyro2927%2Ferin-cheet-sheets/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":31013962,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-03-27T02:58:54.984Z","status":"ssl_error","status_checked_at":"2026-03-27T02:58:46.993Z","response_time":164,"last_error":"SSL_read: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2024-11-19T09:44:22.399Z","updated_at":"2026-03-27T03:11:13.585Z","avatar_url":"https://github.com/pyro2927.png","language":null,"funding_links":[],"categories":[],"sub_categories":[],"readme":"# Cheat Sheet\n\nThis document is a dump of information written to help people getting into software development overcome some of the hurdles.\n\n## In the Beginning\n\nThere are a few important things to know about computers and your interactions with them.\n\n### Binary Data\n\nEverything in a computer, at it's lowest level, is a bunch of 1s and 0s.  **[Everything](https://en.wikipedia.org/wiki/Binary_data#In_computer_science)**.  All else is built on top of that principle.  To go from 1s and 0s to higher level information requires the use on an [encoding system](https://en.wikipedia.org/wiki/Code).  One such example of this is [ASCII](https://en.wikipedia.org/wiki/ASCII).  ASCII is used to represent a small set of characters (alphanumeric and some symbols).  Using ASCII, the capital letter `A` is stored in a computer as `00101001`.\n\n#### Encodings\n\nThere are many different types of encodings.  Text can be stored as [ASCII](https://en.wikipedia.org/wiki/ASCII) or [UTF-8](https://en.wikipedia.org/wiki/UTF-8).  Colors can be stored as [RGB](https://en.wikipedia.org/wiki/RGB_color_model) in [hex](https://en.wikipedia.org/wiki/Hexadecimal). (Teal is `#00FFFF`, which is `0000 0000 1111 1111 1111 1111` in binary)  It is not important to know all the different kinds of encodings, just that they exist, that they can be layered on top of each other, and that at the very bottom is _always_ binary.\n\n### Computers are DUMB\n\nNot in a coolness factor way, in an intelligence way.  They have an IQ of 0.  _But Joe, I've seen a lot of really complex things on computers! They're smart!_ No, they aren't.  A **HUMAN** wrote very complex code that is impressive, they computer is just reading a bunch of 1s and 0s.  *Most* problems you will encounter as a developer are a result of a computer not understanding you.  You may find yourself saying \"The computer isn't doing what I'm telling it!\", but that is never true.  The correct statement is \"The computer isn't doing what I _want_ it to do.\", and that's because you're not telling it what to do correctly.\n\n### Storing Information\n\nPermanent information stored on your [hard drive](https://en.wikipedia.org/wiki/Hard_disk_drive) is made up of files and folders (also commonly known as \"directories\").  Directories can have other directories and files within them.  These files and directories are saved as binary data onto the disk, and it's important to keep in mind that all information on a computer is a bunch of files and directories when you're working with it later.\n\n## Interfacing with a Computer\n\nThere are many different ways to interface with a computer.  There are two levels of interfacing: hardware and software.  Most commonly people use a monitor, keyboard, and mouse as their hardware.  On the software side, most people use a [desktop environment](https://en.wikipedia.org/wiki/Desktop_environment), which if you're coming from OS X or Windows you may just call \"the desktop\".  This is a [GUI](https://en.wikipedia.org/wiki/Graphical_user_interface) built on top of a computer's [operating system](https://en.wikipedia.org/wiki/Operating_system).  But, there are other ways.\n\n### Shells\n\nThe desktop environment previously mentioned is a GUI [shell](https://en.wikipedia.org/wiki/Shell_(computing)).  The name is picked for a reason, as it's a wrapper around the operating system, also called the [kernel](https://en.wikipedia.org/wiki/Kernel_(operating_system)).  It is common among experienced programmers to use a CLI shell because it is closer to the kernel beneath it, making it more powerful and capable than any GUI.  While it will take some time to learn, you will eventually be able to do far more than any GUI would allow you to do.\n\nTo run a CLI shell, you will often times do this within a GUI shell.  This may seem kind of silly, but it is common practice.  OS X comes with [Terminal](https://en.wikipedia.org/wiki/Terminal_(OS_X)) pre-installed to allow you to do this, though [iTerm2](https://www.iterm2.com/) is considered superior by many.  If you're just getting started out, you can use either one.\n\n###### Popular CLI shells:\n\n* [sh](https://en.wikipedia.org/wiki/Bourne_shell) - The Bourne Shell\n* [bash](https://en.wikipedia.org/wiki/Bash_(Unix_shell)) - **B**ourne **A**gain **SH**ell\n* [fish](https://en.wikipedia.org/wiki/Friendly_interactive_shell)\n* [zsh](https://en.wikipedia.org/wiki/Z_shell) - \"The last shell you'll ever need\"\n\n#### The Prompt\n\n![](http://news.softpedia.com/images/reviews/large/bash_tutorial-img1-large.png)\n\nWith a GUI shell (or desktop), you click on things, drag them around, type in text boxes.  With a CLI shell, you are just given a \"[prompt](https://en.wikibooks.org/wiki/Guide_to_Unix/Explanations/Shell_Prompt)\".  Put simply, this is a space where you can type in text, tell the computer to process that text (usually be pressing the Enter key), and then have it spit back out information.\n\nThere are a few key things to know about the prompt.  First, there is the `PS1`. This is a few pieces of information about you, the computer you are connected to, and where are *are*.  For example, mine says `joseph.pintozzi@JPINT1ML1 ~`.  `joseph.pintozzi` is the user name that I am logged in as.  Then the `@` symbol tells me the next bit of information is where I am \"at\", the computer's hostname. `JPINT1ML1` is the name of my laptop.  The last piece, `~`, tells me where my prompt/shell is currently on my hard drive.  `~` is shorthand notation for \"my user's home directory\".  On OS X, this is `/Users/USER_NAME_HERE`, so for me `~` means `/Users/joseph.pintozzi`.  A `PS1` can be changed, though most users leave theirs as the default.\n\nSecond, the prompt has a \"current working directory\".  When you start a shell, by default it will start in your home directory, mentioned above.  If you run a command or program, it will be default use information within the directory you are in, though you can move around by issuing commands to the shell.\n\nLastly, there are pieces of information contained within a shell known as [environment variables](https://en.wikipedia.org/wiki/Environment_variable).  You can see these by running the command `export` on OS X.  Each line is one environment variable, with the name of the variable on the left of the `=`, and the value for that variable to the right.  Common variables you should be able to see are `HOME`, `PWD`, and `USER`.\n\n#### CLI Programs\n\nJust like there are GUI programs (Google Chrome, Microsoft Word, etc), there are CLI programs.  To run them, you type them into your prompt, press enter, and see the results.  You can open up `Terminal.app` and type these things in to run them.\n\n###### Common CLI Programs\n\n* [cd](https://en.wikipedia.org/wiki/Cd_(command)) - **C**hange **D**irectory\n* [ls](https://en.wikipedia.org/wiki/Ls) - **L**i**S**t the files and directories of where you are\n* [pwd](https://en.wikipedia.org/wiki/Pwd) - **P**rint **W**orking **D**irectory\n* [curl](https://en.wikipedia.org/wiki/CURL) - **C**lient for **URL**s\n* [wget](https://en.wikipedia.org/wiki/Wget) - **W**orld Wide Web **GET**\n\n#### The PATH\n\n`PATH` is an environment variable (mentioned above) that is primarily used as a **search path** for when you're submitting commands to the shell.  Specifically, `PATH` is a string of colon (`:`) separated locations that the prompt should look for files and binaries when you run a command.  An example `PATH` is `/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin`.\n\nWhen a prompt executes a command, it first looks in the current directory to see if it can find a program there it should run.  If it fails to do that, it falls back to the `PATH` and checks each directory (**IN ORDER!**) to see if it can find a program that the name you typed it.  What this means, is that when you type `ls` into your prompt (using the example `PATH` from above), it first checks in your current directory to see if it can find a program named `ls`, then it checks `/usr/local/bin`, then it checks `/usr/bin`, etc, all the way until it _finds_ `ls` and then executes it.\n\n\n#### RTFM\n\nWhen looking for help, or asking someone online, you may encounter the anagram [RTFM](https://en.wikipedia.org/wiki/RTFM), which stands for \"read the fucking manual\".  This may sound harsh, but is a wise piece of advice.  Most CLI programs come with a [manual](https://en.wikipedia.org/wiki/Man_page), accessed by running `man OTHER_PROGRAM_NAME_HERE`.  If you wanted to read the manual for `cd`, you would run `man cd`, and it would give you all of the important information related to `cd`.\n\n##### Exiting\n\nMost CLI programs run for a while, and then exit automatically, spitting out the information you were looking for.  Some programs don't and only quit when you tell them to (such as `tail`, `watch`, and `less`).  This is typically done through either pressing `Q` (for quit) or `Ctrl + C`.\n\n\n-------\n* Command history\n* Rubber Ducky debugging\n* Useful links (rubular, explainshell)\n\n\n\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fpyro2927%2Ferin-cheet-sheets","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fpyro2927%2Ferin-cheet-sheets","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fpyro2927%2Ferin-cheet-sheets/lists"}