Linux

PATH is the environment variable containing a set of directories that should be searched for programs

#print user PATH
$ printenv PATH
/bin:/sbin:/usr/bin:/usr/sbin
$ echo "$PATH"
/bin:/sbin:/usr/bin:/usr/sbin
 
#How it works
$ ping 127.0.0.1
 
    PATH=/bin:/sbin:/usr/bin:/usr/sbin
           │     │
           │     ╰──▶ /sbin/ping ?  found!
           ╰──▶ /bin/ping ?  not found.
 
#Add a folder to path for current shell session
$ PATH=$PATH:/path/to/app/folder

Local installs of binaries and PATH correction

Install the binary

There is debate as to where binaries that you install yourself should be put in the filesystem. The proper places to put them seem to be :

/opt/ <- for bundled applications, typically grabbed from a software developper
/usr/local/ <- for applications built by the administrator for local use, i.e. using "make" or other
/home/USER/opt/ <- for single-user use only

FHS Reference

Add it to the user's PATH

Include the following line in /home/USER/.profile :

EXPORT PATH="/path/to/bin/folder:$PATH"

This will only be active after logging out. If you want to activate it without logging out for a current shell session run the following command :

$ source /home/USER/.profile

Note that the path must point to the folder containing the binary and not to the binary itself.

Add it to cinnammon start menu

Cinnammon has implemented a handy GUI Editor you can access by right-clicking the 'Menu' icon and selecting 'configure'. You can also launch :

$ cinnamon-menu-editor

Using bash you can create a symbolic link to a .desktop file anywhere on your system and place that link in /usr/share/applications

$ ln -s path/to/target/file.desktop LINK_NAME

Make sure the .desktop file has proper permissions :

$ chmod 644 path/to/file.desktop 

The menu entry will appear after logging out.

Locate a binary

$ type man
man is /usr/bin/man

Extract the content of an AppImage :

./your.AppImage –appimage-extract

This is useful if you want to get the Icon.

Link to AppImage Daemon This Daemon scans well known places for appimages and creates menu entries and extracts icons


There are various ways to limit the CPU usage of a process. One simple way is using 'cpulimit'

$ cpulimit -P /path/to/executable -l %CPU (e.g. 40) -b (background)

Ressource site


To quickly install folders containing many OpenType fonts (OTF) or TrueType fonts (TTF), copy to the following locations :

$ sudo cp -r /path/to/OTF-folder /usr/share/fonts/opentype/
$ sudo cp -r /path/to/TTF-folder /usr/share/fonts/truetype/

Regenerate font cache :

$ sudo fc-cache -f -v

Note : This will install fonts system-wide. To install for a single user only copy the files to :

~/.fonts/

and regenerate font cache.

Modifying page order

Use (pdftk (ubuntu) → deprecated) or pdf-stapler (fedora) :

For example to extract two pages out of a pdf

$ pdf-stapler cat in.pdf 2-3 out.pdf

Old syntax with pdftk : $ pdftk in.pdf cat 3-4 output out.pdf

Ubuntu

pdfshuffler is a front end for python-pyPdf and a great tool for merging or splitting pdf files with a GUI.

Reducing PDF size

Found from this answer on AskUbuntu :

gs -sDEVICE=pdfwrite -dCompatibilityLevel=1.4 -dPDFSETTINGS=/screen -dNOPAUSE -dQUIET -dBATCH -sOutputFile=output.pdf input.pdf

-dPDFSETTINGS can be the following :

  • /screen lower quality, smaller size. (72 dpi)
  • /ebook for better quality, but slightly larger pdfs. (150 dpi)
  • /prepress output similar to Acrobat Distiller “Prepress Optimized” setting (300 dpi)
  • /printer selects output similar to the Acrobat Distiller “Print Optimized” setting (300 dpi)
  • /default selects output intended to be useful across a wide variety of uses, possibly at the expense of a larger output file

When FAT32 filesystems mount in read-only it's often related to corrupted filesystem.

Run dmesg to check. If you see lines such as :

[54259.098330] FAT-fs (sdb1): error, corrupted directory (invalid entries)
[54259.098338] FAT-fs (sdb1): Filesystem has been set read-only
[54304.610623] FAT-fs (sdb1): error, corrupted directory (invalid entries)
[54304.690012] FAT-fs (sdb1): error, invalid access to FAT (entry 0xf7d0f91e)
[54304.690213] FAT-fs (sdb1): error, invalid access to FAT (entry 0xff27ff23)
[54304.690314] FAT-fs (sdb1): error, invalid access to FAT (entry 0xff0dff13)

Run the following command :

$ sudo umount /dev/sdX#
$ sudo fsck.msdos -aw /dev/sdX#

Stack Exchange thread on the subject

Try Test Disk & PhotoRec written by Christophe Grenier

For .mov

PhotoRec 7.1-WIP In FileOptsMenu check :

[X] mov/mdat Recover mdat atom as a separate file

Two files are created for every .mov recovered. Concatenate with :

cat f123_ftyp.mov f456_mdat.mov > 1.mov
cat f456_mdat.mov f123_ftyp.mov > 2.mov

One of the two files will be good. Sometimes one file is .mp4 and the other is .mov :

cat f54114560.mp4 f51781632_mdat.mov > 1.mov

If a NTFS volume mounts in read-only, remount using :

$ su
$ mkdir /mnt/ntfs
$ mount -t ntfs /dev/sd[X] /mnt/ntfs

Configuration Files

Global

  • /etc/mplayer/mplayer.conf

Local

  • ~/.mplayer/config
  • ~/.mplayer/input.conf
  • ~/.mplayer/menu.conf

Common Options

fs=yes #enable fullscreen
noborder=yes
ontop=yes
geometry=+3200
osdlevel=0

Required packages

sg3-utils

Find USB Drive

(usually sr0 or sr1)

$ ls /dev | grep 'dvd'

Send activation byte sequence

(change sr0 accordingly if needed)

$ sg_raw /dev/sr0 EA 00 00 00 00 00 01

This is not specifically linux-related but since every time I install it (especially on MacOS systems) it's such a pain to find the plugins/ folder from where to remove the plugins blocking the trial version of QCAD here's an easy way to find them :

Go to Help > About > Plugins and just click on the name of one of the plugins.

In MacOS it will be QCAD > About > Plugins instead.

Start stop the server using :

sudo /opt/lampp/lampp start/stop

Put your sites and data in :

/opt/lampp/htdocs/example_site

Wired network doesn't work after suspend (does not work)

Identify your wired interface card module. Realtek 8169 is known to have this issue with some kernels.

$ lsmod

Look for :

....
hid                   118784  2 usbhid,hid_generic
ahci                   36864  4
r8169                  86016  0
libahci                32768  1 ahci
mii                    16384  1 r8169
...

Edit (create if it doesn't exist) the file :

$nano /etc/pm/config.d/unload_modules

Append the following line :

SUSPEND_MODULES="$SUSPEND_MODULES r8169"

Replace module name if necessary

Note to self : Added “mii” module to the list, the fix didn't seem to hold after reboot. Mii seems to be using r8169 and is network-monitoring-related

  • Kazam : only one tried at the moment, produces OK files and you can select a specific region you want to capture
  • gtk-recordmydesktop
  • vokoscreen
  • simplescreenrecorder
    • add-apt-repository ppa:maarten-baert/simplescreenrecorder

List available shares on a given host

Replace host with the hostname or IP address of the server running samba shares

$ smbclient -L host

Output will be something like this

	Sharename       Type      Comment
	---------       ----      -------
	home            Disk      
	shares          Disk      
	users           Disk      
	IPC$            IPC       IPC Service ()

Reconnecting with SMB1 for workgroup listing.

	Server               Comment
	---------            -------

	Workgroup            Master
	---------            -------
	MY_WORK              CODE-CA04

More ressources here

Create an alias using command

alias name='command'

The alias is only in place while the user session is active. To make it permanent, write it in the .bashrc file in the home directory of the user. (more info)

You can reload the .bashrc file using :

$ source ~/.bashrc
#or
$ . ~/.bashrc

Mass renaming files

Debian Admin guide to mass renaming You can use for commands in the shell or use the 'rename' tool (written in perl). For example :

skx@lappy:~$ ls
a.JPG  b.JPG  c.JPG  d.JPG
skx@lappy:~$ for i in *.JPG; do mv "$i" "${i/.JPG}"; done
skx@lappy:~$ ls
a.jpg  b.jpg  c.jpg  d.jpg

cut

Remove sections from input and output them

$ date
Thu 02 Jan 2020 08:20:10 PM CET
$ date | cut -c17-24
08:21:02

Mount

Target disk

$ sudo fdisk -l
Disk /dev/sda
[...]
Disk /dev/sdb
[...]

Create mount point

$ sudo mkdir /media/DRIVE

Mount device

$ sudo mount /dev/sda1 /media/DRIVE

Unmount

$ sudo umount /media/DRIVE

More info


pwd

Display Present Working Directory

$ pwd
/home/pi

tar

Pack/Unpack tarball

#All the following commands are verbose (-v)
$ tar -xvf file.tar #Unpack tar
$ tar -xvzf file.tar.gz #Unpack compressed (gzip) tar
$ tar -cvf file.tar /path/folder #Pack folder into file.tar archive
$ tar -cvzf file.tar /path/folder #Same as above with compression (gzip)

Extensive Guide


Distrib

$ lsb_release -d

CPU

Basic

$ lscpu

Detailed, core-specific information, output /proc/cpuinfo

$ cat /proc/cpuinfo

Mounted devices

$ df -h

Kernel

$ uname -snrm
  • s : kernel name
  • n : network node hostname
  • r : kernel relase number
  • m : machine hardware name

http://www.tecmint.com/useful-linux-commands-for-system-administrators/

Kernel modules

$ lsmod

Bash history

history

D-Bus/system bus history

gdbus
g-feet //gui history
  • linux/start.txt
  • Last modified: 2020/06/23 21:30
  • by mh