Как ввести нечто -* папка, на самом деле не используя расширения оболочки или подстановочный знак?

Вы, кажется, хотите изменить все вхождения

TRANF_FIELD.some_enum_value.toInt()

на

TRANF_FIELD.that_enum_value

, оставив другие перечисления (например, TANG _ FIELD.TRANG _ VALUE.toInt () ) и другие способы (например, TRANF _ FIELD.TRANF _ VALUE.length () ). Это кажется простым:

sed 's/\(TRANF_FIELD\.[A-Za-z0-9_]*\)\.toInt()/\1/'

где

  • [A-Za-z0-9 _] * - любое количество буквенно-цифровых символов (включая знаки подчеркивания). Это значение должно соответствовать любому допустимому значению перечисления. На самом деле, [A-Za-z _] [A-Za-z0-9 _] * было бы лучше, поскольку [A-Za-z0-9 _] * может совпадать с пустым рядом или с цифрой.
  • \( ... \) группирует имя перечисления ( TRANSF _ ПОЛЕ ), литеральную точку (\. ), и значение перечисления (из первого маркера).
  • \1 означает «заменить полный ряд, который вы нашли, первой группой», т.е. удалите часть .toInt () .
  • Для обработки нескольких вхождений в строке добавьте g (глобальный) после последней косой черты.
  • Это не будет обрабатывать встроенное пробельное пространство, например, TRANSF _ ПОЛЕ. TRANF_VALUE. Исправить это остается как упражнение.
  • Это не будет обрабатывать выражения, которые разбиты на строки; например,

      i = TRANF_FIELD
    .TRANF_VALUE.toInt ();
    

    Это труднее исправить.

-121--146361-

Возможно, вы столкнулись с проблемами, так как в /dev/mem имеются отверстия: несуществующие области памяти не могут быть прочитаны.

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

-121--161466-

Я больше всего знаком с тем, как Cobbler наборов TFTP, поэтому я не уверен, имеет ли это значение, но я все равно предложу эту информацию. Cobbler устанавливает загрузчик, используя pxelinux.0 , как @ Патрик объясняет в комментариях , а также @ msw . Но он также устанавливает соответствующий каталог pxelinux.cfg/ рядом с ним, который содержит MAC-адреса для каждой системы, которая будет подключаться к серверу.

Эти файлы содержат pxelinux.cfg следующую информацию:

$ more 01-54-52-00-ff-ff-ff
default linux
prompt 0
timeout 1
label linux
        kernel /images/Centos56-x86_64/vmlinuz
        ipappend 2
        append initrd=/images/Centos56-x86_64/initrd.img ksdevice=bootif lang=  console=ttyS0,115200 text serial kssendmac  ks=http://192.168.1.207/cblr/svc/op/ks/system/kvmcobblertest

Фактическое ядро Linux, которое загрузит эта виртуальная машина, содержится в этом каталоге, доступном для TFTP, /images/Centos56-x86 _ 64/vmlinuz . Вся структура каталогов TFTP выглядит следующим образом с обратной стороны сервера:

$ ls -l /tftpboot/
total 348
drwxr-xr-x 2 root root   4096 Jun 22  2011 etc
drwxr-xr-x 2 root root   4096 Jul  9  2012 grub
drwxr-xr-x 6 root root   4096 Jul  9  2012 images
drwxr-xr-x 2 root root   4096 Jun 30  2011 images2
-rw-r--r-- 1 root root  20020 Jul  9  2012 memdisk
-rw-r--r-- 1 root root  39188 Jul  9  2012 menu.c32
drwxr-xr-x 2 root root   4096 Jun 22  2011 ppc
-rw-r--r-- 1 root root  14716 Jul  9  2012 pxelinux.0
drwxr-xr-x 2 root root   4096 Jul  9  2012 pxelinux.cfg
drwxr-xr-x 2 root root   4096 Jul  9  2012 s390x
-rw-r--r-- 1 root root 198192 Jul  9  2012 yaboot

Единственное, что изначально доступно серверам, которые загружаются с этого сервера TFTP, это, как описано другими, pxelinux.0 + конфигурационный файл, который соответствует MAC-адресу конкретного сервера.

Каталог изображений

Это выглядит так, если вам интересно:

$ tree /tftpboot/images
/tftpboot/images
|-- Centos56-x86_64
|   |-- initrd.img
|   `-- vmlinuz
|-- Centos56-xen-x86_64
|   |-- initrd.img
|   `-- vmlinuz
`-- Centos60-x86_64
    |-- initrd.img
    `-- vmlinuz

3 directories, 6 files

1
23.05.2017, 15:40
3 ответа

Есть ли обратные кавычки для мунг и вертикальные полосы? Если нет, вы можете использовать

cd `ls | grep foo- | head -n 1`

Если обратные кавычки не работают, но | , $ , ( и ) сделать, то вы можете изменить указанное выше на

cd $(ls | grep foo- | head -n 1)

Если | не работают, но $ , ( и ) , то вы можете сделать

cd $(myprog)

, где myprog - это сценарий, который вы пишете для определения имени каталога.

Также - я не понимаю, как вы могли бы использовать find , чтобы помочь вам создать компакт-диск , , но можете ли вы закончить свой -exec с + ?

0
28.01.2020, 01:52

На основе окончательного требования вам не нужен CD ; Вы можете сделать следующее:

find . -type d -name 'foo-*' -exec make -C {} ';'

и

find . -type d -name 'foo-*' -exec phing -f {}/build.xml ';'

Звездочки обрабатываются Найти Внутренне, и я считаю, что это совместимо с POSIX.

0
28.01.2020, 01:52

Существует способ в bash 4.3 +, который, вероятно, происходит от ksh:

echo_idx_array () # array index
{
    local -n array=$1     # add nameref attribute
    local idx=$2
    echo "${array[idx]}"
}

$ names=(one two three four)
$ echo_idx_array names 2
three
$ days=([monday]=eggs [tuesday]=bread [sunday]=jam)    # associative array
$ echo_idx_array days sunday
jam

См. также объявить -n .

-121--48232-

Команда для установки имени хоста - hostnamectl .

root ~ # hostnamectl set-hostname --static "YOUR-HOSTNAME-HERE"

Вот дополнительный источник, который описывает эту функциональность немного больше, называется: Правильна настройка имя хоста - Fedora 20 на Amazon EC2 .

Дополнительно справочная страница для hostnamectl :

HOSTNAMECTL(1)                    hostnamectl                   HOSTNAMECTL(1)

NAME
       hostnamectl - Control the system hostname

SYNOPSIS
       hostnamectl [OPTIONS...] {COMMAND}

DESCRIPTION
       hostnamectl may be used to query and change the system hostname and
       related settings.

       This tool distinguishes three different hostnames: the high-level
       "pretty" hostname which might include all kinds of special characters
       (e.g. "Lennart's Laptop"), the static hostname which is used to
       initialize the kernel hostname at boot (e.g. "lennarts-laptop"), and
       the transient hostname which is a default received from network
       configuration. If a static hostname is set, and is valid (something
       other than localhost), then the transient hostname is not used.

       Note that the pretty hostname has little restrictions on the characters
       used, while the static and transient hostnames are limited to the
       usually accepted characters of Internet domain names.

       The static hostname is stored in /etc/hostname, see hostname(5) for
       more information. The pretty hostname, chassis type, and icon name are
       stored in /etc/machine-info, see machine-info(5).

       Use systemd-firstboot(1) to initialize the system host name for mounted
       (but not booted) system images.

В Fedora есть ошибка 21 где SELinux запрещает доступ к hostnamectl, найденная здесь, под названием: Bug 1133368 - SELinux запрещает systemd-hostnam доступ к файлу hostname .

Эта ошибка, похоже, связана. Возникла проблема с неправильным применением контекстов SELinux к файлу /etc/hostname при установке. Это проявляется в инструменте hostnamectl , который не может быть управлять файлом /etc/hostname . Этот же поток предлагает такое обходное решение:

$sudo restorecon -v /etc/hostname

ПРИМЕЧАНИЕ: Исправления были применены к Anaconda (инструменту установки), чтобы эта проблема исчезла в будущем для новых пользователей.

-121--12741-

Также можно попробовать использовать утилиту locate , например:

updatedb -o ~/tmp.db -l0 -U $PWD; cd $(locate -d ~/tmp.db -l 1 -b -r foo-)

Для получения более сложных данных regex образца см. info locate .

0
28.01.2020, 01:52

Теги

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