объединить несколько строк на основе ключевого столбца

Эта ошибка означает, что у вас есть экранированный # (это означает \ # ) в одном из файлов инициализации bash. Поскольку его нет в ~ / .bashrc или ~ / .bash_profile , он должен быть в одном из других файлов, которые bash читает при загрузке. Чтобы быть уверенным, просто выполните поиск по всем из них 1 :

grep -FH '\#' ~/.bashrc ~/.profile ~/.bash_profile ~/bash.login \
              ~/.bash_aliases /etc/bash.bashrc /etc/profile \
              /etc/profile.d/* /etc/environment 2>/dev/null

Это должно показать вам, что один из файлов, перечисленных выше, содержит \ # . Отредактируйте файл, удалите его, и все должно работать.

Если команда не возвращает никаких выходных данных, это означает, что один из этих файлов использует другой - нестандартный - файл, а именно тот файл, в котором есть ошибка. В этом случае отредактируйте свой вопрос и добавьте вывод этой команды:

grep -P '(^|\s+)(\.|source) .' ~/.bashrc ~/.profile ~/.bash_profile ~/bash.login \
                              ~/.bash_aliases  /etc/bash.bashrc /etc/profile \
                              /etc/profile.d/* /etc/environment 2>/dev/null

Это должно напечатать все экземпляры источника другого файла и указать нам в правильном направлении.

В общем, # - это не команда, это комментарий. Все, что находится после него, просто игнорируется bash . Итак, когда вы запускаете pacman -Ss # , вы фактически запускаете только pacman -Ss , поэтому вы получаете так много результатов.


1 Некоторые из этих файлов здесь не важны. Например, ~ / .profile игнорируется, если существует ~ / .bash_profile и / etc / profile не будет прочитан при открытии нового терминала, но вы также можете просмотреть их все на всякий случай.

1
15.03.2019, 14:06
1 ответ
lsof /tmp/.X11-unix/X*

от имени пользователя root будут перечислены команды и pid, соответствующие каждому сокету. Затем вы можете сопоставить имя сокета с номером дисплея, как вы сделали в своем примере.

2
27.01.2020, 23:30

Теги

Похожие вопросы