Можно ли получить доступ к исходному коду или файлу конфигурации команды терминала, чтобы узнать, как он работает, и даже настроить его на локальном компьютере? [дубликат]

Я пытаюсь понять Linux, и я часто решаю свои проблемы в каждом конкретном случае, фактически не узнав, как придумывать ответ сам, что, конечно, я предпочитаю не делать .

Например, я установил сочетание клавиш, чтобы выбрать область и сделать ее снимок экрана. Каждый раз, когда я выбираю область, она всегда по умолчанию / Pictures, и я хотел бы отредактировать либо каталог по умолчанию, либо варианты быстрого раскрывающегося списка, которые он мне предлагает.

Как обычно, я нашел ответ , однако на этот раз я хотел бы знать, как люди обычно подходят к этому, если ответа нет. Конечно, должен быть логический набор шагов, чтобы точно определить, как работает команда терминала / где она принимает свои аргументы.

В этом конкретном случае я поискал в Интернете, какую команду Ubuntu использует для создания снимков экрана, которая оказалась import .

Итак, мой вопрос: каковы подходы к

  1. Найти, где файлы конфигурации / местоположение / информация об уровне кода (например, не как его называть, а что конкретно он делает, когда вызывается) команда терминала

  2. Как узнать, какой команде терминала соответствует конкретное действие. (Выявление import вызывается, когда я, например, делал снимок экрана)

Другими словами, как я мог сам это выяснить, если бы у меня не было доступа к Интернету или никто не знал ответа? :) Меня больше интересует подход / логика, однако import в данном случае будет хорошим примером.

Изменить:

Я не думаю, что мой вопрос совпадает с предложенным возможным дубликатом, потому что я прошу найти способ получить исходный код, если это возможно. Другими способами я прошу способ прочитать исходный код команды и файлы, которые она использует (например, возможно, есть файл конфигурации для функции импорта, и если бы я мог его найти, я бы изменил default-save- каталог). Чтобы еще больше уточнить, файл, который я пытаюсь найти (если это возможно найти), имеет код, эквивалентный следующему псевдокоду:

<when run>
change mouse pointer to + shape
..wait for a click..
on click -> wait for release..
on release -> take the area between click and release coordinates
read config file located at ./config and get default-save-directory variable
initialize path to default-save-directory
ask user where to save the image

Он должен быть сохранен где-нибудь в операционной системе. «Это невозможно, потому что ...» (может быть, это, например, на уровне сборки) также является ответом, но использование man для получения инструкций о том, что делает эта функция, не является ответом, потому что я хочу понять, как это работает.

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

5
задан 9 April 2018 в 11:13

4 ответа

Нахождение источника

Да, можно легко найти и считать исходный код всего в мире Linux, за исключением некоторых пограничных случаев (как драйверы видеокарты только для двоичного файла).

Например, для обнаружения больше о ls команда, Google ls source code, который даст Вам один специальный хит Google прямо на вершине, которая говорит Вам это ls часть coreutils.

coreutils, которые являются GNU, не Linux, являются командами, которые Вы весь день используете в большинстве дистрибутивов. От той целевой страницы легко можно или загрузить целый tarball или просмотреть их репозиторий мерзавца непосредственно.

Например, это - самый интересный каталог (в данный момент, ссылка показывает фиксированный хеш, так убедиться просмотреть от вершины снова при чтении этого ответа позже): историческое представление "src" в основном ответвлении

Аналогичные подходы работают на все другие программы с открытым исходным кодом включая само ядро.

Где все?

which ls шоу, где тот определенный двоичный файл расположен.

Стандарт Файловой системы Linux перечисляет все обычные места, где файлы сохранены.

Управление пакетом

В зависимости от Вашего распределения можно более или менее легко загрузить исходные пакеты через диспетчер пакетов (например, apt-get source $package), который должен быть еще более безболезненным. Это обладает очевидным преимуществом, что это b) a) очень легкий и b) должен возвратить точно версию исходного кода, который на самом деле использует Ваш двоичный файл. В зависимости от распределения, конечно.

Нахождение материала

Суть Вашего вопроса - то, как узнать о поведении некоторой части программного обеспечения. Это обычно нетривиально, если Вы просто выбираете источник. В крайних случаях, т.е. если программное обеспечение является действительно критическим/важным для Вас, и абсолютно необходимо заставить его работать, затем это могло бы быть жизнеспособным маршрутом, но в целом, необходимо быть более обеспеченным поиском с помощью Google. Я сделал свою справедливую долю (ab) использование исходного кода больших пакетов, конкретно при компиляции программного обеспечения (часто существуют странные пограничные случаи, где библиотеки или версии компилятора имеют небольшие несоответствия), и я уверяю Вас, что это может выполнять, но часто является большой работой.

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

Относительно того, как другие люди узнают; часто они делают, потому что они на самом деле работают над программным обеспечением и связываются через их средство отслеживания ошибки - знание, что кодовая база уже помогает чрезвычайно.

Затем существуют, конечно, Ваши подлинные хакеры, которым на самом деле нравится к глубокому погружению в исходный код для чего-либо, они спотыкаются о.

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

Взятие его к следующему уровню

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

1
ответ дан 23 November 2019 в 08:43

Быстрый ответ:

Исследуйте терминальную команду.

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

Большинство терминальных команд, особенно команды, которые имеют много опций, имеет руководства, которые установлены в системе по умолчанию, которая составляет этот взгляд легкого. Это также включает оболочку для терминальных команд, которая в случае Ubuntu является bash по умолчанию.

Прежде чем Интернет был так популярен для выполнения не знания, что Вы обращаетесь к, люди положились очень на библиотеки, книги и руководства. У людей было много книг и руководств в их доме. Переходить к книжному магазину и библиотеке часто. Я раньше проводил много часов в библиотеке, почти всегда имел две или три книги, проверенные для домашнего исследования (или программирование и команды). Это были приблизительно 20 лет, с тех пор как я перешел к библиотеке для проведения исследований. Я действительно время от времени перехожу к библиотеке для некоторых семинаров или встреч. Я также принадлежал двум компьютерным клубам, кто общая информация. Оба клуба опубликовали ежемесячные новостные рассылки, которые включали важный компьютер и программную информацию.

Если у Вас нет доступа к Интернету, можно использовать руководства, которые уже являются компьютером для терминальных команд.

Благодарность терминальной команды и типа это:

$ man [terminal command]

Можно исследовать удар и команду импорта (от вопроса) с:

$ man bash
$ man import

Оба руководства покажут Вам большую информацию, что можно исследовать без Интернета. Они также включают глоссарий, который можно использовать слова из тех руководств для проведения дальнейшего исследования.

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

Как загрузить исходный код команд и приложений Ubuntu:

Можно загрузить исходный код команд путем добавления источника к репозиторию. Можно найти это:

  • Программное обеспечение Goto и Обновления->
  • (нажмите на вкладку), программное обеспечение Ubuntu->
  • (поставьте галочку), Исходный код
  • Используйте эту команду для получения исходного пакета, который Вы хотите загрузить:

    $ sudo apt source <package name>
    
    8
    ответ дан 23 November 2019 в 08:43

    Ubuntu на самом деле использует gnome-screenshot, нет import (по крайней мере, на 14,04). Как я понимал это? Хорошо, в первую очередь, import довольно старо, так, чтобы проинформированный меня. Но также и...

    • man -k может использоваться для поиска описаний терминальных команд.

      Я искал некоторые ключевые слова, связанные со снимками экрана, как "снимок экрана", "получение", "снимок экрана", и т.д. В зависимости от критерия поиска, это или поднятое несколько объектов или слишком многие. Я видел, что несколько команд продолжали подходить, главным образом gnome-screenshot и shutter (который я установил).

      Где мы имеем дело с GUI, он мог также помочь искать файлы приложения, например:

      find /usr/share/applications/ ~/.local/share/applications/ -iname "*screenshot*"
      grep -i "screenshot" /usr/share/applications/*.desktop ~/.local/share/applications/*.desktop
      
    • Я открылся gnome-system-monitor, отсортированный по Запущенному, и наблюдаемый, чтобы видеть, открылась ли команда, когда я сделал снимок экрана. Именно тогда я подтвердил, что это было gnome-screenshot

      На командной строке Вы могли использовать

      watch "ps -ef --sort=start_time | tail"
      
    4
    ответ дан 23 November 2019 в 08:43

    man <command> часто превосходное место, чтобы запуститься, прочитать его и видеть, можно ли найти то, в чем Вы нуждаетесь.

    Команда, о которой часто забывают, является информацией, это всегда имеет дополнительную информацию к сожалению для import это не служит очень хорошо, но для тестовой попытки man gpg, и это дает Вам, очень краткий обзор затем пробует info gpg Вы будете видеть намного больше информации.

    Некоторые более неясные/более старые команды будут иметь хорошим info страницы.

    Удачи.

    1
    ответ дан 23 November 2019 в 08:43

    Другие вопросы по тегам:

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