/// 25 Apr 2025, 3:15 pm ////// GamingOnLinux ///
.
Read the full article on GamingOnLinux.
/// 26 Apr 2025, 9:17 am ////// Reddit ///
Newelle 0.9.5 Released! Newelle is an advanced AI assistant for Linux (GTK4 + Adw) supporting any LLM (Local or Online), voice commands, extensions and much more!
🔎 Implemented Web Search with SearXNG, DuckDuckGo, and Tavily
🌐 Website Reading: ask questions about websites (Write #url to embed it)
🔢 Improved inline LaTeX support
🗣 New empty chat placeholder
📎 Improved Document reading: semantic search will only be done if the document is too long
💭 New thinking widget
🧠 Add vision support for llama4 on Groq and possibility to choose provider on OpenRouter
🌍 New translations (Traditional Chinese, Bengali, Hindi)
🐞 Various bug fixes
Source Code: https://github.com/qwersyk/Newelle/
[link] [comments]
/// 26 Apr 2025, 12:35 am ////// Phoronix ///
/// 25 Apr 2025, 2:05 pm ////// The Hacker News ///
telert is a lightweight utility that sends notifications to Telegram, Teams, Slack, plays audio alerts, or shows desktop notifications.
The post telert – alerts for your terminal appeared first on LinuxLinks.
NX AppHub is here as a replacement for the NX Software Center, Nitrux’s built-in GUI utility for managing AppImage bundle, and zap, a command-line package management interface for AppImages.
The post Nitrux Project Introduces NX AppHub appeared first on Linux Today.
/// 25 Apr 2025, 12:30 am ////// 9to5Linux ///
COSMIC Alpha 7 desktop environment is now available with pinned workspaces, four new accessibility features, as well as various improvements. Here's what's new!
The post COSMIC Alpha 7 Desktop Adds Pinned Workspaces, New Accessibility Features appeared first on 9to5Linux - do not reproduce this article without permission. This RSS feed is intended for readers, not scrapers.
/// 25 Apr 2025, 9:48 am ////// OsTechnix ///
The Pop!_OS team have just released the latest COSMIC desktop Alpha 7 version, with numerous new features and improvements.
The post COSMIC Alpha 7 Released with Pinned Workspaces, Improved Accessibility and More! appeared first on OSTechNix.
The “grep” command is short for “Global Regular Expression Print”. This is a powerful tool in Unix-based systems used to search and filter text based on specific patterns. If you work with too many text-based files like logs, you will find it difficult to search for multiple strings in parallel. “grep” has the ability to search for multiple strings simultaneously, streamlining the process of extracting relevant information from files or command outputs. In this article, let us explain the variants of grep, instructions on how to use grep multiple string search, practical examples, and some best practices. Let’s get started!
“grep” and Its Variants
At Unixmen, we always start with the basics. So, before diving into searching for multiple strings, it’s necessary to understand the basic usage of “grep” and its variants:
- grep: Searches files for lines that match a given pattern using basic regular expressions.
- egrep: Equivalent to “grep -E”, it interprets patterns as extended regular expressions, allowing for more complex searches. Note that “egrep” is deprecated but still widely used.
- fgrep: Equivalent to “grep -F”, it searches for fixed strings rather than interpreting patterns as regular expressions.
You are probably wondering why we have two functions for doing the same job. egrep and grep -E do the same task and similarly, fgrep and grep -F have the same functionality. This is a part of a consistency exercise to make sure all commands have a similar pattern. At Unixmen, we recommend using grep -E and grep -F instead of egrep and fgrep respectively so that your code is future-proof.
Now, let’s get back to the topic. For example, to search for the word “error” in a file named “logfile.txt”, your code will look like:
grep "error" logfile.txt
How to Search for Multiple Strings with grep
There are multiple approaches to use grep to search for multiple strings. Let us learn each approach with some examples.
Using Multiple “-e” Options
The “-e`” option lets you specify multiple patterns. Each pattern is provided as an argument to “-e”:
grep -e "string1" -e "string2" filename
This command searches for lines containing either “string1” or “string2” in the specified file.
Using Extended Regular Expressions with “-E”
By enabling extended regular expressions with the “-E” option, you can use the pipe symbol “|” to separate multiple patterns within a single quoted string:
grep -E "string1|string2" filename
Alternatively, you can use the “egrep” command, which is equivalent to grep -E, but we do not recommend it considering egrep is deprecated.
egrep "pattern1|pattern2" filename
Both commands will match lines containing either “pattern1” or “pattern2”.
Using Basic Regular Expressions (RegEx) with Escaped Pipe
In basic regular expressions, the pipe symbol “|” is not recognized as a special character unless escaped. Therefore, you can use:
grep "pattern1\|pattern2" filename
This approach searches for lines containing either “pattern1” or “pattern2” in the specified file.
Practical Examples
Now that we know the basics and the multiple methods to use grep to search multiple strings, let us look at some real-world applications.
How to Search for Multiple Words in a File
If you have a file named “unixmen.txt” containing the following lines:
alpha bravo charlie delta fox golf kilo lima mike
To search for lines containing either “alpha” or “kilo”, you can use:
grep -E "apple|kiwi" sample.txt
The output will be:
apple banana cherry kiwi lemon mango
Searching for Multiple Patterns in Command Output
You can also use grep to filter the output of other commands. For example, to search for processes containing either “bash” or “ssh” in their names, you can use:
ps aux | grep -E "bash|ssh"
This command will display all running processes that include “bash” or “ssh” in their command line.
Case-Insensitive Searches
To perform case-insensitive searches, add the “-i” option:
grep -i -e "string1" -e "string2" filename
This command matches lines containing “string1” or “string2” regardless of case.
How to Count Number of Matches
To count the number of lines that match any of the specified patterns, use the “-c” option:
grep -c -e "string1" -e "string2" filename
This command outputs the number of matching lines.
Displaying Only Matching Parts of Lines
To display only the matching parts of lines, use the “-o” option:
grep -o -e "string1" -e "string2" filename
This command prints only the matched strings, one per line.
Searching Recursively in Directories
To search for patterns in all files within a directory and its subdirectories, use the “-r” (short for recursive) option:
grep -r -e "pattern1" -e "pattern2" /path/to/directory
This command searches for the specified patterns in all files under the given directory.
How to Use awk for Multiple String Searches
While “grep” is powerful, there are scenarios where “awk” might be more suitable, especially when searching for multiple patterns with complex conditions. For example, to search for lines containing both “string1” and “string2”, you can use:
awk '/string1/ && /string2/' filename
This command displays lines that contain both “string1” and “string2”.
Wrapping Up with Some Best Practices
Now that we have covered everything there is to learn about using grep to search multiple strings, it may feel a little overwhelming. Here’s why it is worth the effort.
“grep” can be easily integrated into scripts to automate repetitive tasks, like finding specific keywords across multiple files or generating reports. It’s widely available on Unix-like systems and can often be found on Windows through tools like Git Bash or WSL. Knowing how to use “grep” makes your skills portable across systems. Mastering grep enhances your problem-solving capabilities, whether you’re debugging code, parsing logs, or extracting specific information from files. By leveraging regular expressions, grep enables complex pattern matching, which expands its functionality beyond simple string searches.
In short, learning grep is like gaining a superpower for text processing. Once you learn it, you’ll wonder how you ever managed without it!
Related Articles
- How to Refine your Search Results Using Grep Exclude
- VI Save and Exit: Essential Commands in Unix’s Text Editor
- Why It Is Better to Program on Linux
The post grep: Multiple String Search Feature appeared first on Unixmen.

Essential SSH key management best practices for Ubuntu systems, including generation, protection, rotation, and backup strategies for maintaining secure and efficient server access.
The post SSH Key Management Best Practices appeared first on blackMORE Ops.
This article will guide you to enforcing DoT (DNS over TLS) on your running system and at boot time. Support is avaliable in Fedora 42. It will also guide you to set up encrypted DNS for system installation, if you want to try it with current Fedora Rawhide (Fedora 43).
Background
Traditionally, DNS queries are transferred over unencrypted datagrams through UDP port 53. This unencrypted nature provides a potential attack vector when an attacker is able to easily capture and modify DNS requests and responses. This can be mitigated by using encrypted DNS protocols such as DNS over TLS (DoT) and DNS over HTTPS (DoH).
Fedora has built in support for DNS over TLS through systemd-resolved, which is the default DNS resolver since Fedora 33. It is also possible to configure enforced or opportunistic DoT via DNSoverTLS option in resolved.conf. However, this only enables DNS encryption for system runtime. This is not enough on Zero Trust Networks where all DNS communication has to be encrypted for system runtime as well as during boot time for network boots and during system installation.
A Red Hat working group was tasked to deliver system-wide support for encrypted DNS that would satisfy the requirements for Zero Trust Networks. The latest bits landed in Fedora 42. (At this time installation support is present only in current Rawhide, future Fedora 43). While the generic idea is similar to what systemd-resolved does – it runs a local caching DNS resolver that accepts local unencrypted queries and forwards them over an encrypted channel to the upstream DNS servers. At this time systemd-resolved remains controversial and there is not much development activity. Therefore, after discussion with systemd developers, we decided to rely on a different service – unbound. However, we do plan to implement support for systemd-resolved in the future and give users a choice.
Enable DoT during system runtime
Encrypted DNS is fully integrated within NetworkManager using its new dnsconfd DNS plugin. This plugin talks to dnsconfd service, which provides a D-Bus API to configure a local DNS resolver. Only unbound is supported at the moment, but more backends will be added in the future. Dedicating the DNS configuration to a standalone service helps NetworkManager focus solely on obtaining the settings. This leaves the peculiarities of individual DNS backends to be dealt with inside dnsconfd.
Install Required Packages
Only the dnsconfd package needs to be installed as NetworkManager is already installed in Fedora by default. This package will also pull in dependencies such as unbound.
$ sudo dnf install dnsconfd $ sudo systemctl enable --now dnsconfd
Configure NetworkManager
The next step is to configure the NetworkManager. The following snippet sets the server to Cloudflare’s 1.1.1.1 and mode to exclusive. This means that this and only this server will be used for all connections.
$ cat /etc/NetworkManager/conf.d/global-dot.conf [main] dns=dnsconfd [global-dns] resolve-mode=exclusive [global-dns-domain-*] servers=dns+tls://1.1.1.1#one.one.one.one $ sudo systemctl restart NetworkManager
Installing custom CA certificate
Some DNS servers require a custom CA certificate bundle which can be installed into the default location /etc/pki/dns/extracted/pem/tls-ca-bundle.pem. Note that the dnsconfd service requires restart as well, if this file is changed.
$ cat /etc/NetworkManager/conf.d/global-dot.conf [main] dns=dnsconfd [global-dns] resolve-mode=exclusive [global-dns-domain-*] servers=dns+tls://10.0.0.100#custom.dns.example $ cat <<EOF > /etc/pki/dns/extracted/pem/tls-ca-bundle.pem ----BEGIN CERTIFICATE----- … custom.dns.example CA certificate -----END CERTIFICATE----- EOF $ sudo systemctl restart dnsconfd $ sudo systemctl restart NetworkManager
Enable DoT during system boot time
In order to enable encrypted DNS during system boot time, it is necessary to configure the initram DNS using specific kernel arguments and install the dnsconfd-dracut package. After this the initram image must be regenerated.
Install Required Packages
# dnf install dnsconfd-dracut
Set kernel arguments
# Select DoT DNS server KERNELARGS="rd.net.dns=dns+tls://1.1.1.1#one.one.one.one" # Only our DoT server will be used for all connections KERNELARGS+=" rd.net.dns-resolve-mode=exclusive" # Use dnsconfd NetworkManager plugin KERNELARGS+=" rd.net.dns-backend=dnsconfd" # Update kernel arguments grubby --args "$KERNELARGS" --update-kernel 0
Regenerate the initram image
The initram image can be regenerated with various tools (like dracut), but simply reinstalling the current kernel package is the simplest solution. It will make certain that dnsconfd and any custom CA certificates are included in the image.
# dnf reinstall kernel-core
However, note that this will regenerate initram only for the latest kernel. If an older kernel is required, it is recommended to call dracut directly and pass the desired kernel in its command line arguments.
# dracut -f --kver="$KERNEL_VERSION"
Enable DoT for system installation
It is possible to enable encrypted DNS during system installation in the current Fedora Rawhide (43). The only thing that is required is to pass additional kernel arguments to the installer. The installer will take care of everything and encrypted DNS will be configured for the system installation. The configuration will also be installed on the system so it will be automatically set up for the installed system as well as for the boot process. The arguments are the same as described in “Enable DoT during system boot time”, that is:
… rd.net.dns=dns+tls://1.1.1.1#one.one.one.one rd.net.dns-resolve-mode=exclusive rd.net.dns-backend=dnsconfd"
If required, a custom CA certificate bundle can be installed with a new %certificate kickstart directive.
%certificate --dir /etc/pki/dns/extracted/pem/ --filename tls-ca-bundle.pem
-----BEGIN CERTIFICATE-----
... custom CA certificate
-----END CERTIFICATE-----
%end
Enable DoT in FreeIPA
FreeIPA is an open source centralized Identity Management solution that provides its own integrated DNS service. As of Fedora 42, it supports encrypted DNS as well. This is either in a strict mode, where non-encrypted DNS is completely disabled or in a relaxed mode, where both encrypted and non-encrypted protocols are allowed.
For certificate management, Administrators can either provide their own TLS certificates or allow FreeIPA to issue and manage them via its Custodia subsystem. This flexibility enables seamless integration into both enterprise-managed and automated deployments.
Install Required Packages
The integration of DoT into FreeIPA focuses on new deployments and encapsulates the encrypted DNS functionality in dedicated subpackages. These packages are freeipa-client-encrypted-dns and freeipa-server-encrypted-dns. This modular approach ensures that existing installations remain unaffected unless these components are explicitly installed.
$ sudo dnf install freeipa-server-encrypted-dns freeipa-client-encrypted-dns
Fresh installation
To set up FreeIPA with DoT on Fedora, simply install, deploy, and use FreeIPA as usual, but include the relevant encrypted DNS parameters when deploying. This applies to servers, replicas, and clients alike. The new functionality integrates seamlessly into standard installation workflows for new environments.
As mentioned before, administrators can either provide their own TLS certificates or allow FreeIPA to issue and manage them via its Custodia subsystem.
Using your own certificates:
For testing purposes, you can generate certificates using openssl.
$ openssl req -newkey rsa:2048 -nodes -keyout /etc/pki/tls/certs/privkey.pem -x509 -days 36500 -out /etc/pki/tls/certs/certificate.pem -subj "/C=US/ST=NRW/L=Earth/O=CompanyName/OU=IT/CN=master.ipa.test/emailAddress=email@example.com" && chown named:named /etc/pki/tls/certs/privkey.pem /etc/pki/tls/certs/certificate.pem
Use this generated certificate, as shown below, when deploying FreeIPA server by using –dns-over-tls-cert and –dns-over-tls-key, respectively. If these options are empty, a new certificate will be requested from IPA CA.
$ sudo ipa-server-install \ --setup-dns \ --dns-over-tls \ --no-dnssec-validation \ --dot-forwarder "1.1.1.1#one.one.one.one" \ --auto-reverse \ --domain ipa.test \ --realm IPA.TEST \ --hostname master.ipa.test \ --dns-over-tls-cert /etc/pki/tls/certs/certificate.pem \ --dns-over-tls-key /etc/pki/tls/certs/privkey.pem \ -p Secret123 -a Secret123 -U
Existing installations
For existing deployments, administrators must take explicit action to enable DoT. This involves upgrading and installing the required packages (freeipa-client-encrypted-dns and freeipa-server-encrypted-dns). After that the ipa-dns-install commands are issued to include the encrypted DNS options. Care should be taken to evaluate the environment and ensure compatibility before enabling the new functionality.
$ sudo ipa-dns-install --dns-over-tls --dot-forwarder "1.1.1.1#one.one.one.one"
/// 25 Apr 2025, 7:35 am ////// Tecmint ///
So, you’ve just installed Ubuntu 25.04 “Plucky Puffin” on your computer—congrats! I recently did the same, and let me tell
The post My Experience – Top Things to Do After Installing Ubuntu 25.04 first appeared on Tecmint: Linux Howtos, Tutorials & Guides.