Merge branch 'dev' into vhs
This commit is contained in:
		
							
								
								
									
										12
									
								
								basics/Joyous_ASCII.md
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										12
									
								
								basics/Joyous_ASCII.md
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,12 @@
 | 
				
			|||||||
 | 
					---
 | 
				
			||||||
 | 
					title: "Joyous ASCII"
 | 
				
			||||||
 | 
					tags: [ "fun" ]
 | 
				
			||||||
 | 
					---
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					- `asciiquarium`
 | 
				
			||||||
 | 
					- `cbonsai -lim "$(fortune)"`
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					```bash
 | 
				
			||||||
 | 
					cow=$(cowsay -l | sort -R | head  -1)
 | 
				
			||||||
 | 
					fortune -s | figlet | cowsay -nf $cow | lolcat
 | 
				
			||||||
 | 
					```
 | 
				
			||||||
							
								
								
									
										114
									
								
								basics/cron.md
									
									
									
									
									
								
							
							
						
						
									
										114
									
								
								basics/cron.md
									
									
									
									
									
								
							@@ -2,9 +2,11 @@
 | 
				
			|||||||
title: "cron"
 | 
					title: "cron"
 | 
				
			||||||
tags: [ "Documentation", "Basics" ]
 | 
					tags: [ "Documentation", "Basics" ]
 | 
				
			||||||
---
 | 
					---
 | 
				
			||||||
# Cron
 | 
					# Cronie
 | 
				
			||||||
 | 
					
 | 
				
			||||||
The crontab program might have various names, like `cronie` or `crond`.
 | 
					The `cronie` program is also known as `crond`.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					## Install
 | 
				
			||||||
 | 
					
 | 
				
			||||||
```bash
 | 
					```bash
 | 
				
			||||||
sudo apt search -n ^cron
 | 
					sudo apt search -n ^cron
 | 
				
			||||||
@@ -17,29 +19,33 @@ sudo systemctl list-unit-files | grep cron
 | 
				
			|||||||
sudo systemctl enable --now $NAME
 | 
					sudo systemctl enable --now $NAME
 | 
				
			||||||
```
 | 
					```
 | 
				
			||||||
 | 
					
 | 
				
			||||||
Make a file for your crontab, like this:
 | 
					## Usage
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					Show your current crontab:
 | 
				
			||||||
 | 
					
 | 
				
			||||||
```bash
 | 
					```bash
 | 
				
			||||||
echo '39 */3 * * * /usr/bin/updatedb' > "$USER".cron
 | 
					crontab -l
 | 
				
			||||||
 | 
					```
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					You can put this in a file and edit it:
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					```bash
 | 
				
			||||||
 | 
					crontab -l > $filename
 | 
				
			||||||
 | 
					echo '39 3 */3 * * /bin/tar czf /tmp/etc_backup.tgz /etc/' >> $filename
 | 
				
			||||||
```
 | 
					```
 | 
				
			||||||
 | 
					
 | 
				
			||||||
Then apply that crontab:
 | 
					Then apply that crontab:
 | 
				
			||||||
 | 
					
 | 
				
			||||||
```bash
 | 
					```bash
 | 
				
			||||||
crontab "$USER".cron
 | 
					crontab $filename
 | 
				
			||||||
rm "$USER".cron
 | 
					rm $filename
 | 
				
			||||||
```
 | 
					```
 | 
				
			||||||
 | 
					
 | 
				
			||||||
The `cron` program will check your syntax before adding the tab.
 | 
					The `cron` program will check your syntax before adding the tab.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
Your crontab file sits somewhere in `/var/spool/`.
 | 
					Your crontab file sits somewhere in `/var/spool/`.
 | 
				
			||||||
Probably in `/var/spool/cron`.
 | 
					Probably in `/var/spool/cron`.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
Check how your tab currently looks:
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
```bash
 | 
					 | 
				
			||||||
crontab -l
 | 
					 | 
				
			||||||
```
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
## Syntax
 | 
					## Syntax
 | 
				
			||||||
 | 
					
 | 
				
			||||||
`* * * * *`
 | 
					`* * * * *`
 | 
				
			||||||
@@ -50,43 +56,61 @@ These five points refer to:
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
So '3pm every Sunday' would be:
 | 
					So '3pm every Sunday' would be:
 | 
				
			||||||
 | 
					
 | 
				
			||||||
> 0 15 * * 7
 | 
					`0 15 * * 7`
 | 
				
			||||||
 | 
					
 | 
				
			||||||
Here 'Sunday' is indicated by "7", and '3pm' is 'the 15th hour'.
 | 
					Here 'Sunday' is indicated by "7", and '3pm' is 'the 15th hour'.
 | 
				
			||||||
The minute is '0' (i.e. '0 minutes past three pm').
 | 
					The minute is '0' (i.e. '0 minutes past three pm').
 | 
				
			||||||
 | 
					
 | 
				
			||||||
Doing the same thing, but only in February, would be:
 | 
					Doing the same thing, but only in February, would be:
 | 
				
			||||||
 | 
					
 | 
				
			||||||
> 0 15 * 2 7
 | 
					`0 15 * 2 7`
 | 
				
			||||||
 | 
					
 | 
				
			||||||
### Full Paths
 | 
					### Variables
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					`cronie` doesn't know where you live, so to put something in your `$HOME` directory, you have to tell it:
 | 
				
			||||||
 | 
					
 | 
				
			||||||
Executing something requires the full path to where it is, so you cannot simply use `apt update -y`, because cron does not know where `apt` is.
 | 
					 | 
				
			||||||
Instead, find out where it is:
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
```bash
 | 
					```bash
 | 
				
			||||||
type -P apt
 | 
					echo "HOME=$HOME" > $filename
 | 
				
			||||||
 | 
					crontab -l >> $filename
 | 
				
			||||||
 | 
					crontab $filename
 | 
				
			||||||
```
 | 
					```
 | 
				
			||||||
 | 
					
 | 
				
			||||||
`/usr/bin/apt`
 | 
					`cronie` doesn't know where anything lives, including programs.
 | 
				
			||||||
 | 
					You can give it your usual `$PATH` variable like this:
 | 
				
			||||||
 | 
					
 | 
				
			||||||
Then put that into the crontab:
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
```bash
 | 
					```bash
 | 
				
			||||||
sudo crontab -e
 | 
					echo $PATH > $filename
 | 
				
			||||||
 | 
					crontab -l >> $filename
 | 
				
			||||||
 | 
					crontab $filename
 | 
				
			||||||
```
 | 
					```
 | 
				
			||||||
 | 
					
 | 
				
			||||||
> 40 */3 * * * /usr/bin/apt update -y
 | 
					Now instead of doing this
 | 
				
			||||||
 | 
					
 | 
				
			||||||
This will run `apt update -y` as root every 3 hours, at 40 minutes past the hour, e.g. 00:40, 03:40, 06:40.
 | 
					`40 */3 * * * /usr/bin/du -sh $HOME/* | sort -h > $HOME/sum.txt`
 | 
				
			||||||
 | 
					
 | 
				
			||||||
## Directories
 | 
					You can simply do this: 
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					`40 */3 * * * du -sh $HOME/* | sort -h > $HOME/sum.txt`
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					## Run as Root
 | 
				
			||||||
 | 
					
 | 
				
			||||||
You can execute a script as root by putting it into a directory, instead of in the tab.
 | 
					You can execute a script as root by putting it into a directory, instead of in the tab.
 | 
				
			||||||
Look at the available cron directories:
 | 
					Look at the available cron directories:
 | 
				
			||||||
 | 
					
 | 
				
			||||||
```bash
 | 
					```bash
 | 
				
			||||||
ls /etc/cron.\*
 | 
					ls -d /etc/cron.*
 | 
				
			||||||
 | 
					```
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					Make a script which runs daily:
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					```bash
 | 
				
			||||||
 | 
					f=apt_update.sh
 | 
				
			||||||
 | 
					echo '#!/bin/bash' > $f
 | 
				
			||||||
 | 
					echo 'apt update --yes' >> $f
 | 
				
			||||||
 | 
					chmod +x $f
 | 
				
			||||||
 | 
					sudo mv $f /etc/cron.daily/
 | 
				
			||||||
```
 | 
					```
 | 
				
			||||||
 | 
					
 | 
				
			||||||
### Testing with runparts
 | 
					### Testing with runparts
 | 
				
			||||||
@@ -97,47 +121,9 @@ Run-parts runs all executable scripts in a directory.
 | 
				
			|||||||
run-parts /etc/cron.hourly
 | 
					run-parts /etc/cron.hourly
 | 
				
			||||||
```
 | 
					```
 | 
				
			||||||
 | 
					
 | 
				
			||||||
## Tips
 | 
					# Troubleshooting
 | 
				
			||||||
 | 
					 | 
				
			||||||
### Variables
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
Add your `$HOME` to crontab to use scripts.
 | 
					 | 
				
			||||||
First add `HOME=/home/$USER`, then you can use syntax like this:
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
0 * * * * $HOME/.scripts/myScript.sh
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
*Remember to test the script by executing that line first*:
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
```bash
 | 
					 | 
				
			||||||
$HOME/.scripts/myScript.sh
 | 
					 | 
				
			||||||
```
 | 
					 | 
				
			||||||
You can also add your regular path to your crontab as a variable (see example below).
 | 
					 | 
				
			||||||
If you're using vim as the editor, just run this at the top of your crontab:
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
```bash
 | 
					 | 
				
			||||||
:r!echo PATH=$PATH
 | 
					 | 
				
			||||||
```
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
### `date` Commands
 | 
					### `date` Commands
 | 
				
			||||||
 | 
					
 | 
				
			||||||
Cron doesn't understand the `%` sign, so if you want to use `date +%R`, then it should be escaped with a backslash: `date +\%R`.
 | 
					Cron doesn't understand the `%` sign, so if you want to use `date +%R`, then it should be escaped with a backslash: `date +\%R`.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
### File Location
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
The crontab files are in `/var/spool/cron/`, so you can backup or restore them.
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
# Example
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
```
 | 
					 | 
				
			||||||
HOME=/home/user
 | 
					 | 
				
			||||||
PATH=/usr/condabin:/usr/local/sbin:/usr/local/bin:/usr/bin:/usr/bin/site_perl:/usr/bin/vendor_perl:/usr/bin/core_perl:/home/user/.local/bin:/home/user/.scripts/:/home/user/.local/bin:/home/user/.scripts/
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
1 0 1 * *    /usr/bin/mkdir -p $HOME/arc/$(date +\%Y/\%m)
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
18 0 1 */3 * $HOME/.scripts/mail-clean.sh
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
* * * * * ping -c 1 home || mail-pull.sh
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
50 18 * * * /usr/bin/timeout 30m /usr/bin/syncthing
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
```
 | 
					 | 
				
			||||||
 
 | 
				
			|||||||
@@ -92,7 +92,7 @@ A branch is a full copy of the project to test additional ideas.
 | 
				
			|||||||
You can make a new branch called 'featurez' like this:
 | 
					You can make a new branch called 'featurez' like this:
 | 
				
			||||||
 | 
					
 | 
				
			||||||
```bash
 | 
					```bash
 | 
				
			||||||
git branch *featurez*
 | 
					git branch $FEATURE_BRANCH
 | 
				
			||||||
```
 | 
					```
 | 
				
			||||||
 | 
					
 | 
				
			||||||
Have a look at all your branches:
 | 
					Have a look at all your branches:
 | 
				
			||||||
@@ -104,19 +104,20 @@ git branch
 | 
				
			|||||||
Switch to your new branch:
 | 
					Switch to your new branch:
 | 
				
			||||||
 | 
					
 | 
				
			||||||
```bash
 | 
					```bash
 | 
				
			||||||
git checkout *featurez*
 | 
					git checkout $FEATURE_BRANCH
 | 
				
			||||||
```
 | 
					```
 | 
				
			||||||
 | 
					
 | 
				
			||||||
And if your changes are rubbish, checkout the "master" branch again, then delete "featurez":
 | 
					And if your changes are rubbish, checkout the "master" branch again, then delete "featurez":
 | 
				
			||||||
 | 
					
 | 
				
			||||||
```bash
 | 
					```bash
 | 
				
			||||||
git branch -D *featurez*
 | 
					git branch -D $FEATURE_BRANCH
 | 
				
			||||||
```
 | 
					```
 | 
				
			||||||
 | 
					
 | 
				
			||||||
Or if it's a good branch, push it to the remote:
 | 
					Or if it's a good branch, push it to the remote:
 | 
				
			||||||
 | 
					
 | 
				
			||||||
```bash
 | 
					```bash
 | 
				
			||||||
git push *origin* *featurez*
 | 
					remote=origin
 | 
				
			||||||
 | 
					git push $remote $FEATURE_BRANCH
 | 
				
			||||||
```
 | 
					```
 | 
				
			||||||
 | 
					
 | 
				
			||||||
## Merging
 | 
					## Merging
 | 
				
			||||||
@@ -124,13 +125,13 @@ git push *origin* *featurez*
 | 
				
			|||||||
Once you like the feature, merge it into the main branch.  Switch to master then merge it:
 | 
					Once you like the feature, merge it into the main branch.  Switch to master then merge it:
 | 
				
			||||||
 | 
					
 | 
				
			||||||
```bash
 | 
					```bash
 | 
				
			||||||
git merge *featurez*
 | 
					git merge $FEATURE_BRANCH
 | 
				
			||||||
```
 | 
					```
 | 
				
			||||||
 | 
					
 | 
				
			||||||
and delete `featurez` as you've already merged it:
 | 
					And delete the branch, as you've already merged it:
 | 
				
			||||||
 | 
					
 | 
				
			||||||
```bash
 | 
					```bash
 | 
				
			||||||
git branch -d featurez
 | 
					git branch -d $FEATURE_BRANCH
 | 
				
			||||||
```
 | 
					```
 | 
				
			||||||
 | 
					
 | 
				
			||||||
# Subtree
 | 
					# Subtree
 | 
				
			||||||
@@ -141,34 +142,6 @@ git branch -d featurez
 | 
				
			|||||||
git subtree add -P config git@gitlab.com:bindrpg/config.git master
 | 
					git subtree add -P config git@gitlab.com:bindrpg/config.git master
 | 
				
			||||||
```
 | 
					```
 | 
				
			||||||
 | 
					
 | 
				
			||||||
## Pulling a Subtree from an existing git
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
The project has subdirectories sub-1,sub-2,sub-3.  The first should be its own repository, but should also retain its own history.
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
First, we extract its history as an independent item, and make that into a seprate branch.
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
```bash
 | 
					 | 
				
			||||||
git subtree split --prefix=sub-1 -b sub
 | 
					 | 
				
			||||||
```
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
If you want something a few directories deep, you can use `--prefix=sub-1/dir-2/dir-3
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
Then go and create a new git somewhere else:
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
```bash
 | 
					 | 
				
			||||||
cd ..;mkdir sub-1;cd sub-1;git init --bare
 | 
					 | 
				
			||||||
```
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
Then go back to your initial git repo, and do the following:
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
git push ../subtest sub:master
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
Finally, you can clone this repo from your original.
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
```bash
 | 
					 | 
				
			||||||
git clone ../subtest
 | 
					 | 
				
			||||||
```
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
# Tricks
 | 
					# Tricks
 | 
				
			||||||
 | 
					
 | 
				
			||||||
## Delete All History
 | 
					## Delete All History
 | 
				
			||||||
 
 | 
				
			|||||||
							
								
								
									
										9
									
								
								data/git/git_secret.md
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										9
									
								
								data/git/git_secret.md
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,9 @@
 | 
				
			|||||||
 | 
					---
 | 
				
			||||||
 | 
					title: "git secret"
 | 
				
			||||||
 | 
					tags: [ "data", "git" ]
 | 
				
			||||||
 | 
					---
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					This utility is largely useless, as it can only identify people by their email.
 | 
				
			||||||
 | 
					So if someone has multiple GPG keys associated with one email, the tool will not work.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					Worse than not working, it may 'suddenly' stop working as you try to transfer a secret to someone, who then discovers that `git-secret` requires them to mess about with their GPG keyring in order to use the repository.
 | 
				
			||||||
							
								
								
									
										34
									
								
								data/git/subtree.md
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										34
									
								
								data/git/subtree.md
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,34 @@
 | 
				
			|||||||
 | 
					---
 | 
				
			||||||
 | 
					title: "git"
 | 
				
			||||||
 | 
					tags: [ "Documentation", "data", "git", "subtree" ]
 | 
				
			||||||
 | 
					---
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					## Pulling a Subtree from an existing git
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					The project has subdirectories `sub-1`, `sub-2`, `sub-3`.
 | 
				
			||||||
 | 
					The first should be its own repository, but should also retain its own history.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					First, we extract its history as an independent item, and make that into a seprate branch.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					```bash
 | 
				
			||||||
 | 
					git subtree split --prefix=sub-1 -b sub
 | 
				
			||||||
 | 
					```
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					If you want something a few directories deep, you can use `--prefix=sub-1/dir-2/dir-3
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					Then go and create a new git somewhere else:
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					```bash
 | 
				
			||||||
 | 
					cd ..;mkdir sub-1;cd sub-1;git init --bare
 | 
				
			||||||
 | 
					```
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					Then go back to your initial git repo, and do the following:
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					git push ../subtest sub:master
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					Finally, you can clone this repo from your original.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					```bash
 | 
				
			||||||
 | 
					git clone ../subtest
 | 
				
			||||||
 | 
					```
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@@ -1,10 +1,47 @@
 | 
				
			|||||||
---
 | 
					---
 | 
				
			||||||
title: "sc-im"
 | 
					title: "sc-im"
 | 
				
			||||||
tags: [ "Documentation", "data" ]
 | 
					tags: [ "Documentation", "TUI", "data" ]
 | 
				
			||||||
---
 | 
					---
 | 
				
			||||||
# Edit
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
## Text
 | 
					- [Sample file](sc-im/sample.sc)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					# Basic Commands
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					## See Cells
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					Cells are hard to see.
 | 
				
			||||||
 | 
					Change this with `:set autowrap`.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					Make `sc-im` always autowrap:
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					```bash
 | 
				
			||||||
 | 
					mkdir .config/sc-im/bash
 | 
				
			||||||
 | 
					echo 'set autowrap' >> .config/sc-im/scimrc
 | 
				
			||||||
 | 
					```
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					## Movement
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					| Command                             | Key |
 | 
				
			||||||
 | 
					|:------------------------------------|:---:|
 | 
				
			||||||
 | 
					| highest part                        | H   |
 | 
				
			||||||
 | 
					| lowest part                         | L   |
 | 
				
			||||||
 | 
					| top                                 | gg  |
 | 
				
			||||||
 | 
					| most right.                         | g$  |
 | 
				
			||||||
 | 
					| most left.                          | g0  |
 | 
				
			||||||
 | 
					| insert middle                       | \   |
 | 
				
			||||||
 | 
					| insert left                         | \>  |
 | 
				
			||||||
 | 
					| insert right                        | <   |
 | 
				
			||||||
 | 
					| to to cell b4                       | gb4 |
 | 
				
			||||||
 | 
					| see all text in cells               | aa  |
 | 
				
			||||||
 | 
					| format cells so you can see it.     | f   |
 | 
				
			||||||
 | 
					| format wider right                  | fl  |
 | 
				
			||||||
 | 
					| format smaller left                 | fh  |
 | 
				
			||||||
 | 
					| format wider down                   | fj  |
 | 
				
			||||||
 | 
					| format smaller down                 | fk  |
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					## Edit
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					### Text
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| Action                | Key |
 | 
					| Action                | Key |
 | 
				
			||||||
|:----------------------|:---:|
 | 
					|:----------------------|:---:|
 | 
				
			||||||
@@ -13,7 +50,7 @@ tags: [ "Documentation", "data" ]
 | 
				
			|||||||
| text (right align)    | `|` |
 | 
					| text (right align)    | `|` |
 | 
				
			||||||
| Edit existing  text   | E   |
 | 
					| Edit existing  text   | E   |
 | 
				
			||||||
 | 
					
 | 
				
			||||||
## Meta Actions
 | 
					### Meta Actions
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| Action                | Key |
 | 
					| Action                | Key |
 | 
				
			||||||
|:----------------------|:---:|
 | 
					|:----------------------|:---:|
 | 
				
			||||||
@@ -46,7 +83,7 @@ tags: [ "Documentation", "data" ]
 | 
				
			|||||||
| format smaller down             | fk  |
 | 
					| format smaller down             | fk  |
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
## Functions
 | 
					### Functions
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| Action                          | Key          |
 | 
					| Action                          | Key          |
 | 
				
			||||||
|:--------------------------------|:------------:|
 | 
					|:--------------------------------|:------------:|
 | 
				
			||||||
@@ -56,7 +93,7 @@ tags: [ "Documentation", "data" ]
 | 
				
			|||||||
|  minimumof those numbers        | =@min(B1:B8) |
 | 
					|  minimumof those numbers        | =@min(B1:B8) |
 | 
				
			||||||
|  multiply C1 to C8              | =@prod(C1:C8)|
 | 
					|  multiply C1 to C8              | =@prod(C1:C8)|
 | 
				
			||||||
 | 
					
 | 
				
			||||||
## Visual
 | 
					### Visual
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| Action                          | Key          |
 | 
					| Action                          | Key          |
 | 
				
			||||||
|:--------------------------------|:------------:|
 | 
					|:--------------------------------|:------------:|
 | 
				
			||||||
 
 | 
				
			|||||||
							
								
								
									
										38
									
								
								data/sc-im/sample.sc
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										38
									
								
								data/sc-im/sample.sc
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,38 @@
 | 
				
			|||||||
 | 
					# This data file was generated by the Spreadsheet Calculator Improvised (sc-im)
 | 
				
			||||||
 | 
					# You almost certainly shouldn't edit it.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					newsheet "Sheet1"
 | 
				
			||||||
 | 
					movetosheet "Sheet1"
 | 
				
			||||||
 | 
					offscr_sc_cols 0
 | 
				
			||||||
 | 
					offscr_sc_rows 0
 | 
				
			||||||
 | 
					nb_frozen_rows 1
 | 
				
			||||||
 | 
					nb_frozen_cols 0
 | 
				
			||||||
 | 
					nb_frozen_screenrows 2
 | 
				
			||||||
 | 
					nb_frozen_screencols 0
 | 
				
			||||||
 | 
					format A 14 1 0
 | 
				
			||||||
 | 
					format B 18 2 0
 | 
				
			||||||
 | 
					format 0 2
 | 
				
			||||||
 | 
					freeze 0
 | 
				
			||||||
 | 
					label A0 = "Food by Weight"
 | 
				
			||||||
 | 
					leftstring B0 = "No. Meals"
 | 
				
			||||||
 | 
					leftstring A1 = "Ajvar"
 | 
				
			||||||
 | 
					let A1 = 5
 | 
				
			||||||
 | 
					let B1 = A1*$A$10
 | 
				
			||||||
 | 
					leftstring A2 = "Apples"
 | 
				
			||||||
 | 
					let A2 = 3
 | 
				
			||||||
 | 
					let B2 = A2*$A$10
 | 
				
			||||||
 | 
					leftstring A3 = "Rocket"
 | 
				
			||||||
 | 
					let A3 = 0.2
 | 
				
			||||||
 | 
					let B3 = A3*$A$10
 | 
				
			||||||
 | 
					leftstring A4 = "Beli Cheese"
 | 
				
			||||||
 | 
					let A4 = 1
 | 
				
			||||||
 | 
					let B4 = A4*$A$10
 | 
				
			||||||
 | 
					leftstring A6 = "Total"
 | 
				
			||||||
 | 
					let A6 = @sum(A1:A4)
 | 
				
			||||||
 | 
					leftstring B6 = "Total"
 | 
				
			||||||
 | 
					let B6 = @sum(B1:B4)
 | 
				
			||||||
 | 
					leftstring A7 = "Average"
 | 
				
			||||||
 | 
					let A7 = @avg(A1:A4)
 | 
				
			||||||
 | 
					leftstring A10 = "Weight of Meal"
 | 
				
			||||||
 | 
					let A10 = 0.3
 | 
				
			||||||
 | 
					goto A0
 | 
				
			||||||
@@ -39,7 +39,7 @@ Try placing this in a file:
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
> [ One ] { fill: seagreen; color: white; } -- label --> [ Two ] { shape: triangle; }
 | 
					> [ One ] { fill: seagreen; color: white; } -- label --> [ Two ] { shape: triangle; }
 | 
				
			||||||
> 
 | 
					> 
 | 
				
			||||||
> [ One ] => { arrow-style: closed; } [ Three ]
 | 
					> [ One ] => { arrow-style: closed; } [ Three ] { border-style: none; }
 | 
				
			||||||
> 
 | 
					> 
 | 
				
			||||||
> [ Five ] { fill: maroon; color: yellow; } <=> [ Three ]
 | 
					> [ Five ] { fill: maroon; color: yellow; } <=> [ Three ]
 | 
				
			||||||
> 
 | 
					> 
 | 
				
			||||||
@@ -54,3 +54,15 @@ Try placing this in a file:
 | 
				
			|||||||
> [ Eight ] .. [ None ] { shape: none; fill: red; color: brown; }
 | 
					> [ Eight ] .. [ None ] { shape: none; fill: red; color: brown; }
 | 
				
			||||||
> 
 | 
					> 
 | 
				
			||||||
> [ no Network ] --> [ Is there an IP address? ]
 | 
					> [ no Network ] --> [ Is there an IP address? ]
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					> [ Little Group: o]
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					```
 | 
				
			||||||
 | 
					echo "( EU [ Madrid ] <---> [ K ] {label: Karlsruhe;}
 | 
				
			||||||
 | 
					    <== ...O\n ..o\n .O\no \nchoo choo  ==> [ Cern ] [ Cern ] <== ...O\n ..o\n .O\no \nchoo choo  ==> [ Paris ] <...> [ B ] {label: Budapest} )
 | 
				
			||||||
 | 
					    [ B ] <---> [ Belgrade ] [ G ] {label: Glasgow; }
 | 
				
			||||||
 | 
					    <==> [ M ] {label: Manchester },
 | 
				
			||||||
 | 
					    [ Madrid ] <---> [ Belgrade ] [ M ] <--> [ London ] <--> [ B ],
 | 
				
			||||||
 | 
					        [ Belgrade ]" | graph-easy  --boxart
 | 
				
			||||||
 | 
					```
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -13,11 +13,14 @@ The ordering of `/etc/fstab` is
 | 
				
			|||||||
5. dump
 | 
					5. dump
 | 
				
			||||||
6. pass
 | 
					6. pass
 | 
				
			||||||
 | 
					
 | 
				
			||||||
E.g.:
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
> UUID=877f14e8-4738-46b0-884f-ba330dad1a7d       /mnt/biggie                     ext4        nofail,rw,relatime      0 2
 | 
					*Example:*
 | 
				
			||||||
> 
 | 
					
 | 
				
			||||||
> UUID=B21648C416488AF5 /mnt/share ntfs       nofail,rw,nosuid,nodev,user_id=0,group_id=0,allow_other,blksize=4096 0 0
 | 
					```
 | 
				
			||||||
 | 
					UUID=877f14e8-4738-46b0-884f-ba330dad1a7d       /mnt/biggie                     ext4        nofail,rw,relatime      0 2
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					UUID=B21648C416488AF5 /mnt/share ntfs       nofail,rw,nosuid,nodev,user_id=0,group_id=0,allow_other,blksize=4096 0 0
 | 
				
			||||||
 | 
					```
 | 
				
			||||||
 | 
					
 | 
				
			||||||
## 5: Dump
 | 
					## 5: Dump
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -22,3 +22,8 @@ REP=5
 | 
				
			|||||||
free --lohi -g -s $REP | lolcat
 | 
					free --lohi -g -s $REP | lolcat
 | 
				
			||||||
```
 | 
					```
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					Check the next thing cron will do:
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					```bash
 | 
				
			||||||
 | 
					cronnext /var/spool/cron/$USER -l
 | 
				
			||||||
 | 
					```
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -10,6 +10,12 @@ See a running log of all system messages:
 | 
				
			|||||||
journalctl -f
 | 
					journalctl -f
 | 
				
			||||||
```
 | 
					```
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					Or just one user:
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					```bash
 | 
				
			||||||
 | 
					journalctl --user -f
 | 
				
			||||||
 | 
					```
 | 
				
			||||||
 | 
					
 | 
				
			||||||
Or just one unit (`sshd`):
 | 
					Or just one unit (`sshd`):
 | 
				
			||||||
 | 
					
 | 
				
			||||||
```bash
 | 
					```bash
 | 
				
			||||||
 
 | 
				
			|||||||
		Reference in New Issue
	
	Block a user