惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

F
Full Disclosure
WordPress大学
WordPress大学
小众软件
小众软件
Cloudbric
Cloudbric
AWS News Blog
AWS News Blog
腾讯CDC
量子位
人人都是产品经理
人人都是产品经理
大猫的无限游戏
大猫的无限游戏
freeCodeCamp Programming Tutorials: Python, JavaScript, Git & More
V
Vulnerabilities – Threatpost
Scott Helme
Scott Helme
Hugging Face - Blog
Hugging Face - Blog
博客园_首页
C
CXSECURITY Database RSS Feed - CXSecurity.com
The Hacker News
The Hacker News
奇客Solidot–传递最新科技情报
奇客Solidot–传递最新科技情报
IT之家
IT之家
Jina AI
Jina AI
Attack and Defense Labs
Attack and Defense Labs
S
SegmentFault 最新的问题
Simon Willison's Weblog
Simon Willison's Weblog
The Cloudflare Blog
阮一峰的网络日志
阮一峰的网络日志
T
Tailwind CSS Blog
Last Week in AI
Last Week in AI
博客园 - 【当耐特】
Google Online Security Blog
Google Online Security Blog
美团技术团队
OSCHINA 社区最新新闻
OSCHINA 社区最新新闻
V
Visual Studio Blog
罗磊的独立博客
L
LINUX DO - 最新话题
博客园 - Franky
博客园 - 叶小钗
Apple Machine Learning Research
Apple Machine Learning Research
The Last Watchdog
The Last Watchdog
J
Java Code Geeks
AI
AI
C
Cisco Blogs
酷 壳 – CoolShell
酷 壳 – CoolShell
C
Cyber Attacks, Cyber Crime and Cyber Security
Cisco Talos Blog
Cisco Talos Blog
博客园 - 三生石上(FineUI控件)
雷峰网
雷峰网
Help Net Security
Help Net Security
钛媒体:引领未来商业与生活新知
钛媒体:引领未来商业与生活新知
云风的 BLOG
云风的 BLOG
I
Intezer
S
Securelist

Ittavern.com

Wimage - Hosting Open-Source Image Uploader with Podman and external S3 Storage Switching from Hugo to picopaper Encryption using SSH Keys with age in Linux ETag in nginx - Simple Resource Caching Sending nginx Logs to Loki with Grafana Alloy How to: Cisco ISE backup to SFTP repository with public key authentication Dummy IP & MAC Addresses for Documentation & Sanitization Deploying ISSO Commenting System for Static Content using Docker Generate a Vanity v3 Hidden Service Onion Address with mkp224o ssh-audit Primer - Audit your SSH Server mtr - More Detailed Traceroute - Network Troubleshooting My Personal Backup Strategy - August 2024 iperf3 - User Authentication with Password and RSA Public Keypair Bandwidth Measurement using netcat on Linux Getting started with rsync - Comprehensive Guide Cron Jobs on Linux - Comprehensive Guide with Examples SSH Server Hardening Guide v2 Port Knocking with knockd and Linux - Server Hardening Getting started with rclone - Data transmission Getting started with dig - DNS troubleshooting Getting started with Fail2Ban on Linux Getting started with netcat on Linux with examples URL explained - The Fundamentals Troubleshooting Asking The Right Questions Create tmux layouts using bash scripts Getting started with tcpdump - Ittavern.com Curl on Linux - Reference Guide Getting started with nmap scripts My Offsite Backup - March 2023 Getting started with iperf3 - Network Troubleshooting ICMP echo requests on Linux and Windows - Reference Guide Simulate an unreliable network connection with tc and netem on Linux Detecting Rogue DHCP Server - Ittavern.com Basics of the Linux Bash Command History with Examples Getting started with GNU screen - Beginners Guide Basics of Power over Ethernet (PoE) Difference between RSS and Atom SSH Troubleshooting Guide - Ittavern.com Backup Guide - how to secure crucial data SSH - run script or command at login Linux - unmount a busy target safely Visual guide to SSH tunneling and port forwarding Guide to Wireshark display filters Online Security Guide - Ittavern.com My IT EDC tool kit v2212 10 prompts - 1000 AI generated images - openAI Dall-E SSH - How to use public key authentication on Linux Ways to support open-source projects Getting started with nmap - Ittavern.com nginx - simple and native authentication function Linux - How to work with complex commands EICAR test file - riskless method to test your antivirus and firewall solution Linux - connect to a serial port with screen Podman / Docker - expose port only to the localhost of the host machine Tmux - reload .tmux.conf configuration file My use cases for CyberChef Nginx - simple permanent or temporary redirects Getting started with tmux - Ittavern.com Tmux - synchronize the input of all panes within a window Nginx - check your public IP CyberChef - How to remove empty lines
Adding a trash can to Linux with trash-cli
2024-02-04 · via Ittavern.com

There is no trash can for the Linux CLI. rm removes the data permanently, and there is practically no way of recovering deleted files reliably. trash-cli fills this role and lets you 'trash' files and directories and lets you recover 'trashed' items.

Installation #

There are multiple ways to install trash-cli. It is open source and instructions can be found on Github.

Working with Aliases #

As a side note: In this article, I will work with aliases. You can pick whatever alias you want, but it is not recommended to overwrite rm for trash-cli. Overwriting rm can cause issues with scripts, applications, and other features. That said, make sure not to overwrite an already-used command.

Add the aliases by adding them to your ~/.bashrc file and load it with source ~/.bashrc. It may vary depending on your setup.

Moving files into the trash can

You can move files into the trash can with trash or trash-put. It works with files and directories. I've been using it with the alias tm as it is close to rm.

Alias:
alias tm="trash"

Showing files and dirs in the trash can

You can use trash-list to show the content of the trash can.

$ trash-list
2024-02-03 22:53:27 /home/user/data/file2
2024-02-03 22:53:27 /home/user/data/file4
Alias:
alias tmls="trash-list"

Looking for specific files in the trash can #

$ trash-list | grep -i file4
2024-02-03 22:53:27 /home/user/data/file4

Side note: -i in grep makes the search case-insensitive.

Alias:
alias tmgr="trash-list | grep -i"

Disk Space #

The following directories store the trashed items: ~/.local/share/Trash/files and /root/.local/share/Trash/files # trashed with sudo

You can check the used space of the trash can with the following command:
du -sh ~/.local/share/Trash/files
Alias:
alias tmdu="du -sh ~/.local/share/Trash/files

Getting things out of the trash

The advantage of trash-cli is the possibility to recover 'trashed' items.:

$ trash-restore
   0 2024-02-03 23:05:54 /home/user/data/file5
   1 2024-02-03 23:05:54 /home/user/data/dir3
   2 2024-02-03 23:05:54 /home/user/data/file7
   3 2024-02-03 23:05:54 /home/user/data/dir4
   4 2024-02-03 22:53:27 /home/user/data/file4
What file to restore [0..4]: 

Choose a single file or directory or multiple items with e.g. 2-3. The chosen items will be restored to their original destination.

Alias:
alias tmre="trash-restore

You can't restore an item when an item with the same name is in the original path.

Refusing to overwrite existing file "file3".

There is an --overwrite option, but it is not working for me and I haven't really looked into it as I don't need it that often.

Emptying the trash can

There are multiple ways to do so. I haven't added any aliases for those options, but feel free to do so.

Removes all items from trash can:
trash-empty
There is no confirmation prompt!
Removes all items that have been deleted more than n days:
trash-empty n
trash-empty 30

Removing specific items #

Removes specific items from the trash can:
trash-rm NameOfItem # removes all items called NameOfItem
trash-rm '*.iso' # removes all .iso files
trash-rm /path/of/items # should remove all items with a specific path, but it is not working for me

Cron #

Emptying the trash can be automated with cron jobs.

I run it once a day to delete all items that have been trashed more than 7 days ago, but please modify as you wish:

crontab -e > add 20 4 * * * trash-rm 7 - runs every day at 4:20 am

Conclusion

It saved me multiple times, and I can recommend it. I've gotten used to using tm instead of rm, which can be annoying on systems I don't manage, but this is a small price to pay. The source code can be found on Github.