Linux Documentation

Basic commands:
 

man -k subject
Find commands related to a subject. The command for finding the command
uname -a
Info about the os, kernel, name of the computer, processor, etc... might not mention the distribution your running. To find out what distribution of linux your running (Ex. Ubuntu) try lsb_release -a or cat /etc/os-release
mkdir folder
“Make Directory”, make a new folder under the current folder
cd folder
“Change Directory” go into a folder under this folder. To go up, cd ..
To go to the root folder, cd /
nano filename
Start the "nano" editor which is included with most Linux distributions. It uses regular commands like the arrow keys, delete, backspace, etc... In Nano:
ctrl+o
Output a file... this is SAVE not open.
ctrl+x
eXit

To select text in nano, move the cursor to the start of the text you want to select, press the Alt-A key combination to mark the start, then move the cursor to the end of the section you want to select. press Ctrl+K to cut your selection and Ctrl+U to paste it.

sync
Flush all files from RAM into the drives. Not normally needed, but is safer if you regularly power off without shutdown, as with embedded systems.
ls
List files in the current directory. Does NOT find. Use ls -l to see file permissions, size, etc...
ls -d -1 -l --time-style="+%Y-%m-%d@%H:%M:%S" /path/** shows the files in the current directory, one file per line, including permissions, group, owner, size, date (year-mm-dd@HH:mm:ss), and full path/filename. To show the current folder, replace /path with "$PWD"
find -name filemask
Find files in the current directory or below whose names match filemask. Does not search file contents. e.g. find -name *.js
grep -Rine 'pattern'
grep -Rinwe 'pattern 'folder/'
Search for files in the specified directory or below (-R is recursive) whose contents match the pattern. -i ignores case, -n displays the line number in the file where the pattern is found. The -e pattern is a regular expression. -w matches whole words only. --include=filemask can be added to filter the file names searched.
mv file file
Rename or move a File. Note: Renaming a file is nothing more than moving it from it's old name to it's new name.
rm file
Remove a File.
rm -r folder
Remove a Directory.
df -H
Show the local hard drives with space in GB, etc...
shutdown -r now
Restart
Control-Z
Stops the foreground job and places it in the background as a stopped job
jobs
Lists all jobs
bg %n
Places the current or specified job in the background, where n is the job ID
fg %n
Brings the current or specified job into the foreground, where n is the job ID
dmesg | grep parport (for PCIe)
lspci -v (for PCI)
Find the addresses of parallel ports on your system.
blkid
List all the block devices (e.g. hard drives) and their partitions with type, label, etc...
curl -L -v -o filename url
Download a file or web page from the internet. The -L specifies that it should follow re-directs, the -v shows you what is going on, the -o specifies a file to write the output into and the url is the location to go get the data from; a web page address, or file, or whatever.
tar -xvzf filename.tar.gz -C folder
Extracts the archive to the folder. Flags
-f this must be the last flag of the command, and the tar file must be immediately after. It tells tar the name and path of the compressed file.
-z tells tar to decompress the archive using gzip
-x tar can collect files or extract them. x does the latter.
-v makes tar talk a lot. Verbose output shows you all the files being extracted.
-C extract into a custom folder

Assuming you have a version of linix which supports apt-get, you can make sure everything is up to date with:
sudo apt-get update
sudo apt-get upgrade

From the shell, if you want to let a program continue to run in the background, just hit Ctrl+Z. Or you can start the command with a "&" at the end. E.g. node httpd.js & to start your node.js web server. To see the jobs you have in the background, type jobs and to bring one back to the foreground, use fg  jobno which defaults to job number 1.

Linux Command line Serial Communications

See also

sshfs: Edit Files on remote Google Compute or other Linux system

Let's say you fire up a (totally free forever, as long as you don't use too many resources) f1 google compute engine (easy, lots of docs online) and you want to edit your files on that drive. You can do it with nano, vi, whatever after you log in, but wow that gets old. Be nice to have a real editor like VSCode, or Atom, or emacs or whatever. So you can copy files back and forth to your local machine... or... on your local Linux box,

sudo apt-get install sshfs

ssh-keygen -t rsa -f ~/.ssh/ -C username

Note that is your username on the /remote/ system, not local. Enter a passphrase. This will make

In the compute engine, search for "metadata", switch to the SSH tab, Edit, add, copy in the contents of the .pub file, then save.

To test, and make sure it worked:
ssh -i ~/.ssh/keyfile username@externalip
then exit or open another terminal window, and:

sshfs -o allow_other,reconnect,ServerAliveInterval=120 -o IdentityFile=~/.ssh/keyfile username@externalip:start-folder-on-remote start-folder-on-local

It will ask you for the pass phrase the first time.

unmount

sudo fusermount -u start-folder-on-local

if it says the device is busy, try
sudo fusermount -zu start-folder-on-local

The start-folder-on-local has to be a place you own. You can't use /mnt because then you have to run sshfs as sudo and then you can't write to the files. Just make a mnt folder under /home and use that.

See also:

Amazingly enough, making a desktop shortcut icon is NOT included in the GUI on Ubuntu 18 and 20. Make a file called something.desktop, open it in gedit and type:

[Desktop Entry]
Name=Launcher Name
Comment=Launcher Comment
Exec=Command to Execute
Terminal=false
Type=Application
Icon=Path to Icon
sudo cp your file to /usr/share/applications and when you run it right click the app in the Unity Launcher and tick "Keep in launcher" (if you want it in the Unity Launcher), or just put it on your desktop if you want a Desktop launcher. Put this file in ~/.local/share/applications if you want to only apply this to your user.