Monday, May 13, 2024
 Popular · Latest · Hot · Upcoming
8
rated 0 times [  8] [ 0]  / answers: 1 / hits: 552  / 1 Year ago, sat, may 6, 2023, 3:13:56

Saw an command from this post to Generate a list of available commands and what each does that I would like to alias


find {,/usr}/{,s}bin -printf '%f0' | xargs -0 whatis | sort | less

I assume the less or the | is interfering but how can I make the alias command ignore those characters that is causing it issues?


ie. This doesn't work


alias cccc='find {,/usr}/{,s}bin -printf '%f0' | xargs -0 whatis | sort | less'
cccc

It returns


    pell0modem-manager0airserv-ng0usermod0vipw0filefrag0update-software-center0ntpdate-
debian0usbmuxd0foomatic-extract-text0cupsenable0dpkg-divert0dpkg-preconfigure0foomatic-
getpjloptions0ldattach0hplj10200bccmd0vpnc-disconnect0madwifi-
unload0cupsd0tcpd0hplj10180pppstats0service0update-icon-caches0atieventsd0hpljP15050grub-
set-default0userdel0arpd0gpsdctl0remove-shell0cpgr0winbindd0cracklib-format0update-catalog0wesside-ng0vmware-authdlauncher0aireplay-ng0install-docs0hciattach0lpc0install-menu0ck-log-system-restart0foomatic-printermap-to-gutenprint-xml0setvesablank0gconf-schemas0airmon-ng0zic0update-apt-xapian-index0pm-suspend0rebuild-

Instead of


[ (1)                - check file types and compare values
2to3 (1) - Python2 to Python3 converter
2to3-2.7 (1) - Python2 to Python3 converter
2to3-3.2 (1) - Python2 to Python3 converter
411toppm (1) - convert Sony Mavica .411 image to ppm
7z (1) - A file archiver with highest compression ratio
7za (1) - A file archiver with highest compression ratio
a2p (1) - Awk to Perl translator
accept (2) - accept a connection on a socket
accessdb (8) - dumps the content of a man-db database in a human read...
aclocal-1.11 (1) - manual page for aclocal 1.11.6
aclocal (1) - manual page for aclocal 1.11.3

when you execute the command by itself.


After the Fact - Supplemental


I also added another useful function for myself to query via a string against that catalogue of commands.


fff() { 
find {,/usr}/{,s}bin -printf '%f0' | xargs -0 whatis |& grep $1
}

So if you type the command fff pdf it will show you all the related commands about pdf like this


pdfunite (1)         - Portable Document Format (PDF) page merger
ps2pdf13 (1) - Convert PostScript to PDF 1.3 (Acrobat 4-and-later com...
pdftotext (1) - Portable Document Format (PDF) to text converter (vers...
ps2pdfwr (1) - Convert PostScript to PDF without specifying Compatibi...
pdfdetach (1) - Portable Document Format (PDF) document embedded file ...
ps2pdf (1) - Convert PostScript to PDF using ghostscript
ps2pdf12 (1) - Convert PostScript to PDF 1.2 (Acrobat 3-and-later com...
pdf2dsc (1) - generate a PostScript page list of a PDF document
pdfimages (1) - Portable Document Format (PDF) image extractor (versio...
pdftoppm (1) - Portable Document Format (PDF) to Portable Pixmap (PPM...
foomatic-ppdfile (1) - Generate a PPD file for a given printer/driver combo
dvipdf (1) - Convert TeX DVI file to PDF using ghostscript and dvips
qpdf (1) - PDF transformation software
pdftocairo (1) - Portable Document Format (PDF) to PNG/JPEG/PDF/PS/EPS/...
pdfseparate (1) - Portable Document Format (PDF) page extractor
pdftops (1) - Portable Document Format (PDF) to PostScript converter...
ps2pdf14 (1) - Convert PostScript to PDF 1.4 (Acrobat 5-and-later com...
pdfinfo (1) - Portable Document Format (PDF) document information ex...
pdftohtml (1) - program to convert PDF files into HTML, XML and PNG im...
pdfopt (1) - Ghostscript PDF Optimizer
pdffonts (1) - Portable Document Format (PDF) font analyzer (version ...
pdf2ps (1) - Ghostscript PDF to PostScript translator

I think this is kind of useful for knowing all the commands that are available


More From » bash

 Answers
0

Don't bother around with aliases for more complicated stuff, use a shell function instead:



 function cccc() {
find {,/usr}/{,s}bin -printf '%f0' | xargs -0 whatis | sort | less
}


See man bash for the justification:




The rules concerning the definition and use of aliases are somewhat confusing. Bash always reads at least one complete
line of input before executing any of the commands on that line. Aliases are expanded when a command is read, not when it
is executed. Therefore, an alias definition appearing on the same line as another command does not take effect until the
next line of input is read. The commands following the alias definition on that line are not affected by the new alias.
This behavior is also an issue when functions are executed. Aliases are expanded when a function definition is read, not
when the function is executed, because a function definition is itself a compound command. As a consequence, aliases
defined in a function are not available until after that function is executed. To be safe, always put alias definitions on
a separate line, and do not use alias in compound commands.



[#32257] Sunday, May 7, 2023, 1 Year  [reply] [flag answer]
Only authorized users can answer the question. Please sign in first, or register a free account.
ampust

Total Points: 133
Total Questions: 109
Total Answers: 111

Location: Reunion
Member since Fri, Jul 22, 2022
2 Years ago
ampust questions
Thu, Jul 15, 21, 16:30, 3 Years ago
Mon, Oct 24, 22, 05:38, 2 Years ago
Thu, Sep 15, 22, 14:37, 2 Years ago
Tue, Sep 7, 21, 17:46, 3 Years ago
;