Онлайновые справочные страницы из терминала

  • используйте #!/bin/bash в качестве shebang.
  • нет необходимости в [ [ ... ] ]
  • "$answer" -eq "nano" && "vi" && "vim" && "emacs" не будет проверять ответ на соответствие этим четырем словам.

определение функции

while read -p "What file editor would you like to use?    (Nano)  or  (Vi)m   " answer
do 
  answer=$(echo "$answer" | tr '[:upper:]' '[:lower:]')
  case $answer in 
  ( nano | vi | vim | emacs )
     $answer ;
     ## OR
     export EDITOR=$answer
     break 
     ;;
    ( * )
     echo "This is embarassing, I didn't understand your input..."
     ;;
   esac
done
  • это проверит, что ответ является одним из четырех допустимых редакторов.
  • значение возвращается в EDITOR
  • export $answer=, скорее всего, не сработает (в первый раз) или даст неожиданный результат (в следующий раз)
  • используйте $answer для вызова редактора (или $answer "$myfile"),
  • используйте export EDITOR=$answer для его установки,
  • или еще лучше export EDITOR=$(which $answer).
4
02.01.2017, 00:09
4 ответа

Вы можете использовать ссылки : ссылки -дамп https://linux.die.net/man/1/agrep | меньше . Просто измените категорию и имя, и все будет хорошо.

5
27.01.2020, 20:48

В качестве альтернативы вы можете рассмотреть текстовый браузер lynx . Таким образом, вам нужно только ввести:

lynx https://linux.die.net/man/1/agrep

Это сработало для меня во многих ситуациях и, похоже, широко доступно в репозиториях программного обеспечения для многих систем.

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

2
27.01.2020, 20:48

Если бы это была Ubuntu, вы могли бы использовать команду dman из пакета bikeshed . Из man dman :

dman   is   a   script   that   remotely   retrieves   manpages    from
http://manpages.ubuntu.com, but reads them on the local system.

This  is  often  useful  to read a manpage of a utility that you do not
have installed on the local system.

It will cycle through each manpage section available for a given TOPIC.

IIRC, dman - это сценарий, поэтому его можно изменить для работы с https://manpages.debian.org .

3
27.01.2020, 20:48

Использование онлайн-сервисов для отображения руководств - это круто, но как только я прочитал @Kusalananda комментируя извлечение справочных страниц из установочных пакетов, я каким-то образом одержим реализацией этого метода, который гарантирует, что я прочту правильное руководство для своего дистрибутива.

Единственная ошибка в приведенном ниже решении заключается в том, что оно основано на последних версиях apt / dpkg, которые доступны в Debian Testing 8.6 и могут быть недоступны в других системах.

Извлеките страницы руководства из.deb-файлы без загрузки
Найдите файл deb, как если бы вы планировали установить рассматриваемый пакет (например, yade):

apt-get --print-uris download yade
'http://httpredir.debian.org/debian/pool/main/y/yade/yade_2016.06a-7_amd64.deb' yade_2016.06a-7_amd64.deb 1621148 SHA256:26c0d84484a92ae9c2828edaa63243eb764378d79191149970926aa3ec40cdd4

PS: переключатель --print-uris печатает URL-адрес пакета deb, но deb не загружается.

Найдите страницы руководства, скрытые в этом файле deb:

dpkg -c <(curl -sL -o- http://httpredir.debian.org/debian/pool/main/y/yade/yade_2016.06a-7_amd64.deb) |grep "man/man" |grep -vE "\/$" |awk '{print $NF}'
./usr/share/man/man1/yade-batch.1.gz
./usr/share/man/man1/yade.1.gz

Прочтите страницу руководства yade.1.gz (без загрузки deb):

man <(dpkg-deb --fsys-tarfile <(curl -sL -o- http://httpredir.debian.org/debian/pool/main/y/yade/yade_2016.06a-7_amd64.deb) |tar -xO ./usr/share/man/man1/yade.1.gz)

страница руководства отображается правильно с использованием приложения man.

apt --version --> apt 1.4~beta2 (amd64)
dpkg --version --> Debian 'dpkg' package management program version 1.18.18 (amd64).
man --version --> man 2.7.6.1
tar --version --> tar (GNU tar) 1.29
curl --version --> curl 7.51.0 (x86_64-pc-linux-gnu) libcurl/7.51.0 GnuTLS/3.5.7 zlib/1.2.8 libssh2/1.7.0 nghttp2/1.17.0 librtmp/2.3  

Альтернативный способ загрузки файла deb:
Метод Bellow, основанный на классическом apt-get, ar и tar, должен работать в любом дистрибутиве.
Файл deb загружается в текущий рабочий каталог, распаковывается справочная страница, а затем файл удаляется.

pkg="$1"
apt-get download "$pkg" 2>/dev/null
debname=$(find . -name "$pkg*.deb")
datatar=$(ar t "$debname" |grep "data.tar") 
#ar t prints out the contents of the archive 

if [[ ${datatar##*.} == "gz" ]];then #extension check 
  options="z"
elif [[ ${datatar##*.} == "xz" ]];then
  options="J"
else
  echo "data.tar archive inside deb is not a gz or xz archive. Exiting"
  exit 1
fi

manpage+=($(ar p $debname $datatar | tar t"$options" |grep "man/man" |grep -vE "\/$" |awk '{print $NF}')) #tar t lists the files included in archive
man <(ar p "$debname" "$datatar" | tar xO"$options" ${manpage[@]}) 
#ar p and tar -O prints archive files / contents in stdout to be read by man
rm -f $debname #or rm -i for more control.

Использование manpages.debian.org
В качестве третьей альтернативы, с января 2017 года кто-то может использовать псевдоним / скрипт, который будет извлекать страницу руководства из debian nline на основе нового нового веб-сайта руководств debian, который сразу переходит к вам на правильную / самую последнюю страницу руководства нужного вам пакета:

alias debman='function __debman { links -dump https://manpages.debian.org/jump?q=$1 |awk "/Scroll to navigation/,0" |less; };__debman'

вызовите его с помощью терминала как $ debman yade

0
27.01.2020, 20:48

Теги

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