Compare commits

...

12 Commits

6 changed files with 457 additions and 353 deletions
+1 -1
View File
@@ -34,7 +34,7 @@ default += .dbs/map.fmt
include cmd.mk include cmd.mk
.dbs/head.rec: | .dbs/ $(lists) .dbs/head.rec: | .dbs/
printf '%s\n' '%rec: guide' > $@ printf '%s\n' '%rec: guide' > $@
printf '%s\n' '%key: path' >> $@ printf '%s\n' '%key: path' >> $@
printf '%s\n' '%type: requires rec guide' >> $@ printf '%s\n' '%type: requires rec guide' >> $@
-5
View File
@@ -2,8 +2,6 @@
cmds != recsel command.rec -t command -G bin -CP bin | sort -u cmds != recsel command.rec -t command -G bin -CP bin | sort -u
lists = $(patsubst %,lists/%.md, $(cmds)) lists = $(patsubst %,lists/%.md, $(cmds))
default += $(lists)
get_title = printf 'title: %s\n' '${1}' get_title = printf 'title: %s\n' '${1}'
get_tags = recsel -t $(basename $<) $< -G bin \ get_tags = recsel -t $(basename $<) $< -G bin \
-e 'bin = "$(1)"' -U -CP tag,bin | \ -e 'bin = "$(1)"' -U -CP tag,bin | \
@@ -20,9 +18,6 @@ $(lists): lists/%.md: command.rec | lists/
@printf '%s\n' '---' >> $@ @printf '%s\n' '---' >> $@
@$(call list_commands,$(basename $(notdir $@))) >> $@ @$(call list_commands,$(basename $(notdir $@))) >> $@
.PHONY: cmd
cmd: $(lists) ## Big lists of commands
.PHONY: function .PHONY: function
function: ## Output a search function for .bashrc function: ## Output a search function for .bashrc
${MAKE} --silent --touch query ${MAKE} --silent --touch query
+409 -322
View File
@@ -1,8 +1,54 @@
%rec: command %rec: command
%doc: shell command examples %doc: shell command examples
%type: aim line %type: aim,bin line
%allowed: aim cmd bin tag note shell %allowed: aim cmd bin tag note shell
%unique: shell %unique: shell
%sort: shell bin
aim: Roll a die
cmd: echo $(( RANDOM % 6+1 ))
shell: bash
tag: random
aim: Decode a URL with function
cmd: urldecode() { echo -e "${@//%/\\x}"; }
+ urldecode "${magnet}"
tag: web
shell: bash
aim: Find your public IP address
cmd: dig +short myip.opendns.com @resolver$((RANDOM % 4 + 1)).opendns.com
shell: bash
bin: dig
tag: ip
tag: network
aim: Turn markdown into a man page
cmd: man <(lowdown -stman ${file}.md)
cmd: top_title="Bugs in netcat"
+ someplace=LK
+ vol=Security
+ sec=6
+ lowdown -m manheader="${top_title}" -m source="${someplace}" -m volume="${vol}" -m section=${sec} -stman ${file}.md > ${file}.${sec}
+ man ./${file}.${sec}
shell: bash
bin: lowdown
bin: groff
bin: man
tag: markdown
aim: Rotate a video
cmd: ffmpeg -i "${input}" -vf "transpose=1" "${out.mov}"
note:
+ | No. | Degrees | Flip |
+ |:---:|:-------:|:---------------------------------------------|
+ | 0 | 90 | Counterclockwise and verfical flip (default) |
+ | 1 | 90 | Clockwise |
+ | 2 | 90 | CounterClockwise |
+ | 3 | 90 | Clockwise and vertical flip |
tag: vision
tag: video
shell: sh
aim: Put output into columns aim: Put output into columns
cmd: ip a | grep inet | column -ts' ' cmd: ip a | grep inet | column -ts' '
@@ -37,294 +83,21 @@ bin: column
tag: format tag: format
tag: json tag: json
aim: Make a QR Code image aim: Request a definition from the terminal.
cmd: qrencode 'https://play.google.com/store/apps/details?id=org.briarproject.briar.android' -o "${file}".png cmd: word='abderian'
shell: sh + curl -s dict://dict.org/define:${word}:
bin: qrencode cmd: function wotsa(){
tag: qr + def="$(curl -s dict://dict.org/define:${1// /+}: | grep -vP '^\d\d\d ')"
+ if [ "$def" = "" ]; then
aim: Make a QR Coded message in the terminal + echo no definition
cmd: qrencode -t ansi "Hello World" + else
shell: sh + echo "$def" | $PAGER
bin: qrencode + fi
tag: qr + }
bin: curl
aim: Read a QR Code image
cmd: zbarimg ${file}
shell: sh
bin: qrencode
tag: qr
aim: Show wifi QR code (only with Network Manager)
cmd: nmcli device wifi show-password
shell: sh
bin: qrencode
bin: nmcli
tag: qr
tag: wifi
aim: Combine many recfiles of different types into one
cmd: sed '1i\ ' *.rec > all.rec
shell: sh
bin: sed
tag: recfiles
tag: database
aim: Combine many recfiles of the same type into one
cmd: recinf -d -t ${type} ${one}.rec > ${all}.rec
+ sed '/^%/d' ${one}.rec ${two}.rec > all.rec
note: The strange syntax used by `sed` only makes sense after using [ed](writing/ed.md)
shell: sh
bin: sed
bin: recinf
tag: recfiles
tag: database
aim: Roll a die
cmd: echo $(( RANDOM % 6+1 ))
shell: bash
tag: random
aim: Remotely edit a file with vim
cmd: vim scp://${server}/~/${file}
cmd: vim scp://${user}@${server}:${port}//${path}/${file}
shell: sh
bin: vim
bin: scp
tag: network
aim: Find and replace across all files open in vim
cmd: :bufdo! %s/${pattern}/${replacement}/g
shell: sh
bin: vim
tag: writing tag: writing
tag: replace
aim: Find and replace words, but confirm each replacement
cmd: vim -c "%s/${pattern}/${replacement}/gc" -c 'wq' ${file}
shell: sh
bin: vim
tag: replace
tag: substitution
tag: TUI
tag: writing
aim: Hard reset ntp service
cmd: sudo ntpd -q -g -x -n
bin: ntpd
tag: time
tag: system
aim: Check a service
cmd: sudo systemctl status mpd
shell: sh
bin: systemd
tag: system
tag: service
aim: Recognize service changes
cmd: sudo systemctl daemon-reload
shell: sh
bin: systemd
tag: system
tag: service
aim: Start a service (it stops when the computer shuts down)
cmd: sudo systemctl taskd.service start
+ sudo systemctl daemon-reload
shell: sh
bin: systemd
tag: system
tag: service
aim: Find out why the computer takes so long to start
cmd: sudo systemd-analyze
+ sudo systemd-analyze blame
shell: sh
bin: systemd
tag: system
tag: boot
aim: See what the computer is doing
cmd: journalctl -f
shell: sh
bin: journalctl
tag: system
aim: Check your own user services:
cmd: journalctl -f
shell: sh
bin: journalctl
tag: system
aim: Follow the `ssh` daemon service
cmd: journalctl -f -u sshd
shell: sh
bin: journalctl
tag: system
aim: Find errors since a date
cmd: date=2027-01-01
+ journalctl --since=${date} --grep="EXT4-fs error"
shell: sh
bin: journalctl
tag: system
aim: Limit the journal's size to 2 gigabytes
cmd: journalctl --vacuum-size=2G
shell: sh
bin: journalctl
tag: system
aim: Log the fact that you've installed your own `dnsmasq` on your system to `journalctl`, so that you can determine why your system's broken later
cmd: logger "Installed new dnsmasq"
+ sudo journalctl -f
shell: sh
bin: journalctl
tag: system
aim: Convert markdown table to csv
cmd: mlr --imarkdown --ocsv cat ${file}.md
bin: mlr
tag: csv
tag: markdown
tag: data
aim: Convert a csv file to markdown
cmd: mlr --icsv --omd cat ${file}.csv
bin: mlr
tag: csv
tag: markdown
aim: Quickly find and open run-command files
cmd: alias rrc='$PAGER "$(find . -maxdepth 2 -name "*rc" | fzf)"'
bin: fzf
bin: find
tag: comfy tag: comfy
tag: dict
aim: Quickly hunt and kill processes
cmd: kill $(pgrep less | fzf -m --preview='ps {}')
note: Select many with shift/tab.
bin: fzf
tag: comfy
aim: Search for a short word
cmd: grep "\b${word}\b" ${file}
bin: grep
tag: search
aim: Extract words in quotes
cmd: grep -o "\b${word}\b" ${file}
bin: grep
tag: search
aim: Reformat variable for shell input
cmd: printf "%q\n" "${variable}"
bin: printf
tag: xargs
tag: stdout
aim: Find your public IP address
cmd: dig +short myip.opendns.com @resolver$((RANDOM % 4 + 1)).opendns.com
shell: bash
bin: dig
tag: ip
tag: network
aim: Turn markdown into a man page
cmd: man <(lowdown -stman ${file}.md)
cmd: top_title="Bugs in netcat"
+ someplace=LK
+ vol=Security
+ sec=6
+ lowdown -m manheader="${top_title}" -m source="${someplace}" -m volume="${vol}" -m section=${sec} -stman ${file}.md > ${file}.${sec}
+ man ./${file}.${sec}
shell: bash
bin: lowdown
bin: groff
bin: man
tag: markdown
aim: Convert jpg to png
cmd: magick ${input}.jpg ${output}.png
bin: magick
tag: vision
aim: Reduce jpg size by reducing quality
cmd: quality=70
+ magick ${input}.jpg -quality ${quality} ${output}.jpg
cmd: size=50
+ magick -resize ${size}% ${input}.jpg ${output}.jpg
bin: magick
tag: vision
aim: Reduce png size
cmd: magick ${input}.png png8:${output}.png
bin: magick
tag: vision
aim: Invert jpg colours
cmd: magick ${input}.jpg ${output}.jpg -negate
bin: magick
tag: vision
aim: Make jpg smaller
cmd: magick ${input}.jpg -resize 25% ${output}.jpg
bin: magick
tag: vision
aim: Trim images to border
cmd: magick -trim ${image}.png ${output}.png
bin: magick
tag: vision
aim: Make the white of an image transparent
cmd: magick -transparent white -fuzz 10% ${input}.png ${output}.png
bin: magick
tag: vision
note: The 'fuzz' option tells the computer that 'close to white' is fine. You might want to use 20% or higher fuzz.
aim: Give transparrent image a dropshadow
cmd: magick ${input}.png \( +clone -background black -shadow 50x8+0+5 \) +swap -background none -layers merge +repage ${output}.png
bin: magick
tag: vision
aim: Convert every jpg in directory to png
cmd: mogrify -format png *.jpg
bin: magick
tag: vision
aim: Convert from jpg to svg
cmd: magick -flatten ${input}.jpg ${output}.ppm
+ potrace -s ${output}.ppm -o ${svgout}.svg
bin: magick
tag: vision
aim: Make an image showing day of the week
cmd: magick -list font
+ font="$(magick -list font | grep -oP 'Font: \K.*' | head -1)"
+
+ magick -fill blue -font "${font}" -gravity center -pointsize 79 label:$(date +%A) day.png
bin: magick
tag: vision
aim: Make a meme
cmd: magick ${input} -font impact -fill white -pointsize 84 -stroke black -strokewidth 3 -gravity north -annotate +0+20 'TOP MEME TEXT' -gravity south -annotate +0+20 'BOTTOM MEME TEXT' ${output}
bin: magick
tag: vision
tag: memes
aim: Rotate a video
cmd: ffmpeg -i "${input}" -vf "transpose=1" "${out.mov}"
note:
+ | No. | Degrees | Flip |
+ |:---:|:-------:|:---------------------------------------|
+ | 0 | 90 Counterclockwise and verfical flip (default) |
+ | 1 | 90 Clockwise |
+ | 2 | 90 CounterClockwise |
+ | 3 | 90Clockwise and vertical flip |
tag: vision
tag: video
shell: sh shell: sh
aim: Translate a media file to a new type aim: Translate a media file to a new type
@@ -413,48 +186,23 @@ bin: ffmpeg
tag: vision tag: vision
shell: sh shell: sh
aim: Convert a web page to markdown aim: Quickly find and open run-command files
cmd: curl -sL "${url}" | html2markdown > "${file}}".md cmd: alias rrc='$PAGER "$(find . -maxdepth 2 -name "*rc" | fzf)"'
cmd: curl -sL "${url}" | html2text > "${file}}".md
note: The `[html2markdown](https://github.com/JohannesKaufmann/html-to-markdown)` and `html2md` programs works better than any other.
bin: html2markdown
bin: curl
tag: writing
tag: web
shell: sh shell: sh
bin: fzf
aim: Decode a URL with function bin: find
cmd: urldecode() { echo -e "${@//%/\\x}"; }
+ urldecode "${magnet}"
tag: web
shell: bash
aim: Choose which parts to commit with git
cmd: git commit -p
note: Use `P` to see big changes which cannot fit on the screen.
tag: comfy tag: comfy
bin: git
shell: sh
aim: Request a definition from the terminal. aim: Quickly hunt and kill processes
cmd: word='abderian' cmd: kill $(pgrep less | fzf -m --preview='ps {}')
+ curl -s dict://dict.org/define:${word}: note: Select many with shift/tab.
cmd: function wotsa(){
+ def="$(curl -s dict://dict.org/define:${1// /+}: | grep -vP '^\d\d\d ')"
+ if [ "$def" = "" ]; then
+ echo no definition
+ else
+ echo "$def" | $PAGER
+ fi
+ }
bin: curl
tag: writing
tag: comfy
tag: dict
shell: sh shell: sh
bin: fzf
tag: comfy
aim: Email a pull request which points to your git server aim: Email a pull request which points to your git server
tag: git tag: git
shell: sh
bin: git bin: git
tag: email tag: email
tag: pr tag: pr
@@ -465,6 +213,13 @@ cmd: repo=ssh://soft.dmz.rs:2222/mkdots/
note: You can note where your branch diverged from theirs with a commit hash, note: You can note where your branch diverged from theirs with a commit hash,
+ or a relative position, like `HEAD^^` (e.g. 'two commits before your latest'). + or a relative position, like `HEAD^^` (e.g. 'two commits before your latest').
aim: Choose which parts to commit with git
cmd: git commit -p
note: Use `P` to see big changes which cannot fit on the screen.
tag: comfy
bin: git
shell: sh
aim: Clean up a bloated git repo aim: Clean up a bloated git repo
cmd: git fsck --full cmd: git fsck --full
+ git gc --prune=now --aggressive + git gc --prune=now --aggressive
@@ -473,3 +228,335 @@ bin: git
tag: maintenance tag: maintenance
shell: sh shell: sh
aim: Search for a short word
cmd: grep "\b${word}\b" ${file}
shell: sh
bin: grep
tag: search
aim: Extract words in quotes
cmd: grep -o "\b${word}\b" ${file}
shell: sh
bin: grep
tag: search
aim: Convert a web page to markdown
cmd: curl -sL "${url}" | html2markdown > "${file}}".md
cmd: curl -sL "${url}" | html2text > "${file}}".md
note: The `[html2markdown](https://github.com/JohannesKaufmann/html-to-markdown)` and `html2md` programs works better than any other.
bin: html2markdown
bin: curl
tag: writing
tag: web
shell: sh
aim: Run commands in background
cmd: du -sh .* | sort -h | tail &
cmd: jobs
cmd: grep -ri password /etc/ &
cmd: jobs
shell: sh
bin: jobs
tag: shell
tag: comfy
aim: Stop background command having output
cmd: disown
note: The command will continue as it was. You can see it with `top`.
shell: sh
bin: jobs
tag: shell
tag: comfy
aim: See what the computer is doing
cmd: journalctl -f
shell: sh
bin: journalctl
tag: system
aim: Check your own user services:
cmd: journalctl -f
shell: sh
bin: journalctl
tag: system
aim: Follow the `ssh` daemon service
cmd: journalctl -f -u sshd
shell: sh
bin: journalctl
tag: system
aim: Find errors since a date
cmd: date=2027-01-01
+ journalctl --since=${date} --grep="EXT4-fs error"
shell: sh
bin: journalctl
tag: system
aim: Limit the systemd's journal size to 2 gigabytes
cmd: journalctl --vacuum-size=2G
+ journalctl --disk-usage
shell: sh
bin: journalctl
tag: system
tag: logs
aim: Log the fact that you've installed your own `dnsmasq` on your system to `journalctl`, so that you can determine why your system's broken later
cmd: logger "Installed new dnsmasq"
+ sudo journalctl -f
shell: sh
bin: journalctl
bin: logger
tag: system
tag: logs
aim: Convert jpg to png
cmd: magick ${input}.jpg ${output}.png
shell: sh
bin: magick
tag: vision
aim: Reduce jpg size by reducing quality
cmd: quality=70
+ magick ${input}.jpg -quality ${quality} ${output}.jpg
cmd: size=50
+ magick -resize ${size}% ${input}.jpg ${output}.jpg
shell: sh
bin: magick
tag: vision
aim: Reduce png size
cmd: magick ${input}.png png8:${output}.png
shell: sh
bin: magick
tag: vision
aim: Invert jpg colours
cmd: magick ${input}.jpg ${output}.jpg -negate
shell: sh
bin: magick
tag: vision
aim: Make jpg smaller
cmd: magick ${input}.jpg -resize 25% ${output}.jpg
shell: sh
bin: magick
tag: vision
aim: Trim images to border
cmd: magick -trim ${image}.png ${output}.png
shell: sh
bin: magick
tag: vision
aim: Make the white of an image transparent
cmd: magick -transparent white -fuzz 10% ${input}.png ${output}.png
shell: sh
bin: magick
tag: vision
note: The 'fuzz' option tells the computer that 'close to white' is fine. You might want to use 20% or higher fuzz.
aim: Give transparrent image a dropshadow
cmd: magick ${input}.png \( +clone -background black -shadow 50x8+0+5 \) +swap -background none -layers merge +repage ${output}.png
shell: sh
bin: magick
tag: vision
aim: Convert every jpg in directory to png
cmd: mogrify -format png *.jpg
shell: sh
bin: magick
tag: vision
aim: Convert from jpg to svg
cmd: magick -flatten ${input}.jpg ${output}.ppm
+ potrace -s ${output}.ppm -o ${svgout}.svg
shell: sh
bin: magick
tag: vision
aim: Make an image showing day of the week
cmd: magick -list font
+ font="$(magick -list font | grep -oP 'Font: \K.*' | head -1)"
+
+ magick -fill blue -font "${font}" -gravity center -pointsize 79 label:$(date +%A) day.png
shell: sh
bin: magick
tag: vision
aim: Make a meme
cmd: magick ${input} -font impact -fill white -pointsize 84 -stroke black -strokewidth 3 -gravity north -annotate +0+20 'TOP MEME TEXT' -gravity south -annotate +0+20 'BOTTOM MEME TEXT' ${output}
shell: sh
bin: magick
tag: vision
tag: memes
aim: Convert markdown table to csv
cmd: mlr --imarkdown --ocsv cat ${file}.md
shell: sh
bin: mlr
tag: csv
tag: markdown
tag: data
aim: Convert a csv file to markdown
cmd: mlr --icsv --omd cat ${file}.csv
shell: sh
bin: mlr
tag: csv
tag: markdown
aim: Hard reset ntp service
cmd: sudo ntpd -q -g -x -n
shell: sh
bin: ntpd
tag: time
tag: system
aim: Uncompress a PDF
cmd: pdftk ${input}.pdf output ${output}.pdf uncompress
shell: sh
bin: pdftk
tag: pdf
tag: compression
aim: Reformat text for shell input
cmd: printf "%q\n" "${text}"
shell: sh
bin: printf
tag: xargs
tag: stdout
aim: Make a QR Code image
cmd: qrencode 'https://play.google.com/store/apps/details?id=org.briarproject.briar.android' -o "${file}".png
shell: sh
bin: qrencode
tag: qr
aim: Make a QR Coded message in the terminal
cmd: qrencode -t ansi "Hello World"
shell: sh
bin: qrencode
tag: qr
aim: Read a QR Code image
cmd: zbarimg ${file}
shell: sh
bin: qrencode
tag: qr
aim: Show wifi QR code (only with Network Manager)
cmd: nmcli device wifi show-password
shell: sh
bin: qrencode
bin: nmcli
tag: qr
tag: wifi
aim: Combine many recfiles of different types into one
cmd: sed '1i\ ' *.rec > all.rec
shell: sh
bin: sed
tag: recfiles
tag: database
aim: Combine many recfiles of the same type into one
cmd: recinf -d -t ${type} ${one}.rec > ${all}.rec
+ sed '/^%/d' ${one}.rec ${two}.rec > all.rec
note: The strange syntax used by `sed` only makes sense after using [ed](writing/ed.md)
shell: sh
bin: sed
bin: recinf
tag: recfiles
tag: database
aim: Get back terminal after ssh freezes remote machine
cmd: <Return>~.
shell: sh
bin: ssh
tag: system
tag: comfy
aim: Check a service
cmd: sudo systemctl status mpd
shell: sh
bin: systemd
tag: system
tag: service
aim: Recognize service changes
cmd: sudo systemctl daemon-reload
shell: sh
bin: systemd
tag: system
tag: service
aim: Start a service (it stops when the computer shuts down)
cmd: sudo systemctl taskd.service start
+ sudo systemctl daemon-reload
shell: sh
bin: systemd
tag: system
tag: service
aim: Find out why the computer takes so long to start
cmd: sudo systemd-analyze
+ sudo systemd-analyze blame
shell: sh
bin: systemd
tag: system
tag: boot
aim: Remotely edit a file with vim
cmd: vim scp://${server}/~/${file}
cmd: vim scp://${user}@${server}:${port}//${path}/${file}
shell: sh
bin: vim
bin: scp
tag: network
aim: Read info files with vim
cmd: info ()
+ {
+ [ -n "$1" ] && file="${1}" || file="$(ls /usr/share/info/ | sed 's/\.info.gz$//' | fzf )";
+ file="$(ls /usr/share/info/"$file"* | fzf -1 )"
+ vim "$file"
+ }
shell: sh
bin: vim
bin: info
tag: documentation
aim: Find and replace across all files open in vim
cmd: :bufdo! %s/${pattern}/${replacement}/g
shell: sh
bin: vim
tag: writing
tag: replace
aim: Find and replace words, but confirm each replacement
cmd: vim -c "%s/${pattern}/${replacement}/gc" -c 'wq' ${file}
shell: sh
bin: vim
tag: replace
tag: substitution
tag: TUI
tag: writing
aim: Edit users in /etc/passwd directly
cmd: sudo vipw
note: You can't edit passwords with black magic.
shell: sh
bin: vipw
bin: sudo
tag: system
tag: users
aim: Edit groups in /etc/group directly
cmd: sudo vigr
note: You can't edit passwords with black magic.
shell: sh
bin: vipw
bin: sudo
tag: system
tag: groups
+20 -20
View File
@@ -16,23 +16,23 @@ Make a database for your boardgames, specifying only one field and value:
database=games.rec database=games.rec
n=Name n=Name
g=Vojvodina g=Vojvodina
touch $database touch ${database}
recins -f $n --value $g $database recins -f ${n} --value ${g} ${database}
recsel $database recsel ${database}
``` ```
Insert a few more, with the estimated playtime: Insert a few more, with the estimated playtime:
```sh ```sh
recins -f Name -v Saboter -f Playtime -v 30 $database recins -f Name -v Saboter -f Playtime -v 30 ${database}
recins -f Name -v Chess -f Playtime -v 30 $database recins -f Name -v Chess -f Playtime -v 30 ${database}
``` ```
View all games, or select one by number: View all games, or select one by number:
```sh ```sh
recsel $database recsel ${database}
recsel -n 0 $database recsel -n 0 ${database}
``` ```
Each game should note whether or not you have played it yet, so you can add that field and set the default to `yes`. Each game should note whether or not you have played it yet, so you can add that field and set the default to `yes`.
@@ -40,14 +40,14 @@ Each game should note whether or not you have played it yet, so you can add that
```sh ```sh
f=played f=played
v=yes v=yes
recset -f $f -a $v $database recset -f ${f} -a ${v} ${database}
``` ```
...but the field is wrong, it should have a capital letter: ...but the field is wrong, it should have a capital letter:
```sh ```sh
new_field=Played new_field=Played
recset -f $f --rename $new_field recset -f ${f} --rename ${new_field}
``` ```
## Read ## Read
@@ -55,20 +55,20 @@ recset -f $f --rename $new_field
Check how many records the database has: Check how many records the database has:
```sh ```sh
recinf $database recinf ${database}
``` ```
Look at just the games you've never played: Look at just the games you've never played:
```sh ```sh
recsel --expression="Played = 'no'" $database recsel --expression="Played = 'no'" ${database}
``` ```
Print how many, then just print the names: Print how many, then just print the names:
```sh ```sh
recsel -e "Played = 'no'" --count $database recsel -e "Played = 'no'" --count ${database}
recsel -e "Played = 'no'" --print=Name $database recsel -e "Played = 'no'" --print=Name ${database}
``` ```
## Update ## Update
@@ -79,8 +79,8 @@ To change a game's `Played` field from `no` to `yes`, use `recset` to specify th
num=0 num=0
f=Played f=Played
value=yes value=yes
recsel --number=$num $database recsel --number=${num} ${database}
recset --number=$num -f $f --set=$value $database recset --number=${num} -f ${f} --set=${value} ${database}
``` ```
Find all games with a playtime of `30`, and set the field `Max_Players` to `4`. Find all games with a playtime of `30`, and set the field `Max_Players` to `4`.
@@ -102,22 +102,22 @@ Remove `Played` record from first game:
```sh ```sh
num=0 num=0
recset --number=$num -f Played --delete $database recset --number=${num} -f Played --delete ${database}
``` ```
You can comment the line instead of deleting it: You can comment the line instead of deleting it:
```sh ```sh
num=1 num=1
recset --number=$num -f Played --delete $database recset --number=${num} -f Played --delete ${database}
recsel $database recsel ${database}
cat $database cat ${database}
``` ```
Delete an entire record: Delete an entire record:
```sh ```sh
num=2 num=2
recdel --number=$num $database recdel --number=${num} ${database}
``` ```
+22
View File
@@ -0,0 +1,22 @@
---
title: Stop email impersonating your domain
tags:
- networking
requires:
- networking/dns_records.md
---
There is nothing to stop scammers from sending email claiming to be coming from your domain.
And the older it gets, the more valuable it is for spoofing.
Just add these two TXT records to the DNS for your domain:
Name | Type | Value
:------|:----:|:-----
@ | TXT | v=spf1 -all
_dmarc | TXT | v=DMARC1; p=reject;
The first says there is not a single SMTP server on earth authorized to send email on behalf of your domain.
The second says that any email that says otherwise should be trashed.
+5 -5
View File
@@ -20,9 +20,9 @@ Keybind to exit this mode is `Ctrl+q`
## Extras ## Extras
- [Learning Vim](vim/vi.md) - [Learning Vim](writing/vim/vi.md)
- [Navigation](vim/navigate.md) - [Navigation](writing/vim/navigate.md)
- [Completion](vim/completion.md) - [Completion](writing/vim/completion.md)
- [Window Splits](vim/windows.md) - [Window Splits](writing/vim/windows.md)
- [Use vim bindings in bash](vim/vim_in_bash.md) - [Use vim bindings in bash](writing/vim/vim_in_bash.md)
- [A game to learn how to code in Vim](https://www.vim-hero.com/) - [A game to learn how to code in Vim](https://www.vim-hero.com/)