Ищете, например, Решение bash для проверки спряжения английских глаголов

Я не вижу решения с cp . Вы можете использовать rsync для выполнения той же сортировки копий, и он также создает не записываемый каталог lib , но он может затем добавление новых файлов в каталог. Ваши команды становятся:

rsync -LR /lib/libacl.so /tmp/my_root/
rsync -LR /lib/libc.so.6 /tmp/my_root/

-R сохраняет структуру каталогов. Я добавил -L , чтобы переходить по символическим ссылкам , поскольку это похоже на то, что делает cp , хотя обычно это не то, что нужно . Вы можете добавить -a , чтобы сохранить разрешения и временные метки (и владельца / группу, если root).

rsync часто используется для копирования файлов по сети, но это очень универсальная команда.


Если у вас нет rsync, некоторые другие команды, которые копируют файлы, но создают записываемый каталог, это tar и cpio :

tar cf - /lib/libc.so.6 | tar -C /tmp/my_root/ -xf -

Или используйте chf , чтобы переходить по ссылкам. Для cpio:

ls /lib/libc.so.6 | cpio -pd /tmp/my_root/

с -L для перехода по ссылкам.

0
06.04.2018, 23:18
3 ответа

Если вам нужны спряжения (в адресе ссылки, после /conjugations/вы можете выбрать нужный язык, в моем случае я выбрал французские/fra/)значения, напишите это в последней строке.bashrc:

conjfra () {
    curl -s "http://api.ultralingua.com/api/2.0/conjugations/fra/$1" | jq -r '.[] | {tense:.conjugations}'
}

Мерси! РЕДАКТИРОВАТЬ :Плохо! извините за это, я забыл добавить начало табуляции во второй строке, теперь это правильно.

0
28.01.2020, 02:43

Функция (непосредственно из , которая отвечает , с небольшими изменениями):

verbteacher () { 
    wget -qO - http://conjugator.reverso.net/conjugation-english-verb-"$1".html | \
    sed -n "/>Preterite\|>Past</{s@<[^>]*>@ @g;s/\s\+/ /g;/e I/s/.* I \([^ ]*\) you.*/Simple past: \1/;/ Past/s/ Past /Past participle: /;p}" ; 
 }

Это можно поместить в ваш .bashrcфайл, который будет определять его для любой новой запущенной оболочки (, а не для текущего сеанса оболочки ).

Вы также можете превратить его в скрипт:

#!/bin/sh

wget -qO - http://conjugator.reverso.net/conjugation-english-verb-"$1".html | \
sed -n "/>Preterite\|>Past</{s@<[^>]*>@ @g;s/\s\+/ /g;/e I/s/.* I \([^ ]*\) you.*/Simple past: \1/;/ Past/s/ Past /Past participle: /;p}" 

Это должно быть сохранено в файле, который вы сделаете исполняемым и поместите куда-нибудь в каталог, который находится в вашем $PATH.

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

1
28.01.2020, 02:43

Я нашел API, который обрабатывает сопряжения. Я создал эту функцию, которая будет запрашивать ее, но для этого требуется jq. Кроме того, вывод довольно многословен, но я уверен, что его сможет сократить тот, кто знает jqлучше меня:

verbteacher () {
    curl -s "http://api.ultralingua.com/api/conjugations/eng/$1" | jq '.[] | {tense:.partofspeech.tense, verb:.surfaceform}'
}

Использование:

$ verbteacher run
{
  "tense": "infinitive",
  "verb": "run"
}
{
  "tense": "pastparticiple",
  "verb": "run"
}
{
  "tense": "presentparticiple",
  "verb": "running"
}
{
  "tense": "present",
  "verb": "run"
}
{
  "tense": "present",
  "verb": "run"
}
{
  "tense": "present",
  "verb": "runs"
}
....
0
28.01.2020, 02:43

Теги

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