Вы, кажется, хотите изменить все вхождения
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
Есть ли обратные кавычки для мунг и вертикальные полосы? Если нет, вы можете использовать
cd `ls | grep foo- | head -n 1`
Если обратные кавычки не работают, но |
, $
, (
и )
сделать, то вы можете изменить указанное выше на
cd $(ls | grep foo- | head -n 1)
Если |
не работают, но $
, (
и )
, то вы можете сделать
cd $(myprog)
, где myprog
- это сценарий, который вы пишете для определения имени каталога.
Также - я не понимаю, как вы могли бы использовать find
, чтобы помочь вам создать компакт-диск
,
, но можете ли вы закончить свой -exec
с +
?
На основе окончательного требования вам не нужен CD
; Вы можете сделать следующее:
find . -type d -name 'foo-*' -exec make -C {} ';'
и
find . -type d -name 'foo-*' -exec phing -f {}/build.xml ';'
Звездочки обрабатываются Найти
Внутренне, и я считаю, что это совместимо с POSIX.
Существует способ в 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
.
Команда для установки имени хоста - 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
.