Unix Tools¶
Version History
Date | Description |
---|---|
Jun 21, 2021 | Update |
Dec 23, 2020 | extracted from the summary doc |
Alternative UNIX commands¶
Old wine in new bottles. Those are moden rewrite of common commands.
Essential Commands¶
The following repos have the essential UNIX commands like ls, cat, demsg. I don’t think it is a good idea to blindly read the source code. Rather, I think they should be used as references whenever we need to check how something is implemented.
Large Collections
- BusyBox
- This is a software suite that provides several Unix utilities in a single executable file.
- It has a large collection of commands. It probably has everything that GNU coreutils has. BuysBox is targeting embedded environment.
- GNU Coreutils
- This repo has the most used commands such as
cp
,dd
,cat
. - See the full list here.
- This repo has the most used commands such as
- GNU binutils: gas, static linker, and more
- This one has a set of programming tools for creating and managing binary programs, object files, libraries, profile data, and assembly source code.
- See the full list here
- util-linux
- This is a standard package distributed by the Linux Kernel Organization for use as part of the Linux operating system.
- See the full list here.
- FreeBSD
Network Commands¶
- iperf3 is a TCP, UDP, and SCTP network bandwidth measurement tool
- arping
- tcpdump
- OpenSSH is our ssh!
- scapy: Python-based interactive packet manipulation program & library. Very neat
- tcpstat: C-based simple tool that could dump network traffic. Seems using pcap interface, the one used by tcpdump?
- Also checkout FreeBSD as it has tools like
ifconfig
,if
and many more
Misc¶
-
Tools
- tmux
- git
- FFmpeg
- FFmpeg project is famous for its clean and neat C code.
- This project is used by a lot online video service companies
- CRIU: Checkpoint and Restore in Userspace
- The reason I love this repo is because it has so many interesting pieces on how to interact with kernel, save states, and restore them. In addition, it shows how to properly use many less well known syscalls.
- GRUB2: bootloader
- Learn how modern bootloader works.
- Detailed analysis of Linux booting sequence (how it transit from real-mode to protected mode, and finally to 64-bit mode, how to navigate Linux source code etc.)
- strace
- System call tracer at userspace
- I’ve designed one for LegoOS in kernel space
-
Editors
Libraries¶
- GNU glibc: libc, elf, and dynamic linker
- It is the default C library used by almost everyone
- It includes
ld.so
, the dynamic linker - I wrote some notes about GOT/PLT and explains what has happend before main() is called.
- GNU binutils: gas, static linker, and more
- This repo has a lot commands like
as
,ld
,objdump
,nm
and so on ld
is static linker and I like the magic of its linker script- I guess another useful repo is
elfutils
- This repo has a lot commands like
- C Library
- C++ Library