diff --git a/.lgtm b/.lgtm deleted file mode 100644 index bc39c47fc..000000000 --- a/.lgtm +++ /dev/null @@ -1,2 +0,0 @@ -approvals = 2 -pattern = "(?i):shipit:|:\\+1:|LGTM|:ok_hand:" diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index a64e1c24a..f4941afa6 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -1,15 +1,8 @@ # Contributing -- Your favourite command isn't covered? -- You can think of more examples? - Contribution are most welcome! All `tldr` pages are stored in Markdown right here on GitHub. Just open an issue or send a pull request and we'll merge it as soon as possible. -*Note: when submitting a new command, don't forget to check if there's already a pull request in progress.* - -## Setup - -When setting up a brand new fork, run `make setup` to install the git pre-commit hook that will check errors in your changes with Markdown linter. +*Note*: when submitting a new command, don't forget to check if there's already a pull request in progress. ## Guidelines @@ -48,8 +41,99 @@ User-provided values should use the `{{token}}` syntax, to allow clients to high One of the reasons for this format is that it's well suited for command-line clients that need to extract a single description/example. ---------------------------------------- +## Submitting a pull request -**Footnote:** tldr is under MIT license. +TL;DR: fork, `make setup`, feature branch, commit, push, pull request. + +Detailed explanation: + +1. [Fork](http://help.github.com/fork-a-repo/) the project, clone your fork, + and configure the remotes: + + ```bash + # Clone your fork of the repo into the current directory + git clone https://github.com//tldr + # Navigate to the newly cloned directory + cd tldr + # Assign the original repo to a remote called "upstream" + git remote add upstream https://github.com/tldr-pages/tldr + ``` + +2. Setup Ruby, Rubygems, bundler, Git pre-commit hooks with Markdown linter. + + ```bash + # Assuming Ruby is set up + # Install bundler Ruby gem + gem install bundler + make setup + ``` + +3. If you cloned a while ago, get the latest changes from upstream: + + ```bash + git checkout master + git pull upstream master + ``` + +4. Create a new topic branch (sometimes they are called feature branches) off + the main project development branch: + + ```bash + git checkout -b + ``` + +5. Run `make lint` to check that your page(s) are correct. Try to run the commands you are describing to ensure the syntax is correct. + +6. Please use the following commit message format: + `: type of change`. + + Examples: + + - `ls: add page` + - `cat: fix typo` + - `git-push: add --force example` + - `uname: fix -a example` + +7. Push your topic branch up to your fork: + + ```bash + git push origin + ``` + +8. [Open a Pull Request](https://help.github.com/articles/using-pull-requests/) + with a clear title and description. + + If page is not about a standard Unix/Linux tool, please include a link to the tool home page. + + If you are changing something non-trivial, not just adding a page for a new tool, please describe why you are doing this. + +9. Use Git's + [interactive rebase](https://help.github.com/articles/interactive-rebase) + feature to tidy up your commits before making them public. + + If you are not familiar with `git rebase`, it might be helpful to check out these video tutorials: + - [Git Rebase: squash last commits](https://www.youtube.com/watch?v=qh9KtjfjzCU) + - [Learning Git Tutorial: Interactive Rebasing](https://www.youtube.com/watch?v=NW46XmvJh5Q) + + In most cases it is better to squash commits before submitting a pull request. + +10. If you do not want to do a rebasing, you can overwrite your last commit in pull request, while you have only a single commit. You can achieve this with `git commit --amend` command. + + ```bash + # When you are on topic branch of your pull request + # Fix your files + + git add . # Register edited files + git commit --amend # Do amended commit + git push --force # Overwrite your branch + ``` + + +## Licensing + +`tldr` is under [MIT license](https://github.com/tldr-pages/tldr/blob/master/LICENSE.md). + +**IMPORTANT**: By submitting a patch, you agree to license your work under the +same license as that used by the project. You're free to modify or redistribute the content. That being said, but why not contribute over here? :) Say if you wanted to have `tldr` pages in `groff` format, why not have a client that uses [pandoc](http://johnmacfarlane.net/pandoc/) and periodically updates straight from this repo? diff --git a/Makefile b/Makefile index 4863bf043..8a506acbd 100644 --- a/Makefile +++ b/Makefile @@ -1,7 +1,5 @@ default: lint -all: setup index - index: @echo "WARNING!" @echo "Index rebuilding is deprecated." @@ -10,7 +8,18 @@ index: @TLDRHOME=`pwd` ./scripts/build_index.rb @echo "Index rebuilt." -setup: hooks deps +setup: prerequisites hooks deps + +prerequisites: + @echo + @echo "IMPORTANT!" + @echo "Before setting up hooks, make sure you have read Contributing Guidelines" + @echo "https://github.com/tldr-pages/tldr/blob/master/CONTRIBUTING.md#submitting-a-pull-request" + @echo + @echo "TL;DR:" + @echo "1. Install Ruby suitable for your system" + @echo "2. Run 'gem install bundler'" + @echo hooks: @cp ./scripts/pre-commit .git/hooks @@ -24,4 +33,4 @@ deps: lint: @bundle exec mdl --style ./scripts/markdown-style.rb pages -.PHONY: default index setup hooks deps lint +.PHONY: default index setup prerequisites hooks deps lint diff --git a/README.md b/README.md index 1a7734d8e..226a98804 100644 --- a/README.md +++ b/README.md @@ -41,18 +41,23 @@ for the most common UNIX / Linux / OSX / SunOS commands. You can access these pages on your computer using one of the following clients: - [Node.js client](https://github.com/tldr-pages/tldr-node-client) : `npm install -g tldr` -- [Python client](https://github.com/tldr-pages/tldr-python-client) : `pip install tldr` -- [Python client](https://github.com/lord63/tldr.py): `pip install tldr.py` +- Python clients: + - [tldr-python-client](https://github.com/tldr-pages/tldr-python-client) : `pip install tldr` + - [tldr.py](https://github.com/lord63/tldr.py): `pip install tldr.py` - [Go client](https://github.com/pranavraja/tldr): `go get github.com/pranavraja/tldr` - or [platform binaries](https://github.com/pranavraja/tldr/releases) -- [Elixir client](https://github.com/tldr-pages/tldr_elixir_client): binaries available soon + (or [platform binaries](https://github.com/pranavraja/tldr/releases)) +- [Elixir client](https://github.com/tldr-pages/tldr_elixir_client) (binaries not yet available) - [C++ client](https://github.com/tldr-pages/tldr-cpp-client): `brew tap tldr-pages/tldr && brew install tldr` -- [Android client](https://github.com/gianasista/tldr-viewer): available on - [Google Play](https://play.google.com/store/apps/details?id=de.gianasista.tldr_viewer) +- Android clients: + - [tldr-viewer](https://github.com/gianasista/tldr-viewer), available on + [Google Play](https://play.google.com/store/apps/details?id=de.gianasista.tldr_viewer) + - [tldroid](https://github.com/hidroh/tldroid), available on + [Google Play](https://play.google.com/store/apps/details?id=io.github.hidroh.tldroid) - [Ruby client](https://github.com/YellowApple/tldrb): `gem install tldrb` +- [Rust client](https://github.com/rilut/rust-tldr): `cargo install tldr` - [R client](https://github.com/kirillseva/tldrrr): `devtools::install_github('kirillseva/tldrrr')` -- [Web client](https://github.com/ostera/tldr.js): try tldr on your browser - [here](https://ostera.github.io/tldr.js)! +- [Dart client](https://github.com/hterkelsen/tldr): `pub global activate tldr` +- [Web client](https://github.com/ostera/tldr.jsx): https://ostera.github.io/tldr.jsx Let us know if you are building one and we can add it to this list! diff --git a/pages/common/ar.md b/pages/common/ar.md index d52f32256..2e46b2d51 100644 --- a/pages/common/ar.md +++ b/pages/common/ar.md @@ -2,10 +2,22 @@ > Create, modify, and extract from archives (.a .so .o) -- Extract members of the archive +- Extract all members from an archive -`ar -x libfoo.a` +`ar -x {{libfoo.a}}` -- List the content (files) of libfoo.a +- List the members of an archive -`ar -t libfoo.a` +`ar -t {{libfoo.a}}` + +- Replace or add files to an archive + +`ar -r {{libfoo.a}} {{foo.o}} {{bar.o}} {{baz.o}}` + +- Insert an object file index (equivalent to using `ranlib`) + +`ar -s {{libfoo.a}}` + +- Create an archive with files and an accompanying object file index + +`ar -rs {{libfoo.a}} {{foo.o}} {{bar.o}} {{baz.o}}` diff --git a/pages/common/bashmarks.md b/pages/common/bashmarks.md new file mode 100644 index 000000000..7ba7035d8 --- /dev/null +++ b/pages/common/bashmarks.md @@ -0,0 +1,23 @@ +# bashmarks + +> Save and jump to commonly used directories using 1 character commands. + +- List available bookmarks + +`l` + +- Save the current folder as "bookmark_name" + +`s {{bookmark_name}}` + +- Go to a bookmarked folder + +`g {{bookmark_name}}` + +- Print a bookmarked folder's contents + +`p {{bookmark_name}}` + +- Delete a bookmark + +`d {{bookmark_name}}` diff --git a/pages/common/cat.md b/pages/common/cat.md index 3122ae471..a9c03f681 100644 --- a/pages/common/cat.md +++ b/pages/common/cat.md @@ -2,10 +2,14 @@ > Print and concatenate files. -- Print the contents of *file1* to the standard output +- Print the contents of a file to the standard output -`cat {{file1}}` +`cat {{file}}` - Concatenate several files into the target file. `cat {{file1}} {{file2}} > {{target-file}}` + +- Append serveral files into the target file. + +`cat {{file1}} {{file2}} >> {{target-file}}` diff --git a/pages/common/comm.md b/pages/common/comm.md new file mode 100644 index 000000000..1244d4bec --- /dev/null +++ b/pages/common/comm.md @@ -0,0 +1,23 @@ +# comm + +> Select or reject lines common to two files. Both files must be sorted. + +- Produce three tab-separated columns: lines only in first file, lines only in second file and common lines. + +`comm {{file1}} {{file2}}` + +- Print only lines common to both files. + +`comm -12 {{file1}} {{file2}}` + +- Print only lines common to both files, read one file from stdin. + +`cat {{file1}} | comm -12 - {{file2}}` + +- Print lines only found in first file. + +`comm -23 {{file1}} {{file2}}` + +- Print lines only found in second file. + +`comm -13 {{file1}} {{file2}}` diff --git a/pages/common/convert.md b/pages/common/convert.md index 8c4e9f461..e4b2c79ed 100644 --- a/pages/common/convert.md +++ b/pages/common/convert.md @@ -10,6 +10,10 @@ `convert {{image.png}} -resize 50% {{image2.png}}` +- Scale an image keeping the original aspect ratio to a maximum dimension of 640x480. + +`convert {{image.png}} -resize 640x480 {{image2.png}}` + - Horizontally append images `convert {{image1.png}} {{image2.png}} {{image3.png}} +append {{image123.png}}` diff --git a/pages/common/cowsay.md b/pages/common/cowsay.md new file mode 100644 index 000000000..4def52df4 --- /dev/null +++ b/pages/common/cowsay.md @@ -0,0 +1,15 @@ +# cowsay + +> Generate an ASCII character like a cow or sheep saying or thinking something + +- Print an ASCII cow saying "Hello world!" + +`cowsay "Hello world!"` + +- Print an ASCII dragon saying "Hello!" + +`echo "Hello!" | cowsay -f dragon` + +- Print a stoned thinking ASCII cow + +`cowthink -s "I'm just a cow, not a great thinker ..."` diff --git a/pages/common/cp.md b/pages/common/cp.md index 789a371a5..f60ea70d7 100644 --- a/pages/common/cp.md +++ b/pages/common/cp.md @@ -8,14 +8,20 @@ - Copy a file to a parent directory -`cp {{/path/to/original}} ../{{/path/to/copy}}` +`cp {{/path/to/original}} ../{{path/to/copy}}` -- Copy directories recursive using the option -r. Optionally showing files as they are copied. +- Copy directories recursive using the option -r `cp -r {{/path/to/original}} {{/path/to/copy}}` + +- Show files as they are copied + `cp -vr {{/path/to/original}} {{/path/to/copy}}` -- Make a copy of a file adding and extension or changing an extension +- Make a copy of a file, adding an extension -`cp {{file.html}}\{,.backup\}` -`cp file.\{html,backup\}` +`cp {{file.html}}{,.backup}` + +- Make a copy of a file, changing the extension + +`cp {{file.}}{html,backup}` diff --git a/pages/common/emacs.md b/pages/common/emacs.md new file mode 100644 index 000000000..362d31939 --- /dev/null +++ b/pages/common/emacs.md @@ -0,0 +1,15 @@ +# emacs + +> The extensible, customizable, self-documenting, real-time display editor + +- Open emacs in console mode (without X window) + +`emacs -nw` + +- Open a file in emacs + +`emacs {{filename}}` + +- Exit emacs + +`C-x C-c` diff --git a/pages/common/find.md b/pages/common/find.md index a3ac88adc..7abc644a7 100644 --- a/pages/common/find.md +++ b/pages/common/find.md @@ -6,6 +6,10 @@ `find {{root_path}} -name {{'*.py'}}` +- find files matching path pattern + +`find {{root_path}} -path {{'**/lib/**/*.py'}}` + - run a command for each file, use {} within the command to access the filename `find {{root_path}} -name {{'*.py'}} -exec {{wc -l {} }}\;` diff --git a/pages/common/gem.md b/pages/common/gem.md index 44a71ea82..44380f546 100644 --- a/pages/common/gem.md +++ b/pages/common/gem.md @@ -8,7 +8,7 @@ - Install specific version of a gem -`gem install -v={{0.0.15}}` +`gem install {{gemname}} -v {{1.0.0}}` - Update a gem diff --git a/pages/common/git-branch.md b/pages/common/git-branch.md index f44573bb5..14f9b07d0 100644 --- a/pages/common/git-branch.md +++ b/pages/common/git-branch.md @@ -2,10 +2,14 @@ > Main command for working with branches -- List all existing branches +- List local branches. The current branch is highlighted by `*`. `git branch` +- List all local and remote branches + +`git branch -a` + - Create new branch based on current branch `git branch {{BRANCH-NAME}}` diff --git a/pages/common/git-diff.md b/pages/common/git-diff.md index 9eea98161..e32fa4197 100644 --- a/pages/common/git-diff.md +++ b/pages/common/git-diff.md @@ -13,3 +13,7 @@ - Output a condensed summary of extended header information. `git diff --summary {{PATHSPEC}}` + +- Show staged (added, but not yet committed) changes only. + +`git diff --staged` diff --git a/pages/common/gradle.md b/pages/common/gradle.md new file mode 100644 index 000000000..561e3bae2 --- /dev/null +++ b/pages/common/gradle.md @@ -0,0 +1,15 @@ +# Gradle + +> Gradle is the official build system for Android Studio + +- Compile a package + +`gradle build` + +- Clear the build folder + +`gradle clean` + +- Compile and Release package + +`gradle assembleRelease` diff --git a/pages/common/gzip.md b/pages/common/gzip.md index 560164108..cd629978a 100644 --- a/pages/common/gzip.md +++ b/pages/common/gzip.md @@ -6,7 +6,7 @@ `gzip {{file.ext}}` -- decompress a file, replacing it with the original uncomrpessed version +- decompress a file, replacing it with the original uncompressed version `gzip -d {{file.ext.gz}}` diff --git a/pages/common/host.md b/pages/common/host.md new file mode 100644 index 000000000..784f24245 --- /dev/null +++ b/pages/common/host.md @@ -0,0 +1,15 @@ +# host + +> Lookup Domain Name Server + +- Lookup A, AAAA, and MX records of a domain + +`host {{domain}}` + +- Lookup a field (CNAME, TXT,...) of a domain + +`host -t {{field}} {{domain}}` + +- Reverse lookup an IP + +`host {{ip_address}}` diff --git a/pages/common/ifconfig.md b/pages/common/ifconfig.md new file mode 100644 index 000000000..e4a0563f3 --- /dev/null +++ b/pages/common/ifconfig.md @@ -0,0 +1,23 @@ +# ifconfig + +> ifconfig - Interface Configurator, used to configure network interfaces. + +- View network settings of an ethernet adapter. + +`ifconfig eth0` + +- Display details of all interfaces, including disabled interfaces. + +`ifconfig -a` + +- Disable eth0 interface. + +`ifconfig eth0 down` + +- Enable eth0 interface. + +`ifconfig eth0 up` + +- Assign IP address to eth0 interface. + +`ifconfig eth0 {{ip_address}}` diff --git a/pages/common/last.md b/pages/common/last.md new file mode 100644 index 000000000..90b44a63e --- /dev/null +++ b/pages/common/last.md @@ -0,0 +1,27 @@ +# last + +> View the last logged in users + +- view last logins, their duration and other information as read from /var/log/wtmp + +`last` + +- specify how many of the last logins to show + +`last -n {{login_count}}` + +- view full login times and dates + +`last -F` + +- view the last login by a specific user + +`last {{user_name}}` + +- view the last reboot (last login of the pseudo user reboot) + +`last reboot` + +- view the last shutdown (last login of the pseudo user shutdown) + +`last shutdown` diff --git a/pages/common/mysql.md b/pages/common/mysql.md index 8fe41fd52..8c8ea598f 100644 --- a/pages/common/mysql.md +++ b/pages/common/mysql.md @@ -6,9 +6,9 @@ `mysql {{database_name}}` -- Connect to a database using credentials +- Connect to a database, user will be prompted for a password -`mysql -u {{user}} -p{{password}} {{database_name}}` +`mysql -u {{user}} --password {{database_name}}` - Execute SQL statements in a script file (batch file) diff --git a/pages/common/mysqldump.md b/pages/common/mysqldump.md index 994edb5ad..49786b8f6 100644 --- a/pages/common/mysqldump.md +++ b/pages/common/mysqldump.md @@ -2,10 +2,10 @@ > Backups mysql databases -- creating a backup +- Create a backup, user will be prompted for a password -`mysqldump -u {{user}} -p{{password}} {{database_name}} > {{filename.sql}}` +`mysqldump -u {{user}} --password {{database_name}} > {{filename.sql}}` -- restoring a backup +- Restoring a backup, user will be prompted for a password -`mysql -u {{user}} -p{{password}} {{database_name}} < {{filename.sql}}` +`mysql -u {{user}} --password {{database_name}} < {{filename.sql}}` diff --git a/pages/common/nice.md b/pages/common/nice.md new file mode 100644 index 000000000..77f1dc482 --- /dev/null +++ b/pages/common/nice.md @@ -0,0 +1,8 @@ +# nice + +> Execute a program with a custom scheduling priority (niceness). +> Niceness values range from -20 (the highest priority) to 19 (the lowest). + +- Launch a program with altered priority. + +`nice -n {{niceness_value}} {{command}}` diff --git a/pages/common/nmap.md b/pages/common/nmap.md index 95986bf39..4c13ea37d 100644 --- a/pages/common/nmap.md +++ b/pages/common/nmap.md @@ -1,11 +1,28 @@ # nmap -> Network exploration tool and security / port scanner +> Network exploration tool and security / port scanner. +> Some features only activate when Nmap is run with privileges. -- scan open ports of a single host +- Try to determine whether the specified hosts are up and what are their names. -`nmap {{192.168.0.1}}` +`nmap -sn {{ip_or_hostname}} {{optional_another_address}}` -- discover hosts in the 192.168.0.X area (no port scan) +- Like above, but also run a default 1000-port TCP scan if host seems up. -`nmap -sn {{192.168.0.1/24}}` +`nmap {{ip_or_hostname}} {{optional_another_address}}` + +- Also enable service detection, OS fingerprinting and traceroute. + +`nmap -A {{address_or_addresses}}` + +- Assume good network connection and speed up execution: + +`nmap -T4 {{address_or_addresses}}` + +- Scan a specific list of ports (use -p- for all ports 1-65535) + +`nmap -p {{port1,port2,...,portN}} {{address_or_addresses}}` + +- Perform TCP and UDP scanning (use -sU for UDP only, -sZ for SCTP, -sO for IP): + +`nmap -sSU {{address_or_addresses}}` diff --git a/pages/common/npm.md b/pages/common/npm.md index 67bd44d1f..4a80280cb 100644 --- a/pages/common/npm.md +++ b/pages/common/npm.md @@ -10,6 +10,10 @@ `npm install` +- Download and install a module globally + +`npm install -g {{module_name}}` + - Download a given dependency, and add it to the package.json `npm install {{module_name}}@{{version}} --save` @@ -21,3 +25,7 @@ - Publish the current project `npm publish` + +- Cleanup packages (removes packages which are installed but are not listed in `package.json`) + +`npm prune` diff --git a/pages/common/parallel.md b/pages/common/parallel.md new file mode 100644 index 000000000..1338b8451 --- /dev/null +++ b/pages/common/parallel.md @@ -0,0 +1,27 @@ +# GNU Parallel + +> Run commands on multiple CPU cores + +- gzip several files at once, using all cores + +`parallel gzip ::: {{file1}} {{file2}} {{file3}}` + +- read arguments from stdin, run 4 jobs at once + +`ls *.txt | parallel -j4 gzip` + +- Convert JPG images to PNG using replacement strings + +`parallel convert {} {.}.png ::: *.jpg` + +- parallel xargs, cram as many args as possible onto one command + +`{{args}} | parallel -X {{command}}` + +- break stdin into ~1M blocks, feed each block to stdin of new command + +`cat {{bigfile.txt}} | parallel --pipe --block 1M {{command}}` + +- run on multiple machines via SSH + +`parallel -S {{machine1}},{{machine2}} {{command}} ::: {{arg1}} {{arg2}}` diff --git a/pages/common/passwd.md b/pages/common/passwd.md index e4ebbe043..ddf4893e7 100644 --- a/pages/common/passwd.md +++ b/pages/common/passwd.md @@ -2,18 +2,18 @@ > passwd is a tool used to change a user's password. -* Change the password of the current user +- Change the password of the current user `passwd {{new password}}` -* Change the password of the specified user +- Change the password of the specified user `passwd {{username}} {{new password}}` -* Get the current statuts of the user +- Get the current statuts of the user `passwd -S` -* Make the password of the account blank (it will set the named account passwordless) +- Make the password of the account blank (it will set the named account passwordless) `passwd -d` diff --git a/pages/common/paste.md b/pages/common/paste.md new file mode 100644 index 000000000..6dd8944f2 --- /dev/null +++ b/pages/common/paste.md @@ -0,0 +1,23 @@ +# paste + +> Merge lines of files. + +- join all the lines into a single line, using TAB as delimiter. + +`paste -s {{file}}` + +- join all the lines into a single line, using the specified delimiter. + +`paste -s -d {{delimiter}} {{file}}` + +- merge two files side by side, each in its column, using TAB as delimiter. + +`paste {{file1}} {{file2}}` + +- merge two files side by side, each in its column, using the specified delimiter. + +`paste -d {{delimiter}} {{file1}} {{file2}}` + +- merge two files, with lines added alternatively. + +`paste -d '\n' {{file1}} {{file2}}` diff --git a/pages/common/pgrep.md b/pages/common/pgrep.md index 8768690f2..750a5f69d 100644 --- a/pages/common/pgrep.md +++ b/pages/common/pgrep.md @@ -4,16 +4,12 @@ - return PIDs of any running processes with a matching command string -`pgrep {{Finder}}` +`pgrep {{process_name}}` - search full command line with parameters instead of just the process name -`pgrep -f "{{ssh root}}"` +`pgrep -f "{{process_name}} {{parameter}}"` - search for process run by a specific user -`pgrep -u root {{firefox}}` - -- kill all processes which match - -`pkill -9 {{Finder}}` +`pgrep -u root {{process_name}}` diff --git a/pages/common/phpunit.md b/pages/common/phpunit.md new file mode 100644 index 000000000..d4f7b4952 --- /dev/null +++ b/pages/common/phpunit.md @@ -0,0 +1,19 @@ +# phpunit + +> PHPUnit command-line test runner + +- Run tests in the current direcotry. Note: Expects you to have a 'phpunit.xml' + +`phpunit` + +- Run tests in a specific file. + +`phpunit {{path/to/TestFile.php}}` + +- Run tests annotated with the given group. + +`phpunit --group {{name}}` + +- Run tests and generate a coverage report in HTML. + +`phpunit --coverage-html {{directory}}` diff --git a/pages/common/pkill.md b/pages/common/pkill.md new file mode 100644 index 000000000..d6121443b --- /dev/null +++ b/pages/common/pkill.md @@ -0,0 +1,12 @@ +# pkill + +> Signal process by name +> Mostly used for stopping processes + +- kill all processes which match + +`pkill -9 {{process_name}}` + +- send SIGUSR1 signal to processes which match + +`pkill -USR1 {{process_name}}` diff --git a/pages/common/printf.md b/pages/common/printf.md new file mode 100644 index 000000000..a3dc7efa2 --- /dev/null +++ b/pages/common/printf.md @@ -0,0 +1,23 @@ +# printf + +> Format and print text + +- Print a text message + +`printf {{"%s\n"}} {{"Hello world"}}` + +- Print an integer in bold blue + +`printf {{"\e[1;34m%.3d\e[0m\n"}} {{42}}` + +- Print a float number with the unicode Euro sign + +`printf {{"\u20AC %.2f\n"}} {{123.4}}` + +- Print a text message composed with environment variables + +`printf {{"var1: %s\tvar2: %s\n"}} {{"$VAR1"}} {{"$VAR2"}}` + +- Store a formatted message in a variable (does not work on zsh) + +`printf -v {{myvar}} {{"This is %s = %d\n" "a year" 2016}}` diff --git a/pages/common/psql.md b/pages/common/psql.md index 2f4cd88f8..e3b962429 100644 --- a/pages/common/psql.md +++ b/pages/common/psql.md @@ -6,10 +6,14 @@ `psql {{database}}` -- Connect to *database* on given server *host* running on given *port* with *username* given +- Connect to *database* on given server *host* running on given *port* with *username* given, no password prompt `psql -h {{host}} -p {{port}} -U {{username}} {{database}}` +- Connect to *database*, user will be prompted for password + +`psql -h {{host}} -p {{port}} -U {{username}} -W {{database}}` + - Run single *query* against the given *database*. Note: useful in shell scripts `psql -c '{{query}}' {{database}}` diff --git a/pages/common/rsync.md b/pages/common/rsync.md index 5c2181418..ed29e8e49 100644 --- a/pages/common/rsync.md +++ b/pages/common/rsync.md @@ -20,6 +20,10 @@ `rsync -r mike@devbox:~/projects/cakeStore /Users/mike/devProjects/` +- transfer only updated files from remote host + +`rsync -ru mike@devbox:~/projects/ ./projects/` + - transfer file over SSH and show progress `rsync -e ssh --progress {{remote_host_name}}:{{remote_file}} {{local_file}}` diff --git a/pages/common/salt.md b/pages/common/salt.md index 4044e9275..b11b24759 100644 --- a/pages/common/salt.md +++ b/pages/common/salt.md @@ -8,12 +8,12 @@ - Execute a highstate on all connected minions: -`salt '*' state.highstate +`salt '*' state.highstate` - Upgrade packages using the OS package manager (apt, yum, brew) on a subset of minions -`salt '*.domain.com' pkg.upgrade +`salt '*.domain.com' pkg.upgrade` - Execute an arbitrary command on a particular minion: -`salt '{{minion_id}}' cmd.run "ls " +`salt '{{minion_id}}' cmd.run "ls "` diff --git a/pages/common/screen.md b/pages/common/screen.md index 6875b9af2..115daebec 100644 --- a/pages/common/screen.md +++ b/pages/common/screen.md @@ -21,3 +21,7 @@ - Detach from inside a screen `ctrl+A D` + +- Kill a detached screen + +`screen -X -S {{screen id}} quit` diff --git a/pages/common/sed.md b/pages/common/sed.md index 249d9d58a..6ae128e8f 100644 --- a/pages/common/sed.md +++ b/pages/common/sed.md @@ -6,8 +6,7 @@ `sed 's/{{find}}/{{replace}}/g' {{filename}}` -- replace all occurrences of a string in a file, and overwrite the file - contents +- replace all occurrences of a string in a file, and overwrite the file contents `sed -i 's/{{find}}/{{replace}}/g' {{filename}}` diff --git a/pages/common/sl.md b/pages/common/sl.md new file mode 100644 index 000000000..ae2f5a5ec --- /dev/null +++ b/pages/common/sl.md @@ -0,0 +1,15 @@ +# sl + +> Steam locomotive running through your terminal. + +- Let a steam locomotive run through your terminal. + +`sl` + +- The train burns, people scream. + +`sl -a` + +- Let the train fly. + +`sl -F` diff --git a/pages/common/strings.md b/pages/common/strings.md new file mode 100644 index 000000000..517e06850 --- /dev/null +++ b/pages/common/strings.md @@ -0,0 +1,19 @@ +# strings + +> Find printable strings in an object file or binary + +- Print all strings in a binary + +`strings {{file}}` + +- Limit results to strings at least *length* characters long + +`strings -n {{length}} {{file}}` + +- Prefix each result with its offset within the file + +`strings -t d {{file}}` + +- Prefix each result with its offset within the file in hexadecimal + +`strings -t x {{file}}` diff --git a/pages/common/tac.md b/pages/common/tac.md new file mode 100644 index 000000000..b89ebca45 --- /dev/null +++ b/pages/common/tac.md @@ -0,0 +1,11 @@ +# tac + +> Print and concatenate files in reverse. + +- Print the contents of *file1* reversed to the standard output + +`tac {{file1}}` + +- Concatenate several files reversed into the target file. + +`tac {{file1}} {{file2}} > {{target-file}}` diff --git a/pages/common/tar.md b/pages/common/tar.md index f9cb7717f..56271dbf4 100644 --- a/pages/common/tar.md +++ b/pages/common/tar.md @@ -29,4 +29,4 @@ - list the contents of a tar file -`tar -tvf {{source.tar}}` +`tar tvf {{source.tar}}` diff --git a/pages/common/touch.md b/pages/common/touch.md index fb7c4e116..7937c861f 100644 --- a/pages/common/touch.md +++ b/pages/common/touch.md @@ -2,14 +2,14 @@ > Change a file access and modification times (atime, mtime) -- Create a new empty file(s) or change the times for existing file(s) to current time.` +- Create a new empty file(s) or change the times for existing file(s) to current time `touch {{filename}}` - Set the times on a file to those specified -`touch -t 201412250801.59 {{filename}} -`touch -t {{YYYYMMDDHHMM.SS}} {{filename}} +`touch -t 201412250801.59 {{filename}}` +`touch -t {{YYYYMMDDHHMM.SS}} {{filename}}` - Set the times on a file to match those on second file diff --git a/pages/common/tree.md b/pages/common/tree.md index b68ec4e6d..8faee5af7 100644 --- a/pages/common/tree.md +++ b/pages/common/tree.md @@ -17,3 +17,11 @@ - Print human readable size of files `tree -h` + +- Print the full path for each file + +`tree -f` + +- Print the tree without lines and indentation. Useful when used with -f + +`tree -i` diff --git a/pages/common/uname.md b/pages/common/uname.md index 4fe43c359..a4773de8d 100644 --- a/pages/common/uname.md +++ b/pages/common/uname.md @@ -14,3 +14,7 @@ - Print the nodename (hostname) of the system `uname -n` + +- Print all available system information (hardware, software, nodename) + +`uname -a` diff --git a/pages/common/vagrant.md b/pages/common/vagrant.md new file mode 100644 index 000000000..b7efaba8b --- /dev/null +++ b/pages/common/vagrant.md @@ -0,0 +1,23 @@ +# vagrant + +> Manage lightweight, reproducible, and portable development environments + +- Create Vagrantfile in current folder with the base Vagrant box + +`vagrant init` + +- Create Vagrantfile with the Ubuntu 14.04 (Trusty Tahr) box from HashiCorp Atlas + +`vagrant init ubuntu/trusty32` + +- Start and provision the vagrant environment + +`vagrant up` + +- Suspend the machine + +`vagrant suspend` + +- Connect to machine via SSH + +`vagrant ssh` diff --git a/pages/common/virtualenv.md b/pages/common/virtualenv.md new file mode 100644 index 000000000..f48780be1 --- /dev/null +++ b/pages/common/virtualenv.md @@ -0,0 +1,16 @@ +# virtualenv + +> Create virtual isolated Python environments + +- Create a new environment + +`virtualenv {{path/to/venv}}` + +- Start (select) the environment + +`source {{path/to/venv}}/bin/activate` + +- Stop the environment + +`deactivate` + diff --git a/pages/common/whoami.md b/pages/common/whoami.md new file mode 100644 index 000000000..3582689fa --- /dev/null +++ b/pages/common/whoami.md @@ -0,0 +1,7 @@ +# whoami + +> Show the username of the current user + +- Display currently logged user name + +`whoami` diff --git a/pages/linux/apt-cache.md b/pages/linux/apt-cache.md new file mode 100644 index 000000000..e66886b8d --- /dev/null +++ b/pages/linux/apt-cache.md @@ -0,0 +1,15 @@ +# apt-cache + +> Debian and Ubuntu package query tool + +- Search for a package in your current sources + +`apt-cache search {{query}}` + +- Show information about a package + +`apt-cache show {{package}}` + +- Show whether a package is installed and up to date + +`apt-cache policy {{package}}` diff --git a/pages/linux/dd.md b/pages/linux/dd.md new file mode 100644 index 000000000..6b749df29 --- /dev/null +++ b/pages/linux/dd.md @@ -0,0 +1,19 @@ +# dd + +> convert and copy a file + +- Make a bootable usb drive from an isohybrid file (such like archlinux-xxx.iso) + +`dd if={{file.iso}} of=/dev/{{usb_drive}}` + +- Clone a drive to another drive with 4MB block and ignore error + +`dd if=/dev/{{source_drive}} of=/dev/{{dest_drive}} bs=4M conv=noerror` + +- Generating a file of 100 random bytes by using kernel random driver + +`dd if=/dev/urandom of={{random_file}} bs=100 count=1` + +- Benchmark the write performance of a disk + +`dd if=/dev/zero of={{file_1GB}} bs=1024 count=1000000` diff --git a/pages/linux/dnf.md b/pages/linux/dnf.md new file mode 100644 index 000000000..f92826168 --- /dev/null +++ b/pages/linux/dnf.md @@ -0,0 +1,24 @@ +# dnf + +>Package management utility for RHEL, Feodra, and CentOS (replaces yum) + +- Synchronize list of packages and versions available. This should be run first, before running subsequent dnf commands. + +`dnf update` + +- Install a new package + +`dnf install {{package}}` + +- Install a new package and assume yes to all questions + +`dnf -y install {{package}}` + +- Remove a package + +`dnf remove {{package}}` + +- Upgrade installed packages to newest available versions + +`dnf upgrade` + diff --git a/pages/linux/hostname.md b/pages/linux/hostname.md index b807d87b6..592179bc2 100644 --- a/pages/linux/hostname.md +++ b/pages/linux/hostname.md @@ -1,6 +1,6 @@ # hostname -Show or set the system's host name +> Show or set the system's host name - Show current host name diff --git a/pages/linux/pacman.md b/pages/linux/pacman.md index c130d9b30..8d32c0e57 100644 --- a/pages/linux/pacman.md +++ b/pages/linux/pacman.md @@ -21,3 +21,7 @@ - list installed packages and versions `pacman -Q` + +- list only the explicitly installed packages and versions + +`pacman -Qe` diff --git a/pages/linux/shutdown.md b/pages/linux/shutdown.md index ff0982165..9ae3bb7a4 100644 --- a/pages/linux/shutdown.md +++ b/pages/linux/shutdown.md @@ -14,6 +14,10 @@ `shutdown -r +{{5}} &` +- Shutdown at 1:00 pm (Uses 24h clock) + +`shutdown -h 13:00` + - Cancel a pending shutdown/reboot operation `shutdown -c` diff --git a/pages/linux/ssh-copy-id.md b/pages/linux/ssh-copy-id.md new file mode 100644 index 000000000..727764b53 --- /dev/null +++ b/pages/linux/ssh-copy-id.md @@ -0,0 +1,11 @@ +# ssh-copy-id + +> Install your public key in a remote machine's authorized_keys. + +- Copy the given public key to the remote + +`ssh-copy-id -i {{path/to/certificate}} {{username}}@{{remote_host}}` + +- Copy the given public key to the remote with specific port + +`ssh-copy-id -i {{path/to/certificate}} -p {{port}} {{username}}@{{remote_host}}` diff --git a/pages/linux/timedatectl.md b/pages/linux/timedatectl.md new file mode 100644 index 000000000..7d720139e --- /dev/null +++ b/pages/linux/timedatectl.md @@ -0,0 +1,19 @@ +# timedatectl + +> Control the system time and date + +- To check the current system clock time + +`timedatectl` + +- To set the local time of the system clock directly + +`timedatectl set-time {{"yyyy-MM-dd hh:mm:ss"}}` + +- To list available timezones + +`timedatectl list-timezones` + +- To change timezones + +`timedatectl set-timezone {{timezone}}` diff --git a/pages/linux/ulimit.md b/pages/linux/ulimit.md new file mode 100644 index 000000000..b5ef0f4bf --- /dev/null +++ b/pages/linux/ulimit.md @@ -0,0 +1,19 @@ +# ulimit + +> Get and set user limits + +- get the properties of all the user limits + +`ulimit -a` + +- get hard limit for the number of simultaneously opened files + +`ulimit -H -n` + +- get soft limit for the number of simultaneously opened files + +`ulimit -S -n` + +- set max per-user process limit + +`ulimit -u 30` diff --git a/pages/common/useradd.md b/pages/linux/useradd.md similarity index 100% rename from pages/common/useradd.md rename to pages/linux/useradd.md diff --git a/pages/common/userdel.md b/pages/linux/userdel.md similarity index 100% rename from pages/common/userdel.md rename to pages/linux/userdel.md diff --git a/pages/common/usermod.md b/pages/linux/usermod.md similarity index 100% rename from pages/common/usermod.md rename to pages/linux/usermod.md diff --git a/pages/linux/xrandr.md b/pages/linux/xrandr.md new file mode 100644 index 000000000..ba3c06e91 --- /dev/null +++ b/pages/linux/xrandr.md @@ -0,0 +1,23 @@ +# xrandr + +> Set the size, orientation and/or reflection of the outputs for a screen + +- Display the current state of the system (known screens, resolutions, ...) + +`xrandr --query` + +- Disable disconnected outputs and enable connected ones with default settings + +`xrandr --auto` + +- Change the resolution and update frequency of DisplayPort 1 to 1920x1080, 60Hz + +`xrandr --output {{DP1}} --mode {{1920x1080}} --rate {{60}}` + +- Set the resolution of HDMI2 to 1280x1024 and put it on the right of DP1 + +`xrandr --output {{HDMI2}} --mode {{1280x1024}} --right-of {{DP1}}` + +- Disable the VGA1 output + +`xrandr --output {{VGA1}} --off` diff --git a/pages/linux/yum.md b/pages/linux/yum.md new file mode 100644 index 000000000..9f7416157 --- /dev/null +++ b/pages/linux/yum.md @@ -0,0 +1,24 @@ +# yum + +>Package management utility for RHEL, Feodra, and CentOS (for older versions) + +- Synchronize list of packages and versions available. This should be run first, before running subsequent yum commands. + +`yum update` + +- Install a new package + +`yum install {{package}}` + +- Install a new package and assume yes to all questions (also works with update, great for automated updates) + +`yum -y install {{package}}` + +- Remove a package + +`yum remove {{package}}` + +- Upgrade installed packages to newest available versions + +`yum upgrade` + diff --git a/pages/osx/dd.md b/pages/osx/dd.md new file mode 100644 index 000000000..edc6410c6 --- /dev/null +++ b/pages/osx/dd.md @@ -0,0 +1,19 @@ +# dd + +> convert and copy a file + +- Make a bootable usb drive from an isohybrid file (such like archlinux-xxx.iso) + +`dd if={{file.iso}} of=/dev/{{usb_drive}}` + +- Clone a drive to another drive with 4MB block and ignore error + +`dd if=/dev/{{source_drive}} of=/dev/{{dest_drive}} bs=4m conv=noerror` + +- Generating a file of 100 random bytes by using kernel random driver + +`dd if=/dev/urandom of={{random_file}} bs=100 count=1` + +- Benchmark the write performance of a disk + +`dd if=/dev/zero of={{file_1GB}} bs=1024 count=1000000` diff --git a/pages/osx/diskutil.md b/pages/osx/diskutil.md index a9ed26dad..dd70d1241 100644 --- a/pages/osx/diskutil.md +++ b/pages/osx/diskutil.md @@ -6,10 +6,6 @@ `diskutil list` -- Repair permissions on a volume - -`diskutil repairPermissions {{/Volumes/Name}}` - - Repair the file system data structures of a volume `diskutil repairVolume {{/dev/diskX}}` diff --git a/pages/osx/ditto.md b/pages/osx/ditto.md new file mode 100644 index 000000000..ff0bf86c4 --- /dev/null +++ b/pages/osx/ditto.md @@ -0,0 +1,15 @@ +# ditto + +> Copy files and folders + +- Overwrites contents of destination folder with contents of source folder + +`ditto {{path/to/source}} {{path/to/destination}}` + +- print a line to the Terminal window for every file that’s being copied + +`ditto -V {{path/to/source}} {{path/to/destination}}` + +- copy a given file or folder, while retaining the original file permissions. + +`ditto -rsrc {{path/to/source}} {{path/to/destination}}` diff --git a/pages/osx/hostname.md b/pages/osx/hostname.md index ed4c36a6c..abc0269c4 100644 --- a/pages/osx/hostname.md +++ b/pages/osx/hostname.md @@ -1,6 +1,6 @@ # hostname -Show or set the system's host name +> Show or set the system's host name - Show current host name diff --git a/pages/osx/mdfind.md b/pages/osx/mdfind.md index a2c104008..b2eae54dc 100644 --- a/pages/osx/mdfind.md +++ b/pages/osx/mdfind.md @@ -2,11 +2,11 @@ > List files matching a given query -- Find a file by it's name +- Find a file by its name `mdfind -name {{file}}` -- Find a file by it's content +- Find a file by its content `mdfind {{query}}` diff --git a/pages/osx/netstat.md b/pages/osx/netstat.md index 76839d4a5..ed7e063f4 100644 --- a/pages/osx/netstat.md +++ b/pages/osx/netstat.md @@ -18,6 +18,6 @@ `netstat -p {PROTOCOL}` -- List information continiously +- List information continuously `netstat -c` diff --git a/pages/osx/open.md b/pages/osx/open.md index 225d97729..09c25db2e 100644 --- a/pages/osx/open.md +++ b/pages/osx/open.md @@ -4,11 +4,11 @@ - Open a file with the associated application -`open filename.ext` +`open {{file.ext}}` - Run a graphical MacOSX application -`open /Applications/iTunes.app` +`open /Applications/{{Application.app}}` - Open the current directory in Finder @@ -16,8 +16,8 @@ - Reveal a file in finder -`open -R /path/dir/file` +`open -R /path/dir/{{file}}` -- Open all the word docs in the current directory with Microsoft Word +- Open all the files of a given extension in the current directory with the associated application -`open *.doc` +`open {{*.ext}}`