Что позволяет вводить команду, когда предыдущая команда все еще выполняется на переднем плане?

Сообщение об ошибке explians проблема:

You need to be root to perform this command.

В *отклоняют, когда необходимо установить что-то, у Вас должны быть полномочия установить его. Корневая учетная запись является специальной учетной записью, которая похожа на учетную запись Администратора в окнах. Таким образом для установки чего-либо, необходимо быть корнем.

Поэтому первый вход в систему в корневую учетную запись или использование sudo:

sudo yum install filezilla

Если Ваша учетная запись не позволяет sudo, то необходимо будет войти в систему в корень:

su root -
yum install filezilla

Вы не должны загружать его сначала, yum загрузит его автоматически.

То, что Вы загрузили, является исходным кодом Filezilla. Это используется для установки Filezilla вручную. Намного более трудно установить его как это, и необходимо использовать конфетку вместо этого.

2
28.05.2015, 01:29
2 ответа

Это называется типографская головка , и она не специфична для оболочки. То, что вы набираете, в конце концов буферизируется в терминале, и в следующий раз, когда программа, запущенная в терминале, готова к вводу, она считывает то, что ждет в буфере. В вашем примере это оболочка, поэтому она выполняет команду, которую вы набрали, как будто вы ждали окончания A, прежде чем набрать ее.

Некоторые программы будут явно очищать буфер перед принятием ввода; например, большинство программ, которые запрашивают пароль, будут очищать буфер, чтобы убедиться, что пользователь знает, что было набрано (так как ввод не эхо-сигнал).

5
27.01.2020, 21:52

Звучит так, будто то, что вы описываете, на самом деле является программой A, запущенной в фоновом режиме. Процесс все равно может печатать на терминал, даже если он запущен в фоновом режиме.

Пример баширования:

#----background_program----#
#!/bin/bash

for ((i=0;i<=10;i++)); do
    echo "$i"
    sleep 5
done

exit 0

Вы можете запустить его в фоновом режиме и увидеть, как его вывод выскакивает на вашем терминале. После первого выходного сообщения курсор перемещается вниз по подсказке. Затем вы можете выполнять другие команды на переднем плане, пока background_program все еще выполняется:

./background_program &     # '&' to put in background
echo "wut"
echo "foo"
echo "bar"

Это даст вам что-то вроде:

sandbox@Dionysus:~$ ./background_program &
[1] 6197
sandbox@Dionysus:~$ 0
echo "wut"
wut
sandbox@Dionysus:~$ 1
echo "foo"
foo
sandbox@Dionysus:~$ 2
echo "bar"
bar
sandbox@Dionysus:~$ 3
4
5
6
7
8
9
10

Я сделал это в терминале-гноме, но я не думаю, что такое поведение необычно.

Если бы вы выполняли свою программу A на переднем плане, то получили бы именно то, что сказал @Stephen, печатающий. Программа не выполняется, так как Ваша команда загружается в буфер и затем интерпретируется после завершения программы A.

2
27.01.2020, 21:52

Теги

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