Я не вижу решения с 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 для перехода по ссылкам.
Если вам нужны спряжения (в адресе ссылки, после /conjugations/
вы можете выбрать нужный язык, в моем случае я выбрал французские/fra/
)значения, напишите это в последней строке.bashrc
:
conjfra () {
curl -s "http://api.ultralingua.com/api/2.0/conjugations/fra/$1" | jq -r '.[] | {tense:.conjugations}'
}
Мерси! РЕДАКТИРОВАТЬ :Плохо! извините за это, я забыл добавить начало табуляции во второй строке, теперь это правильно.
Функция (непосредственно из , которая отвечает , с небольшими изменениями):
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
.
Примечание. :Я не внимательно рассмотрел, что на самом деле делает этот код. Возможно, его еще усовершенствуют. Этот ответ касается проблемы с фактическим использованием предоставленной функции.
Я нашел 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"
}
....