This article contains mainly the useful stuff I found in the Internet, but there are some things which I developed myself. This is my cheat-sheet, in order not to search the web again. If it turns out to be useful for somebody else, I will only be glad. These settings were made for Ubuntu 20.04 LTS.
Here’s the previous version for Ubuntu 16.04 LTS: Ubuntu16_settings.txt
Here’s the previous version for Ubuntu 18.04 LTS: Ubuntu18_settings.txt
(((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((( ======================================== Initial setup =============================== #=================== Simple GUI adjustments ========================== - Desktop backround solid color: gsettings set org.gnome.desktop.background primary-color 'rgb(66, 81, 100)' - remove unneccessary icons from the launcher - Dock icon size = 32 - Language Support + Regional Formats - keyboard repeat delay: Settings > Universal Access > Typing > Repeat keys - Keyboard shortcuts: Ctrl-Shift-Esc = gnome-system-monitor - Mount NTFS volumes - Nautilus Bookmarks: drag and drop - Shortcuts on desktop - login to Firefox #========================== Make Linux use 'Local' time ========================== timedatectl set-local-rtc 1 #================ Set the grub timeout and the grub default boot entry =========== sudo gedit /etc/default/grub sudo update-grub ====================================== Mount NTFS partition in fstab ======================= sudo mkdir /media/d1 sudo mkdir /media/d2 sudo mkdir /media/cloud sudo blkid sudo gedit /etc/fstab UUID=1185b49e-0551-42c5-8510-3149f2964b8a none swap sw 0 0 UUID=6f5d0096-211f-4e9b-8a32-ba242fa86017 /media/cloud auto nosuid,nodev,nofail,x-gvfs-show 0 0 tmpfs /tmp tmpfs defaults,noatime,nosuid,nodev,mode=1777,size=16384M 0 0 UUID=7020AE1B20ADE874 /media/d1 ntfs-3g permissions,windows_names,locale=en_US.utf8 0 0 UUID=00C0C2ECC0C2E6CE /media/d2 ntfs-3g permissions,windows_names,locale=en_US.utf8 0 0 sudo mount -a ============================ /tmp directory in RAM =================== sudo gedit /etc/fstab tmpfs /tmp tmpfs defaults,noatime,nosuid,nodev,mode=1777,size=8192M 0 0 #=================== Disable Gnome animation ========================= sudo apt install gnome-tweak-tool 1. General > Animations = Off ============ Laptop goes to sleep with lid closed before login and after logout =============== Gnome Tweaks > General > Suspend when laptop lid is closed OR sudo gedit /etc/systemd/logind.conf Search for these lines and make them look like this (possibly by removing # in front or replacing suspend with ignore): HandleLidSwitch=ignore HandleLidSwitchDocked=ignore =============== Double Commander ====================== Install Snap version from Ubuntu software sudo apt install libssh2-1 sudo rm -rf /root/.config/doublecmd sudo cp -r /home/drew/.config/doublecmd /root/.config/doublecmd OR sudo sh -c "echo 'deb http://download.opensuse.org/repositories/home:/Alexx2000/xUbuntu_18.04/ /' > /etc/apt/sources.list.d/home:Alexx2000.list" wget -nv https://download.opensuse.org/repositories/home:Alexx2000/xUbuntu_18.04/Release.key -O Release.key sudo apt-key add - < Release.key sudo apt update sudo apt install doublecmd-gtk sudo apt install libssh2-1 Configuration > Options > File views > Sorting directorie = sort like files and show first Configuration > Options > File views > Formatting > * format = B Configuration > Options > Fonts-Main font, Path font Configuration > Options > Icons -- 16x16 Configuration > Options > Layout -- Show toolbar = off, Show function key buttons = off Configuration > Options > Keys > Hot keys > cm_LeftOpenDrives = Alt-1 and cm_RightOpenDrives = Alt-2 (because Alt-F1 and Alt-F2 are taken by Gnome) Configuration > Options > Behaviors > Drive black list: /home/ssh-ate/*;/run/user/1000/gvfs;/media/drew/Win;*telegram-desktop.mnt;/run/snapd/ns*;/home/guests/Inbox-d2;/home/guests/video;/home/drew/.cache/doc;/run/user/1000/doc;/var/lib/docker*;/run/docker*;*gmail.com;/run/vmblock-fuse;*1005/doc;*@gmail.com* ================ Install 7zip and rar =========================================== sudo apt-get update sudo apt-get install rar unrar xz-utils p7zip-rar p7zip-full ====================== Unrar in Double Commander =============== https://onformix.blogspot.com/2017/10/dc-libunrar.so.html Download GTK2 portable version, unpack libunrar.so and put it to /lib wget https://jztkft.dl.sourceforge.net/project/doublecmd/DC%20for%20Linux%2064%20bit/Double%20Commander%200.9.9%20beta/doublecmd-0.9.9.gtk2.x86_64.tar.xz tar -xpJf doublecmd-0.9.9.gtk2.x86_64.tar.xz doublecmd/libunrar.so sudo mv doublecmd/libunrar.so /lib rm doublecmd-0.9.9.gtk2.x86_64.tar.xz ============== Cyrillic characters in Windows archives ================ sudo apt-add-repository ppa:hanipouspilot/file-roller sudo apt-get install file-roller ===================== Enable Edit As Administrator ===================== sudo apt install nautilus-admin sudo nautilus -q =========== Install LibreOffice via PPA (snap version is slow) ======================= sudo add-apt-repository ppa:libreoffice/ppa sudo apt-get install libreoffice To uninstall: sudo apt-get install ppa-purge && sudo ppa-purge ppa:libreoffice/ppa Link colors in LibreOffice Calc: Tools > Options > LibreOffice > Application Colors > Text Document > Field Shading ============== Install Thunderbird from PPA (snap version is old) ============== sudo add-apt-repository ppa:mozillateam/ppa sudo apt install thunderbird sudo apt install xul-ext-lightning To uninstall -- sudo apt-get install ppa-purge && sudo ppa-purge ppa:mozillateam/ppa ===================================================== ================== Google calendar to accept invitations in Thunderbird 60 =================== - In Preferences > Advanced (Tab) > General (stealthy subtab) > Config Editor (Button) - Search for "calendar.google.enableEmailInvitations" and ensure the property is set to true - Go to the calendar you want to use with your email, right click it and select "Properties" - Change the "Email" field to the account you want to process invites for - Click "OK" - Go to an email invitation and you should now see the accept and decline buttons. #==================== Install Notepadqq ================== sudo snap install --classic notepadqq Then allow access to removable storage devices in Ubuntu software > notepadqq > Permissions =========================================== User groups ================================== sudo addgroup GROUP sudo adduser USERNAME GROUP groups USERNAME ================================= Share folder for Windows =============================== sudo apt install samba sudo useradd user2 sudo smbpasswd -a user2 sudo gedit /etc/hostname sudo gedit /etc/samba/smb.conf [global] usershare owner only = false workgroup = ATE and add to the end of the file: [User2] path = /media/d1/User2 available = yes valid users = user2 read only = no browsable = yes public = yes writable = yes [Pics] path = /media/d1/Pics available = yes valid users = user2 read only = no browsable = yes public = yes writable = yes
path = /media/d2/video available = yes valid users = user2 read only = no browsable = yes public = yes writable = yes sudo gedit /etc/security/limits.conf add to the end: * - nofile 16384 root - nofile 16384 sudo service smbd restart ================================ Mount Windows Share ======================= https://ubuntuforums.org/showthread.php?t=2078120 sudo apt-get install cifs-utils sudo mkdir /media/drew/drew-pc-d sudo mkdir /media/drew/drew-pc-e sudo gedit ~/.smbcredentials username=msusername password=mspassword sudo chmod 600 ~/.smbcredentials sudo gedit /etc/fstab //drew-pc/d /media/drew_d cifs credentials=/home/drew/.smbcredentials,uid=1000,iocharset=utf8 0 0 //drew-pc/e /media/drew_e cifs credentials=/home/drew/.smbcredentials,uid=1000,iocharset=utf8 0 0 sudo mount -a =================== Install Skype ================================================= Install from Ubuntu Software OR cd ~/Downloads wget https://go.skype.com/skypeforlinux-64.deb sudo dpkg -i skypeforlinux-64.deb rm skypeforlinux-64.deb If Skype doesn't save the password: In the Ubuntu launch menu, type password to find the utility Passwords and Keys. Open this utility. In the panel on the left you should see an entry Login in the section Passwords. Right click on Login, and select Change Password from the pop-up menu. You'll need to enter your current password first, then it asks for a new password Just leave the fields blank and press Continue. =================== Install Viber ================================================= cd ~/Downloads wget http://download.cdn.viber.com/cdn/desktop/Linux/viber.deb sudo dpkg -i viber.deb rm viber.deb For Startup -- /opt/viber/Viber # If problem with libssl1.1 then: wget http://security.ubuntu.com/ubuntu/pool/main/o/openssl1.0/libssl1.0.0_1.0.2n-1ubuntu5.3_amd64.deb sudo dpkg -i libssl1.0.0_1.0.2n-1ubuntu5.3_amd64.deb rm libssl1.0.0_1.0.2n-1ubuntu5.3_amd64.deb ============== Install Telegram ============= sudo snap install telegram-desktop ================ Start Chrome with a certain profile ================ google-chrome --profile-directory=Default google-chrome --profile-directory="Profile 1" ==================== VMware Workstation Player ======================== cd ~/Downloads https://www.vmware.com/go/getplayer-linux wget https://download3.vmware.com/software/player/file/VMware-Player-15.5.6-16341506.x86_64.bundle sudo bash VMware-Player-15.5.6-16341506.x86_64.bundle rm VMware-Player-15.5.6-16341506.x86_64.bundle sudo gedit /etc/vmware/config prefvmx.minVmMemPct = "100" #If secure boot is enabled: sudo vmware-modconfig --console --install-all # then install Virtualbox and proceed with Secure Boot activation there ========================== Install Virtualbox 6.1.10 =================== Install from Ubuntu software OR sudo apt install virtualbox cd ~/Downloads wget https://download.virtualbox.org/virtualbox/6.1.10/Oracle_VM_VirtualBox_Extension_Pack-6.1.10.vbox-extpack sudo virtualbox Oracle_VM_VirtualBox_Extension_Pack-6.1.10.vbox-extpack rm Oracle_VM_VirtualBox_Extension_Pack-6.1.10.vbox-extpack sudo adduser $USER vboxusers #For Secure boot (together with VMware): cd /home/drew/.ssh openssl req -new -x509 -newkey rsa:2048 -keyout MOK.priv -outform DER -out MOK.der -nodes -days 36500 -subj "/CN=drew/" sudo su /usr/src/linux-headers-`uname -r`/scripts/sign-file sha256 ./MOK.priv ./MOK.der $(modinfo -n vboxdrv) /usr/src/linux-headers-`uname -r`/scripts/sign-file sha256 ./MOK.priv ./MOK.der $(modinfo -n vmmon) /usr/src/linux-headers-`uname -r`/scripts/sign-file sha256 ./MOK.priv ./MOK.der $(modinfo -n vmnet) mokutil --import MOK.der Use BIOS pass for mokutil. Then reboot your machine and follow the instructions to complete the enrollment from the UEFI console. Check the enrollment: sudo mokutil --test-key MOK.der More details at: https://gist.github.com/gabrieljcs/68939c7eeadfabfdbc6b40100130270d https://askubuntu.com/questions/760671/could-not-load-vboxdrv-after-upgrade-to-ubuntu-16-04-and-i-want-to-keep-secur https://kb.vmware.com/s/article/2146460 ================= Install VIX API for VMWare Player (for headless mode) -- still doesn't work! ================== sudo ln -s /usr/lib/x86_64-linux-gnu/gtk-2.0/modules/libcanberra-gtk-module.so /usr/lib/libcanberra-gtk-module.so sudo apt update sudo apt install build-essential open-vm-tools cd ~/Downloads wget https://download3.vmware.com/software/player/file/VMware-VIX-1.17.0-6661328.x86_64.bundle cp /usr/lib/vmware-installer/3.0.0/python/libpython3.7m.so.1.0 . sudo rm -rf /etc/vmware-installer sudo sh VMware-VIX-1.17.0-6661328.x86_64.bundle wget https://download3.vmware.com/software/player/file/VMware-Player-15.5.5-16285975.x86_64.bundle sudo sh VMware-Player-15.5.5-16285975.x86_64.bundle rm VMware-VIX-1.17.0-6661328.x86_64.bundle rm VMware-Player-15.5.5-16285975.x86_64.bundle rm libpython3.7m.so.1.0 sudo gedit /usr/lib/vmware-vix/vixwrapper-config.txt Then add line: player 19 vmdb 15.5.5 Workstation-14.0.0 To start VM in headless mode: vmrun -T player start /home/common/vmware/Warez/Windows\ 10.vmx nogui =================== Install Teamviewer ============================= sudo apt-get install libqt5x11extras5 qtdeclarative5-controls-plugin qtdeclarative5-dialogs-plugin sudo apt-get -f install cd ~/Downloads wget https://download.teamviewer.com/download/linux/teamviewer_amd64.deb sudo dpkg -i ~/Downloads/teamviewer_amd64.deb rm teamviewer_amd64.deb --------Login screen locked ---------------- sudo gedit /etc/gdm3/custom.conf WaylandEnable=false ============= Desktop shortcuts ============ gedit ~/Desktop/Chrome-home.desktop #!/usr/bin/env xdg-open [Desktop Entry] Version=1.0 Type=Application Terminal=false Exec=/usr/bin/google-chrome --profile-directory=Default Name=Chrome home Comment=Chrome home Icon=/opt/google/chrome/product_logo_256.png gedit ~/Desktop/Chrome-work.desktop #!/usr/bin/env xdg-open [Desktop Entry] Version=1.0 Type=Application Terminal=false Exec=/usr/bin/google-chrome --profile-directory="Profile 1" Name=Chrome work Comment=Chrome work Icon=/opt/google/chrome/product_logo_256.png Then allow execution in properties. =============== Change display resolution ============== xrandr --output HDMI-1 --mode 1920x1200 xrandr --output HDMI-1 --mode 1920x1080 xrandr --output HDMI-1 --mode 1280x960 ======================= Slow start of Unison and some other software =================== sudo apt install appmenu-gtk2-module appmenu-gtk3-module reboot ============== Sync folders -- Unison ============== https://unix.stackexchange.com/questions/583058/unison-and-version-compiler-conflicts/583377#583377 Build the latest version from source (apt still contains old version with bugs): Afterwards, check that /usr/bin/unison is not the same size as /usr/bin/unison-gtk2 ==Without GUI== cd ~/Downloads sudo apt install ocaml-native-compilers wget https://github.com/bcpierce00/unison/archive/master.zip unzip master.zip cd unison-master/ sudo make all && make test && sudo HOME=/usr make install cd .. rm -rf unison-master rm master.zip sudo apt remove ocaml-nox -y sudo apt autoremove -y sudo apt clean ==== ==With GUI== sudo apt install ocaml-native-compilers sudo apt install libgtk2.0-dev liblablgtk2-ocaml liblablgtk-extras-ocaml-dev libcanberra-gtk-module cd ~/Downloads wget https://github.com/bcpierce00/unison/archive/master.zip unzip master.zip cd unison-master/ sudo make all && make test && sudo HOME=/usr make install sudo cp ./src/unison /usr/bin/unison-gtk2 cd .. rm -rf unison-master rm master.zip #cp ./unison /usr/bin/unison sudo apt remove ocaml-nox -y sudo apt autoremove -y sudo apt clean ==== Profiles stored at /home/drew/.unison/*.prf common.prf # Helps out a lot on Windows fastcheck = true # place new files at the top of the list sortnewfirst = true # turn on ssh compression rshargs = -C # Do not sync permissions dontchmod = true perms = 0 ignore = Name Thumbs.db ignore = Name *~ ignore = Name *.tmp ignore = Name _SYNCAPP ignore = Name metadata.xml unison profilename -batch ========= Dropbox ================= Install from website: https://www.dropbox.com/install-linux ================== Configure cron scheduled tasks =========== touch ~/cronjobs.txt gedit ~/cronjobs.txt 50 19 * * * unison d2Backup_ArchiveProjects -batch -dontchmod -perms 0 0 20 * * * unison d2Backup_Work -batch -dontchmod -perms 0 30 20 * * 5 sh ~/archive-work.sh touch ~/archive-work.sh gedit ~/archive-work.sh #!/bin/sh 7z a -pPASSWORD /media/d2/Inbox-d2/Backup/Work-$(date +%Y-%m-%d).7z /media/d1/Work > archive-work.log Make it hidden and executable: chmod 700 ~/archive-work.sh crontab -u drew ~/cronjobs.txt crontab -l grep CRON /var/log/syslog ============ Install OpenSSH ================= https://www.digitalocean.com/community/tutorials/how-to-enable-sftp-without-shell-access-on-ubuntu-16-04 https://en.wikibooks.org/wiki/OpenSSH/Cookbook/File_Transfer_with_SFTP#SFTP-only_Accounts sudo apt install openssh-server sudo mkdir -p /home/ssh-grp sudo chown drew:grp /home/ssh-grp sudo chgrp grp /home/ssh-grp sudo mkdir -p /home/ssh-grp/ftp-dir1 sudo mkdir -p /home/ssh-grp/ftp-dir2 sudo chown root /home/ssh-grp sudo gedit /etc/fstab /media/d1/FTP/dir1 /home/ssh-grp/ftp-dir1 none bind /media/d1/FTP/dir2 /home/ssh-grp/ftp-dir2 none bind sudo cp /etc/ssh/sshd_config /etc/ssh/sshd_config.factory-defaults sudo gedit /etc/ssh/sshd_config Port NNN PermitRootLogin no Subsystem sftp internal-sftp #add to the end: Match user drew ChrootDirectory /media ForceCommand internal-sftp PasswordAuthentication yes PermitTunnel no AllowAgentForwarding no AllowTcpForwarding no X11Forwarding no Match Group grp ChrootDirectory /home/ssh-grp ForceCommand internal-sftp PasswordAuthentication yes PermitTunnel no AllowAgentForwarding no AllowTcpForwarding no X11Forwarding no tail -f /var/log/auth.log sudo systemctl restart ssh ================= Hide users =============== printf "[User]\nSystemAccount=true" | sudo tee /var/lib/AccountsService/users/albina > /dev/null =========== Firewall ============= https://www.digitalocean.com/community/tutorials/how-to-setup-a-firewall-with-ufw-on-an-ubuntu-and-debian-cloud-server sudo apt-get install ufw sudo ufw status sudo ufw app list sudo ufw default deny incoming sudo ufw default allow outgoing sudo ufw allow 11111/tcp sudo ufw deny OpenSSH sudo ufw allow Samba sudo ufw deny CUPS sudo ufw enable sudo ufw status =========== File permissions ======= http://manpages.ubuntu.com/manpages/xenial/en/man8/ntfs-3g.8.html ========================== Install Pulse Secure Client =================== cd ~/Downloads #wget http://trial.pulsesecure.net/clients/ps-pulse-linux-9.1r5.0-b151-ubuntu-debian-64-bit-installer.deb?mkt_tok=eyJpIjoiTUdFMllUWm1ZbUZtTmpSaiIsInQiOiJCOUE2RzdkQnpUdGJUUU16M1F3cjhoXC9Kc2NhQ09nRm41NEJlajJxcEJoK2xJZzBsMlwvcDZEM0FhbXlLSEtqVGtGbFNaSDZMd3ZDS2trdW5TMTZPVktzd0UyQ1NjYUdoTEpINlZtSkljenVhMFNvTjlDWkZvY0R0WGVWMnFGd0VaIn0%3D wget http://trial.pulsesecure.net/clients/ps-pulse-linux-9.1r5.0-b151-ubuntu-debian-64-bit-installer.deb sudo dpkg -i ps-pulse-linux-9.1r5.0-b151-ubuntu-debian-64-bit-installer.deb cd /usr/local/pulse/ sudo sed -i "s/UBUNTU_VER\ \=\ 18\ \]/& \|\|\ [\ \$UBUNTU_VER\ \=\ 20 \]/" PulseClient_x86_64.sh sudo ./PulseClient_x86_64.sh install_dependency_packages sudo mkdir /usr/local/pulse/extra sudo mkdir /usr/local/pulse/debs cd /usr/local/pulse/debs sudo wget http://archive.ubuntu.com/ubuntu/pool/main/i/icu/libicu60_60.2-3ubuntu3_amd64.deb sudo wget http://archive.ubuntu.com/ubuntu/pool/universe/w/webkitgtk/libjavascriptcoregtk-1.0-0_2.4.11-3ubuntu3_amd64.deb sudo wget http://archive.ubuntu.com/ubuntu/pool/universe/w/webkitgtk/libwebkitgtk-1.0-0_2.4.11-3ubuntu3_amd64.deb #sudo wget https://launchpad.net/ubuntu/+source/webkitgtk/2.4.11-4/+build/14964670/+files/libwebkitgtk-1.0-0_2.4.11-4_amd64.deb cd /usr/local/pulse/extra sudo dpkg -x /usr/local/pulse/debs/libicu60_60.2-3ubuntu3_amd64.deb . sudo dpkg -x /usr/local/pulse/debs/libjavascriptcoregtk-1.0-0_2.4.11-3ubuntu3_amd64.deb . sudo dpkg -x /usr/local/pulse/debs/libwebkitgtk-1.0-0_2.4.11-3ubuntu3_amd64.deb . #sudo dpkg -x /usr/local/pulse/debs/libwebkitgtk-1.0-0_2.4.11-4_amd64.deb . export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/local/pulse/extra/usr/lib/x86_64-linux-gnu/ sudo apt-get install libenchant-dev #Modify the desktop shortcut at : sudo gedit /usr/share/applications/pulseUi.desktop Exec=/usr/bin/env LD_LIBRARY_PATH=/usr/local/pulse/extra/usr/lib/x86_64-linux-gnu:$LD_LIBRARY_PATH /usr/local/pulse/pulseUi More details at: https://askubuntu.com/questions/1135065/cant-run-pulse-secure-on-ubuntu-19-04-because-libwebkitgtk-1-0-so-0-is-missing https://medium.com/@yildirimabdrhm/pulse-secure-client-installation-on-linux-8bc524088793 ============ Disable Pidgin notifications =============== Ctrl-U -- Libnotify Popups -- Configure plugin ==================== Resize images in Nautilus ========================== sudo apt-get update sudo apt-get install imagemagick -y sudo apt install nautilus-image-converter nautilus -q ))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))) ))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))) ========= Useful commands for Raspberry Pi ============= # measure temperature vcgencmd measure_temp # config script sudo raspi-config ============ Install Python 3.7 ================= sudo add-apt-repository ppa:deadsnakes/ppa sudo apt-get update sudo apt-get install python3.7 sudo update-alternatives --install /usr/bin/python python /usr/bin/python3.7 1 sudo update-alternatives --install /usr/bin/python python /usr/bin/python3.8 2 sudo update-alternatives --set python /usr/bin/python3.7 =================== Install Firebird 3 ================ sudo apt install firebird3.0-server sudo gedit /etc/firebird/3.0/databases.conf sudo systemctl enable firebird3.0.service sudo systemctl disable firebird3.0.service sudo systemctl restart firebird3.0.service sudo systemctl stop firebird3.0.service sudo systemctl start firebird3.0.service == OR: sudo apt-get -y install libncurses5 libtommath1 sudo ln -s libtommath.so.1 /usr/lib/x86_64-linux-gnu/libtommath.so.0 cd ~/Downloads wget -O- https://github.com/FirebirdSQL/firebird/releases/download/R3_0_5/Firebird-3.0.5.33220-0.amd64.tar.gz|tar -zxC /tmp rm Firebird-3.0.5.33220-0.amd64.tar.gz cd /tmp/Firebird-3.0.5.33220-0.amd64 sudo ./install.sh cd .. rm -rf Firebird-3.0.5.33220-0.amd64 sudo gedit /opt/firebird/databases.conf sudo systemctl enable firebird-superserver sudo systemctl disable firebird-superserver sudo systemctl restart firebird-superserver sudo systemctl stop firebird-superserver sudo systemctl start firebird-superserver === telnet localhost 3050 ========================== Login as another user in terminal ================ su - user2 su - #login as root ============= Separate output audio devices for each app ============================ sudo apt-get install pavucontrol pavucontrol ========================== Fix "Failed to activate service 'org.bluez': timed out" error ============== sudo systemctl enable bluetooth.service OR sudo apt-get remove pavucontrol ========================== Fix "Cannot access vdagent virtio channel /dev/virtio-ports/com.redhat.spice.0" error ============== sudo apt purge spice-vdagent ============================= Fix "Couldn't get size: 0x800000000000000e" error ====================================== In BIOS : Security -> Secure Boot -> Secure Boot Mode -> [Standard] ================== Windows software ================ - Dropbox -- from www.dropbox.com - Draftsight (http://dl-ak.solidworks.com/nonsecure/draftsight/2018SP1/draftSight.deb) - text editor: notepadqq (regular expressions not working), Geany, SciTE - File manager -- Double Commander - FTP server -- OpenSSH - video player -- VLC (Ubuntu software or sudo snap install vlc) - ultraISO -- UNetbootin + sudo apt-get install isomaster - photo manager -- digikam (alternatives: gThumb, KPhotoAlbum, Darktable, F-Spot, GTKRawGallery, Picty, Fotoxx) - ebook converter -- Calibre - audio capture -- Audio Recorder - audio editor -- Audacity - video capture (Screen recorder) -- Open Broadcaster Software (OBS) - video convert -- Handbrake (Selene?) - Video Editor -- Kdenlive - PDF Reader -- Evince - PDF Editor -- ============== Ready desktop shortcuts for all applications =================== /usr/share/applications/ /var/lib/snapd/desktop/applications ============== Open As in Double Commander, also Add to Favorites (dock) =================== ~/.local/share/applications ======== Merge several mp3 files ================ sudo apt-get install mp3wrap mp3wrap output.mp3 *.mp3 ================= Install Docker from Ubuntu repo (the version from Docker repo is superfluous) ======================= sudo apt-get update sudo apt-get remove docker docker-engine docker.io docker-ce docker-ce-cli containerd.io sudo apt install docker.io docker-compose sudo groupadd docker sudo usermod -aG docker $USER newgrp docker sudo systemctl start docker sudo systemctl enable docker docker --version =================== Docker PXE Server =================== https://github.com/ferrarimarco/docker-pxe OR https://hub.docker.com/r/linuxserver/netbootxyz -- depends on external DHCP server, e.g. in OpenWRT: Network -> DHCP and DNS -> TFTP Settings -> Network boot image: netboot.xyz.kpxe,,192.168.1.2 netboot.xyz.efi,,192.168.1.2 mkdir /media/d1/Dist/OS/netbootxyz/win sudo mount -o loop /media/d1/Dist/OS/Windows10_orig/WIN10_64_En.ISO /media/d1/Dist/OS/netbootxyz/win sudo umount /media/d1/Dist/OS/netbootxyz/win Shift+F10 wpeinit net use S: \\192.168.1.2\dist /user:guest password S:\os\netbootxyz\win\sources\setup.exe ===================== Reset keyring password ==================== sudo rm ~/.local/share/keyrings/login.keyring ============ htaccess for downloadbox ================== AddType application/octet-stream .zip .gz <FilesMatch ".gz"> Order Deny,Allow Allow from All RewriteEngine Off ================= Migrate website to new domain ==================== mysqldump -u USERNAME -p -h localhost DBNAME > db.sql sed -i 's/OLD.SITE.COM/NEW.SITE.COM/g' db.sql mysql -u USERNAME -p DBNAME < db.sql rm db.sql find /home/www/ -type f -exec \ sed -i 's/OLD\.SITE\.COM/NEW.SITE.COM/g' {} + ========================= Make clonezilla live USB ===================== Format a USB flash stick into FAT32 and label it CZILLA-USB cd ~/Downloads wget https://dotsrc.dl.osdn.net/osdn/clonezilla/71822/clonezilla-live-2.6.4-10-amd64.zip # wget https://dotsrc.dl.osdn.net/osdn/clonezilla/72474/clonezilla-live-2.6.5-21-i686.zip unzip clonezilla-live-2.6.4-10-amd64.zip -d /media/drew/CZILLA-USB rm clonezilla-live-2.6.4-10-amd64.zip sudo bash /media/drew/CZILLA-USB/utils/linux/makeboot.sh /dev/sdd4 ============================ Clonezilla -- make and restore partition image in batch/unattended mode ===================== For EFI boot mode: add the following text to grub.cfg file, which is located in /boot/grub directory on your live USB or CD. The text should be added before this line: menuentry "Clonezilla live (Default settings, VGA 800x600)"{ ((((((((((( Example for host OS -- one partition only menuentry "Make partition image unattended from sda3 to /dev/sdb1/Backup/HDD-Images/drew-pc/Ubuntu18/01-basic"{ search --set -f /live/vmlinuz linux /live/vmlinuz boot=live config noswap nolocales edd=on nomodeset noprompt ocs_prerun="mount /dev/sdb1 /mnt" ocs_prerun1="mount --bind /mnt/Backup/HDD-Images/drew-pc/Ubuntu18 /home/partimag/" ocs_live_run="ocs-sr -q2 -c -j2 -z1p -i 4096 -sfsck -scs -senc --batch -p reboot saveparts 01-basic sda3" ocs_live_extra_param="" ocs_live_keymap="NONE" keyboard-layouts=NONE ocs_live_batch="yes" ocs_lang="en_US.UTF-8" vga=788 ip=frommedia nosplash ocs_numlk=on initrd /live/initrd.img } menuentry "Restore partition image unattended from /dev/sdb1/Backup/HDD-Images/drew-pc/Ubuntu18/02-mainsoft to sda3"{ search --set -f /live/vmlinuz linux /live/vmlinuz boot=live config noswap nolocales edd=on nomodeset noprompt ocs_prerun="mount /dev/sdb1 /mnt" ocs_prerun1="mount --bind /mnt/Backup/HDD-Images/drew-pc/Ubuntu18 /home/partimag/" ocs_live_run="ocs-sr -g auto -e1 auto -e2 -r -j2 -k --batch -p reboot restoreparts 02-mainsoft sda3" ocs_live_extra_param="" ocs_live_keymap="NONE" keyboard-layouts=NONE keyboard-layouts=NONE ocs_live_batch="yes" ocs_lang="en_US.UTF-8" vga=788 ip=frommedia nosplash ocs_numlk=on initrd /live/initrd.img } )))))))))))) For legacy boot mode: add the following text to isolinux.cfg (loading from ISO image) or syslinux.cfg (loading from USB-flash stick) file, which is located in /syslinux directory on your live USB or CD. The text should be added after this line: MENU TITLE clonezilla.org, clonezilla.nchc.org.tw ((((((((((( Example for VirtualBox (shrinking VDI file size) -- whole disk label Clonezilla sda to sdb1-DiskImage MENU LABEL Make disk image unattended from sda to /dev/sdb1/DiskImage kernel /live/vmlinuz append initrd=/live/initrd.img boot=live config noswap nolocales edd=on nomodeset noprompt ocs_prerun="mount /dev/sdb1 /mnt" ocs_prerun1="mount --bind /mnt /home/partimag/" ocs_live_run="ocs-sr -q2 -j2 -z1p -i 4096 -sfsck -scs -senc --batch -p reboot savedisk DiskImage sda" ocs_live_extra_param="" ocs_live_keymap="NONE" keyboard-layouts=NONE ocs_live_batch="yes" ocs_lang="en_US.UTF-8" vga=788 ip=frommedia nosplash ocs_numlk=on TEXT HELP * Please check your params beforehand -- no more confirmations! ENDTEXT label Clonezilla sdb1-DiskImage to sda MENU LABEL Restore disk image unattended from /dev/sdb1/DiskImage to sda kernel /live/vmlinuz append initrd=/live/initrd.img boot=live config noswap nolocales edd=on nomodeset noprompt ocs_prerun="mount /dev/sdb1 /mnt" ocs_prerun1="mount --bind /mnt /home/partimag/" ocs_live_run="ocs-sr -g auto -e1 auto -e2 -r -j2 --batch -p reboot restoredisk DiskImage sda" ocs_live_extra_param="" ocs_live_keymap="NONE" keyboard-layouts=NONE keyboard-layouts=NONE ocs_live_batch="yes" ocs_lang="en_US.UTF-8" vga=788 ip=frommedia nosplash ocs_numlk=on TEXT HELP * Please check your params beforehand -- no more confirmations! ENDTEXT )))))))))))) Then replace the following parameters with your values in al places: sda3 -- imaged partition 03-all -- image name /dev/sdb1 -- drive that will store the image Backup/HDD-Images/drew-pc -- path on the drive that will store the image sda -- imaged drive When restoring the image with just one partition, first copy these files from the complete image: sda1.vfat-ptcl-img.gz.aa swappt-sda4.info ==================== Install and use partclone in Ubuntu Live USB =========================== #!/bin/sh sudo echo 'deb http://cz.archive.ubuntu.com/ubuntu bionic main universe' > /etc/apt/sources.list.d/partclone.list sudo apt-get update sudo apt-get install partclone sudo mkdir /media/d1 sudo mount /dev/sdb1 /media/d1 sudo partclone.ext4 -N -c -s /dev/sda3 | gzip -c > /media/d1/Backup/HDD-Images/win10_last.gz sudo mkdir /media/d1 sudo mount /dev/sdb1 /media/d1 sudo gzip -c -d /media/d1/Backup/HDD-Images/win10_last.gz | partclone.ext4 -N -r -o /dev/sda3 ==================================== Edit ISO including bootable ones ============================== sudo apt-get install isomaster OR https://poweriso.com/download-poweriso-for-linux.htm ======================= Create ramdisk and start Digikam with its DB on ramdisk -- but better make /tmp in RAM ==================== sudo mkdir /mnt/ramdisk /opt/digikam/start_with_ramdisk.sh : pkexec mount -t tmpfs -o rw,size=512M tmpfs /mnt/ramdisk cp -r -f /home/drew/Documents/digikam_db /mnt/ramdisk sh /opt/digikam/AppRun cp -r -f /mnt/ramdisk/digikam_db /home/drew/Documents #pkexec umount /mnt/ramdisk #the ramdisk will be unmounted after the next reboot ==================== Export OpenWRT router config =============== ssh [email protected] "uci export" > router.conf #============================= Disable password prompt in sudo (convenient but not secure -- do not forget to change it back!) ============================== #1. sudo visudo #Change: %sudo ALL=(ALL:ALL) ALL #to %sudo ALL=(ALL) NOPASSWD:ALL #2. sudo nano /etc/polkit-1/localauthority/50-local.d/99-nopassword.pkla [No password prompt] Identity=unix-group:sudo Action=* ResultActive=yes ========================== Install openjdk 8 ========================== sudo apt remove openjdk* sudo apt purge openjdk* sudo apt install openjdk-8-jdk openjdk-8-source sudo update-java-alternatives --set java-1.8.0-openjdk-amd64 export JAVA_HOME=$(readlink -f /usr/bin/java | sed "s:jre/bin/java::") ========================== Install openjxf 8 ========================== sudo apt-mark unhold openjfx libopenjfx-jni libopenjfx-java sudo apt remove openjfx sudo apt purge openjfx sudo apt update sudo apt install openjfx=8u161-b12-1ubuntu2 libopenjfx-jni=8u161-b12-1ubuntu2 libopenjfx-java=8u161-b12-1ubuntu2 sudo apt-mark hold openjfx libopenjfx-jni libopenjfx-java Then add /usr/share/java as global library in Project Structure ========================== Install openjdk 11 ========================== sudo apt install openjdk-11-jdk openjdk-11-source sudo update-java-alternatives --set java-1.11.0-openjdk-amd64 export JAVA_HOME=$(readlink -f /usr/bin/java | sed "s:jre/bin/java::") ========================== Install openjxf 11 ========================== sudo apt install openjfx export PATH_TO_FX=/usr/share/openjfx/lib export CLASSPATH=$CLASSPATH:/usr/share/java/openjfx/lib/ ========================== Java enabled browser ========================== palemoon ===================== Install Handbrake ============= sudo add-apt-repository ppa:stebbins/handbrake-releases sudo apt-get update sudo apt-get install handbrake-gtk sudo apt-get install handbrake-cli #for video passthrough use MKVToolNix ===================== Install MKVToolNix ============= wget -q -O - https://mkvtoolnix.download/gpg-pub-moritzbunkus.txt | sudo apt-key add - sudo sh -c "echo 'deb https://mkvtoolnix.download/ubuntu/ bionic main\ndeb-src https://mkvtoolnix.download/ubuntu/ bionic main' > /etc/apt/sources.list.d/mkvtoolnix.download.list" sudo apt update sudo apt install mkvtoolnix mkvtoolnix-gui ==================== Install Selene =========== sudo apt-add-repository -y ppa:teejee2008/ppa sudo apt-get update sudo apt-get install selene =============== Install DraftSight ====================== cd ~/Downloads wget http://dl-ak.solidworks.com/nonsecure/draftsight/2019SP1/draftSight.deb sudo dpkg -i ~/Downloads/draftSight.deb ================ Install Audacity ================ Use Ubuntu Software -- may display error sudo add-apt-repository ppa:ubuntuhandbook1/audacity sudo apt-get update sudo apt-get install audacity ============== Install Calibre ==================== sudo -v && wget -nv -O- https://download.calibre-ebook.com/linux-installer.py | sudo python -c "import sys; main=lambda:sys.stderr.write('Download failed\n'); exec(sys.stdin.read()); main()" ====================== Install Audio Recorder =============== sudo add-apt-repository ppa:audio-recorder/ppa sudo apt-get -y update sudo apt-get install --reinstall audio-recorder ========== Install digikam -- /tmp should be in RAM =============== #!/usr/bin/env xdg-open [Desktop Entry] Version=1.0 Type=Application Terminal=false Icon[en_US]=gnome-panel-launcher Name[en_US]=Digikam Exec=sh /home/drew/digikam/start_with_ramdisk.sh Name=Digikam Icon=/home/drew/digikam/digikam.png == start_with_ramdisk.sh == #!/bin/bash cd ~/digikam if !(test -f "digikam-6.4.0-x86-64.appimage";) then wget https://download.kde.org/stable/digikam/6.4.0/digikam-6.4.0-x86-64.appimage chmod ug+x digikam-6.4.0-x86-64.appimage fi cp -r -f ~/digikam/digikam_db /tmp ~/digikam/digikam-6.4.0-x86-64.appimage cp -r -f /tmp/digikam_db ~/digikam rm -r -f /tmp/digikam_db ==== ================== Install RDP ================ https://askubuntu.com/questions/592537/can-i-access-ubuntu-from-windows-remotely sudo apt-get update sudo apt-get install xrdp sudo apt-get install xfce4 echo xfce4-session >~/.xsession sudo gedit /etc/xrdp/startwm.sh The content should look like this (pay attention to the last line and ignore . /etc/X11/Xsession): " #!/bin/sh if [ -r /etc/default/locale ]; then . /etc/default/locale export LANG LANGUAGE fi startxfce4 " sudo service xrdp restart ==================================== Mount shares inside vbox ============================== https://gist.github.com/estorgio/1d679f962e8209f8a9232f7593683265 Install Guest Additions CD image... sudo apt-get update sudo apt-get install build-essential linux-headers-`uname -r` sudo /media/cdrom/./VBoxLinuxAdditions.run sudo shutdown -r now mkdir /home/andrew/vboxshare sudo mount -t vboxsf shared /home/drew/vboxshare sudo nano /etc/fstab shared /home/drew/vboxshare vboxsf defaults 0 0 sudo nano /etc/modules Add the following line to /etc/modules and save vboxsf shutdown -r now ================ Remote desktop via VNC =============== sudo apt update sudo apt install -y vino dconf-editor dconf-editor Search «remote-access» OR /org/gnome/desktop/remote-access gsettings set org.gnome.Vino require-encryption false ================= Install OpenVPN =============== sudo apt-get update sudo apt-get install openvpn sudo openvpn --config /media/d1/configfile.ovpn ========================== Make ISO image ================= mkisofs -allow-lowercase -allow-multidot -J -joliet-long -jcharset utf-8 -o /media/d1/Pics/My_photo/Archive/2017.iso /media/d1/Pics/My_photo/2017 ================ Download an offline website mirror, make and mount ISO image =============== sudo apt-get install webhttrack bash process_after_httrack.sh sudo mkdir /media/drew/iso sudo mount -o loop /media/d1/Stasia/offline-websites/doctorberezovska_com_2018-02-25.iso /media/drew/iso sudo umount /media/drew/iso -----------process_after_httrack.sh--------- #!/bin/bash source_path=/media/d2/Temp/HTTrack project_name=doctorberezovska_com temp_path=/media/d1/Temp iso_path=/media/d1/Stasia/offline-websites url_prefix=http:/ pagename=index.html basepath=$temp_path/$project_name cp -r $source_path/$project_name $temp_path rm -rf $basepath/hts-cache #delete all folders "feed" find $basepath -type d -name feed -exec rm -r {} \; #delete all files index????.html find $basepath -type f -name index????.html -exec rm -r {} \; find $basepath -type f -name index.html -size 0c > empty_indexes.txt #download empty index.html files while read -ru 3 LINE; do #replace basepath with http prefix in each line urlpath=${LINE/$basepath/$url_prefix} #delete index.html in each line urlpath=${urlpath/$pagename} wget -k --output-document="$LINE" $urlpath done 3< empty_indexes.txt find $basepath -type f -name *.html > all_html.txt while read -ru 3 LINE; do #Replace http://doctorberezovska.com/ with ../ #Some links are not replaced by HTTrack. This replacement will only work for level 1 pages, but they are the majority. A universal replacement is too complicated. #Also delete trash after sed -i 's_http://doctorberezovska.com/_../_g;/<\/html>/q' $LINE done 3< all_html.txt grep Error: $basepath/hts-log.txt >errors.txt rm -rf $basepath/hts-log.txt mkisofs -r -iso-level 4 -o $iso_path/$project_name"_"$(date +%Y-%m-%d).iso $basepath rm -rf $basepath ---------------------------------------------- ========================== Burn ISO e.g. ================ sudo fdisk -l sudo umount /dev/sdd sudo dd bs=4M if=/media/d1/Dist/Util/Hdd-tools/WinPE10_8_Sergei_Strelec/WinPE10_Sergei_Strelec_x64_2018.01.05_English_lite.iso of=/dev/sdd status=progress oflag=sync OR if bootable USB flash sudo add-apt-repository ppa:gezakovacs/ppa sudo apt-get update sudo apt-get install unetbootin sudo QT_X11_NO_MITSHM=1 /usr/bin/unetbootin ====================== SVN and Git GUI client ================= sudo add-apt-repository ppa:rabbitvcs/ppa sudo apt-get update sudo apt-get install rabbitvcs-cli rabbitvcs-core rabbitvcs-gedit rabbitvcs-nautilus rabbitvcs-nautilus3 sudo apt-get remove rabbitvcs* OR RapidSVN in UbuntuSoftware rep =========================== Git save default username and password ===================== git config --global user.email "[email protected]" git config --global user.name "Andrew Buldyzhov" git config --global credential.helper store git pull git pull # to change the password git pull ========== Download Youtube video ======== Find youtube-dl in Ubuntu software OR sudo wget https://yt-dl.org/downloads/latest/youtube-dl -O /usr/local/bin/youtube-dl sudo chmod a+rx /usr/local/bin/youtube-dl =============== On input source change the scroll lock toggles ======================= sudo gedit /etc/default/keyboard XKBOPTIONS="grp:alt_shift_toggle,grp_led:scroll" #XKBOPTIONS="grp:alt_shift_toggle" gsettings reset org.gnome.desktop.input-sources xkb-options ========================= Batch resize images recursively ================================= sudo apt-get install build-essential checkinstall && apt-get build-dep imagemagick -y cd ~/Downloads wget https://www.imagemagick.org/download/ImageMagick.tar.gz tar xf ImageMagick.tar.gz cd ImageMagick-7* ./configure make sudo make install sudo ldconfig /usr/local/lib find . -name '*.jpg' -execdir mogrify -resize 1920x1440 {} \; find . -name '*.JPG' -execdir mogrify -resize 1920x1440 {} \; find . -name "*.jpg" | xargs mogrify -resize 50% find . -name "*.JPG" | xargs mogrify -resize 50% find . -name '*.png' -execdir mogrify -format jpg {} \; find . -name '*.PNG' -execdir mogrify -format jpg {} \; ========== Disable MySQL from startup ========= sudo /etc/init.d/mysql stop sudo systemctl disable mysql sudo systemctl enable mysql sudo /etc/init.d/mysql start ============== Install Maria DB ==================== sudo apt update sudo apt install mariadb-server sudo mysql_secure_installation sudo mysql -u root CREATE USER 'dbeaver'@'localhost' IDENTIFIED BY 'password'; sudo systemctl stop mariadb.service sudo systemctl start mariadb.service sudo systemctl restart mariadb.service sudo systemctl enable mariadb.service sudo systemctl disable mariadb.service sudo systemctl status mariadb.service =============== Rename all .MP3 to .mp3 files =========== sudo apt install rename rename 's/.MP3$/.xxx/' *.MP3 rename 's/.xxx$/.mp3/' *.xxx ============ Randomize (shuffle) all .mp3 files ================= for f in *.mp3 *.MP3; do mv "$f" $RANDOM.mp3; done ==================== Batch rename files in text editor ================= sudo apt install renameutils qmv ======================= Install WireGuard on Raspbian ================== sudo apt update && sudo apt upgrade -y sudo apt-get install raspberrypi-kernel-headers echo "deb http://deb.debian.org/debian/ unstable main" | sudo tee --append /etc/apt/sources.list.d/unstable.list wget -O - https://ftp-master.debian.org/keys/archive-key-$(lsb_release -sr).asc | sudo apt-key add - printf 'Package: *\nPin: release a=unstable\nPin-Priority: 150\n' | sudo tee --append /etc/apt/preferences.d/limit-unstable sudo apt update sudo apt install wireguard -y which wg which wg-quick ===================== Simple commands of Wireguard for two comps ====================== ============ Peer1 -- acting as server =========== umask 077 mkdir /home/USER1/wgkeys cd /home/USER1/wgkeys wg genkey | tee privatekey | wg pubkey > publickey cat /home/USER1/wgkeys/publickey sudo ip link add dev wg0 type wireguard sudo ip address add dev wg0 192.168.3.1 peer 192.168.3.2 sudo wg set wg0 listen-port 11111 private-key /home/USER1/wgkeys/privatekey peer PEER2_PUBLIC_KEY allowed-ips 192.168.3.0/24 persistent-keepalive 25 sudo ip link set wg0 up sudo wg ============ Peer2 -- acting as client =========== umask 077 mkdir /home/USER2/wgkeys cd /home/USER2/wgkeys wg genkey | tee privatekey | wg pubkey > publickey cat /home/USER2/wgkeys/publickey sudo ip link add dev wg0 type wireguard sudo ip address add dev wg0 192.168.3.2 peer 192.168.3.1 sudo wg set wg0 private-key /home/USER2/wgkeys/privatekey peer PEER1_PUBLIC_KEY allowed-ips 192.168.3.0/24 endpoint PEER1_DOMAIN_OR_IP:11111 persistent-keepalive 25 sudo ip link set wg0 up sudo wg ===================== Simple config of Wireguard for two comps -- persistent after reboot ====================== ============ Peer1 -- acting as server =========== wg genkey | tee privatekey | wg pubkey > publickey cat privatekey cat publickey sudo vim /etc/wireguard/wg0.conf """"" [Interface] Address = 192.168.3.1 ListenPort = 11111 PrivateKey = PEER1_PRIVATE_KEY [Peer] PublicKey = PEER2_PUBLIC_KEY AllowedIPs = 192.168.3.0/24 PersistentKeepalive = 25 """"" sudo wg-quick up wg0 sudo systemctl enable wg-quick@wg0 sudo wg ping 192.168.3.2 ============ Peer2 -- acting as client =========== wg genkey | tee privatekey | wg pubkey > publickey cat privatekey cat publickey sudo vim /etc/wireguard/wg0.conf """"" [Interface] Address = 192.168.3.2 PrivateKey = PEER2_PRIVATE_KEY [Peer] PublicKey = PEER1_PUBLIC_KEY AllowedIPs = 192.168.3.0/24 Endpoint = PEER1_DOMAIN_OR_IP:11111 PersistentKeepalive = 25 """"" sudo wg-quick up wg0 sudo systemctl enable wg-quick@wg0 sudo wg ping 192.168.3.1 ================ Find and remove installed package ============== apt list --installed | grep imager sudo apt-get remove rpi-imager sudo dpkg --remove rpi-imager ================================ Clean up ========== sudo apt autoremove sudo apt clean sudo journalctl --vacuum-time=1m dpkg -l 'linux-*' | sed '/^ii/!d;/'"$(uname -r | sed "s/\(.*\)-\([^0-9]\+\)/\1/")"'/d;s/^[^ ]* [^ ]* \([^ ]*\).*/\1/;/[0-9]/!d' | xargs sudo apt-get -y purge sudo rm -rfv /var/lib/snapd/cache sudo mkdir /var/lib/snapd/cache sudo sh delete_old_snaps.sh #!/bin/bash # Removes old revisions of snaps # CLOSE ALL SNAPS BEFORE RUNNING THIS set -eu snap list --all | awk '/disabled/{print $1, $3}' | while read snapname revision; do snap remove "$snapname" --revision="$revision" done
2 comments
Thank you! It’s very useful cheat-sheet for beginner Linux user 🙂
You are welcome, Michal.
Have a look at this article, you may find it interesting.