Compare commits

...

155 Commits

Author SHA1 Message Date
Erreur32 cb6bf9b780
Update README.md 2022-11-15 10:16:57 +01:00
Erreur32 12799fd266
Update README.md 2018-03-22 00:32:03 +01:00
Erreur32 f2173dbb64
Update README.md 2018-03-16 15:47:30 +01:00
Erreur32 1445b613d0
Update README.md 2018-03-16 15:43:03 +01:00
Erreur32 26ba0d9850
Update README.md 2018-03-16 15:40:46 +01:00
Erreur32 c0631554a1
Delete index.html 2018-03-01 16:22:04 +01:00
Erreur32 df38dd4a07
Delete _config.yml 2018-03-01 16:21:56 +01:00
Erreur32 fc5fc1608b
Rename index.php to index.html 2018-03-01 15:52:33 +01:00
Erreur32 63281adcb6
Update _config.yml 2018-03-01 15:50:58 +01:00
Erreur32 e6595db874 Set theme jekyll-theme-slate 2018-03-01 11:46:09 +01:00
Erreur32 ec05940121
Create index.php 2018-03-01 11:45:35 +01:00
Erreur32 b1634e427d
Update README.md 2018-02-24 18:26:04 +01:00
Erreur32 690bd9a398
Update README.md 2018-02-24 18:25:33 +01:00
Erreur32 d61b44793c
Update README.md 2018-02-24 18:24:15 +01:00
Erreur32 492150fcec
Update README.md 2018-02-24 18:23:37 +01:00
Erreur32 388e846678
Update README.md 2018-02-24 18:21:09 +01:00
Erreur32 a793b7a9f5
Update README.md 2018-02-24 18:10:24 +01:00
Erreur32 71e5bd53a3
Update setup.py 2018-02-24 18:04:40 +01:00
Erreur32 8e3e228ebd
Update README.md 2018-02-24 18:03:14 +01:00
Erreur32 c152c5ce5a
Update README.md 2018-02-24 18:02:31 +01:00
Erreur32 606d81cb63
Update README.md 2018-02-24 18:01:49 +01:00
Erreur32 6e36b13df7
Update utils.py
add color
 + other stuff
2018-02-24 17:52:17 +01:00
Erreur32 93288cb38b
Update README.md 2018-02-24 17:50:52 +01:00
Erreur32 facd365d27
Update sheets.py
Add color 
Add sbdir creation and search as well
Add Remove sheet function
2018-02-24 17:44:32 +01:00
Erreur32 3c2bcf5073
Update sheet.py
prompt if delete sheet ;)
2018-02-24 17:43:29 +01:00
Erreur32 fec0382892
Update cheat
python3 + add color + remove sheet
2018-02-24 17:42:32 +01:00
Chris Lane aa1e12625e Version bump to 2.2.3. 2017-12-19 12:42:07 -05:00
Chris Allen Lane d09353bfca
Merge pull request #363 from shigemk2/shigemk2-patch-1
Add cheatsheet perl
2017-12-19 12:38:25 -05:00
Chris Allen Lane 81e80c87a1
Merge pull request #358 from byxor/emacs
Add cheat for running emacs in terminal
2017-12-19 12:37:04 -05:00
Chris Allen Lane 3d498d5ce7
Merge pull request #354 from rognan/add-cheat-for-youtube-dl-extract-audio
Add cheat for downloading audio with youtube-dl
2017-12-19 12:35:11 -05:00
Chris Allen Lane d90d509702
Merge pull request #365 from shigemk2/check_function_mysql
Add cheatsheet for mysql
2017-12-19 12:34:05 -05:00
Chris Allen Lane b46f5b2c34
Merge pull request #359 from Dgc2002/master
Adds cheatsheet for rcs
2017-12-19 12:33:01 -05:00
Chris Lane e2d63e7603 Minor edits to #357 2017-12-19 12:29:52 -05:00
Chris Lane 67f52f8317 Merge branch 'patch-1' of https://github.com/zrongh90/cheat into zrongh90-patch-1 2017-12-19 12:29:26 -05:00
Chris Allen Lane 67134b9240
Merge pull request #360 from nitsnatsnok/patch-1
sizes and typo corrected
2017-12-19 12:27:29 -05:00
Chris Lane c67adb1422 Minor edits to #367. 2017-12-19 12:25:40 -05:00
Chris Lane c2aa5e0148 Merge branch 'master' of https://github.com/Sim4n6/cheat into Sim4n6-master 2017-12-19 12:24:19 -05:00
Chris Allen Lane 332f0bd4ee
Merge pull request #364 from navjotjsingh/master
Cheatsheet for cd
2017-12-19 12:21:37 -05:00
iamatacos b303bc0028 added support for Got-Your-Back for backup from Gmail 2017-12-14 15:38:08 +00:00
ALJI Mohamed 02f79ddd13
Merge pull request #1 from chrisallenlane/master
learning amigo
2017-12-14 16:09:24 +01:00
Michihito Shigemura 71680c6586
Add cheatsheet for mysql
check stored procedure or stored function in mysql
2017-11-28 22:12:20 +09:00
Navjot Singh a240413eb9
Merge pull request #1 from navjotjsingh/navjotjsingh-patch-cd
Cheatsheet for cd
2017-11-27 11:53:39 +05:30
Navjot Singh cde64e3ea4
Cheatsheet for cd 2017-11-27 11:52:05 +05:30
Michihito Shigemura 0b0bc441c6
Add cheatsheet perl 2017-11-20 21:20:22 +09:00
Chris Allen Lane 2aa37432cb
Merge pull request #356 from shigemk2/xargs-no-run-if-empty
Add cheatsheet for xargs --no-run-if-empty
2017-11-19 08:13:07 -05:00
Chris Allen Lane 89de3705b0
Merge pull request #355 from shigemk2/curl-only-status-code
Add cheatsheet for cp backup file with date
2017-11-19 08:11:35 -05:00
Chris Lane d12718b8c4 `cp` edit
Appended missing newline to end of `cp` cheatsheet.
2017-11-19 08:09:37 -05:00
Chris Lane 900e083b99 Merge branch 'cp-backup' of git://github.com/shigemk2/cheat into shigemk2-cp-backup 2017-11-19 08:07:10 -05:00
nitsnatsnok 837e0b5b71
sizes and typo corrected
`-size +20000k` actually matches files bigger than 20,000*1,024=20,480,000 Bytes, not 20,000,000 Bytes as in “2 Megabytes”.
2017-11-12 00:50:30 +01:00
Dave Clarke 30d2a77a6c Adds cheatsheet for rcs 2017-11-02 11:53:08 -05:00
byxor 1a8cdf84f4 Add instructions for running emacs in terminal 2017-11-01 16:16:49 +00:00
zrongh90 181403e7ac
create iconv
add new iconv for code convert
2017-10-31 16:00:16 +08:00
Michihito Shigemura 2c10955690 Add cheatsheet for xargs --no-run-if-empty 2017-10-27 00:12:36 +09:00
Michihito Shigemura 4319b8e699 Add curl cheatsheet: Get only the HTTP status code
curl -o /dev/null -w '%{http_code}\n' -s -I URL
2017-10-24 22:23:36 +09:00
Thor Andreas Rognan 57dff86a44 Add cheat for downloading audio with youtube-dl 2017-10-13 14:37:07 +02:00
Michihito Shigemura aa4f6daf77 Add cheatsheet for cp backup file with date 2017-10-04 23:47:33 +09:00
Chris Lane d7272c50c4 v2.2.2
Added new cheatsheets.
2017-09-16 23:15:15 -04:00
Chris Allen Lane cdf573a725 Merge pull request #318 from shanahanjrs/new-misc-cheatsheets
Created cheatsheets for alias, cat, cp, export, kill, mv, pwd, and wc
2017-09-16 23:01:08 -04:00
Chris Allen Lane eb6dfaad39 Merge pull request #350 from iamatacos/patch-1
Update dd
2017-09-16 22:58:17 -04:00
ALJI Mohamed f8d2ce516e Update dd
There is a small error in this sample :

**bs=BYTES** --> read and write up to BYTES bytes at a time

**count=N** --> copy only N input blocks

just inverse please
2017-09-16 22:04:10 +01:00
shanahanjrs e5bf9146fe Fixed cheat sheets to conform to the standard style more closely 2017-09-12 23:11:38 -04:00
Chris Lane d6dc39c687 v2.2.1
Version bump to 2.2.1. (Release contains new default cheatsheets.)
2017-09-05 14:23:10 -04:00
Chris Lane fb5ec798fa CONTRIBUTING.md
Made minor additions to the `CONTRIBUTING.md` file.
2017-09-05 13:48:06 -04:00
Chris Lane 866eb68d64 emacs cheatsheet
Minor whitespace edits on the emacs cheatsheet.
2017-09-05 13:26:23 -04:00
Chris Lane e17f60e4d5 Deleted accidental file
Deleted a file that seems to have been created accidentally. (It
contained nothing useful.)
2017-09-05 13:20:36 -04:00
Chris Lane ed2ef113f0 Merge branch 'emacs' of git://github.com/ndebuhr/cheat into ndebuhr-emacs 2017-09-05 13:19:19 -04:00
Chris Allen Lane 432379d1e6 Merge pull request #336 from yafp/master
Adding a first version of a pkill cheatsheet
2017-09-04 20:06:23 -04:00
Chris Allen Lane 7089bef7cc Merge pull request #337 from VHarisop/pip_latest
Updated pip sheet with upgrade for newer versions
2017-09-04 20:04:25 -04:00
Chris Lane aa57371819 Trivial whitespace changes to `pgrep` cheatsheet. 2017-09-04 20:01:25 -04:00
Chris Lane 921db35400 Merge branch 'pgrep' of git://github.com/shigemk2/cheat into shigemk2-pgrep 2017-09-04 20:00:38 -04:00
Chris Lane 852db958a4 Merge branch 'develop' 2017-09-04 19:57:28 -04:00
Chris Allen Lane d58bbba1f8 Merge pull request #333 from npit/master
Update emacs cheatsheet
2017-09-04 19:55:33 -04:00
Chris Allen Lane e5ffcf65e4 Merge pull request #328 from fpob/master
Add zsh cheatsheet
2017-09-04 19:54:49 -04:00
Chris Allen Lane d59ac66f1c Merge pull request #340 from Asta1986/postgres
added psql commands
2017-09-04 19:52:54 -04:00
Chris Allen Lane f4f8592933 Merge pull request #344 from Daoctor/master
fix crontab command
2017-09-04 19:50:45 -04:00
Chris Allen Lane c540a600b2 Merge pull request #343 from Mic92/patch-13
openssl: add fingerprint method
2017-09-04 19:47:49 -04:00
Chris Allen Lane 9224216581 Merge pull request #330 from shigemk2/curl-ip
Get your global IP with curl
2017-09-04 19:45:15 -04:00
Chris Allen Lane 2da5c2b710 Merge pull request #327 from Mic92/patch-12
add cryptsetup cheatsheat
2017-09-04 19:41:03 -04:00
Chris Allen Lane e468f8d0a0 Merge pull request #323 from henrikq/patch-1
Add install to Cheatsheet/deb
2017-09-04 19:39:58 -04:00
Chris Allen Lane cdee0e44cd Merge pull request #324 from dypublic/tar-add-destination-1
Update tar
2017-09-04 19:38:41 -04:00
Daoctor efcd687070 fix crontab command 2017-08-30 00:15:53 +08:00
Jörg Thalheim ae309c7dc4 openssl: add fingerprint method 2017-07-30 09:26:56 +01:00
Astaroth 86ba22e7b8 +html output 2017-06-30 21:34:32 -03:00
Astaroth 2a6ec9cef5 added psql commands 2017-06-29 20:23:47 -03:00
shigemk2 2d59026b0d Add f option 2017-06-10 01:43:11 +09:00
VHarisop bcb0d71dd3 Updated pip sheet with an upgrade option for newer versions 2017-06-02 13:09:48 +03:00
yafp d1526ede16 Adding a first version of a pkill cheatsheet 2017-06-01 21:31:27 +02:00
npit 374d381c00 Update emacs 2017-05-28 23:46:22 +03:00
shigemk2 1f3f9828c3 Add pgrep cheatsheat 2017-05-15 23:14:30 +09:00
shigemk2 5d3f89924c Get your global IP with curl 2017-05-15 23:08:21 +09:00
Filip Pobořil 74808845a5 Add zsh cheatsheet 2017-04-07 14:41:10 +02:00
Jörg Thalheim 517bf9599b add cryptsetup cheatsheat 2017-04-04 09:05:49 +02:00
Neal DeBuhr 7716827dfc Minor fixes and additions to emacs 2017-03-12 10:19:47 -04:00
daiyue c65fde1b3a Update tar
Add extract a .tar in specified Directory
2017-03-09 18:50:36 +08:00
Henrik Qvigstad bb3c4105cb Add install to Cheatsheet/deb 2017-03-07 09:50:37 +01:00
Chris Lane edd7b5e806 Minor revisions on #244
- When using GFM code fences, strip the last line in addition to the
  first
- Updated `README.md` to mention the new feature
- `minor` version-bump to `2.2.0`.
2017-02-28 18:59:27 -05:00
Chris Lane 7abb663bf4 Merge branch 'more_lexers' of git://github.com/cnicolov/cheat into cnicolov-more_lexers 2017-02-28 18:22:58 -05:00
Chris Lane f6f1233b12 Deleted `CHANGELOG`
Deleted `CHANGELOG`. It was never used.
2017-02-28 17:46:23 -05:00
Chris Lane b9241efab1 CONTRIBUTING.md
Put some useful information in `CONTRIBUTING.md`.
2017-02-28 17:45:53 -05:00
Chris Lane 8019325f1e README edit
The sheilds.io badge displaying downloads per month has been broken for
some time now (seemingly across all python projects), so I removed it.
2017-02-28 09:32:00 -05:00
Chris Lane 7209f2c929 docopt
Made revisions to the content of the docopt template.
2017-02-27 23:09:51 -05:00
Chris Lane 068d117bef patch version bump. 2017-02-27 23:02:23 -05:00
Chris Lane 9ead66461d Resolving merge conflict. 2017-02-27 23:01:30 -05:00
Chris Allen Lane d00bd87dd1 Merge pull request #312 from shanahanjrs/feature-cheat-cheat
Added a cheatsheet for cheat itself
2017-02-27 19:36:45 -05:00
Chris Allen Lane dd8b20a17a Merge pull request #317 from shanahanjrs/fix-7z-typo
Fixed typo in 7z cheatsheet
2017-02-27 19:29:58 -05:00
Chris Allen Lane 84e42e7f2f Merge pull request #314 from shanahanjrs/pushd-popd
Added cheatsheets for pushd and popd commands
2017-02-27 19:29:12 -05:00
Chris Allen Lane a59e91ead7 Merge pull request #320 from tupaschoal/master
Add cheatsheet for hg, shutdown, su
2017-02-27 19:26:58 -05:00
Tulio Leao f495a4dfd9 Add cheatsheet for su
Useful for running commands as another user.
2017-02-16 01:25:24 -02:00
Tulio Leao 10dd0e9a8b Add cheatsheet for shutdown
Adding help for shutdown, useful for rebooting the system,
2017-02-16 01:22:45 -02:00
Tulio Leao d06e5bab6f Add cheatsheet for hg
Mercurial is extensively used as a version control system, as an option to Git, so I'm adding its cheatsheet.
2017-02-16 00:04:18 -02:00
shanahanjrs aa9403d432 Created cheatsheets for alias, cat, cp, export, kill, mv, pwd, and wc 2017-02-12 22:11:45 -05:00
shanahanjrs 75b2555710 Fixed typo in 7z cheatsheet 2017-01-25 18:52:25 -05:00
shanahanjrs 632da2024a Added cheatsheets for pushd and popd commands 2017-01-08 17:11:51 -05:00
shanahanjrs 1baa6d39c0 Added a cheatsheet for cheat itself 2017-01-01 22:44:48 -05:00
Chris Lane 8cad76943a v2.1.27
`patch` version bump.
2016-11-27 11:10:05 -05:00
Romanos Skiadas a6ec02c296 Support multi-word EDITOR values
When the value of EDITOR was more than one words (e.g. emacsclient -c),
it wasn't properly split in an array for subprocess.call and cheat would
fail to launch it.
This commit fixes that.

Closes #301
2016-11-27 10:53:10 -05:00
Chris Lane 7392787e31 Merge branch 'patch-1' of https://github.com/brutus/cheat into brutus-patch-1 2016-11-27 10:42:46 -05:00
Chris Lane 208dd24a0c Minor cheatsheet edits. 2016-11-27 10:31:49 -05:00
Chris Lane df34774a7a Merge branch 'master' of https://github.com/notklaatu/cheat into notklaatu-master 2016-11-27 08:57:54 -05:00
Chris Lane 8d65424ffb README edit
Modified the README with regards to the environment variable changes
made in #294.
2016-11-27 08:54:33 -05:00
Chris Lane 597acec6ac `cheat` now honors `CHEAT_EDITOR` and `VISUAL` environment variables in
addition to `EDITOR`.
2016-11-27 08:54:33 -05:00
Chris Allen Lane 7d4150b937 Merge pull request #291 from proinsias/patch-1
Create MANIFEST.in
2016-11-27 08:53:45 -05:00
Chris Allen Lane 5df5b1ab49 Merge pull request #299 from jonlabelle/patch-1
Fix uninstall typo.
2016-11-27 08:46:55 -05:00
Chris Allen Lane f1c8017342 Merge pull request #304 from dufferzafar/sheets
Add aria2c sheet
2016-11-27 08:45:50 -05:00
Shadab Zafar 8f2912e5da Fix grammar of lsof 2016-11-27 08:43:37 -05:00
Shadab Zafar 3139796524 Update lsof sheet 2016-11-27 08:43:37 -05:00
Morgan Courbet bcd4563bf3 Add npm cheatsheet 2016-11-27 08:43:37 -05:00
rahul 5cd5387a47 Add cheery-pick to git cheat 2016-11-27 08:43:37 -05:00
rahul c8f0e6295b Add revert in git cheat 2016-11-27 08:43:37 -05:00
rahul 31e442d7f9 Add git stash cheat 2016-11-27 08:43:37 -05:00
Brutus 05400a92ed Added support for `~` and environment variables in `DEFAULT_CHEAT_DIR`
If the `DEFAULT_CHEAT_DIR` environment variable contains the `~` — as shortcut for the users home directory — or environment variables like `$HOME`, the program bails. This change allows the usage of both.
2016-11-24 16:14:37 +01:00
Shadab Zafar 034c1a2415 Add aria2c sheet 2016-10-15 00:02:45 +05:30
Jon LaBelle dab8645394 Fix uninstall type. 2016-10-02 16:23:42 -05:00
Chris Lane 352a760561 README edit
Modified the README with regards to the environment variable changes
made in #294.
2016-10-01 14:08:58 -04:00
Chris Lane 6be87e2d42 `cheat` now honors `CHEAT_EDITOR` and `VISUAL` environment variables in
addition to `EDITOR`.
2016-10-01 13:55:50 -04:00
Chris Lane 403d715127 Merge pull request #292 from rahulkavale/master
Add stash, cherry-pick, revert in git cheat
2016-09-30 20:40:20 -04:00
Chris Lane 0edd1450dc Merge pull request #293 from nagromc/npm-cheat
Add npm cheatsheet
2016-09-30 20:38:15 -04:00
Chris Lane d87a26ce4f Merge pull request #297 from dufferzafar/sheets
Update lsof sheet
2016-09-30 20:37:20 -04:00
Shadab Zafar cdf240b70e Fix grammar of lsof 2016-09-27 22:43:54 +05:30
Shadab Zafar 809c6d77bc Update lsof sheet 2016-09-27 21:23:39 +05:30
Klaatu be543450c7 Merge branch 'master' of github.com:notklaatu/cheat 2016-09-21 22:25:27 +12:00
Klaatu 9889d77adb xmlto cheatsheet 2016-09-21 22:24:47 +12:00
Klaatu 354376340f Missing man page #272 2016-09-10 14:17:01 +12:00
Morgan Courbet d82eee726c Add npm cheatsheet 2016-09-09 10:05:22 +02:00
Klaatu 9a23458a2d ffmpeg combine, add sqlite3 2016-09-09 12:05:08 +12:00
Klaatu 32802c2907 patch cheat 2016-09-04 09:48:01 +12:00
Klaatu 2a6d34de35 diff addition 2016-09-02 09:44:19 +12:00
Klaatu f1253031f2 bzip2 2016-09-01 22:28:28 +12:00
Klaatu 76fa9cfc23 urpm* mageia open mandriva 2016-09-01 22:01:01 +12:00
Klaatu 0a54b2a2ff updated emacs, ffmpeg. branched org-mode. added slack. 2016-09-01 12:10:21 +12:00
rahul 6a1742984c Add cheery-pick to git cheat 2016-08-28 08:26:55 +05:30
rahul 80d2a09456 Add revert in git cheat 2016-08-28 08:19:20 +05:30
rahul 5121fece91 Add git stash cheat 2016-08-28 08:13:08 +05:30
Francis T. O'Donovan e8d32102cb Create MANIFEST.in
I'm working on submitting this package to conda-forge. As part of this, I would like to include the license files in the MANIFEST.in for this project.
2016-08-25 20:31:13 -04:00
Kristiyan Nikolov c1fbeffde5 Adds support for more lexers
If you use cheat to save some programming snippets this might be useful.

For example if you have a long list of SQL Query cheats, you can do the
following:

Enter ```sql in the beginning of the file containing the cheats content.

Example file: sql
```sql

SELECT 17 & 16 = 16;
SELECT 2+4+8+16 & 1 = 0;
2015-12-02 14:47:13 +02:00
63 changed files with 913 additions and 135 deletions

View File

@ -1,3 +0,0 @@
Changelog
=========

View File

@ -1,17 +1,29 @@
Contributing
============
If you would like to contribute cheetsheets or program functionality, please
fork this repository, make your changes, and submit a pull request.
fork this repository, make your changes, and submit a pull request against the
`master` branch.
## Python standards ##
Python code should conform to [PEP 8][].
Licensing
---------
By contributing to the project, you agree to license your work under the same
licenses as `cheat` itself. `cheat` is currently dual-licensed under the GPL3
and MIT licenses, though that could change without notice in the future.
`cheat`, however, will always remain free software (as in both "free as in
freedom" and "free as in beer") and shall always be licensed accordingly.
## Cheatsheet Format ##
Please pattern your cheatsheets after the following:
```sh
# To extract an uncompressed archive:
tar -xvf /path/to/foo.tar
# To create an uncompressed archive:
tar -cvf /path/to/foo.tar /path/to/foo/
# To extract a .gz archive:
tar -xzvf /path/to/foo.tgz
```
If you are submitting a cheatsheet that contains side-by-side columns of text,
please align the columns using spaces rather than tabs.
[PEP 8]: http://legacy.python.org/dev/peps/pep-0008/

6
MANIFEST.in Normal file
View File

@ -0,0 +1,6 @@
include CHANGELOG
include CONTRIBUTING.md
include LICENSE
include README.md
include licenses/gpl-3.txt
include licenses/mit.txt

View File

@ -1,5 +1,55 @@
[![PyPI](https://img.shields.io/pypi/v/cheat.svg)](https://pypi.python.org/pypi/cheat/)
[![PyPI](https://img.shields.io/pypi/dm/cheat.svg)](https://pypi.python.org/pypi/cheat/)
Original project https://github.com/chrisallenlane/cheat
----
Fork Verion [![cheapy](https://img.shields.io/badge/V%20-2.2.32-brightgreen.svg)](https://github.com/Erreur32/cheat)
Features added by by 🅴🆁🆁🅴🆄🆁32 :
- Add color seach and prompt
- Add Subdir creation and search
- Add remove sheet file (-r) with confirmation
- Add color help text
----
Put in your bashrc
```sh
function _cheat_autocomplete {
sheets=$(cheat -l | cut -d' ' -f1)
COMPREPLY=()
if [ $COMP_CWORD = 1 ]; then
COMPREPLY=(`compgen -W "$sheets" -- $2`)
fi
}
complete -F _cheat_autocomplete cheat
```
Installing
----------
### manually ###
First, install the dependencies:
```sh
[sudo] pip install docopt pygments appdirs
```
Then clone this repository:
```sh
git clone https://github.com/Erreur32/cheat.git
```
Lastly, `cd` into the cloned directory, then run:
```sh
[sudo] python setup.py install
```
cheat
=====
@ -8,8 +58,7 @@ command-line. It was designed to help remind \*nix system administrators of
options for commands that they use frequently, but not frequently enough to
remember.
![The obligatory xkcd](http://imgs.xkcd.com/comics/tar.png 'The obligatory xkcd')
Example
-------
@ -45,17 +94,7 @@ Note that, while `cheat` was designed primarily for \*nix system administrators,
it is agnostic as to what content it stores. If you would like to use `cheat`
to store notes on your favorite cookie recipes, feel free.
Installing
----------
It is recommended to install `cheat` with `pip`:
```sh
[sudo] pip install cheat
```
[Other installation methods are available][installing].
Modifying Cheatsheets
---------------------
@ -67,14 +106,14 @@ Cheatsheets are stored in the `~/.cheat/` directory, and are named on a
per-keyphrase basis. In other words, the content for the `tar` cheatsheet lives
in the `~/.cheat/tar` file.
Provided that you have an `EDITOR` environment variable set, you may edit
cheatsheets with:
Provided that you have a `CHEAT_EDITOR`, `VISUAL`, or `EDITOR` environment
variable set, you may edit cheatsheets with:
```sh
cheat -e foo
```
If the 'foo' cheatsheet already exists, it will be opened for editing.
If the `foo` cheatsheet already exists, it will be opened for editing.
Otherwise, it will be created automatically.
After you've customized your cheatsheets, I urge you to track `~/.cheat/` along
@ -110,13 +149,32 @@ export CHEATPATH="$CHEATPATH:/path/to/more/cheats"
You may view which directories are on your `CHEATPATH` with `cheat -d`.
### Enabling Syntax Highlighting ###
`cheat` can apply syntax highlighting to your cheatsheets if so desired. To
enable this feature, set a `CHEATCOLORS` environment variable:
`cheat` can optionally apply syntax highlighting to your cheatsheets. To enable
syntax highlighting, export a `CHEATCOLORS` environment variable:
```sh
export CHEATCOLORS=true
```
#### Specifying a Syntax Highlighter ####
You may manually specify which syntax highlighter to use for each cheatsheet by
wrapping the sheet's contents in a [Github-Flavored Markdown code-fence][gfm].
Example:
<pre>
```sql
-- to select a user by ID
SELECT *
FROM Users
WHERE id = 100
```
</pre>
If no syntax highlighter is specified, the `bash` highlighter will be used by
default.
See Also:
---------
- [Enabling Command-line Autocompletion][autocompletion]
@ -125,5 +183,6 @@ See Also:
[autocompletion]: https://github.com/chrisallenlane/cheat/wiki/Enabling-Command-line-Autocompletion
[dotfiles]: http://dotfiles.github.io/
[gfm]: https://help.github.com/articles/creating-and-highlighting-code-blocks/
[installing]: https://github.com/chrisallenlane/cheat/wiki/Installing
[related-projects]: https://github.com/chrisallenlane/cheat/wiki/Related-Projects

View File

@ -1,33 +1,39 @@
#!/usr/bin/env python
#!/usr/bin/python3
"""cheat
Create and view cheatsheets on the command line.
Usage:
cheat <cheatsheet>
cheat -e <cheatsheet>
cheat -s <keyword>
cheat -l
cheat -d
cheat -v
cheat allows you to create and view interactive cheatsheets on the
command-line. It was designed to help remind *nix system
administrators of options for commands that they use frequently,
but not frequently enough to remember.
Examples:
To look up 'tar':
cheat tar
To create or edit the cheatsheet for 'foo':
cheat -e foo
\033[1;32mcheat\033[0m <cheatsheet>
\033[1;32mcheat\033[0m -e <cheatsheet>
\033[1;32mcheat\033[0m -s <keyword> [<cheatsheet>]
\033[1;32mcheat\033[0m -l
\033[1;32mcheat\033[0m -d
\033[1;32mcheat\033[0m -v
\033[1;32mcheat\033[0m -r <cheatsheet>
Options:
-d --directories List directories on CHEATPATH
-e --edit Edit cheatsheet
-l --list List cheatsheets
-s --search Search cheatsheets for <keyword>
-s --search Search cheatsheets for <keyword> and [<cheatsheet>] file
-v --version Print the version number
-r --remove Delete Cheatsheet
Examples:
To view the `tar` cheatsheet:
\033[1;31m cheat \033[0m tar
To edit (or create) the `foo` cheatsheet:
cheat -e foo
To list all available cheatsheets:
cheat -l
To search for "ssh" among all cheatsheets:
cheat -s ssh
"""
# require the dependencies
@ -38,7 +44,7 @@ from docopt import docopt
if __name__ == '__main__':
# parse the command-line options
options = docopt(__doc__, version='cheat 2.1.26')
options = docopt(__doc__, version='cheat 2.2.3')
# list directories
if options['--directories']:
@ -54,7 +60,11 @@ if __name__ == '__main__':
# search among the cheatsheets
elif options['--search']:
print(colorize(sheets.search(options['<keyword>'])))
print(colorize(sheets.search(options['<keyword>'], options['<cheatsheet>'])))
# remove File in the cheatsheets
elif options['--remove']:
sheet.remove(options['<cheatsheet>'])
# print the cheatsheet
else:

View File

@ -11,7 +11,7 @@ u update
x extract with full paths
Example:
7z a -t7z -m0-lzma -mx=9 -mfb=64 -md=32m -ms=on archive.7z dir1
7z a -t7z -m0=lzma -mx=9 -mfb=64 -md=32m -ms=on archive.7z dir1
-t7z 7z archive
-m0=lzma lzma method

5
cheat/cheatsheets/alias Normal file
View File

@ -0,0 +1,5 @@
# Show a list of your current shell aliases
alias
# Map `ll` to `ls -l` (Can be used per session or put inside a shell config file)
alias ll='ls -l'

12
cheat/cheatsheets/aria2c Normal file
View File

@ -0,0 +1,12 @@
# Just download a file
# The url can be a http(s), ftp, .torrent file or even a magnet link
aria2c <url>
# To prevent downloading the .torrent file
aria2c --follow-torrent=mem <url>
# Download 1 file at a time (-j)
# continuing (-c) any partially downloaded ones
# to the directory specified (-d)
# reading urls from the file (-i)
aria2c -j 1 -c -d ~/Downloads -i /path/to/file

11
cheat/cheatsheets/bzip2 Normal file
View File

@ -0,0 +1,11 @@
# compress foo -> foo.bz2
bzip2 -z foo
# decompress foo.bz2 -> foo
bzip2 -d foo.bz2
# compress foo to stdout
bzip2 -zc foo > foo.bz2
# decompress foo.bz2 to stdout
bzip2 -dc foo.bz2

8
cheat/cheatsheets/cat Normal file
View File

@ -0,0 +1,8 @@
# Display the contents of a file
cat /path/to/foo
# Display contents with line numbers
cat -n /path/to/foo
# Display contents with line numbers (blank lines excluded)
cat -b /path/to/foo

11
cheat/cheatsheets/cd Normal file
View File

@ -0,0 +1,11 @@
#Go to the given directory
cd path/to/directory
#Go to home directory of current user
cd
#Go up to the parent of the current directory
cd ..
#Go to the previously chosen directory
cd -

14
cheat/cheatsheets/cheat Normal file
View File

@ -0,0 +1,14 @@
# To see example usage of a program:
cheat <command>
# To edit a cheatsheet
cheat -e <command>
# To list available cheatsheets
cheat -l
# To search available cheatsheets
cheat -s <command>
# To get the current `cheat' version
cheat -v

11
cheat/cheatsheets/cp Normal file
View File

@ -0,0 +1,11 @@
# Create a copy of a file
cp ~/Desktop/foo.txt ~/Downloads/foo.txt
# Create a copy of a directory
cp -r ~/Desktop/cruise_pics/ ~/Pictures/
# Create a copy but ask to overwrite if the destination file already exists
cp -i ~/Desktop/foo.txt ~/Documents/foo.txt
# Create a backup file with date
cp foo.txt{,."$(date +%Y%m%d-%H%M%S)"}

View File

@ -16,7 +16,7 @@ SHELL=/bin/bash
*/15 * * * * /home/user/command.sh
# every midnight
* 0 * * * /home/user/command.sh
0 0 * * * /home/user/command.sh
# every Saturday at 8:05 AM
5 8 * * 6 /home/user/command.sh

View File

@ -0,0 +1,8 @@
# open encrypted partition /dev/sdb1 (reachable at /dev/mapper/backup)
cryptsetup open --type luks /dev/sdb1 backup
# open encrypted partition /dev/sdb1 using a keyfile (reachable at /dev/mapper/hdd)
cryptsetup open --type luks --key-file hdd.key /dev/sdb1 hdd
# close luks container at /dev/mapper/hdd
cryptsetup close hdd

View File

@ -33,3 +33,9 @@ curl http://ifconfig.me/all/json
# Limit the rate of a download
curl --limit-rate 1000B -O http://path.to.the/file
# Get your global IP
curl httpbin.org/ip
# Get only the HTTP status code
curl -o /dev/null -w '%{http_code}\n' -s -I URL

View File

@ -1,7 +1,7 @@
# Read from {/dev/urandom} 2*512 Bytes and put it into {/tmp/test.txt}
# Note: At the first iteration, we read 512 Bytes.
# Note: At the second iteration, we read 512 Bytes.
dd if=/dev/urandom of=/tmp/test.txt count=512 bs=2
dd if=/dev/urandom of=/tmp/test.txt count=2 bs=512
# Watch the progress of 'dd'
dd if=/dev/zero of=/dev/null bs=4KB &; export dd_pid=`pgrep '^dd'`; while [[ -d /proc/$dd_pid ]]; do kill -USR1 $dd_pid && sleep 1 && clear; done

7
cheat/cheatsheets/deb Normal file
View File

@ -0,0 +1,7 @@
# Extract contents of a .deb file
$ ar vx foo.deb # -> data.tar.gz
$ tar xf data.tar.gz
# Install .deb file to a debian like system, e.g. ubuntu
$ sudo dpkg -i foo.deb
$ sudo apt-get install -f

View File

@ -21,3 +21,6 @@ diff -s version1 version2
# To diff the output of two commands or scripts:
diff <(command1) <(command2)
# Generate a patch file from two files
diff -Naur version1 version2 > version.patch

View File

@ -1,21 +1,28 @@
# Running emacs
GUI mode $ emacs
Terminal mode $ emacs -nw
# Basic usage
Indent Select text then press TAB
Cut CTRL-w
Copy ALT-w
Paste CTRL-y
Paste ("yank") CTRL-y
Begin selection CTRL-SPACE
Search/Find CTRL-s
Replace ALT-% (ALT-SHIFT-5)
Save CTRL-x CTRL-s
Save as CTRL-x CTRL-w
Load/Open CTRL-x CTRL-f
Undo CTRL-x u
Highlight all text CTRL-x h
Directory listing CTRL-x d
Cancel a command ESC ESC ESC
Cancel a command CTRL-g
Font size bigger CTRL-x CTRL-+
Font size smaller CTRL-x CTRL--
# Buffers
# Buffers
Split screen vertically CTRL-x 2
Split screen vertically with 5 row height CTRL-u 5 CTRL-x 2
@ -23,11 +30,21 @@
Split screen horizontally with 24 column width CTRL-u 24 CTRL-x 3
Revert to single screen CTRL-x 1
Hide the current screen CTRL-x 0
Kill the current screen CTRL-x k
Move to the next buffer CTRL-x O
Move to the next screen CTRL-x o
Kill the current buffer CTRL-x k
Select a buffer CTRL-x b
Run command in the scratch buffer CTRL-x CTRL-e
# Navigation ( backward / forward )
Character-wise CTRL-b , CTRL-f
Word-wise ALT-b , ALT-f
Line-wise CTRL-p , CTRL-n
Sentence-wise ALT-a , ALT-e
Paragraph-wise ALT-{ , ALT-}
Function-wise CTRL-ALT-a , CTRL-ALT-e
Line beginning / end CTRL-a , CTRL-e
# Other stuff
Open a shell ALT-x eshell
@ -39,32 +56,9 @@
Compile some code ALT-x compile
List packages ALT-x package-list-packages
# Sudoing within eshell
By default when using the sudo command within eshell you'll just
get "permission denied" messages. To overcome that type:
alias sudo '*sudo $*'
# Line numbers
To add line numbers and enable moving to a line with CTRL-l:
(global-set-key "\C-l" 'goto-line)
(add-hook 'find-file-hook (lambda () (linum-mode 1)))
# Org-mode
To begin org-mode ALT-x org-mode
Table column separator Vertical/pipe character
Reorganize table TAB
Section heading *
Open/collapse section TAB
Open/collapse All CTRL-TAB
Export in other file formats (eg HTML,PDF) CTRL-c CTRL-e
To make org-mode automatically wrap lines:
(add-hook 'org-mode-hook
'(lambda ()
(visual-line-mode 1)))

5
cheat/cheatsheets/export Normal file
View File

@ -0,0 +1,5 @@
# Calling export with no arguments will show current shell attributes
export
# Create new environment variable
export VARNAME="value"

View File

@ -2,7 +2,17 @@
ffmpeg -i path/to/file.ext
# Convert all m4a files to mp3
for f in *.m4a; do ffmpeg -i "$f" -acodec libmp3lame -ab 320k "${f%.m4a}.mp3"; done
for f in *.m4a; do ffmpeg -i "$f" -acodec libmp3lame -vn -b:a 320k "${f%.m4a}.mp3"; done
# Convert video from .foo to .bar
# -g : GOP, for searchability
ffmpeg -i input.foo -vcodec bar -acodec baz -b:v 21000k -b:a 320k -g 150 -threads 4 output.bar
# Convert image sequence to video
ffmpeg -r 18 -pattern_type glob -i '*.png' -b:v 21000k -s hd1080 -vcodec vp9 -an -pix_fmt yuv420p -deinterlace output.ext
# Combine video and audio into one file
ffmpeg -i video.ext -i audio.ext -c:v copy -c:a copy output.ext
# Listen to 10 seconds of audio from a video file
#
@ -10,3 +20,4 @@ for f in *.m4a; do ffmpeg -i "$f" -acodec libmp3lame -ab 320k "${f%.m4a}.mp3"; d
# -t : seconds to cut
# -autoexit : closes ffplay as soon as the audio finishes
ffmpeg -ss 00:34:24.85 -t 10 -i path/to/file.mp4 -f mp3 pipe:play | ffplay -i pipe:play -autoexit

View File

@ -19,11 +19,11 @@ find ./path/ -name '*.txt' -exec rm '{}' \;
# To find files with extension '.txt' and look for a string into them:
find ./path/ -name '*.txt' | xargs grep 'string'
# To find files with size bigger than 5 Mb and sort them by size:
# To find files with size bigger than 5 Mebibyte and sort them by size:
find . -size +5M -type f -print0 | xargs -0 ls -Ssh | sort -z
# To find files bigger thank 2 MB and list them:
find . -type f -size +20000k -exec ls -lh {} \; | awk '{ print $9 ": " $5 }'
# To find files bigger than 2 Megabyte and list them:
find . -type f -size +200000000c -exec ls -lh {} \; | awk '{ print $9 ": " $5 }'
# To find files modified more than 7 days ago and list file information
find . -type f -mtime +7d -ls

View File

@ -11,6 +11,24 @@ git config --global color.ui true
# To stage all changes for commit:
git add --all
# To stash changes locally, this will keep the changes in a separate changelist
# called stash and the working directory is cleaned. You can apply changes
# from the stash anytime
git stash
# To stash changes with a message
git stash save "message"
# To list all the stashed changes
git stash list
# To apply the most recent change and remove the stash from the stash list
git stash pop
# To apply any stash from the list of stashes. This does not remove the stash
# from the stash list
git stash apply stash@{6}
# To commit staged changes
git commit -m "Your commit message"
@ -124,3 +142,10 @@ git show :/cool
# Undo parts of last commit in a specific file
git checkout -p HEAD^ -- /path/to/file
# Revert a commit and keep the history of the reverted change as a separate revert commit
git revert <commit SHA>
# Pich a commit from a branch to current branch. This is different than merge as
# this just applies a single commit from a branch to current branch
git cherry-pick <commit SHA1>

12
cheat/cheatsheets/gyb Normal file
View File

@ -0,0 +1,12 @@
# To estimate the number and the size of all mails on youremail@gmail.com
gyb --email youremail@gmail.com --action estimate
# To backup from youremail@gmail.com to your local-folder
gyb --email youremail@gmail.com --action backup --local-folder "~/MyLocalFolder/"
# To backup from youremail@gmail.com only important or starred emails to the
# default local folder GYB-GMail-Backup-youremail@gmail.com
gyb --email youremail@gmail.com --search "is:important OR is:starred"
# To restore from your local-folder to youremail@gmail.com
gyb --email youremail@gmail.com --action restore --local-folder "~/MyLocalFolder/"

20
cheat/cheatsheets/hg Normal file
View File

@ -0,0 +1,20 @@
# Clone a directory
hg clone
# Add files to hg tracker
hg add filename
# Add all files in a folder to hg tracker
hg add folder/
# Create a commit with all tracked changes and a message
hg commit -m "message"
# Push commits to source repository
hg push
# Pull changes from source repository
hg pull
# Rebase local commits to disambiguate with remote repository
hg pull --rebase

3
cheat/cheatsheets/iconv Normal file
View File

@ -0,0 +1,3 @@
# To convert file (iconv.src) from iso-8859-1 to utf-8 and save to
# /tmp/iconv.out
iconv -f iso-8859-1 -t utf-8 iconv.src -o /tmp/iconv.out

5
cheat/cheatsheets/kill Normal file
View File

@ -0,0 +1,5 @@
# Kill a process gracefully
kill -15 <process id>
# Kill a process forcefully
kill -9 <process id>

View File

@ -4,20 +4,34 @@ sudo lsof -i4
# List all IPv6 network files
sudo lsof -i6
# To find listening ports:
# List all open sockets
lsof -i
# List all listening ports
lsof -Pnl +M -i4
# To find which program is using the port 80:
# Find which program is using the port 80
lsof -i TCP:80
# List all connections to a specific host
lsof -i@192.168.1.5
# List all processes accessing a particular file/directory
lsof </path/to/file>
# List all files open for a particular user
lsof -u <username>
# List all files/network connections a given process is using
# List all files/network connections a command is using
lsof -c <command-name>
# List all files a process has open
lsof -p <pid>
# List all files open mounted at /mount/point.
# Particularly useful for finding which process(es) are using a
# mounted USB stick or CD/DVD.
lsof +f -- </mount/point>
# See this primer: http://www.danielmiessler.com/study/lsof/
# for a number of other useful lsof tips

14
cheat/cheatsheets/mv Normal file
View File

@ -0,0 +1,14 @@
# Move a file from one place to another
mv ~/Desktop/foo.txt ~/Documents/foo.txt
# Move a file from one place to another and automatically overwrite if the destination file exists
# (This will override any previous -i or -n args)
mv -f ~/Desktop/foo.txt ~/Documents/foo.txt
# Move a file from one place to another but ask before overwriting an existing file
# (This will override any previous -f or -n args)
mv -i ~/Desktop/foo.txt ~/Documents/foo.txt
# Move a file from one place to another but never overwrite anything
# (This will override any previous -f or -i args)
mv -n ~/Desktop/foo.txt ~/Documents/foo.txt

View File

@ -28,4 +28,10 @@ INSERT INTO tbl_name (col1,col2) VALUES(15,col1*2);
UPDATE tbl_name SET col1 = "example";
# Basic DELETE Statement
DELETE FROM tbl_name WHERE user = 'jcole';
DELETE FROM tbl_name WHERE user = 'jcole';
# To check stored procedure
SHOW PROCEDURE STATUS;
# To check stored function
SHOW FUNCTION STATUS;

22
cheat/cheatsheets/npm Normal file
View File

@ -0,0 +1,22 @@
# Every command shown here can be used with the `-g` switch for global scope
# Install a package in the current directory
npm install <package>
# Install a package, and save it in the `dependencies` section of `package.json`
npm install --save <package>
# Install a package, and save it in the `devDependencies` section of `package.json`
npm install --save-dev <package>
# Show outdated packages in the current directory
npm outdated
# Update outdated packages
npm update
# Update `npm` (will override the one shipped with Node.js)
npm install -g npm
# Uninstall a package
npm uninstall <package>

View File

@ -15,6 +15,9 @@ openssl req -text -noout -in server.csr
# To show certificate information for generated certificate
openssl x509 -text -noout -in server.crt
# To get the sha256 fingerprint of a certificate
openssl x509 -in server.crt -noout -sha256 -fingerprint
# To view certificate expiration:
echo | openssl s_client -connect <hostname>:443 2> /dev/null | \
awk '/-----BEGIN/,/END CERTIFICATE-----/' | \

View File

@ -0,0 +1,46 @@
Begin org-mode ALT-x org-mode
Save CTRL-x CTRL-s
Export in other file formats (eg HTML,PDF) CTRL-c CTRL-e
# Outline
Section heading *
New headline ALT-return
Move headline up or down ALT-up_arrow/down_arrow
Adjust indent depth of headline ALT-left_arrow/right_arrow
Open/collapse section TAB
Open/collapse All CTRL-TAB
# To-Do Lists
Mark list item as TODO ** TODO
Cycle through workflow SHIFT-left_arrow/right_arrow
Show only outstanding TODO items CTRL-c CTRL-v
# Tables
Table column separator Vertical/pipe character
Reorganize table TAB
Move column ALT-left_arrow/right_arrow
Move row ALT-up_arrow/down_arrow
# Styles
*bold*
/italic/
_underlined_
=code=
~verbatim~
+strike-through+
# Heading
Header -*- mode: org -*-
# .emacs
To make org-mode automatically wrap lines:
(add-hook 'org-mode-hook
'(lambda ()
(visual-line-mode 1)))

13
cheat/cheatsheets/patch Normal file
View File

@ -0,0 +1,13 @@
# Patch one file
patch version1 < version.patch
# Reverse a patch
patch -R version1 < version.patch
# Patch all files in a directory, adding any missing new files
# -p strips leading slashes
$ cd dir
$ patch -p1 -i ../big.patch
# Patch files in a directory, with one level (/) offset
patch -p1 -r version1/ < version.patch

8
cheat/cheatsheets/perl Normal file
View File

@ -0,0 +1,8 @@
# To view the perl version:
perl -v
# Replace string "\n" to newline
echo -e "foo\nbar\nbaz" | perl -pe 's/\n/\\n/g;'
# Replace newline with multiple line to space
cat test.txt | perl -0pe "s/test1\ntest2/test1 test2/m"

5
cheat/cheatsheets/pgrep Normal file
View File

@ -0,0 +1,5 @@
# Get a list of PIDs matching the pattern
pgrep example
# Kill all PIDs matching the pattern
pgrep -f example | xargs kill

View File

@ -23,5 +23,8 @@ pip list --outdated
# Upgrade all outdated packages, thanks to http://stackoverflow.com/a/3452888
pip freeze --local | grep -v '^\-e' | cut -d = -f 1 | xargs -n1 pip install -U
# Upgrade outdated packages on latest version of pip
pip list --outdated --format=freeze | cut -d = -f 1 | xargs -n1 pip install -U
# Install specific version of a package
pip install -I SomePackage1==1.1.0 'SomePackage2>=1.0.4'

View File

@ -0,0 +1,27 @@
# Create a Slackware package from a structured directory and sub-tree
$ cd /path/to/pkg/dir
$ su - c 'makepkg --linkadd y --chown n $foo-1.0.3-x86_64-1_tag.tgz'
# Install a Slackware package
installpkg foo-1.0.3-x86_64-1.tgz
# Install a Slackware package to non-standard location
ROOT=/path/to/dir installpkg foo-1.0.4-noarch-1.tgz
# Create backup of files that will be overwritten when installing
tar czvf /tmp/backup.tar.gz $(installpkg --warn foo-1.0.4-noarch-1.tgz)
# Upgrade a Slackware package including files only in new version
upgradepkg --install-new foo-1.0.6-noarch-1.tgz
# Upgrade a Slackware package even if version is the same
upgradepkg --reinstall foo-1.0.4-noarch-1.tgz
# Remove a Slackware package
removepkg foo-0.2.8-x86_64-1
# Remove a Slackware package, retaining a backup (uninstalled) copy
removepkg -copy foo-0.2.8-x86_64-1 # -> /var/log/setup/tmp/preserved_packages/foo...

5
cheat/cheatsheets/pkill Normal file
View File

@ -0,0 +1,5 @@
# To kill a process using it's full process name
pkill <processname>
# To kill a process by it's partial name
pkill -f <string>

2
cheat/cheatsheets/popd Normal file
View File

@ -0,0 +1,2 @@
# Returns to the directory at the top of the `pushd' stack
popd

26
cheat/cheatsheets/psql Normal file
View File

@ -0,0 +1,26 @@
# psql is the PostgreSQL terminal interface. The following commands were tested on version 9.5.
# Connection options:
# -U username (if not specified current OS user is used).
# -p port.
# -h server hostname/address.
# Connect to a specific database:
psql -U postgres -h serverAddress -d dbName
# Get databases on a server:
psql -U postgres -h serverAddress --list
# Execute sql query and save output to file:
psql -U postgres -d dbName -c 'select * from tableName;' -o fileName
# Execute query and get tabular html output:
psql -U postgres -d dbName -H -c 'select * from tableName;'
# Execute query and save resulting rows to csv file:
psql -U postgres -d dbName -t -A -P fieldsep=',' -c 'select * from tableName;' -o fileName.csv
# Read commands from file:
psql -f fileName
# Restore databases from file:
psql -f fileName.backup postgres

5
cheat/cheatsheets/pushd Normal file
View File

@ -0,0 +1,5 @@
# Pushes your current directory to the top of a stack while changing to the specified directory
pushd <directory>
# To return use popd
popd

2
cheat/cheatsheets/pwd Normal file
View File

@ -0,0 +1,2 @@
# Show the absolute path of your current working directory on the filesystem
pwd

26
cheat/cheatsheets/rcs Normal file
View File

@ -0,0 +1,26 @@
# Initial check-in of file (leaving file active in filesystem)
ci -u <filename>
# Check out with lock
co -l <filename>
# Check in and unlock (leaving file active in filesystem)
ci -u <filename>
# Display version x.y of a file
co -px.y <filename>
# Undo to version x.y (overwrites file active in filesystem with the specified revision)
co -rx.y <filename>
# Diff file active in filesystem and last revision
rcsdiff <filename>
# Diff versions x.y and x.z
rcsdiff -rx.y -rx.z <filename>
# View log of check-ins
rlog <filename>
# Break an RCS lock held by another person on a file
rcs -u <filename>

View File

@ -0,0 +1,5 @@
# List contents of RPM
rpm2cpio foo.rpm | cpio -vt
# Extract contents of RPM
rpm2cpio foo.rpm | cpio -vid

View File

@ -0,0 +1,8 @@
# Reboot the system immediately
shutdown -r now
# Shut system down immediately
shutdown -h now
# Reboot system after 5 minutes
shutdown -r +5

32
cheat/cheatsheets/sport Normal file
View File

@ -0,0 +1,32 @@
# Sync to newest SlackBuild.org tree
sport r
# Search (fuzzy) SlackBuild tree for packages foo and BaR
sport s foo bar
# Operate from alternate build tree
SBOPATH=/path/to/tree sport s foo
# View info and README of BaR (not fuzzy)
sport c foo BaR
# Build a package
sport i --build-only foo
# Build and install package foo and BaR
sport i foo BaR
# Build and install package from current directory
sport i .
# Upgrade instead of install
INSTALLER=upgradepkg sport i foo
# Build dependency list for baz
echo "foo BaR" >> /tmp/baz.list
# Install list of packages from file
sport i $(< /tmp/baz.list)
# Check if package is installed
sport k foo

20
cheat/cheatsheets/sqlite3 Normal file
View File

@ -0,0 +1,20 @@
# create database and launch interactive shell
sqlite3 example.db
# create table
sqlite3 example.db "CREATE TABLE Os(ID INTEGER PRIMARY KEY, Name TEXT, Year INTEGER);"
# insert data
sqlite3 example.db "INSERT INTO 'Os' VALUES(1,'Linux',1991);"
# list tables
sqlite3 example.db ".tables"
# view records in table
sqlite3 example.db "SELECT * FROM 'Os';"
# view records in table conditionally
sqlite example.db "SELECT * FROM 'Os' WHERE Year='1991';"
# view records with fuzzy matching
sqlite3 ~/example.db "SELECT * FROM 'Os' WHERE Year like '19%';"

2
cheat/cheatsheets/su Normal file
View File

@ -0,0 +1,2 @@
# Switch to another user account
su USERNAME

View File

@ -19,6 +19,9 @@ tar -xjvf /path/to/foo.tgz
# To create a .bz2 archive:
tar -cjvf /path/to/foo.tgz /path/to/foo/
# To extract a .tar in specified Directory:
tar -xvf /path/to/foo.tar -C /path/to/destination/
# To list the content of an .bz2 archive:
tar -jtvf /path/to/foo.tgz

14
cheat/cheatsheets/trashy Normal file
View File

@ -0,0 +1,14 @@
# Trash foo and bar
trash foo bar
# Trash "foo bar"
trash foo\ bar
# List files in trash
trash -v --list
# Restore foo from trash
trash --restore foo
# Empty trash
trash --empty

14
cheat/cheatsheets/urpm Normal file
View File

@ -0,0 +1,14 @@
# search (fuzzy) for package foo
urpmq -Y foo
# check if foo is installed
rpm -q foo
# install package foo
urpmi foo
# download but don't install foo
urpmi --no-install foo
# uninstall package foo
urpme foo

18
cheat/cheatsheets/wc Normal file
View File

@ -0,0 +1,18 @@
# Count the number of words (file or STDIN)
wc -w /path/to/foo.txt
cat /path/to/foo.txt | wc -w
# Count the number of lines (file or STDIN)
wc -l /path/to/foo.txt
cat /path/to/foo.txt | wc -l
# Count the number of bytes (file or STDIN)
wc -c /path/to/foo.txt
cat /path/to/foo.txt | wc -c
# Count files and directories at a given location
ls -l | wc -l
# If you ever use `wc` in a shell script and need to compare the output with an int you can
# clean the output (wc returns extra characters around the integer) by using xargs:
ls -l | wc -l | xargs

View File

@ -10,3 +10,7 @@ find -name *.pdf | xargs -I{} rm -rf '{}'
# -n1 => One file by one file. ( -n2 => 2 files by 2 files )
find -name *.pdf | xargs -I{} -n1 echo '&{}='
# If find returns no result, do not run rm
# This option is a GNU extension.
find -name "*.pdf" | xargs --no-run-if-empty rm

14
cheat/cheatsheets/xmlto Normal file
View File

@ -0,0 +1,14 @@
# DocBook XML to PDF
xmlto pdf mydoc.xml
# DocBook XML to HTML
xmlto -o html-dir html mydoc.xml
# DocBook XML to single HTML file
xmlto html-nochunks mydoc.xml
# modify output with XSL override
xmlto -m ulink.xsl pdf mydoc.xml
# use non-default xsl
xmlto -x mystylesheet.xsl pdf mydoc.xml

View File

@ -16,5 +16,8 @@ youtube-dl --playlist-start 5 example.com/watch?v=id&list=listid
# To simulate a download with youtube-dl:
youtube-dl -s example.com/watch?v=id
# To download audio in mp3 format with best quality available
youtube-dl --extract-audio --audio-format mp3 --audio-quality 0 example.com/watch?v=id
# For all video formats see
# http://en.wikipedia.org/wiki/YouTube#Quality_and_codecs

82
cheat/cheatsheets/zsh Normal file
View File

@ -0,0 +1,82 @@
# A plain old glob
print -l *.txt
print -l **/*.txt
# Show text files that end in a number from 1 to 10
print -l **/*<1-10>.txt
# Show text files that start with the letter a
print -l **/[a]*.txt
# Show text files that start with either ab or bc
print -l **/(ab|bc)*.txt
# Show text files that don't start with a lower or uppercase c
print -l **/[^cC]*.txt
# Show only directories
print -l **/*(/)
# Show only regular files
print -l **/*(.)
# Show empty files
print -l **/*(L0)
# Show files greater than 3 KB
print -l **/*(Lk+3)
# Show files modified in the last hour
print -l **/*(mh-1)
# Sort files from most to least recently modified and show the last 3
print -l **/*(om[1,3])
# `.` show files, `Lm-2` smaller than 2MB, `mh-1` modified in last hour,
# `om` sort by modification date, `[1,3]` only first 3 files
print -l **/*(.Lm-2mh-1om[1,3])
# Show every directory that contain directory `.git`
print -l **/*(e:'[[ -d $REPLY/.git ]]':)
# Return the file name (t stands for tail)
print -l *.txt(:t)
# Return the file name without the extension (r stands for remove_extension)
print -l *.txt(:t:r)
# Return the extension
print -l *.txt(:e)
# Return the parent folder of the file (h stands for head)
print -l *.txt(:h)
# Return the parent folder of the parent
print -l *.txt(:h:h)
# Return the parent folder of the first file
print -l *.txt([1]:h)
# Parameter expansion
files=(*.txt) # store a glob in a variable
print -l $files
print -l $files(:h) # this is the syntax we saw before
print -l ${files:h}
print -l ${files(:h)} # don't mix the two, or you'll get an error
print -l ${files:u} # the :u modifier makes the text uppercase
# :s modifier
variable="path/aaabcd"
echo ${variable:s/bc/BC/} # path/aaaBCd
echo ${variable:s_bc_BC_} # path/aaaBCd
echo ${variable:s/\//./} # path.aaabcd (escaping the slash \/)
echo ${variable:s_/_._} # path.aaabcd (slightly more readable)
echo ${variable:s/a/A/} # pAth/aaabcd (only first A is replaced)
echo ${variable:gs/a/A/} # pAth/AAAbcd (all A is replaced)
# Split the file name at each underscore
echo ${(s._.)file}
# Join expansion flag, opposite of the split flag.
array=(a b c d)
echo ${(j.-.)array} # a-b-c-d

View File

@ -1,9 +1,9 @@
import sys
import os
import shutil
import subprocess
from cheat import sheets
from cheat.utils import die, editor
from cheat.utils import die, open_with_editor
def copy(current_sheet_path, new_sheet_path):
""" Copies a sheet to a new path """
@ -39,22 +39,12 @@ def create_or_edit(sheet):
def create(sheet):
""" Creates a cheatsheet """
new_sheet_path = os.path.join(sheets.default_path(), sheet)
try:
subprocess.call([editor(), new_sheet_path])
except OSError:
die('Could not launch ' + editor())
open_with_editor(new_sheet_path)
def edit(sheet):
""" Opens a cheatsheet for editing """
try:
subprocess.call([editor(), path(sheet)])
except OSError:
die('Could not launch ' + editor())
open_with_editor(path(sheet))
def exists(sheet):
@ -81,7 +71,52 @@ def path(sheet):
def read(sheet):
""" Returns the contents of the cheatsheet as a String """
if not exists(sheet):
die('No cheatsheet found for ' + sheet)
die('\033[1;31mNo\033[0m cheatsheet found for \033[1;31m' + sheet + '\033[0m')
with open(path(sheet)) as cheatfile:
return cheatfile.read()
def remove(sheet, default="yes"):
"""Ask a yes/no/quit sheet via raw_input() and return their answer.
"sheet" is a string that is presented to the user.
"default" is the presumed answer if the user just hits <Enter>.
It must be "yes" (the default), "no", "quit" or None (meaning
an answer is required of the user).
The "answer" return value is one of "yes", "no" or "quit".
"""
if not exists(sheet):
die('\033[1;31mNo\033[0m cheatsheet found for \033[1;31m' + sheet + '\033[0m')
sheet = sheets.get()[sheet]
valid = {"yes":"yes", "y":"yes", "ye":"yes",
"no":"no", "n":"no",
"quit":"quit", "qui":"quit", "qu":"quit", "q":"quit"}
if default == None:
prompt = " [y/n/q] "
elif default == "yes":
prompt = " [Y/n/q] "
elif default == "no":
prompt = " [y/N/q] "
elif default == "quit":
prompt = " [y/n/Q] "
else:
raise ValueError("invalid default answer: '%s'" % default)
while 1:
sys.stdout.write(sheet + prompt)
choice = input().lower()
if default is not None and choice == '':
print("Delete\033[1;31m %s \033[0mfile " % sheet)
os.remove(sheet)
return default
elif choice in valid.keys():
print("Delete\033[1;31m %s \033[0mfile " % sheet)
os.remove(sheet)
return valid[choice]
else:
sys.stdout.write("Please respond with 'yes', 'no' or 'quit'.\n")

View File

@ -7,7 +7,8 @@ def default_path():
""" Returns the default cheatsheet path """
# determine the default cheatsheet dir
default_sheets_dir = os.environ.get('DEFAULT_CHEAT_DIR') or os.path.join(os.path.expanduser('~'), '.cheat')
default_sheets_dir = os.environ.get('DEFAULT_CHEAT_DIR') or os.path.join('~', '.cheat')
default_sheets_dir = os.path.expanduser(os.path.expandvars(default_sheets_dir))
# create the DEFAULT_CHEAT_DIR if it does not exist
if not os.path.isdir(default_sheets_dir):
@ -35,14 +36,22 @@ def get():
# otherwise, scan the filesystem
for cheat_dir in reversed(paths()):
cheats.update(
dict([
(cheat, os.path.join(cheat_dir, cheat))
for cheat in os.listdir(cheat_dir)
if not cheat.startswith('.')
and not cheat.startswith('__')
])
)
subdirs = []
for root, dirs, files in os.walk(cheat_dir, topdown=True):
dirs[:] = [d for d in dirs if not d.startswith('.')]
subdirs.append(root)
for subdir in subdirs:
cheats.update(
dict([
(cheat, os.path.join(subdir, cheat))
for cheat in os.listdir(subdir)
if not cheat.startswith('.')
and not cheat.startswith('__')
and not os.path.isdir(os.path.join(subdir, cheat))
])
)
return cheats
@ -75,15 +84,21 @@ def list():
return sheet_list
def search(term):
""" Searches all cheatsheets for the specified term """
def search(term, target_sheet):
""" Searches all cheatsheets for the specified term.
Restrict search to target_sheet if given """
result = ''
for cheatsheet in sorted(get().items()):
if target_sheet and target_sheet != cheatsheet[0]:
continue
match = ''
for line in open(cheatsheet[1]):
# for line in open(cheatsheet[1]):
for index, line in enumerate(open(cheatsheet[1])):
if term in line:
match += ' ' + line
match += '[%d]\t\t' % index + line.strip() + '\n'
# if 'CHEATCOLORS' in os.environ:
# line = line.replace(term, '\033[1;31m'+ term +'\033[0m');
# match += ' ' + line
if match != '':
result += cheatsheet[0] + ":\n" + match + "\n"

View File

@ -1,6 +1,7 @@
from __future__ import print_function
import os
import sys
import subprocess
def colorize(sheet_content):
@ -12,14 +13,29 @@ def colorize(sheet_content):
try:
from pygments import highlight
from pygments.lexers import BashLexer
from pygments.lexers import get_lexer_by_name
from pygments.formatters import TerminalFormatter
# if pygments can't load, just return the uncolorized text
except ImportError:
return sheet_content
return highlight(sheet_content, BashLexer(), TerminalFormatter())
# GMFTBY add
if sheet_content == '' :
# can not find the content about the term
die('Can not find the content !')
return
first_line = sheet_content.splitlines()[0]
lexer = get_lexer_by_name('bash')
if first_line.startswith('```'):
sheet_content = '\n'.join(sheet_content.split('\n')[1:-2])
try:
lexer = get_lexer_by_name(first_line[3:])
except Exception:
pass
return highlight(sheet_content, lexer, TerminalFormatter())
def die(message):
@ -30,20 +46,31 @@ def die(message):
def editor():
""" Determines the user's preferred editor """
if 'EDITOR' not in os.environ:
# determine which editor to use
editor = os.environ.get('CHEAT_EDITOR') \
or os.environ.get('VISUAL') \
or os.environ.get('EDITOR') \
or False
# assert that the editor is set
if editor == False:
die(
'In order to create/edit a cheatsheet you must set your EDITOR '
'environment variable to your editor\'s path.'
'You must set a CHEAT_EDITOR, VISUAL, or EDITOR environment '
'variable in order to create/edit a cheatsheet.'
)
elif os.environ['EDITOR'] == "":
die(
'Your EDITOR environment variable is set to an empty string. It must '
'be set to your editor\'s path.'
)
return editor
def open_with_editor(filepath):
""" Open `filepath` using the EDITOR specified by the environment variables """
editor_cmd = editor().split()
try:
subprocess.call(editor_cmd + [filepath])
except OSError:
die('Could not launch ' + editor())
else:
return os.environ['EDITOR']
def warn(message):
""" Prints a message to stderr """

BIN
man1/cheat.1.gz Normal file

Binary file not shown.

View File

@ -3,11 +3,11 @@ import os
setup(
name = 'cheat',
version = '2.1.26',
version = '2.2.32',
author = 'Chris Lane',
author_email = 'chris@chris-allen-lane.com',
license = 'GPL3',
description = 'cheat allows you to create and view interactive cheatsheets '
description = 'Custom cheat by e32 - cheat allows you to create and view interactive cheatsheets '
'on the command-line. It was designed to help remind *nix system '
'administrators of options for commands that they use frequently, but not '
'frequently enough to remember.',