Dirname: invalid option -- 'b'

I’m using Ubuntu 22.10 and gnome desktop. When I log in to console with `Ctrl + Alt + F4’ on the desktop log in screen. The following message will be triggered:

I’m puzzled where the following error message came from: “dirname: invalid option – ‘b’” and the information that has been displayed after it.

Any tips for debugging this problem will be appreciated.

Regards,
Zhao

It probably comes from /etc/motd (or a file in /etc/motd.d/, although I’m not entirely sure what mechanism is used by Ubuntu. In any case GNOME isn’t involved, so you are more likely to get an accurate answer in a Ubuntu forum.

How did you come to this conclusion, and what are the clues?

BTW, I can only see the following directory on my distro:

werner@X10DAi:~$ sudo find /etc/ -type d -name '*motd*'
/etc/update-motd.d

I checked here, but can’t see where to post:

“MOTD” is short for “message of the day”, and is the traditional method for displaying a message to users on login.

But now that I glanced at the screenshot a second time, the error warning appears after the “Last login” message. That means it’s not the motd, but from some login scripts (like /etc/profile, ~/.bash_profile)

It seems that the problem is not triggered by login scripts. So I further checked as follows:

werner@X10DAi:/etc$ sudo ug -l -I 'readlink|dirname'
devscripts.conf
ImageMagick-6/delegates.xml
X11/Xsession.d/55gnome-session_gnomerc
alternatives/automake
alternatives/gnome-www-browser
alternatives/google-chrome
alternatives/open
alternatives/x-www-browser
alternatives/yacc
apparmor.d/usr.lib.libreoffice.program.senddoc
apparmor.d/usr.lib.snapd.snap-confine.real
bash_completion.d/apport_completion
dhcp/dhclient-exit-hooks.d/timesyncd
grub.d/00_header
grub.d/10_linux
grub.d/10_linux_zfs
grub.d/20_linux_xen
init.d/cups
init.d/cups-browsed
init.d/kmod
init.d/saned
init.d/speech-dispatcher
init.d/tor
init.d/udev
kernel/postinst.d/initramfs-tools
kernel/postrm.d/initramfs-tools
ppp/ip-down.d/0000usepeerdns
ppp/ip-up.d/0000usepeerdns
profile.d/010-rootshare.sh
rc0.d/K01cups-browsed
rc0.d/K01saned
rc0.d/K01speech-dispatcher
rc0.d/K01tor
rc0.d/K01udev
rc1.d/K01cups
rc1.d/K01cups-browsed
rc1.d/K01saned
rc1.d/K01speech-dispatcher
rc1.d/K01tor
rc2.d/K01speech-dispatcher
rc2.d/K01tor
rc2.d/S01cups
rc2.d/S01cups-browsed
rc2.d/S01saned
rc3.d/K01speech-dispatcher
rc3.d/K01tor
rc3.d/S01cups
rc3.d/S01cups-browsed
rc3.d/S01saned
rc4.d/K01speech-dispatcher
rc4.d/K01tor
rc4.d/S01cups
rc4.d/S01cups-browsed
rc4.d/S01saned
rc5.d/K01speech-dispatcher
rc5.d/K01tor
rc5.d/S01cups
rc5.d/S01cups-browsed
rc5.d/S01saned
rc6.d/K01cups-browsed
rc6.d/K01saned
rc6.d/K01speech-dispatcher
rc6.d/K01tor
rc6.d/K01udev
rcS.d/S01kmod
rcS.d/S01udev
zfs/zpool.d/dm-deps

Which of these could be the culprit?

None look related. You would expect the shell initialization files/etc/profile or /etc/profile.d/*. Did you check your own shell initialization files? E.g. your ~/.bashrc, ~/.profile or ~/.bash_profile files?

But none of them triggered this problem, as checked below:

werner@X10DAi:~$ . /etc/profile
werner@X10DAi:~$ 
werner@X10DAi:~$ for i in /etc/profile.d/*.sh; do . $i; done;
werner@X10DAi:~$ 
werner@X10DAi:~$ . ~/.bashrc
werner@X10DAi:~$ 
werner@X10DAi:~$ .  ~/.profile 
[2]+  Done                    nohup bash $dnsproxy_script > /dev/null 2>&1
werner@X10DAi:~$ 

I don’t have ~/.bash_profile file.

The shell uses different initialization files for login shells and non-login shells. See the manpage section INVOCATION. I assume you don’t get this “invalid option – b” error when you open a terminal on the desktop (=non-login shell), but only when you login on a tty (=login shell)?

Checking your list of files again I missed profile.d/010-rootshare.sh before. Have a look in that file for readlink|dirname.

Beyond that I don’t know. I don’t know ug syntax but maybe try some greps that show the matching lines as well. Like does grep -R -E '(readline|dirname).*-b' /etc return any matches?

Thank you for your explanation and clarification.

The ug tool has a fully compatible syntax supported by grep. See the following for more details:

werner@X10DAi:~$ sudo ug -nIR '(readline|dirname).*-b' /etc
/etc/bash_completion.d/apport_completion:262:complete -F _apport-bug -o filenames -o dirnames ubuntu-bug
/etc/bash_completion.d/apport_completion:263:complete -F _apport-bug -o filenames -o dirnames apport-bug
/etc/profile.d/010-rootshare.sh:42:#https://discourse.gnome.org/t/dirname-invalid-option-b/13851/4
werner@X10DAi:~$ sudo grep -nIR -E '(readline|dirname).*-b' /etc
grep: /etc/pulse/client.conf.d/01-enable-autospawn.conf: No such file or directory
/etc/profile.d/010-rootshare.sh:42:#https://discourse.gnome.org/t/dirname-invalid-option-b/13851/4
/etc/bash_completion.d/apport_completion:262:complete -F _apport-bug -o filenames -o dirnames ubuntu-bug
/etc/bash_completion.d/apport_completion:263:complete -F _apport-bug -o filenames -o dirnames apport-bug
grep: /etc/systemd/system/multi-user.target.wants/unattended-upgrades.service: No such file or directory

However, I still haven’t noticed any valuable clues.

Is that a copy & paste error or why do you have a link to a discourse comment in your /etc/profile.d/010-rootshare.sh file?

You might try sudo grep -nIR -E 'readline|dirname' /etc next and check every matching line. Maybe somewhere a variable is used to pass in an option -b.

This is a habit of mine. I will put the link to discussion on related issues in the relevant script for future reference.

werner@X10DAi:~$ sudo grep -nIR -E 'readline|dirname' /etc
grep: /etc/pulse/client.conf.d/01-enable-autospawn.conf: No such file or directory
/etc/devscripts.conf:33:# --check-dirname-level and --check-dirname-regex command line options.
/etc/devscripts.conf:165:# Preserve the source tree dirname if the upstream version changes?
/etc/rc4.d/S01cups-browsed:37:	mkdir -p `dirname "$PIDFILE"`
/etc/rc4.d/K01tor:230:	if test ! -r $(dirname $TORPID); then
/etc/rc4.d/S01cups:60:	mkdir -p `dirname "$PIDFILE"`
/etc/rc4.d/K01speech-dispatcher:29:  PIDDIR=`dirname $PIDFILE`
/etc/profile.d/010-rootshare.sh:33:unset script_realdirname script_dirname
/etc/profile.d/010-rootshare.sh:42:#https://discourse.gnome.org/t/dirname-invalid-option-b/13851/4
/etc/profile.d/010-rootshare.sh:47:scriptdir_realpath=$(cd -P -- "$(dirname -- "${BASH_SOURCE[0]}")" && pwd -P)
/etc/profile.d/010-rootshare.sh:49:script_realdirname=$(dirname "$(realpath -e "${BASH_SOURCE[0]}")")
/etc/profile.d/010-rootshare.sh:50:script_dirname=$(cd -- "$(dirname -- "${BASH_SOURCE[0]}")" && pwd)
/etc/profile.d/010-rootshare.sh:62:script_realpath=$script_realdirname/$script_realname
/etc/profile.d/010-rootshare.sh:63:script_path=$script_dirname/$script_name
/etc/grub.d/20_linux_xen:114:      if test ! -e "${xen_dirname}/${xenpolicy}" ; then
/etc/grub.d/20_linux_xen:160:	${xen_loader}	${rel_xen_dirname}/${xen_basename} placeholder ${xen_args} \${xen_rm_opts}
/etc/grub.d/20_linux_xen:162:	${module_loader}	${rel_dirname}/${basename} placeholder root=${linux_root_device_thisversion} ro ${args}
/etc/grub.d/20_linux_xen:169:       initrd_path="${rel_dirname}/${i}"
/etc/grub.d/20_linux_xen:180:	${module_loader}     ${rel_dirname}/${xenpolicy}
/etc/grub.d/20_linux_xen:193:	dirname=$(dirname $i)
/etc/grub.d/20_linux_xen:195:	for j in "${dirname}/config-${version}" "${dirname}/config-${alt_version}" "/etc/kernels/kernel-config-${version}" ; do
/etc/grub.d/20_linux_xen:250:    xen_dirname=`dirname ${current_xen}`
/etc/grub.d/20_linux_xen:251:    rel_xen_dirname=`make_system_path_relative_to_its_root $xen_dirname`
/etc/grub.d/20_linux_xen:275:       if test -e "${xen_dirname}/${i}" ; then
/etc/grub.d/20_linux_xen:284:	dirname=`dirname $linux`
/etc/grub.d/20_linux_xen:285:	rel_dirname=`make_system_path_relative_to_its_root $dirname`
/etc/grub.d/20_linux_xen:299:	    if test -e "${dirname}/${i}" ; then
/etc/grub.d/20_linux_xen:314:		initrd_display="${initrd_display} ${dirname}/${i}"
/etc/grub.d/00_header:313:	themedir="`dirname "$GRUB_THEME"`"
/etc/grub.d/10_linux_zfs:451:        linux_dirname=$(dirname "${linux}")
/etc/grub.d/10_linux_zfs:466:            if test -e "${linux_dirname}/${i}" ; then
/etc/grub.d/10_linux_zfs:479:        rel_linux_dirname=$(make_system_path_relative_to_its_root "${linux_dirname}")
/etc/grub.d/10_linux_zfs:481:        initrd_list="${initrd_list}|${rel_linux_dirname}/${initrd}"
/etc/grub.d/10_linux_zfs:482:        kernel_list="${kernel_list}|${rel_linux_dirname}/${linux_basename}"
/etc/grub.d/10_linux:134:	if [ -e "`dirname $(readlink -f $0)`/10_linux_zfs" ]; then
/etc/grub.d/10_linux:225:  if [ x$dirname = x/ ]; then
/etc/grub.d/10_linux:244:	linux	${rel_dirname}/${basename}.efi.signed root=${linux_root_device_thisversion} ro ${args}
/etc/grub.d/10_linux:258:        initrd_path="${initrd_path} ${rel_dirname}/${i}"
/etc/grub.d/10_linux:262:        initrd_path_only_early="${initrd_path_only_early} ${rel_dirname}/${i}"
/etc/grub.d/10_linux:268:	  linux	${rel_dirname}/${basename} root=${linux_root_device_thisversion} ro ${args}
/etc/grub.d/10_linux:279:	  linux	${rel_dirname}/${basename} root=${linux_root_device_thisversion} ro ${args} panic=-1
/etc/grub.d/10_linux:293:	linux	${rel_dirname}/${basename} root=${linux_root_device_thisversion} ro ${args}
/etc/grub.d/10_linux:316:	devicetree	${rel_dirname}/${dtb}
/etc/grub.d/10_linux:420:  dirname=`dirname $linux`
/etc/grub.d/10_linux:421:  rel_dirname=`make_system_path_relative_to_its_root $dirname`
/etc/grub.d/10_linux:429:    if test -e "${dirname}/${i}" ; then
/etc/grub.d/10_linux:443:    if test -e "${dirname}/${i}" ; then
/etc/grub.d/10_linux:455:      initrd_display="${initrd_display} ${dirname}/${i}"
/etc/grub.d/10_linux:462:    if test -e "${dirname}/${i}" ; then
/etc/grub.d/10_linux:469:  for i in "${dirname}/config-${version}" "${dirname}/config-${alt_version}" "/etc/kernels/kernel-config-${version}" ; do
/etc/rc0.d/K01tor:230:	if test ! -r $(dirname $TORPID); then
/etc/rc0.d/K01cups-browsed:37:	mkdir -p `dirname "$PIDFILE"`
/etc/rc0.d/K01speech-dispatcher:29:  PIDDIR=`dirname $PIDFILE`
/etc/gprc:27:\\    READL  is readline available?
/etc/inputrc:1:# /etc/inputrc - global inputrc for libreadline
/etc/inputrc:2:# See readline(3readline) and `info rluserman' for more information.
/etc/init.d/cups-browsed:37:	mkdir -p `dirname "$PIDFILE"`
/etc/init.d/tor:230:	if test ! -r $(dirname $TORPID); then
/etc/init.d/speech-dispatcher:29:  PIDDIR=`dirname $PIDFILE`
/etc/init.d/cups:60:	mkdir -p `dirname "$PIDFILE"`
/etc/rc2.d/S01cups-browsed:37:	mkdir -p `dirname "$PIDFILE"`
/etc/rc2.d/K01tor:230:	if test ! -r $(dirname $TORPID); then
/etc/rc2.d/S01cups:60:	mkdir -p `dirname "$PIDFILE"`
/etc/rc2.d/K01speech-dispatcher:29:  PIDDIR=`dirname $PIDFILE`
/etc/apparmor.d/usr.lib.libreoffice.program.senddoc:26:  /usr/bin/dirname      rmix,
/etc/apparmor.d/abstractions/bash:32:  # bash relies on system-wide readline configuration
/etc/apparmor.d/abstractions/bash:40:  # probably readline wants to know terminal capabilities
/etc/apparmor.d/usr.lib.snapd.snap-confine.real:25:    /{,usr/}lib{,32,64,x32}/{,@{multiarch}/}libreadline{,-[0-9]*}.so* mr,
/etc/apparmor.d/usr.lib.snapd.snap-confine.real:491:        /{,usr/}lib{,32,64,x32}/{,@{multiarch}/}libreadline{,-[0-9]*}.so* mr,
/etc/rc5.d/S01cups-browsed:37:	mkdir -p `dirname "$PIDFILE"`
/etc/rc5.d/K01tor:230:	if test ! -r $(dirname $TORPID); then
/etc/rc5.d/S01cups:60:	mkdir -p `dirname "$PIDFILE"`
/etc/rc5.d/K01speech-dispatcher:29:  PIDDIR=`dirname $PIDFILE`
/etc/rc6.d/K01tor:230:	if test ! -r $(dirname $TORPID); then
/etc/rc6.d/K01cups-browsed:37:	mkdir -p `dirname "$PIDFILE"`
/etc/rc6.d/K01speech-dispatcher:29:  PIDDIR=`dirname $PIDFILE`
/etc/dhcp/dhclient-exit-hooks.d/timesyncd:34:        mkdir -p $(dirname $TIMESYNCD_CONF)
/etc/rc1.d/K01cups:60:	mkdir -p `dirname "$PIDFILE"`
/etc/rc1.d/K01tor:230:	if test ! -r $(dirname $TORPID); then
/etc/rc1.d/K01cups-browsed:37:	mkdir -p `dirname "$PIDFILE"`
/etc/rc1.d/K01speech-dispatcher:29:  PIDDIR=`dirname $PIDFILE`
/etc/kernel/postinst.d/initramfs-tools:22:	bootdir=$(dirname "$2")
/etc/kernel/postrm.d/initramfs-tools:22:	bootdir=$(dirname "$2")
/etc/rc3.d/S01cups-browsed:37:	mkdir -p `dirname "$PIDFILE"`
/etc/rc3.d/K01tor:230:	if test ! -r $(dirname $TORPID); then
/etc/rc3.d/S01cups:60:	mkdir -p `dirname "$PIDFILE"`
/etc/rc3.d/K01speech-dispatcher:29:  PIDDIR=`dirname $PIDFILE`
/etc/lvm/lvm.conf:957:# Settings for running LVM in shell (readline) mode.
/etc/brltty/Contraction/latex-access.ctb:184:    import readline, atexit
/etc/brltty/Contraction/latex-access.ctb:186:    atexit.register(readline.write_history_file, historyFile)
/etc/brltty/Contraction/latex-access.ctb:187:    readline.read_history_file(historyFile)
/etc/bash_completion.d/apport_completion:262:complete -F _apport-bug -o filenames -o dirnames ubuntu-bug
/etc/bash_completion.d/apport_completion:263:complete -F _apport-bug -o filenames -o dirnames apport-bug
/etc/bash_completion.d/apport_completion:264:complete -F _apport-cli -o filenames -o dirnames apport-cli
/etc/bash_completion.d/apport_completion:265:complete -F _apport-unpack -o filenames -o dirnames apport-unpack
grep: /etc/systemd/system/multi-user.target.wants/unattended-upgrades.service: No such file or directory
/etc/alternatives/yacc:65:  sed_dirname='s,/[^/]*$,,'
/etc/alternatives/yacc:74:          *) curr_executable=`echo "$curr_executable" | sed -e "$sed_dirname"`/"$linkdest" ;;
/etc/alternatives/x-www-browser:10:HERE="`dirname "$CHROME_WRAPPER"`"
/etc/alternatives/open:333:        DIR=`dirname "$1"`
/etc/alternatives/gnome-www-browser:10:HERE="`dirname "$CHROME_WRAPPER"`"
/etc/alternatives/google-chrome:10:HERE="`dirname "$CHROME_WRAPPER"`"
/etc/alternatives/automake:1482:	    my $depbase = dirname ($obj);
/etc/alternatives/automake:2076:            # This might make $dirname empty, but we account for that below.
/etc/alternatives/automake:2077:            (my $dirname = dirname ($depfile)) =~ s/\/*$//;
/etc/alternatives/automake:2078:            $dirname = $maybe_extra_leading_slash . $dirname;
/etc/alternatives/automake:2079:            $dep_files{$dirname . '/$(DEPDIR)/' . $basename} = 1;
/etc/alternatives/automake:2486:		push @incs, '-I' . dirname ($hdr);
/etc/alternatives/automake:2636:      $libtool_clean_directories{dirname ($one_file)} = 1;
/etc/alternatives/automake:2690:	  my $suggestion = dirname ($onelib) . "/$bn";
/etc/alternatives/automake:2811:	   $ldir = '/' . dirname ($val)
/etc/alternatives/automake:2901:	  my $suggestion = dirname ($onelib) . "/$bn";
/etc/alternatives/automake:2982:      my $dirname = dirname $onelib;
/etc/alternatives/automake:2983:      $libtool_clean_directories{$dirname} = 1;
/etc/alternatives/automake:3136:  my $sdir = dirname $source;
/etc/alternatives/automake:3137:  if ($sdir eq '.' && dirname ($dest) eq '.')
/etc/alternatives/automake:3263:      my $outdir = dirname ($texi) . '/';
/etc/alternatives/automake:3471:		     . dirname (variable_value ('TEXINFO_TEX')));
/etc/alternatives/automake:3716:              if $relative_dir eq dirname ($in);
/etc/alternatives/automake:3888:	  my $dir = dirname ($file);
/etc/alternatives/automake:4073:      if (dirname ($single) eq $relative_dir)
/etc/alternatives/automake:4104:	  my $di = dirname $i;
/etc/alternatives/automake:4192:      my $config_h_dir = dirname ($config_h_path);
/etc/alternatives/automake:4301:      if ($relative_dir eq dirname ($out))
/etc/alternatives/automake:4346:      my $fd = dirname ($file);
/etc/alternatives/automake:4401:	  my $fd = dirname ($link);
/etc/alternatives/automake:4426:	  my $fd = dirname ($file);
/etc/alternatives/automake:4587:	  if dirname ($out) eq $relative_dir;
/etc/alternatives/automake:4607:	  if dirname ($out) eq $relative_dir;
/etc/alternatives/automake:5771:          my $built_dir = dirname $built_c_file;
/etc/alternatives/automake:5844:  my $dirname = dirname ($name);
/etc/alternatives/automake:7479:	    $make_dirs{dirname ($iter)} = 1;
/etc/alternatives/automake:7486:		$make_dirs{dirname ($iter)} = 1;
/etc/alternatives/automake:7906:    my $directory = dirname ($file);
/etc/alternatives/automake:7954:  $relative_dir = dirname ($makefile);
/etc/alternatives/automake:8083:  my $am_relative_dir = dirname ($makefile_am);
/etc/ImageMagick-6/delegates.xml:68:  <delegate decode="doc" command="&quot;libreoffice&quot; --headless --convert-to pdf -outdir `dirname &quot;%i&quot;` &quot;%i&quot; 2&gt; &quot;%u&quot;; /usr/bin/mv &quot;%i.pdf&quot; &quot;%o&quot;"/>
/etc/ImageMagick-6/delegates.xml:69:  <delegate decode="docx" command="&quot;libreoffice&quot; --headless --convert-to pdf -outdir `dirname &quot;%i&quot;` &quot;%i&quot; 2&gt; &quot;%u&quot;; /usr/bin/mv &quot;%i.pdf&quot; &quot;%o&quot;"/>
/etc/ImageMagick-6/delegates.xml:88:  <delegate decode="odt" command="&quot;libreoffice&quot; --headless --convert-to pdf -outdir `dirname &quot;%i&quot;` &quot;%i&quot; 2&gt; &quot;%u&quot;; /usr/bin/mv &quot;%i.pdf&quot; &quot;%o&quot;"/>
/etc/ImageMagick-6/delegates.xml:99:  <delegate decode="ppt" command="&quot;libreoffice&quot; --headless --convert-to pdf -outdir `dirname &quot;%i&quot;` &quot;%i&quot; 2&gt; &quot;%u&quot;; /usr/bin/mv &quot;%i.pdf&quot; &quot;%o&quot;"/>
/etc/ImageMagick-6/delegates.xml:100:  <delegate decode="pptx" command="&quot;libreoffice&quot; --headless --convert-to pdf -outdir `dirname &quot;%i&quot;` &quot;%i&quot; 2&gt; &quot;%u&quot;; /usr/bin/mv &quot;%i.pdf&quot; &quot;%o&quot;"/>
/etc/ImageMagick-6/delegates.xml:118:  <delegate decode="xls" command="&quot;libreoffice&quot; --headless --convert-to pdf -outdir `dirname &quot;%i&quot;` &quot;%i&quot; 2&gt; &quot;%u&quot;; /usr/bin/mv &quot;%i.pdf&quot; &quot;%o&quot;"/>
/etc/ImageMagick-6/delegates.xml:119:  <delegate decode="xlsx" command="&quot;libreoffice&quot; --headless --convert-to pdf -outdir `dirname &quot;%i&quot;` &quot;%i&quot; 2&gt; &quot;%u&quot;; /usr/bin/mv &quot;%i.pdf&quot; &quot;%o&quot;"/>

I don’t know. There are several scripts there that pass a variable as argument to dirname or readlink. But except for the /etc/profile.d/* and /etc/inputrc and /etc/bash_completion.d/* those scripts wouldn’t be involved with shell startup I think. It will be a puzzle to figure this out. Perhaps you should post this on a forum with bash gurus, if they know of a way to track this down.

What happens when you log in on a tty from another user account? Same error? Then it’s something in your /etc. No error? Then it’s something in your home directory.

See the following testings and related discussions here and here:

werner@X10DAi:~$ sudo useradd test
werner@X10DAi:~$ sudo passwd test # Set the pw as: asdf1234
werner@X10DAi:~$ sudo usermod -d /home/test -s /bin/bash test
werner@X10DAi:~$ sudo mkdir /home/test

# This time, the problem discussed here doesn't appear again:
werner@X10DAi:~$ su - test
Password:
test@X10DAi:~$

So, I tried to login back as follows and the problem appeared once more:

test@X10DAi:~$ su - werner
Password:
terminate called after throwing an instance of 'std::runtime_error'
what(): Failed to create dbus connection
xhost: unable to open display ""
dirname: invalid option -- 'b'
Try 'dirname --help' for more information.
readlink: invalid option -- 'b'
Try 'readlink --help' for more information. 

# Try to log in on a tty from the user account that has logged in to this account again:
werner@X10DAi:~$ su - werner
Password: 
terminate called after throwing an instance of 'std::runtime_error'
  what():  Failed to create dbus connection
xhost:  unable to open display ""
dirname: invalid option -- 'b'
Try 'dirname --help' for more information.
readlink: invalid option -- 'b'
Try 'readlink --help' for more information.

Based on the above testings, what on earth should I conclude?

Because test can log in on the tty without triggering the same issue I don’t think the cause is in /etc.

Compare the .profile and .bashrc files of werner and test? My guess is werner’s .profile or .bashrc file has a problem in it, or sources another script with the problem in it, and that same line is not in test’s files.

Surprisingly, the account test don’t have these files at all:

werner@X10DAi:/home/test$ ls -la
total 8
drwxr-xr-x 2 root root 4096 Feb  6 17:28 .
drwxr-xr-x 4 root root 4096 Feb  6 17:28 ..

This topic was automatically closed 45 days after the last reply. New replies are no longer allowed.