Project

General

Profile

Actions

Bug #20014

closed

Ruby command line exection ignores what inside of command {}

Added by henry.maestu@gmail.com (Henry Maestu) about 1 year ago. Updated about 1 year ago.

Status:
Rejected
Assignee:
-
Target version:
-
ruby -v:
2.3.0, 3.2.2
[ruby-core:115445]

Description

Ruby command line executions ignore what inside of {}

storage_info = `df -h --exclude={tmpfs,devtmpfs,squashfs} --total`
puts storage_info

# Same with System command. Seems everything inside {} is ignored
r, w = IO.pipe
system('df', '-h', '--exclude={tmpfs,devtmpfs,squashfs}','--total', out: w)
w.close
output = r.read
puts output

Ruby outout:

Filesystem      Size  Used Avail Use% Mounted on
udev             16G     0   16G   0% /dev
tmpfs           3,2G   11M  3,2G   1% /run
/dev/sdc2       212G  194G  6,4G  97% /
tmpfs            16G   11M   16G   1% /dev/shm
tmpfs           5,0M  4,0K  5,0M   1% /run/lock
tmpfs            16G     0   16G   0% /sys/fs/cgroup
/dev/loop1       64M   64M     0 100% /snap/core20/2015
/dev/loop2       64M   64M     0 100% /snap/core20/1974
/dev/loop4       82M   82M     0 100% /snap/gtk-common-themes/1534
/dev/loop0      148M  148M     0 100% /snap/figma-linux/169
/dev/loop5      165M  165M     0 100% /snap/gnome-3-28-1804/194
/dev/loop3       56M   56M     0 100% /snap/core18/2796
/dev/loop8      165M  165M     0 100% /snap/gnome-3-28-1804/198
/dev/loop10     148M  148M     0 100% /snap/figma-linux/178
/dev/loop7      425M  425M     0 100% /snap/kde-frameworks-5-qt-5-15-3-core20/8
/dev/loop9      497M  497M     0 100% /snap/gnome-42-2204/141
/dev/loop12     497M  497M     0 100% /snap/gnome-42-2204/132
/dev/loop11     106M  106M     0 100% /snap/core/16091
/dev/loop14     219M  219M     0 100% /snap/gnome-3-34-1804/93
tmpfs            16G  5,0M   16G   1% /tmp
/dev/loop13     117M  117M     0 100% /snap/robo3t-snap/8
/dev/loop16     205M  205M     0 100% /snap/rpi-imager/465
/dev/sdc1       300M  5,9M  294M   2% /boot/efi
/dev/loop15      74M   74M     0 100% /snap/core22/858
/dev/loop18     219M  219M     0 100% /snap/gnome-3-34-1804/90
/dev/loop6      168M  168M     0 100% /snap/postman/231
/dev/loop17     350M  350M     0 100% /snap/gnome-3-38-2004/143
/dev/loop19     350M  350M     0 100% /snap/gnome-3-38-2004/140
/dev/loop20     437M  437M     0 100% /snap/kde-frameworks-5-96-qt-5-15-5-core20/7
/dev/loop21     258M  258M     0 100% /snap/rubymine/81
/dev/loop23     116M  116M     0 100% /snap/bitcoin-core/145
/dev/loop22     167M  167M     0 100% /snap/spotify/70
/dev/loop24     205M  205M     0 100% /snap/rpi-imager/520
/dev/loop25     117M  117M     0 100% /snap/robo3t-snap/9
/dev/loop26      74M   74M     0 100% /snap/core22/864
/dev/loop28     128K  128K     0 100% /snap/bare/5
/dev/loop27     168M  168M     0 100% /snap/postman/234
/dev/loop29      92M   92M     0 100% /snap/gtk-common-themes/1535
/dev/loop30     159M  159M     0 100% /snap/spotify/68
/dev/loop31     106M  106M     0 100% /snap/core/16202
/dev/loop32      56M   56M     0 100% /snap/core18/2790
tmpfs           3,2G   80K  3,2G   1% /run/user/1000
total           287G  200G   76G  73% -

Example on terminal, expected output:

henry@development:~$ df -h --exclude={tmpfs,devtmpfs,squashfs} --total
Filesystem      Size  Used Avail Use% Mounted on
/dev/sdc2       212G  194G  6,4G  97% /
/dev/sdc1       300M  5,9M  294M   2% /boot/efi
total           212G  194G  6,7G  97% -

Have tested this on both 2.3.1 and 3.2.2 version on Ruby, same result, using Debian 10

Updated by nobu (Nobuyoshi Nakada) about 1 year ago

  • Status changed from Open to Rejected

The brace expansion is a feature of sh, and multiple arguments form system invokes the given command without sh.

Updated by henry.maestu@gmail.com (Henry Maestu) about 1 year ago

nobu (Nobuyoshi Nakada) wrote in #note-1:

The brace expansion is a feature of sh, and multiple arguments form system invokes the given command without sh.

Thank you!

Executing this in terminal acts same way as ruby.
sh -c 'df -h --exclude={tmpfs,devtmpfs,squashfs} --total'

This works for me, running command with bash
system("bash", "-c", "df -h --exclude={tmpfs,devtmpfs,squashfs} --total")

I just leave this for another lost soul troubling what the hell is going on, and thank you again explaining this!

Updated by nobu (Nobuyoshi Nakada) about 1 year ago

(Henry Maestu) wrote in #note-2:

This works for me, running command with bash
system("bash", "-c", "df -h --exclude={tmpfs,devtmpfs,squashfs} --total")

You can run it via sh by just using single string form, because braces are meta characters of sh.
system("df -h --exclude={tmpfs,devtmpfs,squashfs} --total")

Actions

Also available in: Atom PDF

Like1
Like1Like0Like0