On 2/28/22 8:46 AM, Robert Nichols wrote:
On 2/28/22 1:22 AM, centos@niob.at wrote:
Am 28.02.22 um 05:45 schrieb Robert Nichols:
On 2/27/22 12:26 PM, centos@niob.at wrote:
Am 27.02.22 um 04:33 schrieb Robert Nichols:
Does anything for CentOS 8 provide the function of the fstab-decode utility? Entries in /proc/mounts and /etc/fstab can have escape sequences for certain special characters, and I need to decode that.
Preface: Never heard of fstab-decode before. Researching the command made me really wonder why it was invented. Especially since I have never seen an /etc/fstab with "escape sequences" or "special characters" since at least 1990 (If I am wrong: Please show me such a fstab file).
So why not just use:
umount $(awk '$3 == "vfat" {print $2}' /etc/fstab)
instead of the seemingly canonical use of fstab-decode
fstab-decode umount $(awk '$3 == "vfat" { print $2 }' /etc/fstab)
Those samples break if the mount point directory name contains spaces, tabs, or whatever other characters I don't know about that also get represented by escape sequences. I'm not actually using it with /etc/fstab, but with /proc/mounts which uses the same convention. I can control /etc/fstab and avoid the problem, but I cannot control how some auto-mounted foreign filesystem might be named. I have a script that needs to be robust in the face of such names.
Get creative! Unix administration is a creative job. Having said this:
Using white space within mount points is asking for trouble anyway. If you really want this in the most generic way, then do the unquoting with something like this:
awk '$3 == "vfat" {print $2}' /etc/fstab | perl -pl000 -e 's/\([0-7]{3})/chr(oct($1))/eg' | xargs -0 -n 1 -r umount
This seems to be the unixy way to do this.
Yes, white space in mount points is asking for trouble, but if someone automounts a USB flash drive filesystem which has a label that includes white space (e.g.: "USB DISK", like the VFAT preformat on some that I have bought) or other "funny" characters, that label gets used as the mount point directory.
Indeed, I can re-invent the wheel if that wheel is lost in the sands of time.
It turns out that particular wheel is best resurrected from the fstab-decode.c file in an old initscripts source package. The encoding is nonstandard, and the above perl code would not handle it correctly. Handling the unlikely oddball case seems like severe paranoia, but this could turn out to be, "That line of code you thought would never be executed just might save the day that one time when it _does_ get executed."