All tools
Command Teller
Describe what you want to do in plain English and get the matching shell or git command, with variants.
Plain English works — try “reset last commit” or “list all files”.
List files in current directory
Fileslsls -lals -lhls -ltls -lSls -RShow directory as a tree
Filestreetree -L 2tree -I 'node_modules|.git'Print current working directory
FilespwdChange directory
Filescd <path>cd ..cd -cd ~Create a new directory
Filesmkdir <name>mkdir -p a/b/cCreate an empty file
Filestouch <file>Delete files or directories
Filesrm <file>rm -r <dir>rm -rf <dir>rm -i <file>Copy files or directories
Filescp <src> <dst>cp -r <src> <dst>cp -p <src> <dst>Move or rename files
Filesmv <src> <dst>mv -i <src> <dst>Create a symlink
Filesln -s <target> <link>ln -sf <target> <link>Print a file to the terminal
Filescat <file>cat -n <file>Page through a file
Filesless <file>less +F <file>Show first/last lines of a file
Fileshead -n 20 <file>tail -n 20 <file>tail -f <file>Count lines / words / chars in a file
Fileswc -l <file>wc -w <file>wc <file>Find files by name or pattern
Searchfind . -name '*.ts'find . -iname 'readme*'find . -type d -name node_modulesfind . -mtime -1find . -size +10MSearch for text inside files
Searchgrep -r 'pattern' .grep -rni 'pattern' .grep -rl 'pattern' .grep -E 'foo|bar' filerg 'pattern'Find and replace text in a file
Searchsed 's/old/new/g' filesed -i '' 's/old/new/g' filesed -i 's/old/new/g' fileExtract or process columns of text
Searchawk '{print $1}' fileawk -F, '{print $2}' file.csvChange file permissions
Permissionschmod +x <file>chmod 755 <file>chmod -R 644 <dir>Change file owner
Permissionssudo chown user:group <file>sudo chown -R user:group <dir>List running processes
Processps auxps -eftophtopKill a process
Processkill <pid>kill -9 <pid>pkill -f 'pattern'killall <name>Find what's using a port
Networklsof -i :3000lsof -nP -iTCP -sTCP:LISTENkill -9 $(lsof -ti :3000)Make an HTTP request
Networkcurl -i https://example.comcurl -X POST -d 'a=1' https://example.comcurl -H 'Content-Type: application/json' -d '{"a":1}' https://example.comcurl -O https://example.com/file.zipDownload a file
Networkwget <url>wget -c <url>wget -r <url>Ping a host
Networkping example.comping -c 4 example.comConnect to a remote server via SSH
Networkssh user@hostssh -p 2222 user@hostssh -i key.pem user@hostCopy files over SSH
Networkscp file user@host:/path/scp user@host:/path/file .scp -r dir user@host:/path/Check disk space
Diskdf -hdu -sh *du -sh ~/DownloadsCreate or extract a tar archive
Archivetar -czf out.tar.gz <dir>tar -xzf in.tar.gztar -tzf in.tar.gzZip and unzip files
Archivezip -r out.zip <dir>unzip in.zipunzip -l in.zipInitialize a git repository
Gitgit initgit init -b mainClone a git repository
Gitgit clone <url>git clone --depth 1 <url>git clone <url> <dir>Show working tree status
Gitgit statusgit status -sbStage changes for commit
Gitgit add <file>git add .git add -Agit add -pCommit staged changes
Gitgit commit -m 'message'git commit -am 'message'git commit --amendgit commit --amend --no-editPush commits to remote
Gitgit pushgit push -u origin <branch>git push --force-with-leasePull from remote
Gitgit pullgit pull --rebasegit fetch --all --pruneList, create, or delete branches
Gitgit branchgit branch -agit branch <name>git branch -d <name>git branch -D <name>git branch -m <new>Switch branches or restore files
Gitgit switch <branch>git switch -c <branch>git checkout <branch>git restore <file>git restore --staged <file>Merge another branch in
Gitgit merge <branch>git merge --no-ff <branch>git merge --abortRebase the current branch
Gitgit rebase <base>git rebase -i HEAD~5git rebase --continuegit rebase --abortReset to a previous commit
Gitgit reset --soft HEAD~1git reset --mixed HEAD~1git reset --hard HEAD~1git reset --hard <sha>git reset HEAD <file>Revert a commit (create an undo commit)
Gitgit revert <sha>git revert HEADgit revert -n <sha>Stash work in progress
Gitgit stashgit stash -ugit stash listgit stash popgit stash apply stash@{1}git stash drop stash@{0}View commit history
Gitgit log --oneline -20git log --graph --oneline --allgit log -p <file>git log --since='2 weeks ago'Show diffs
Gitgit diffgit diff --stagedgit diff main..featuregit diff <sha1> <sha2>Create / list / push tags
Gitgit taggit tag v1.0.0git tag -a v1.0.0 -m 'release'git push --tagsgit tag -d v1.0.0Manage remotes
Gitgit remote -vgit remote add origin <url>git remote set-url origin <url>git remote remove originCherry-pick a commit
Gitgit cherry-pick <sha>git cherry-pick <sha1>..<sha2>git cherry-pick --abortRecover lost commits via reflog
Gitgit refloggit reset --hard HEAD@{1}See who changed each line
Gitgit blame <file>git blame -L 10,30 <file>Remove untracked files
Gitgit clean -ndgit clean -fdgit clean -fdxConfigure git user
Gitgit config --global user.name 'Your Name'git config --global user.email 'you@example.com'git config --listRun npm common commands
Packagenpm installnpm install <pkg>npm install -D <pkg>npm run <script>npm uninstall <pkg>npm outdatedHomebrew install / update / list
Packagebrew install <pkg>brew uninstall <pkg>brew update && brew upgradebrew listbrew search <name>Runs entirely in your browser — nothing is sent to a server.