Разбор разрешений в странном формате

Для небольшого текстового файла cat > somefile и используйте функцию вставки терминала, чтобы вставить файл. Нажмите ^D в конце.

Для двоичных файлов вы, вероятно, захотите сначала закодировать их в base64, а затем декодировать на удаленном компьютере с помощью base64 -d somefile.encoded > somefile. Предположим, у вас есть base64. Вам придется каким-то образом выполнить кодирование на стороне Windows.

Для больших файлов вставка в терминал может не работать, поэтому вам понадобится что-то, предназначенное для чтения файлов. Похоже, что в Putty нет функции для сброса файла в соединение, которая может быть у какой-то другой терминальной программы. Хотя инструмент командной строки plink, который поставляется вместе с Putty, имеет параметр -m для чтения «команд» из файла. Кажется, здесь работает. С этим foo.txt:

cat > foo.out <<EOF
adsf
EOF

Выполнение plink -m foo.txt itvirta@somehost создало файл. (По SSH, но не должно быть причин, по которым последовательное соединение будет другим.) С base64 вы можете пропустить кошку:

base64 -d <<EOF > outputfile
(base64 encoded data...)
EOF
1
15.04.2019, 20:40
1 ответ

Я думаю, вы хотите разделить ввод на части, в которых есть одно слово, двоеточие, а затем еще несколько слов. Было бы проще, если бы разделы были разделены, но вы могли бы, например, добавьте разделители примерно так:

echo "ownername:read write execute groupname:read execute all:none  sticky" | \
   sed -e 's/\w\w*:/;&/g'
;ownername:read write execute ;groupname:read execute ;all:none  sticky

Разделение по точкам с запятой должно быть возможным отсюда.

Обязательный фрагмент Perl, разделяющий части непосредственно на массив:

echo "ownername:read write execute groupname:read execute all:none  sticky" | \
  perl -ne '@a = split/ (?=\w+:)/; print "$_\n" for @a'
ownername:read write execute
groupname:read execute
all:none  sticky
0
28.01.2020, 01:04

Теги

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