1
0
forked from extern/nix-config
donovanglover-nix-config/help/other.md
Donovan Glover a42e4ad4d0
Major clean up overall
This commit:

- Moves the rest of the packages from packages.sh to PKGBUILD
- Updates the README to include upstream packages instead of relying on
  our own local versions of them
- Removes the rest of the legacy install scripts
- Adds some missing config options and other useful commands to the
  README and help files
- Removes the local copy of launch-cmd in favor of upstream instead
- Moves a variety of smaller help files to other.md
- Adds fish information to other.md
- Moves automation information to install-guide.sh
- Removes the local copy of Arch Silence in favor of upstream instead
- Updates theme_helper.cr before eventually removing it in favor of Mica
2018-01-28 23:57:11 -05:00

8.2 KiB

This file holds other GNU/Linux information that aren't (?) detailed enough to be their own file.

Ranger

Movement Keys

  • Scroll down: j
  • Scroll up: k
  • Go back one directory: h
  • Go forward one directory or open the selected file: l
  • Move to the top of the file list: gg
  • Move to the bottom of the file list: G
  • Go to the Nth file: <N>gg
  • Go to the home directory: gh
  • Go to the root directory: gr
  • Quit ranger: q

Useful Things

  • Search for files in the current directory: /
  • Quickly find and automatically open files that match the pattern: f
  • Manually choose software to open the selected file with: r
  • Edit the selected file in your editor of choice: E
  • Switch back to the terminal and cd to the current directory: S
  • Toggle hidden files: zh

Other Commands

  • Enter command mode: :
  • Change how files are sorted: o
    • Sort by size: s
    • Sort by file type: t
    • Sort by last modified: m
    • Sort by date created: c
    • Sort by time accessed: a
    • Sort alphabetically (default): b
    • Reverse the results: r
    • Randomize the results: z
  • Rename the selected file: :r <newname>
  • Edit an existing filename: A

Other notes

  • You should never use ranger to manipulate files. Ranger does one thing and does it well: explore files.
  • You should not use tabs in ranger. What you would do with tabs can be accomplished easier with the terminal.
  • Although bookmarks are a feature in ranger, your file management should be simple enough that bookmarks aren't required.

GNU/Linux Root File Structure

/               # Root directory
/bin            # Binaries for global commands (ls, cat, etc.)
/boot           # Boot loader files (grub, the linux kernel, etc.)
/dev            # "Device files" (/dev/null, /dev/random, etc.)
/etc            # System-wide configuration files
/home           # Saved files and personal settings of each user
/lib            # Libraries used by the binaries in /bin
/lib64          # 64-bit libraries
/mnt            # Temporarily mounted filesystems reside here
/opt            # Applications that don't rely on other dependencies
/proc           # Provides process and kernel information as files
/root           # Home directory for the root user
/run            # Information about the running system since last boot
/sbin           # System binaries (fsck, init, route, etc.)
/srv            # Site-specific data served by the system
/sys            # Contains information about the system
/tmp            # Temporary files used for processes
/usr            # Applications that rely on other dependencies
/var            # Variable files that are supposed to change over time

Waterfox

Command Mode

  • Take a screenshot of the entire page screenshot --fullpage
  • Take a screenshot of the visible window only screenshot
  • Restart the browser restart

Preferences

Waterfox has 2 preference files: prefs.js and user.js.

prefs.js are the settings defined by the browser and user.js is an optional file that you can create. user.js takes precedence over prefs.js and will replace the settings in prefs.js when Waterfox is started.

Theme

Waterfox allows you to customize the appearance of the browser by creating your own userChrome.css. It is located inside of the chrome folder, which needs to be created by the user.

tty

Moving Around

  • Move to the previous terminal: Alt+Left
  • Move to the next terminal: Alt+Right
  • Switch to the Nth terminal: Ctrl+Alt+F<N>
  • Scroll up: Shift+PgUp
  • Scroll down: Shift+PgDn

Manipulating Text

  • Copy text: Ctrl+Shift+C
  • Paste text: Ctrl+Shift+V
  • Go to the beginning of the line: Ctrl+A
  • Go to the end of the line: Ctrl+E
  • Remove everything after the cursor: Ctrl+K
  • Clear the terminal: Ctrl+L

Piping

  • Take the output from a and use it as the input for b: a | b
  • Take the output from a and write it to the file b: a > b
  • Take the output from a and append it to the file b: a >> b

Wildcard

  • Use * anywhere as a wildcard to find all matches
  • Use ** to wildcard subdirectories (e.g. ~/.config/**/*.cr)

Control Keys

  • Cancel the running command: Ctrl+C
  • Suspend the current process (resume with fg): Ctrl+Z

fish - the friendly interactive shell

Passing things around

  • Read input from a file: command < file.txt
  • Write output to a file: command > file.txt
  • Append output to a file: command >> file.txt
  • Write an error to a file: command ^ file.txt
  • Append an error to a file: command ^^ file.txt

Misc.

  • Pipe the output of a program into another one: git status | lolcat
  • Learn more about a program: man fish OR fish -h
  • Match any single character except / (includes an empty string): ?
  • Create a new variable: set my_var "some_string"
    • By convention, exported variables are in $UPPERCASE and unexported variables are in $lowercase
  • Create a new exported variable: set -x MY_VAR "some_string"
  • Unset a variable: set -e my_var

Jobs

  • Start a background job: ncmpcpp &
  • Bring a background job to the foreground: fg
  • Move the current program to the background: <C-z>

Note that your fish config file is located at: ~/.config/fish/config.fish

Functions

function func
    # Do something
end

Note that you should put your functions in ~/.config/fish/functions/function_name.fish.

Aliases

function ls
    command exa $argv
end
alias ls="exa"

Autosuggestions

  • Complete autosuggestions with the right arrow OR <C-f>.

  • Complete only the next word with alt right OR <A-f>.

  • -c + The program you want to autocomplete for

  • -s + A shorthand parameter (e.g. -s o for -o)

  • -l + A longhand parameter (e.g. -l output for --output)

  • -a + Parameter arguments (e.g. -a "true false" if an --option can take both true and false as values)

See complete --help for more options. Examples in /usr/share/fish/completions.

You can make completions in the terminal, a configuration file, anywhere!

Tab Completions

Use tab for tab completion (as obvious as this may seem, it's really useful!)

Any completions you make should be in ~/.config/fish/completions/program_name.fish

Command substitution

  • Pass the results of one command as the argument of another command: echo (ls -al)

Expansions

  • Brace expansion: echo file.{png,jpg}, mv *.{cr,rs} src/
  • Variable expansion:
    • echo $var # => echo 1 2 3
    • echo "$var" # => echo "1 2 3"
    • set a 1; set b a; echo $$b # => 5
  • Index range expansion: echo (seq 10)[1..5] # => echo 1 2 3 4 5
  • Reverse output: echo (seq 10)[-1..1]
  • Home directory expansion: ~
  • Process expansion: %self

Note that in fish, variables start at 1, similar to lua et al.

set my_arr "a" "b" "c"
  • $argv is the array of arguments given to the shell or function

You can change the colors fish uses with $fish_color_* and $fish_pager_color_*

To work with multiple lines in fish, either use Enter with a block statement (if, for, begin, etc.), use <A-CR>, or add \ to the end of your lines.

  • Only run with a login shell: status --is-login

  • Only run with an interactive shell: status --is-interactive

  • Get the status of the last executed command (success, failure, etc.): echo $status

  • Use multiple commands on the same line ;

  • And operator: ; and

  • Or operator: ; or

Conditionals

if condition
    # Do something
else
    # Do something else
end

Switch

switch(name)
case Sally
    # Do something
case John
    # Do something else
case '*'
    # Catch-all
end

List all the functions available to fish: functions

Loops

while true
    # Do something
end
for file in *.txt
    # Do something with all .txt files
end
for i in (seq 5)
    # Do something 5 times
end

Set colors in fish:

set_color purple
echo "some text"
set_color normal
echo "more text"