Есть ли способ перейти в каталог по последним символам?

Существует много полезных ресурсов по стандартам, в том числеhttps://refspecs.linuxfoundation.org/FHS_3.0/fhs-3.0.html

Я бы предложил:

  • Розетки:/run//. Это потому, что /var/run— это просто сим-ссылка -на /runв наши дни в Ubuntu. /run— новое стандартное место для таких вещей.
  • Файлы журнала:/var/log//Верно. Хотя один журнал на самом деле не нуждается в каталоге. Не забудьте также добавить запись /etc/logrotate.d
  • Файлы конфигурации:/etc//Верно. Опять же, для одного файла конфигурации не нужен каталог, но это не повредит.

Двоичные файлы:

Это сложно; есть целая куча мест, где они могут существовать. Как правило, binпредназначен для пользовательских команд, а sbin — для серверных демонов. Некоторые люди говорят, что sbinпредназначен для двоичных файлов, запускаемых только пользователем root.См. здесь:https://askubuntu.com/questions/308045/differences-between-bin-sbin-usr-bin-usr-sbin-usr-local-bin-usr-local

  • НЕ используйте /binили /sbin. Зарезервируйте их для двоичных файлов, необходимых для загрузки вашей системы.
  • Используйте /usr/binи /usr/sbin. Большинство вещей на унбунту живут здесь, хотя есть и исключения. Если вы правильно упаковываете свое программное обеспечение (в.dpkg или аналогичный файл ), обязательно используйте /usr/binи /usr/sbin.
  • Если вы не собираетесь упаковывать его должным образом и просто хотите вручную скопировать его от имени системного администратора, более подходящими будут /usr/local/binи /usr/local/sbin. Но это, как правило, не следует использовать, если вы собираетесь распространять свой код среди других людей.
  • Если некоторые из ваших двоичных файлов используются только другими вашими двоичными файлами, подумайте о том, чтобы поместить их в /usr/libили /usr/local/lib. Нередко двоичные файлы рассматриваются как библиотеки
  • .

Короче говоря, /usr/sbinи /usr/bin, скорее всего, верны.

8
03.02.2021, 16:05
3 ответа

Если онина самом делеразличны, за исключением нескольких последних цифр, вы можете использовать подстановочный знак в команде cd, например,

cd 164*8

(и если они на самом деле не различны, оболочка напомнит вам об этом, выдав сообщение об ошибке ).

18
18.03.2021, 22:33

Да, в Bash можно использовать подстановочные знаки:

cd /path/to/*9/

(замените 9любым количеством цифр, которое вам нужно; вы можете удалить /path/to/, если вы находитесь в каталоге, содержащем все каталоги 164...).

Необходимо убедиться, что выражение достаточно специфично для разрешения в один каталог, в противном случае cdизменится на первый каталог, указанный в его аргументах (в Bash до версии 4.4 ), или произойдет сбой с ошибкой ошибка (Bash 4.4 и более поздние версии, построенные сCD_COMPLAINS). (Будьте осторожны с Zsh или Ksh, у которых есть форма cdс двумя -аргументами, которую вы можете вызвать случайно, хотя только если ваш текущий путь содержит первый аргумент.)

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

33
18.03.2021, 22:33

Вы можете сделать что-то нестандартное.

mycd() {
    local ng=$( shopt -p nullglob )
    shopt -s nullglob
    local status

    local matches=( *"$1"/ )  # directories ending in the parameter
    case ${#matches[@]} in
        0) echo "no directory ends with $1" >&2; status=1 ;;
        1) cd "${matches[0]}"; status=$? ;;
        *) echo "multiple directories end with $1" >&2; status=1 ;;
    esac

    $ng   # restore the previous nullglob setting. specifically unquoted
    return $status
}

mycd 89  # cd to the subdir ending with 89

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

6
18.03.2021, 22:33

Теги

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