136 private links
User-friendly, colorful output
Adjusts to your terminal's width
Sort the results according to your needs
Groups & filters devices
Can conveniently output JSON
In this course, students will learn to develop complex system-level software in the C programming language while gaining an intimate understanding of the Unix operating system (and all OS that belong to this family, such as Linux, the BSDs, and even Mac OS X) and its programming environment.
Topics covered will include the user/kernel interface, fundamental concepts of Unix, user authentication, basic and advanced I/O, fileystems, signals, process relationships, and interprocess communication. Fundamental concepts of software development and maintenance on Unix systems (development and debugging tools such as "make" and "gdb") will also be covered.
Students are expected to have a good working knowledge of the C programming language, have written non-trivial programs before, and to be able to competently use a Unix system with a command-line shell interface. All coursework will be done exclusively on a Unix system from the command-line. This is not an introduction to using Unix!
So you've heard of this thing called cgroups, and you are interested in finding out more. Perhaps you caught mention of it while listening to a talk about containerization. Maybe you were looking into Linux performance tuning, or perhaps you just happened to be traversing your file system one day and discovered /sys/fs/cgroups. Either way, you want to learn more about this functionality that has been baked into the kernel for quite some time. So sit back, grab some popcorn, and prepare to (hopefully) learn something you may not have known before.
Using the Awk programming language, you can manipulate or extract data, generate reports, match patterns, perform calculations, and more, with great flexibility. Awk allows you to accomplish somewhat difficult tasks with a single line of code. To achieve the same results using traditional programming languages such as C or Python would require additional effort and many lines of code.
You still generate a public-private key pair for each developer. However, you don’t upload the public keys to your servers.
Instead, you sign the public keys with a so-called certificate authority (CA) key which you generate before. This signing simply generates a third certificate file which you give back to the developer and they put it inside of their .ssh/ folder next to the private and public key.
On the servers, you simply tell the server the public key of your CA and the server can detect if a user has a properly signed certificate and only allows access to the developers who have such a signed certificate.
Today in some versions of Linux ls puts single quotes around file names which contain white space likely in order to have those paths easier to copy and paste, but it does so only if !isatty().
I’m not a great fan of changing a program’s well-known behaviour, specially in a case such as with GNU ls which already uses an environment variable for coloring output; it would likely have been easy to augment that for the file name quoting.
It used to be simpler to teach. (But I don’t really teach Unix beginners any more.) :-)
A load testing tool capable of performing real-time analysis, inspired by vegeta and jplot.
Changes in behavior
The message that a binary file matches is now sent to standard error
and the message has been reworded from "Binary file FOO matches" to
"grep: FOO: binary file matches", to avoid confusion with ordinary
output or when file names contain spaces and the like, and to be
more consistent with other diagnostics. For example, commands
like 'grep PATTERN FILE | wc' no longer add 1 to the count of
matching text lines due to the presence of the message. Like other
stderr messages, the message is now omitted if the --no-messages
(-s) option is given.
Two other stderr messages now use the typical form too. They are
now "grep: FOO: warning: recursive directory loop" and "grep: FOO:
input file is also the output".
The --files-without-match (-L) option has reverted to its behavior
in grep 3.1 and earlier. That is, grep -L again succeeds when a
line is selected, not when a file is listed. The behavior in grep
3.2 through 3.4 was causing compatibility problems.
This is VT-100 and XTerm compatible video terminal implemented on the PIC32 microcontroller. It has a serial interface with TTL or RS-232 signal levels, input from a standard PS/2 keyboard, and output to a VGA monitor. There is also a USB interface that supports serial over USB and acts as a USB-to-serial converter.
Over the years I’ve collected a rather messy ~/.ssh/config which resulted in some undesired behavior as a result of me misunderstanding how the config file prioritizes its options.
Today I investigated that.
In short, this is what I found:
Priority goes from top to bottom
Defaults MUST come last
Host specificity is NOT a factor of priority
Host sections can be specified multiple times
Multiple hostnames (and aliases) may be specified per section
Host sections apply to the name you use (not what it resolves to)
Did you know that #Unix groups have passwords? Apparently if you set one, you then have to use newgrp to log in to that group.
I have never seen anyone use unix group passwords.
There are some things to say about this, but the first thing you might wonder is why the newgrp command exists at all. The best answer is that it's mostly a Unix historical relic (or, to put it another way, a fossil).
JuliaMono is a monospaced typeface designed for programming in the Julia Programming Language and in other text editing environments that require a wide range of specialist and technical Unicode characters.
Cursus writes your commands into an sqlite db. With cursus you can search for commands and the searched term will be highlighted if it was found.
Xonsh is Python with added shell syntax thrown in. This makes it an ideal, intuitve way to interact with your computer. You probably already know Python, and so xonsh allows you to run command line applications with out needing to learn a new, arcane syntax when ever you want to use a for-statement.
bit is an experimental modernized git CLI built on top of git that provides happy defaults and other niceties:
command and flag suggestions to help you navigate the plethora of options git provides you
autocompletion for files and branch names when using bit add or bit checkout
automatic fetch and branch fast-forwarding reducing the likelihood of merge conflicts
suggestions work with git aliases
new commands like bit sync that vastly simplify your workflow
commands from git-extras such as bit release & bit info
fully compatible with git allowing you to fallback to git if need be.
get insight into how bit works using bit --debug.
Oh my Posh enables you to use the full color set of your terminal by using colors to define and render the prompt.
View output of multiple processes, in parallel, in the console, with an interactive TUI
When you see a shell command on the Internet, do not copy it into your terminal.
Modern JavaScript Clipboard APIs allow a website to trivially overwrite what you put inside your clipboard, without the user's confirmation or permission.
So, this series is dedicated to my past self. In it we'll attempt to understand how Linux executables are organized, how they are executed, and how to make a program that takes an executable fresh off the linker and compresses it - just because we can.
This project literally makes your web browsing available COMPLETELY OFFLINE. Your browser does not even know the difference. It's literally that amazing. Yes.
Save your browsing, then switch off the net and go to http://localhost:22120 and switch mode to serve then browse what you browsed before. It all still works.
warning: if you have Chrome open, it will close it automatically when you open 22120, and relaunch it. You may lose any unsaved work.