Хорошо, основной вопрос здесь - то, что нет такой вещи как строка 0. sed
начинает считать строки от 1. По-видимому, принятие остальной части Вашего сценария в порядке, это должно работать:
#!/usr/bin/env bash
sed -n "$2,$3p" "$1"
Я попробовал сценарий выше на этом файле:
$ cat file
line 1
line 2
line 3
line 4
line 5
line 6
$ ./foo.sh file 3 5
line 3
line 4
line 5
$ ./foo.sh file 0 5
sed: -e expression #1, char 4: invalid usage of line address 0
$ ./foo.sh file 1 3
line 1
line 2
line 3
От man sed
(спасибо @manatwork):
0, addr2
Начните в "подобранном первом адресе" состояние, пока addr2 не будет найден. Это подобно 1, addr2, за исключением того, что, если addr2 соответствует самой первой строке входа, этот 0, addr2 форма будет в конце ее диапазона, тогда как этот 1, addr2 форма все еще будет в начале ее диапазона. Это работает только, когда addr2 является регулярным выражением.
Так, это должно работать также:
$ a.sh file 0 "/line 3/"
line 1
line 2
line 3
При использовании нормальных именованных переменных это перестанет работать, потому что оболочка не имеет никакого способа знать, где имя переменной заканчивается и sed
команды начинаются. Например:
foo=1; sed -n "$foop"
ничего не распечатает, так как оболочка будет рассматривать $foop
как имя переменной. Для обхождения этого используйте фигурные скобки:
$ foo=1; sed -n "${foo}p" file
line 1
Несмотря на свое название, он поддерживает FTP. Имя VSFTPD означает "Very Secure File Transport Protocol Daemon".
abstract
FTP (File Transfer Protocol) используется как одно из наиболее распространенных средств копирования файлов между компьютерами через Интернет. Большинство сайтов загрузки через Интернет используют встроенные возможности FTP веб-браузеров, поэтому большинство серверно-ориентированных операционных систем обычно включают FTP-серверное приложение в состав программного комплекса. Linux не является исключением. На этой странице я покажу, как преобразовать коробку DebianGNU/Linux в сервер FTP с помощью пакета vsftpd (Very Secure FTP Daemon), входящего в стандартный дистрибутив Debian, т.е. нет необходимости компилировать что-то самому, что экономит время и заставляет работать даже неопытных пользователей.
Source: http://www.markus-gattol.name/ws/vsftpd.html
Есть много уроков, таких как: Как настроить vsftpd для использования SSL/TLS на VPS Ubuntu, в которых показано, как настроить обычную службу FTP с помощью vsftpd. В первом разделе описаны эти действия.
После редактирования конфигурационного файла: sudo nano /etc/vsftpd.conf
:
anonymous_enable=NO
local_enable=YES
write_enable=YES
chroot_local_user=YES
Затем добавьте ftp пользователя:
$ sudo adduser ftpuser
Затем создайте его домашний каталог:
$ sudo chown root:root /home/ftpuser
И создайте каталоги для загрузки/загрузки в:
$ sudo mkdir /home/ftpuser/files
$ sudo chown ftpuser:ftpuser /home/ftpuser/files
При использовании filezilla
убедитесь, что в диалоговом окне менеджера сайтов выбраны соответствующий порт и тип протокола.
Есть три протокола с "FTP" в их названиях :
Обычно 1 и 2 предоставляются одной и той же программой, например vsftpd, которая будет прослушивать порт 21 и/или 990. 3 обеспечивается реализацией SSH, обычно OpenSSH, которая прослушивает на порту 22. Ваша проблема в том, что вы пытаетесь подключиться, используя протокол FTP на порту 22, поэтому вы достигаете OpenSSH, который обрабатывает только SFTP. Вам нужно использовать порт 21, если вы хотите использовать незашифрованный FTP.