Linux Tips: Difference between revisions
Line 33: | Line 33: | ||
See [[Linux Software]] for more powerful search tool (searching in file content). |
See [[Linux Software]] for more powerful search tool (searching in file content). |
||
=== |
=== ag - the Silver Searcher === |
||
''' |
'''ag''' is a much faster alternative to <code>grep</code> (in fact a faster <code>ack</code>). See [[Linux Commands]]. |
||
=== rg - ripgrep === |
=== rg - ripgrep === |
Revision as of 11:49, 21 May 2019
Disable Auto-Mount
You can temporarily disable automount by doing as root [1]:
$ rcdbus stop
Fast Copy
Using Netcat
When copying a directory that contains a lot of small files (like 1000+ files <1kB), it is faster to actually generate a tarball of the directory and have it unpacked on the fly on the destination server [2]:
# On DESTINATION box, launch first the listener
nc -l -p 2342 | tar -C /target/dir -xzf -
#On SOURCE box, launch the sender
tar -cz /source/dir | nc -w 3 Target_Box 2342
Using tar
Say you want to copy from directory /mnt/img to /mnt/usb
(cd /mnt/img ; tar -cf - *) | (cd /mnt/usb ; tar -xvf -)
sync # Flush file system buffers
Other
See here
Fast Search
Locate
! Power Tip ! Use locate to find files rapidly by their names. locate is very lightweight (hardly notice it's running) and very efficient. It works for any file in any local file system.
Recoll, Beagle, Google Desktop...
See Linux Software for more powerful search tool (searching in file content).
ag - the Silver Searcher
ag is a much faster alternative to grep
(in fact a faster ack
). See Linux Commands.
rg - ripgrep
Rg is like Ag, but even faster. See Linux Commands.
fd
fd is a simpler find
. See Linux Commands.
Password prompt during boot
This is a tip for GDM but similar tip works for KDM. It prompts for a password needed to mount a password protected HOME partition [3].
Add at the end of /etc/gdm/Init/Default:
DEVICE=/dev/sda6
while [ ! -e /dev/mapper/cryptohome ]; do
zenity --entry --hide-text --text="Enter your passphrase:" | cryptsetup luksOpen $DEVICE cryptohome
done
mount /dev/mapper/cryptohome /home
Open File Manager at Current Directory from Terminal
Source [4]
xdg-open . # Works for any desktop
gnome-open . # In Gnome
nautilus . # Open Nautilus specifically
Fix 'Operation not permitted' when removing (rm) a file as root
We try to remove a file as root but get an Operation not permitted error. How is that possible?
ls -l
# -rw-r--r-- 1 root root 144 Mar 14 07:33 extlinux.conf
# -r-------- 1 root root 60K Mar 14 07:06 ldlinux.sys
rm ldlinux.sys
# rm: cannot remove ‘ldlinux.sys’: Operation not permitted
Two possibilities:
- The immutable file attribute is set
- The filesystem is mounted read-only.
In the latter case, just mount the filesystem with write access. In the former case, use chattr
:
lsattr ldlinux.sys
# ----i----------- ldlinux.sys
chattr -i ldlinux.sys
rm ldlinux.sys
Shell tips
Color in Shell
Some tips to provide a more colorful shell experience.
- cat with color syntax highlighting
- Colored diff colordiff
- Color with git
- Preserve color with less
- Colors in man pages (using either less or most as pager)
- Vim-based color viewer view
cat
with highlighting
The examples below create a script ccat, similar to cat but with syntax highlighting.
- Using
source-highlight
[5]
Define a script ccat:
#!/bin/bash
src-hilite-lesspipe.sh $1
The included less script is also nice. Add to your .bashrc:
export LESSOPEN="| /path/to/src-hilite-lesspipe.sh %s"
export LESS=FRX # At least R!
Some examples
ccat file.c
ccat file.c | less -FRX
- Using
highlight
[6]
highlight
comes with package highlight. Example of script:
#!/bin/bash
highlight -O ANSI "$1"
Note that highlight can produce output in many different format (e.g. html)
- Alternatives
On Ubuntu:
- python-pygments
- code2html
- source-highlight (a dependency of qgit)
colordiff
colordiff is a Perl wrapper around diff to show diff outputs in color:
colordiff file1 file2 # Diff in colors
alias diff="colordiff -W ${COLUMNS:-130}" # Handy alias that also adds auto-width
Note that colordiff output can be piped through less, or colordiff can also take a diff as standard input:
colordiff file1 file2 | less -FSRX # Page output
<patchfile colordiff # Colorize stdin
git
See Git (configuration section).
less
Use option -R to preserve ANSI color escape sequence in input:
colordiff file1 file2 | less -R # As command-line option
export LESS=R # Better use env. var $LESS
colordiff file1 file2 | less # ... no need to give -R anymore
export LESS=FRX # Even better
colordiff file1 file2 | less # ... quit asap if less than 1-page
In git, less is called with the following option:
export lESS=FSRX # Default git options
# ... F - quit if less than 1-page
# ... S - truncate long lines
# ... R - preserve color
# ... X - don't initialize term (no clear)
man
To have colors in manpages, the simplest is to install the package most:
sudo apt-get install most
And then tell how you want to use it:
# SYSTEM-WIDE
sudo update-alternatives --config pager # To select 'most' as default pager system-wide
# per USER - in ~/.bashrc
export PAGER=most # To select 'most' as default pager for that user
alias man="PAGER=most man" # To select 'most' only for manpages
The drawback is that most does not support the same keyboard shortcuts as less. If you still want colors in your man page, you can get the same effect with less thanks to some bash script-fu magic (see [7])
mkdir ~/.terminfo/
cd ~/.terminfo
wget http://nion.modprobe.de/mostlike.txt # Get the new terminfo description
tic mostlike.txt # Compile it using terminfo entry-description compiler
Now just define the following alias in ~/.bashrc:
alias man="TERMINFO=~/.terminfo TERM=mostlike PAGER=LESS LESS=C man" # LESS=C can be skipped or adapted
Unfortunately the supplied terminfo does not support scrolling the pages with the mousewheel as it used to. Another alternative is to give less some explicit termcap commands (see [8]):
export LESS_TERMCAP_mb=$'\E[01;31m'
export LESS_TERMCAP_md=$'\E[01;37m'
export LESS_TERMCAP_me=$'\E[0m'
export LESS_TERMCAP_se=$'\E[0m'
export LESS_TERMCAP_so=$'\E[01;44;33m'
export LESS_TERMCAP_ue=$'\E[0m'
export LESS_TERMCAP_us=$'\E[01;32m'
view
view is vim front-end document reader. view can highlight syntax of files based on their filename, but also based on their content (unlike source-highlight). Use view -
to view standard input:
view file.c # Detect .c format from filename
git diff HEAD^ | view - # Git - Will detect diff format from content
svn diff | view - # Svn - idem
Pager
- Manpages
- By default uses pager -s
- /usr/bin/pager is a symlink to /etc/alternatives/pager.
- Overridden by env var $PAGER.
- Overridden by env var $MANPAGER.
- Overridden by cli option -P pager.