Вы можете установить GNU coreutils на macOS, чтобы получить GNU ls
. Есть несколько способов сделать это, включая использование HomeBrew, MacPorts, Fink или pkgsrc NetBSD. Некоторые из них могут устанавливать утилиты GNU с префиксом g
, чтобы отличить их от утилит базовой системы (, т. е. GNU ls
будет установлен какgls
).
Также можно определить простой псевдоним для ls
, который просто добавляет флаг -F
:
alias ls="ls -F"
Это приведет к тому, что некоторые типы файлов будут аннотироваться символом в конце их имен файлов, например. @
для символических ссылок, /
для каталогов, *
для исполняемых файлов и т. д.
Руководство для ls
расскажет вам больше.
Ошибка, которую вы получаете, предполагает, что вы на самом деле запускаете ее через Python.
Какой-то дурак перезаписал ваш двоичный файл bash с помощью python? Попробуйте запустить bash --version
.
Пример
[steve@centos ~]$ cat x1
#!/usr/bin/env bash
if [ -f /home/username/hosts ]
then
rm /home/username/hosts
fi
[steve@centos ~]$./x1
[steve@centos ~]$ python x1
File "x1", line 3
if [ -f /home/username/hosts ]
^
SyntaxError: invalid syntax
[steve@centos ~]$ bash --version
GNU bash, version 4.2.46(2)-release (x86_64-redhat-linux-gnu)
Copyright (C) 2011 Free Software Foundation, Inc.
License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>
This is free software; you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law.
[steve@centos ~]$
Между прочим, я предпочитаю простой rm /home/username/hosts 2>/dev/null
, а не if/then/rm/fi
подход. то есть попытаться удалить его независимо от того, существует ли он.