Команда 'sudo tee' пошла не так | Удаление source.list, который нельзя прочитать?

Это происходило дважды, когда я следовал инструкциям по установке программного обеспечения и затем открывал центр программного обеспечения, а затем немедленно закрывался в результате выполнения команд из инструкций. Первый случай произошел, когда я пытался установить Mono. Я следовал их инструкциям до sudo tee /etc/apt/sources.list.d/mono-xamarin.list, Остановленный терминал не отвечал, поэтому я снова ввел команду, и она просто повторила ее. Поэтому я закрыл его и попробовал еще раз, не повезло. Итак, я хотел проверить, есть ли в центре программного обеспечения только компилятор Mono CS, и именно тогда центр программного обеспечения начал закрываться сразу после открытия, и Ubuntu выдал мне эту ошибку

E: Type 'sudo' is not known on line 2 in the source list /etc/apt/sources.list.d/mono-xamarin.list
E: The list of sources could not be read
E: The package lists or status file could not be parsed or opened.

Я отформатировал свой компьютер до более ранней резервной копии, так как не смог найти ответ на эту ошибку и не знал, что сделал неправильно.

Теперь я попытался установить Spotify, и у них есть подобный список инструкций.

  1. Добавьте репозиторий Spotify

    echo deb http://repository.spotify.com stable non-free | sudo tee /etc/apt/sources.list.d/spotify.list
    

Так я дошел до того момента, когда терминал больше не отвечал. Я попытался "выйти", чтобы закрыть его, но он просто повторил команду. После того, как я вручную закрыл его, я проверил центр программного обеспечения, чтобы увидеть, сделал ли я то же самое снова, и я сделал. Центр программного обеспечения не останется открытым и вернул ту же ошибку при попытке apt-get autoremove

E: Type 'exit' is not known on line 1 in source list /etc/apt/sources.list.d/spotify.list
E: The list of sources could not be read.
E: The package lists or status file could not be parsed or opened.

Мой первый вопрос - как мне удалить / восстановить список, а второй - как использовать sudo tee... должным образом?

2 ответа

Решение

Ваша первая команда

sudo tee /etc/apt/sources.list.d/mono-xamarin.list

неправильно. Команда ожидает ввода и записывает в

/etc/apt/sources.list.d/mono-xamarin.list

Поэтому просто удалите файл

sudo rm /etc/apt/sources.list.d/mono-xamarin.list

и снова введите правильную команду и не забудьте

sudo apt-get update

Ваша вторая команда

echo deb http://repository.spotify.com stable non-free | sudo tee /etc/apt/sources.list.d/spotify.list

верно. После этой команды у вас есть строка

deb http://repository.spotify.com stable non-free

в вашем /etc/apt/sources.list.d/spotify.list, Проверить с

cat /etc/apt/sources.list.d/spotify.list

Команда tee читать со стандартного ввода и записывать в стандартный вывод и файлы. Два примера

echo "foo" | tee bar

пишет строку foo в файл bar, Предыдущий контент будет перезаписан.

echo "foo" | tee -a bar

добавляет строку foo в данный файл.

Команда tee bar читает со стандартного ввода и записывает в файл bar

Начать тест с

tee bar

Введите несколько слов и остановитесь с помощью Ctrl-C. Сейчас начнем

cat bar

чтобы увидеть ваши изменения.

пример

% tee bar
foo
foo
bar
bar
^C
% cat bar
foo
bar

Я думаю, что я понял это. Я перешел к "другому программному обеспечению" в программном обеспечении и обновлениях и удалил некорректно работающий репозиторий из списка. Тогда я сделал sudo apt-get autoremove который не остановился на ошибке на этот раз, поэтому я смог обработать sudo apt-get update и я смог снова открыть центр программного обеспечения и держать его открытым. Я все еще получаю системную ошибку, говорящую, что 'выход' не известен в строке 2 в spotify.list. Я до сих пор не знаю, как это убрать.

Другие вопросы по тегам