10 Essential Linux Commands Every Developer Should Master
This tutorial introduces ten fundamental Linux commands—pgrep, pstree, bc, split, nl, mkfifo, ldd, col, xmlwf, and lsof—explaining their purposes, typical usage examples, and how they help developers and system administrators efficiently manage processes, files, and system resources on Linux.
According to the speaker, Linux is the most suitable operating system for development because it gives users full control, offering openness, freedom, and honesty.
More enterprises are adopting Linux for servers, making it essential for learners to understand its features.
This article collects ten useful Linux commands to help readers deepen their understanding of Linux.
01 pgrep
pgrep lists process IDs matching a pattern, similar to using ps -ef | egrep '^hchen' | awk '{print $2}'.
$ pgrep -u hchen22441 2244402 pstree
pstree displays the process hierarchy as a tree.
pstree
init-+-acpid
|-auditd-+-python
| `-{auditd}
|-automount---4*[{automount}]
|-backup.sh---sleep
|-dbus-daemon
|-events/0
|-events/1
|-hald---hald-runner---hald-addon-acpi
|-httpd---10*[httpd]
|-irqbalance
|-khelper
|-klogd
|-ksoftirqd/0
|-ksoftirqd/1
|-kthread-+-aio/0
| |-aio/1
| |-ata/0
| |-ata/1
| |-ata_aux
| |-cqueue/0
| |-cqueue/1
| |-kacpid
| |-kauditd
| |-kblockd/0
| |-kblockd/1
| |-kedac
| |-khubd
| |-6*[kjournald]
| |-kmirrord
| |-kpsmoused
| |-kseriod
| |-kswapd0
| |-2*[pdflush]
| |-scsi_eh_0
| |-scsi_eh_1
| |-xenbus
| `-xenwatch
|-migration/0
|-migration/1
|-6*[mingetty]
|-3*[multilog]
|-mysqld_safe---mysqld---9*[{mysqld}]
|-smartd
|-sshd---sshd---sshd---bash---pstree
|-svscanboot---svscan-+-3*[supervise---run]
| |-supervise---qmail-send-+-qmail-clean
| | |-qmail-lspawn
| | `-qmail-rspawn
| `-2*[supervise---tcpserver]
|-syslogd
|-udevd
|-watchdog/0
|-watchdog/1
|-xinetd03 bc
bc provides high‑precision arithmetic, useful for calculations like square roots. Below is a simple script named sqrt that uses bc.
#!/bin/bash
if [ $# -ne 1 ]
then
echo 'Usage: sqrt number'
exit 1
else
echo -e "sqrt($1)
quit
" | bc -q -i
fiExample usage:
$ ./sqrt 36
6
$ ./sqrt 2.0000
1.4142
$ ./sqrt 10.0000
3.162204 split
split divides a large file into smaller pieces.
$ ls -l largefile.tar.gz
-rw-r--r-- 1 hchen hchen 436774774 04-17 02:00 largefile.tar.gz
$ split -b 50m largefile.tar.gz LF_
$ ls -l LF_*
-rw-r--r-- 1 hchen hchen 52428800 05-10 18:34 LF_aa
-rw-r--r-- 1 hchen hchen 52428800 05-10 18:34 LF_ab
... (other parts) ...
-rw-r--r-- 1 hchen hchen 17344374 05-10 18:35 LF_aiTo recombine the parts:
$ cat LF_* > largefile.tar.gz05 nl
nl numbers the lines of a file, similar to cat but adds line numbers.
$ nl stdio.h | head -n 10
1 /* Define ISO C stdio on top of C++ iostreams.
2 Copyright (C) 1991,1994-2004,2005,2006 Free Software Foundation, Inc.
3 This file is part of the GNU C Library.
4 The GNU C Library is free software; you can redistribute it and/or
5 modify it under the terms of the GNU Lesser General Public
6 License as published by the Free Software Foundation; either
7 version 2.1 of the License, or (at your option) any later version.
8 The GNU C Library is distributed in the hope that it will be useful,
9 ...06 mkfifo
mkfifo creates a named pipe (FIFO) for inter‑process communication.
$ mkfifo /tmp/hchenpipe
$ ls -l /tmp
prw-rw-r-- 1 hchen hchen 0 05-10 18:58 hchenpipeWriting to the pipe blocks until another process reads from it: $ ls -al > /tmp/hchenpipe # blocks Reading from the pipe in another terminal releases the block:
$ head /tmp/hchenpipe
... (output of ls -al) ...07 ldd
ldd shows the shared libraries required by an executable.
$ ldd /usr/bin/java
linux-gate.so.1 => (0x00cd9000)
libgij.so.7rh => /usr/lib/libgij.so.7rh (0x00ed3000)
libgcj.so.7rh => /usr/lib/libgcj.so.7rh (0x00ed6000)
libpthread.so.0 => /lib/i686/nosegneg/libpthread.so.0 (0x00110000)
librt.so.1 => /lib/i686/nosegneg/librt.so.1 (0x009c8000)
libdl.so.2 => /lib/libdl.so.2 (0x008b5000)
libz.so.1 => /usr/lib/libz.so.1 (0x00bee000)
libgcc_s.so.1 => /lib/libgcc_s.so.1 (0x00aa7000)
libc.so.6 => /lib/i686/nosegneg/libc.so.6 (0x0022f000)
libm.so.6 => /lib/i686/nosegneg/libm.so.6 (0x00127000)
/lib/ld-linux.so.2 (0x00214000)08 col
col converts man‑page output to plain text.
# PAGER=cat man less | col -b > less.txt09 xmlwf
xmlwf validates an XML document, reporting any malformed tags.
$ curl 'https://coolshell.cn/?feed=rss2' > cocre.xml
$ xmlwf cocre.xml
$ perl -i -pe 's@<link>@<br>@g' cocre.xml
$ xmlwf cocre.xmlcocre.xml:13:23: mismatched tag10 lsof
lsof lists open files and the processes using them.
$ lsof | grep TCPhttpd
548 apache 4u IPv6 14300967 TCP *:http (LISTEN)
... (other entries) ...
11095 root 3u IPv4 152157957 TCP *:ftp (LISTEN)Signed-in readers can open the original source through BestHub's protected redirect.
This article has been distilled and summarized from source material, then republished for learning and reference. If you believe it infringes your rights, please contactand we will review it promptly.
Efficient Ops
This public account is maintained by Xiaotianguo and friends, regularly publishing widely-read original technical articles. We focus on operations transformation and accompany you throughout your operations career, growing together happily.
How this landed with the community
Was this worth your time?
0 Comments
Thoughtful readers leave field notes, pushback, and hard-won operational detail here.
