200 private links
Pain in C++
- tools and compiler/platform differences
- ergonomics and (thread) safety
- community
Why Rust?
- fun & cool: better for a hobby project. It is a need.
- Great tooling
- Options are easier to use than C++'s pointers
use
system over#include
- simpler dependency management
- killer feature is Send and Sync, statically enforcing rules around threading.
Ship of Theseus strategy for the rewrite: component by component. The fish app should work exactly the same.
So if you are trying to draw any conclusions from this, consider the context: A group of people working on a thing in their free time, diverting some effort to work on something else, and deciding that after the work is finished it actually isn’t.
Gripes with Rust
- portability between OS: it allows to miss systems and ignoring version differences
- string translation and localization: format! are checked at compile-time
- building to other targets: "it is often better to use if
cfg!(...)
instead of#[cfg(...)]
because code behind the latter is eliminated very early, so it may be entirely wrong and only shows up when building on the affected system.
They also report mistakes they made.
There are good with quick-wins of the port to Rust. There is also some sad ones: CMake is not removed yet. Cargo is missing some features to install third dependencies (.fish scripts, 130 pages of documentation, the web-config tool and the man page generator).
Cygwin is not a supported platform.
How it is optimized to be the fastest possible.
With jc and the option to convert the output to json
A text-based web browser in the terminal. It uses Firefox under the hood.
Using the shell for daily tiny tasks ❤️
w & who pour savoir qui est connecté,
last & lastb pour savoir qui a été connecté,
history (lancé depuis l'utilisateur à vérifier : su username) pour voir les traces laissées,
less /etc/passwd et cat /etc/passwd pour vérifier si on n'a pas créé un utilisateur à l'arrache,
ps et top pour vérifier s'il n'y a pas un processus malveillant,
ss & netstat pour vérifier les faiblesses réseau,
ip
crontab pour vérifier si une tâche cron n'est pas lancée régulièrement
find / -mtime -5 -ctime -5 pour vérifier les fichiers modifiés récemment,
cat /var/log/syslog, cat /var/log/syslog | less, tail -f -n 5 /var/log/syslog, cat /var/log/syslog | grep fail, tail -f /var/log/syslog pour les logs
Via https://shaarli.sebw.info/?aU81yg
(du hollandais volant)
vipe allows you to run your editor in the middle of a unix pipeline and edit the data that is being piped between programs.
It uses the variable EDITOR for it.
Sur la mauvaise interface des outils en CLI du shell : la priorité est donné à la machine à la place des utilisateurs humains (devoir ajouter un -h pour rendre la sortie de la commande lisible pour un humain par exemple).
Lors de l'écriture d'un script, il y a le temps et la patience d'ajouter l'option (par exemple une option rawByte
qui affiche le nombre total de bits, au lieu d'une mesure en Kb, Mb, etc...); alors que dans le shell, on veut de la rapidité, de la facilité et au final la meilleure expérience utilisateur possible.
Un problème est qu'un changement de ces outils va casser des décennies de scripts... En attendant, des alias font le boulot !
An example with the JS code that copy/pasting from the shell commands from the web is a dangerous action
mmv
rename
- renameutils tools such as
qmv
,qcp
,imv,
icp,
deurlname` vimv
emacs
thunar file manager
After a freeze of the topbar, this solved the problem :
sudo rm -rvf ~/Library/Application\ Support/Firefox/ ~/Library/Caches/Firefox ~/Library/Preferences/org.mozilla.firefox.plist
The sync feature is great btw 😃
This is marvelous. The shell is now so beautiful 🥺 💙