Search This Blog

Sunday, October 13, 2019

Remove lines using vim

To remove all the lines in vim that contain certain string execute:
:g/string/d

To do the opposite i.e remove the lines that do not contain certain string execute:
:v/string/d

Saturday, July 27, 2019

dd

dd is a command-line utility for Unix and Unix-like operating systems, the primary purpose of which is to convert and copy files.
dd stands for copy and convert (called dd because cc is already in use by C compiler).

[Options]
bs : BYTES read and write up to BYTES bytes at a time (default: 512)
if : FILE read from FILE instead of stdin
of : FILE write to FILE instead of stdout
status : LEVEL The LEVEL of information to print to stderr; 'none' suppresses everything but error messages, 'noxfer' suppresses the final transfer statistics, 'progress' shows periodic transfer statistics

[Examples]
1 - Wipe the disk partition
# dd if=/dev/zero out=/dev/sd<?><n>

2  - Make USB stick bootable
Step 1 : Find device name of USB stick using lsblk
Step 2 : Copy ISO
# dd if=/home/user/download/arch.iso of=/dev/sd<?> status=progress

? = disk name
n = partition number

Reverse of making USB stick bootable
# dd if=/dev/sd<?> of=backup.iso status=progess

Above command can be used to create single image of stick containing all the partitions/data which then can be restored on another machine by simply mounting image using
# mount backup.iso /mnt/pd -o loop

Monday, July 8, 2019

Special shell parameters

The shell treats several parameters specially.
These parameters may only be referenced; assignment to them is not allowed.

1 - $?
It expands to the exit status of the most recently executed foreground *pipeline.
0 exit status means the command was successful without any errors.
non-zero (1-255 values) exit status means command was failure.

*Pipeline: In Unix-like computer operating systems, a pipeline is a mechanism for inter-process communication using message passing. A pipeline is a set of processes chained together by their standard streams, so that the output text of each process (stdout) is passed directly as input (stdin) to the next one.

2 - $_
The underscore variable is set at shell startup and contains the absolute file name of the shell or script being executed as passed in the argument list.
i.e: if you create a shell script with just echo $_ it will spit out the path of that script.

Subsequently, it expands to the last argument to the previous command.
e.g:
$ mkdir /home/xbot/foo/bar/dir
$ cd $_
$ echo $?
0
$ pwd
/home/xbot/foo/dir

Friday, April 19, 2019

killall command and signals.

killall sends a SIGTERM signal (if signal name is not specified explicitly) to all processes running any of the specified commands. 

[Syntax]
killall [options] command

killall supports regular expression matching of process names, via the -r option.

If the specified command contains slash (/) characters, the command is interpreted as a file name and processes running that particular file will be selected as signal recipients.

To make the killall operation interactive you can provide -i option which makes killall prompt for confirmation before sending signal.


Signals are software interrupts sent to a program to indicate that an important event has occurred.

You can use the options -s, --signal, and -SIGNAL options to send explicit signals.

[Example]
killall -s 9 chrome
killall -SIGKILL python

Some common signals :
SIGINT 2 - Issued if the user sends an interrupt signal (Ctrl + C).
SIGQUIT 3 - Issued if the user sends a quit signal (Ctrl + D).
SIGKILL 9 - If a process gets this signal it must quit immediately and will not perform any clean-up operations.

Thursday, March 14, 2019

prettify json file in vim.

:%!python -m json.tool