Зачем писать весь скрипт в функции?

На работе я часто пишу скрипты на bash. Мой начальник предложил, что весь сценарий разбит на функции, как в следующем примере:

#!/бин/Баш

# Настроить переменные
declare_variables() {
существительное=гуси
граф=три
}

# Что-то объявить 
i_am_foo() {
 Эхо "я фу"
 спать 0.5
 Эхо "Услышь мой рев!"
}

# Анекдот
walk_into_bar() {
 Эхо "эти ${граф} ${имя существительное} заходят в бар..."
}

# Эмулировать маятниковые часы для немного
do_baz() {
 для меня в {1..6}; делать
 выражение $я % 2 >/Дев/нуль && Эхо "галочки" || Эхо "ток"
 сон 1
сделано
}

# Установить порядок выполнения 
основной() {
declare_variables
i_am_foo
walk_into_bar
do_baz
}

главная

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

Делает ли этот скрипт работать более эффективно (я бы на самом деле ожидать, что наоборот, если угодно), или делает ее легче модифицировать код за пределы вышеуказанной читаемость потенциал? Или это просто стилистические предпочтения?

Обратите внимание, что, хотя сценарий не демонстрировать это хорошо, "запустить заказ" функций в наших реальных сценариев, как правило, очень линейные -- walk_into_bar зависит от вещей, которые i_am_foo сделал, и do_baz действует на вещи, созданной walk_into_bar -- так что возможность произвольно поменять выполнения заказа не то, что мы обычно делаем. Например, вы не вдруг захотите поставить declare_variables после walk_into_bar, что бы ломать вещи.

Пример, как я бы написал этот сценарий будет такой:

#!/бин/Баш

# Настроить переменные
существительное=гуси
граф=три

# Что-то объявить 
Эхо "я фу"
спать 0.5
Эхо "Услышь мой рев!"

# Анекдот
Эхо "эти ${граф} ${имя существительное} заходят в бар..."

# Эмулировать маятниковые часы для немного
для меня в {1..6}; делать
 выражение $я % 2 >/Дев/нуль && Эхо "галочки" || Эхо "ток"
 сон 1
сделано
+608
Rick Fang 27 сент. 2019 г., 03:05:13
33 ответов

Это мое мнение, но эта проблема из-за 32-битного счетчика проблема, сегодня большинство ОС обновлена до ручки, раз на 64 бит (по крайней мере на 64-разрядных компьютерах), поэтому я думаю, что все ОС и программное обеспечение будет готово задолго до 2038, скажем, 2020. Поэтому вы могли только возникнуть проблемы, если в 2038 году вы будете по-прежнему быть запущена программа с 2020 года.
Это, вероятно, не будет проблемой в почти все дело. Я надеюсь.

+999
DanTheManDRH 03 февр. '09 в 4:24

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

  1. Двойные кавычки всю строку как один, и вы в буквальном двойные кавычки внутри (легко прочитать, если у вас только один такой случай, но вы могли бы в конечном итоге с заборчиком):

    Эхо "кошка file2.txt | Е С/\"//г' > file3.txt ## Шаг 2 " >> ~/globalLog.txt
    
  2. Использовать различные котировки для различных частей строки:

    Эхо "кошка file2.txt | Е С/"'"'"//г' > file3.txt ## Шаг 2 " >> ~/globalLog.txt
    
  3. Использование Эхо -способность обрабатывать несколько аргументов. Это применимо, если только одно слово содержит оскорбительный характер, поскольку результат, как правило, имеют пространства между каждым аргументом, поэтому он не будет работать на строке. Альтернативный пример:

    Эхо 'х"' "'бар"
    

    печать

    ФОО" 'бар
    
  4. Использование множественных Эхо -Н отчетности (или Е %С) и последующее Эхо без :

    Эхо -Н "кошки file2.txt | е" >> ~/globalLog.txt
    Эхо -н 'с/"' >> ~/globalLog.txt
    Эхо "//г' > file3.txt ## Шаг 2 " >> ~/globalLog.txt
    
  5. Не используйте цитаты, но защитить все специальные символы:

    Эхо кот\ file2.txt\ \ \|\ ООО\ \'ы/\"//г\'\ \>\ file3.txt\ \#\#\ Шаг\ 2\ >> ~/globalLog.txt
    

Обратите внимание, что это не возможно, чтобы защитить одинарные кавычки в одинарных кавычках строку.

И если вы сомневаетесь, использовать больше цитат™.

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

+860
Dalvik 20 авг. 2015 г., 23:59:51
Другие ответы

Связанные вопросы


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

ТЛ;ДР версия: зависит.

  • ОС: причин может быть ОС конкретной среде (в переменной LD_LIBRARY_PATH) файл конфигурации или команды (например, команду ldconfig(8)), который регистрируется пути для поиска библиотек.
  • система сборки: могут быть переменные окружения , такие как LDFLAGS или флаги командной строки или параметры файла конфигурации; дворняга и с проклятиями=[реж] для системы (или пользователя) есть библиотеки под пользовательский путь. Это зависит от построения системы (или даже тогда вкус сделать) и, возможно, потребуется вручную написанные в autoconf или файлов CMake.
  • после построения конфигурации: такие инструменты, как patchelf (если имеется) позволяют различные библиотеки должны быть выбраны или поиска пути изменению.
+846
thaiscmky 30 окт. 2011 г., 11:38:21

У меня есть шрифт с именем медиа готики. Как я могу найти имя файла шрифта в Linux? Мне нужно скопировать этот файл в другую систему. Я пробовал:

найти /usr/доли/шрифты/ -имя '*медиа*'

Но это не дает никаких результатов. готика дает некоторые другие шрифты. ТТФ-это двоичный формат, поэтому я не могу использовать команду grep.

+832
dsharma 30 апр. 2018 г., 12:00:36

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

В моей реальной проблемой, строки могут содержать несколько строк, но последняя может и не рядом с новой строки, и эта собственность должна быть сохранена.

В стиле этого ответа на стек обмен, мой минимальный рабочий пример выглядит так:

#!/бин/Баш

newlinetest() {
 если [ "$1" = "С"]; затем
 функции printf '%с текстом\н' с новой строки'
еще
 функции printf '%s' в 'текст без строки'
интернет
}

с="$(newlinetest С ; Е '%ов' 'х')"
ы="${с%?}"
функции printf '%ы%ы%ы\п' '(' "${ы}" ')'
с="$(newlinetest без ; функции printf "%S " или "Х")"
ы="${с%?}"
функции printf '%ы%ы%ы\п' '(' "${ы}" ')'

Он делает то, что он должен делать, но ИМХО это выглядит как грязный хак. Есть ли другой элегантный способ решить эту проблему? Может, что-то, что включает в карты или читали? Решение без внешних инструментов будет очень кстати.

+814
Andy Mardell 27 мая 2019 г., 02:41:37

Короткие на awk решение:

на awk '{ а [с++]=$3; а [с++]=$4 }конец{ asort(а); печати $1,а[1],а[длина(a)] }' файл

Вывод:

sampleA 10 230

Короткое datamash решения (отдельных мин/макс расчет в течение 3-й/4-й колонны):

datamash -Ш -Г1 мин 3 файла максимум 4 < 
  • -Г1 - группа записей с 1-го столбца значение

  • мин 3 - получить минимальное значение 3-го столбца

  • максимум 4 - получить максимальное значение по 4-й колонке

Вывод:

sampleA 10 230
+755
Daniece Peck 19 янв. 2015 г., 12:31:23

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

Чтобы увидеть это в действии, начните базовую ПВ:

ПВ /dev/нуль /dev/нуль

Затем контролировать эту:

ПВ-Р 32605 -л 1М; сна 10; ПВ-Р 32605 -л 1г; сна 1; ПВ-Р 32605 -л 1М

Вы увидите влияние целевой расчетов путем изменения длительности второго сна...

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

В немного более подробно, вот как бухгалтерия работает с потоком, изначально ограничивается 1 м, затем по 1г в течение 5 секунд, затем вернуться в 1м, на связь способна передавать 400М:

Время Целевой Показатель Послал Оставшиеся
1 1М 1М 1М 0
2 1Г 1Г 400М 600М
3 1Г 1,6 Г 400М 1,2 Г
4 1Г 2,2 Г 400М 1,8 Г
5 1 Г 2,8 Г 400М 2.4 Г
6 1 Г 3,4 Г 400М 3Г
7 1М 3001M 400М 2601M
8 1М 2602M 400М 2202M
9 1М 2203M 400М 1803M
10 1М 1804M 400М 1404M
11 1М 1405M 400М 1005M
12 1М 1006M 400М 606M
13 1М ВЫСОТА 607M 400М 207 МЕТРОВ
14 1М 208M 208M 0
15 1М 1М 1М 0

Он принимает 7s за ограничение скорости будет применена снова. Чем дольше время, проведенное с высоким лимитом ставок, тем больше времени требуется для снижение ограничения скорости должно быть исполнено...

Исправление этой довольно простой, если вы можете перекомпилировать ПВ: в петли.с, изменение линии 154 до цели = (от целевого показателя +=), в результате чего

 || (cur_time.параметры tv_sec == next_ratecheck.параметры tv_sec
 && cur_time.tv_usec >=
 next_ratecheck.tv_usec)) {
 цель =
 ((двойной) (государство->rate_limit)) /
 (двойной) (1000000 /
RATE_GRANULARITY);

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

+717
Tarana Bhangoo 5 мая 2010 г., 06:18:21

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

источник ~/.workspace-shotcuts.sh

Другая проблема заключается в том, что вы пытаетесь парсить вывод ЛС. Не делай этого. В оболочках таких как Sh и bash, вы можете уйти с ним, потому что написание $проекты за пределами цитаты шпагат значение в строку, которая отделяет имена файлов. Кроме того, что он не работает: например, если имена файлов содержат пробелы, они будут разбиты в пространстве-разделенных кусочков. В shell-скрипт, не анализа выходных данных ЛС, использовать маски вместо. Это довольно простой в ЗШ.

проекты=(~/рабочее место/*/)
для F в $проекты; делать ...

Что ты делаешь рядом достаточно извилист. Вам не нужно использовать eval здесь; через это только устанавливает вас для цитирования неудач. Поскольку вы используете ЗШ, вы можете использовать историю модификатор Т , чтобы извлечь последний компонент пути, не доезжая за манипулирование строками конструкции: $ф:т. В случае, если имя файла содержит специальные символы, вы должны защитить их, и снова ЗШ делает это легко, благодаря параметру расширение флаг м: ${(Щ)Ф} дает вам процитировал именем, которые можно использовать в определение псевдонима.

проекты=(~/рабочее место/*/)
для F в $проекты
делать
 псевдоним $ж:T="на CD ${(Щ)Ф}"
сделано

Но на самом деле, ты просто изобретать переменную окружения cdpath плюс auto_cd. Забудьте все это и используйте

auto_cd setopt 
переменную окружения cdpath+=~/рабочее место

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


В случае bash-пользователей см. эту ветку: метод псевдоним будет

проекты=(~/рабочее место/*/)
для F в "${проекты[@]}"; сделать
ф=${ф%/}
 псевдоним ${Ф##*/}="кд '${Ф//\'/\'\\\'\'}'"
сделано

и переменную окружения cdpath способ будет

Переменную окружения cdpath=$переменную окружения cdpath:$дома/рабочее место
shopt -с autocd
+696
b4n4n4 1 мар. 2011 г., 05:48:24

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

% mainfile: name_of_main_file.Текс

Так что в bash я пытаюсь извлечь первую строку из каждого файла, и от этой линии экстракт name_of_main_file.текс и скомпилировать, что. Итак, вопрос: Какой самый быстрый способ извлечения name_of_main_file.Текс, загрузив его в переменную, скажем $MAINFILE, так что я могу скомпилировать это?

+684
HoumyM 2 апр. 2013 г., 04:44:27

Вам нужно скомпилировать новейших источников , в том числе "исправление для ядра 4.11+"

АПТ установить git применением DKMS
ГИТ https://github.com/gnab/rtl8812au.git клон 
сделать
сделать установить
команды modprobe -V в 8812au

Также lwfinger РЕПО предоставляем новейшую rtl8812au источник драйверов, в том , чтобы исправить драйвер для сборки с ядрами до 4.14 , он может быть успешно скомпилирован под 4.13 ядра.

+660
Hollywoodperson 20 авг. 2010 г., 10:37:58

Я пытался РШ сценарий оболочки для OpenVMS в красной шляпе с Linux. Кажется, что она не выполняется.

Я создал скрипт в OpenVMS и доступ через FTP в Linux. Я тогда LS-Ла-папку в Linux:

-RW-р-р-- 1 buedev buedev 382 Июл 20 11:files.sh 03 

Кажется, что даже собственник не имеет право не выполнить. И если мы должны выдать ее, как мы можем сделать это дистанционно в системе OpenVMS?

+631
Peshang Shexany 16 мар. 2013 г., 15:29:43

С на awk:

на awk '{для(i=1;я<=НФ;я++){для файла(Дж=я+1;к<=НФ;к++){печати $у меня есть$J;}}}' 

Это два вложенных для петель:

  • Для(я=1;я<=НФ;я++) цикл через все поля
    • для(J В=Я+1;j с<=НФ;к++) тогда для каждого поля, петля через все остальные поля (начало в Я+1)
    • печатать $я$J и распечатать значения полей.

Вывод:

АБ
Переменного тока
Объявление
До н. э.
БД
Компакт-диск
+630
usddddd 24 авг. 2014 г., 16:51:20

Не могу сказать, что подмножество Баш реализуется в rbash. Если Вам ПОВЕЗЕТ, попробуйте

shopt -с globstar ## Баш встроенные 
ЛС **/* *

(* список файлов в текущем каталоге, и **/* список всех файлов во всех подкаталогах, на любой глубине).

+598
Joanne Hopkins 3 авг. 2016 г., 22:08:18

Цель

  • У меня есть USB-накопитель-скажем, езды по ИД устройства/dev/диск/автор-ИД/thediskid
  • Я хотел бы смонтировать диск -- идентификатор -- в папку (назовем ее /MOUNT_FOLDER)

Вопрос

  • Что это лучший способ, чтобы сделать это используя autofs?

Нынешняя Попытка

файл /etc/авто.мастер:

+авто.мастер
/localam авто.Линукс
/[другой горы] [авто.othermount] --таймаут=5 -- призрак
/MOUNT_FOLDER авто.ВН-кабель USB --таймаут=5
/ -

файл /etc/авто.доб-USB:с

/MOUNT_FOLDER на /dev/диск/по-ИД/thediskid

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

Новичок в Linux; ценить билет, если я с видом что-то простое. Спасибо!

+574
Satrio Utomo 8 февр. 2011 г., 02:45:18

Вам нужно сначала обновить Баш с up2date, в Баш команду на каждом сервера, а затем выполните этот скрипт , чтобы проверить, если все ОК. Но если обновление пройдет успешно, я не уверен, нужны испытания. док у up2date

+573
Adrian Dean 16 июн. 2016 г., 03:35:29

Это происходит потому, что вы работаете на ПС команды в подоболочку. Когда вы запустите это:

INSTANCES_NUMBER=`ПС-эф | грэп detect_itself.sh | команда grep -v с -я грэп | туалет -л`

Что, собственно, порождает новый подуровень чтобы запустить эту команду в. Потому что эта вилка является копией родительского, есть теперь два detect_itself.sh экземпляров, запущенных. Для иллюстрации выполнения этого:

#!/Бен/ш
Эхо ", выполнив команду PS напрямую:"
ПС-эф | грэп detect_itself.sh | команда grep -v с -я грэп
Эхо "работает команда PS в подоболочек:"
Эхо "`ПС-эф | грэп detect_itself.sh | команда grep -v с -я команда grep`"

Что должна печатать:

$ test.sh
Выполнив команду PS напрямую:
terdon 25683 24478 0 14:58 ПЦ/11 00:00:00 /Бен/ш /home/terdon/scripts/detect_itself.sh
Запустив команду PS в подоболочек:
terdon 25683 24478 0 14:58 ПЦ/11 00:00:00 /Бен/ш /home/terdon/scripts/detect_itself.sh
terdon 25688 25683 0 14:58 ПЦ/11 00:00:00 /Бен/ш /home/terdon/scripts/detect_itself.sh

К счастью, есть приложение для этого! Такого рода вещи именно поэтому pgrep существует. Так изменить свой сценарий:

#!/Бен/ш
pgrep -ФК экземпляры=`detect_itself.sh`
Эхо "количество detect_itself.sh экземпляры теперь работает = $экземпляров"
Эхо "Второй способ:"
ПС-эф | грэп detect_itself.sh | грэп -в-я команда grep | туалет -л
Эхо "Третий способ (неправильный):"
Эхо `ПС-эф | грэп detect_itself.sh | команда grep -v с -я грэп | туалет -л`

Что должна печатать:

$ detect_itself.sh
Количество detect_itself.sh экземпляры теперь работает = 1
Второй способ:
1
Третий способ (неправильный):
2

Важно: это не безопасная вещь, чтобы сделать. Например, если у вас есть сценарий под названием this_will_detect_itself, которые будут засчитаны. если у вас есть файл, открытый в текстовом редакторе, которые также будут учитываться. Гораздо более надежный подход для такого рода вещей является использование файла. Что-то вроде:

#!/Бен/ш

если [[ -е /tmp/и I_am_running ]]; затем
 Эхо "уже работает! Будет выход".
выход
еще
 сенсорный /tmp/и I_am_running
интернет
## делать все, что вы хотите сделать здесь

## снять блокировку файла в конце
РМ /ТМП/I_am_running

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

+541
LightspeedLife 16 мар. 2011 г., 07:32:00

Я хочу, чтобы клонировать моей виртуальной машины в VirtualBox на другой/внешний HD в мой компьютер.

Моей виртуальной машине с Debian 7, и я хочу использовать ДД команду на внешний HD.

Это возможно?

Когда я использую # команда fdisk -л только ВМ появляется, а не других HD.

Спасибо!

+534
traveler65857 21 мая 2010 г., 17:30:42

Я хочу, чтобы скомпилировать Apache 2.4, как 32 бит на Solaris 10 64-битные ОС. У меня установлен GCC и у меня пакеты апреля, апреля-утиль, PCRE и открытые SSL с меня. Как я могу скомпилировать как 32 бит, так как, чтобы получить Апач httpd сервер веб-сервер 32бит?

+468
Kareem Muhammad 5 мая 2011 г., 01:01:57

Предупреждаю: сценарий пыльник не обрабатывать ошибки, когда каталог не является числовым именем.

Возможное решение:

#!/бин/Баш
#комплект -х

Источник=/опт/ДМС/
ДЕСТ=/опт/nes_dms

для dir в ЛС $источник | сортировка -Н
делать

 # определение назначения каталогом
 dst_dir=$(( (($Дир/50000) + 1) * 50000 ))

 # проверить, если объект существует каталогом
 если [ ! -д $ДЕСТ/$dst_dir ]
тогда
 команды mkdir $ДЕСТ/$dst_dir
 интернет 

 МВ $источник/каталог$dir $ДЕСТ/$dst_dir

сделано
+459
SuperFun 18 апр. 2011 г., 11:43:46

Я нового в Fedora 23 и SELinux. Я использую OpenVPN клиента через NetworkManager-а. Я сохранил все файлы, мне нужен OpenVPN для доступа (сертификат и закрытого ключа центра сертификации) внутри ~/.свиду и побежал updatecon -Р-в ~/.верняк. Однако, я все еще получаю ошибки AVC от доступа SELinux, который не позволит работать с OpenVPN доступ к таким файлам. Это соответствующая часть вывода команды grep АВК /ВАР/журнал/аудит/аудит.журнал | меньше:

тип=АВК МСГ=аудита(1457179403.296:364): АВК: отказано { открытые } для PID=2608 комм="Нм-сервис OpenVPN-серв" путь="/главная/ggoncalves/.верняк/ggoncalves.ключ" разработки="ДМ-2" Ино=2888752 scontext=system_u:system_r:NetworkManager_t:tcontext С0=system_u:object_r:svirt_sandbox_file_t:С0:К50,c545 tclass=файл разрешительной=0
тип=АВК МСГ=аудита(1457179403.296:365): АВК: отказано { открытые } для PID=2608 комм="Нм-сервис OpenVPN-серв" путь="/главная/ggoncalves/.верняк/ggoncalves.ключ" разработки="ДМ-2" Ино=2888752 scontext=system_u:system_r:NetworkManager_t:tcontext С0=system_u:object_r:svirt_sandbox_file_t:С0:К50,c545 tclass=файл разрешительной=0
тип=АВК МСГ=аудита(1457179403.330:366): АВК: отказано { читать } для PID=2611 комм="брелка" имя="строчка-ка.ЭЛТ" разработки="ДМ-2" Ино=2888749 scontext=system_u:system_r:openvpn_t:tcontext С0=system_u:object_r:svirt_sandbox_file_t:С0:К50,c545 tclass=файл разрешительной=0
тип=АВК МСГ=аудита(1457179403.332:367): АВК: отказано { читать } для PID=2611 комм="брелка" имя="ggoncalves.ЭЛТ" разработки="ДМ-2" Ино=2888751 scontext=system_u:system_r:openvpn_t:tcontext С0=system_u:object_r:svirt_sandbox_file_t:С0:К50,c545 tclass=файл разрешительной=0
тип=АВК МСГ=аудита(1457179403.332:368): АВК: отказано { читать } для PID=2611 комм="брелка" имя="ggoncalves.ключ" разработки="ДМ-2" Ино=2888752 scontext=system_u:system_r:openvpn_t:tcontext С0=system_u:object_r:svirt_sandbox_file_t:С0:К50,c545 tclass=файл разрешительной=0

Поскольку я только использую SELinux для несколько дней, я понятия не имею, где начать искать этого. Любые намеки?

Редактировать: мне кажется, что проблема в svirt_sandbox_file_t метки. Я считаю, что эти файлы должны быть помечены home_cert_t.

Правка 2: в самом деле, весь мой домашний каталог был назван svirt_sandbox_file_t по какой-то причине. Это особенность или баг политики Докер?

Обновление

Ладно, это заняло некоторое время. Позвольте мне описать проблему, в случае если кто-то заканчивает переживает то же самое. Получается svirt_sandbox_file_t было отнести на Докер, когда я установил мой домашний каталог как Тома с флаг (как описано здесь). Докер потом рекурсивно применяется этот ярлык на меня весь домашний каталог, и как-то ни перенастройки ФС этикетки, ни применения команды restorecon работал.

Чтобы восстановить свой дом, чтобы исходные разрешения, я по rsync'D это во временную папку, удалил все, что в нем и по rsync'D вернуться. Не самая гениальная идея, но она сработала.

+435
LaurentH 12 сент. 2018 г., 15:20:21
стр=1273455667
сбросить hex_values
для (( Я=0; я < ${ул.#}; я++ )); делать
с=${Г.:Я:1}
 hex_values+=($(Е "%Х" "'$с"))
сделано

Эхо "${hex_values[*]}"

Обратите внимание, что в ksh93, что printf '%х\п' "'символ"$"" дает вам персонажа код, а не шестнадцатеричные значения байтов, что форма этого символа в текущей кодировке. В этом отношении он отличается от ОД -Ан-vtx1.

Например, в UTF-8 локали, евро (кодируется как Е2 82 ас в UTF-8), это даст 20ac (кодовая точка Unicode для символа евро), а не Е2 82 ас.

Вы можете получить такое же поведение, как в ОД , если вы заставляете локали C (при экспорте значение lc_all=с).

Здесь мы используем подстановку команд ($(...)) для получения выходных данных команды. В ksh93, когда команда является встроенной, которая не включает в себя создание труб и разветвления подуровень, так это относительно эффективным.

+432
loqman chookili 15 апр. 2018 г., 08:47:56

Автоматически загружать карты, используя в udev

В пакет модуль, отвечающий за автоматическую загрузку звуковая карта распознается в ALSA модуль-в udev-обнаружить на системы обслуживания в udev. Этот модуль должен быть загружен при запуске установщика с умолчанию.ПА , который обычно находится в файле/etc/пульс/.

Чтобы увидеть, будет ли этот модуль загружается мы можем выдать:

pactl список коротких модулей

Если нет модуля-в udev-обнаружить настоящее время мы можем загрузить и протестировать его, выполнив

нагрузка-модуль pactl модуль-в udev-обнаружить

Любой алса карты, присутствующие в системе, то должен быть загружен как выходной приемник выбор настроек звука и не видел

pactl краткий список карт

В случае успеха следующие строки могут быть добавлены в наш по умолчанию.па:

.модуль-в udev-обнаружить свойство ifexists.так
модуль-udev для определения нагрузки-модуль 
.еще
модуль определения нагрузки-модуль 
.за endif

В модуль обнаружения может обнаруживать карты в системе, где udev не поддерживает.

Нагрузки вручную с ALSA карта

Если это не удалось, мы также можем вручную загрузить алса карту с помощью следующей команды:

нагрузка-модуль pactl модуль-алса-карта <опции>

В <функции> поля зависит от нашего оборудования. В примере ниже

device_id="0" имя="для PCI-0000_00_05.0" card_name="alsa_card.слот PCI-0000_00_05.0" namereg_fail=ложь tsched=да fixed_latency_range=нет ignore_dB=нет deferred_volume=да use_ucm=да
  • device_id - карта количество как дается с

    игре -л
    
  • имя - это имя мы можем свободно выбрать

  • card_name имя определяется алса, как указано на

    Общ /Дев/СНД/по-пути
    
  • другие опции по умолчанию для стандартной карты.

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

модуль-алса-загрузить карту-модуль <опции>
+415
Pradipta Chakraborty 10 нояб. 2016 г., 06:43:58

Вы можете использовать uconv утилита от реанимации. Нормализация достигается через транслит ().

$ uconv -х любых-НФД <<<ä | БГ
00000000 61 ГК 88 0а |а...|
00000004
$ uconv -х любых-ЯТЦ <<<ä | БГ
00000000 С3 А4 0а |...|
00000003

В Debian, Ubuntu и другие производные, uconv в libicu-dev и пакет. На Fedora, Красная Шапочка и другие производные, а в BSD-порты, это в СИС пакет.

+371
Michael Scudiero 22 окт. 2012 г., 02:48:48
  1. Я хочу сделать НФС список пользователей (список клиентов), как вы
  2. Я хочу увидеть, какой пользователь и IP использует, которые разделяют и при подключении.
  3. Я хочу убить пользователей НФС.
  4. Я хочу войти, что пользователь делает, как "создавать, изменять, удалять".

Я хочу управлять пользователями NFS, но я не могу найти информации и средства для этой проблемы.

+270
Md Masfikuzzaman Khan Mishu 5 июн. 2013 г., 03:33:45

Я продолжая AT команды для модема интерфейс (на/dev/ttyUSB3) и команда выполняется успешно.

Например, ниже команда работает и имеет выход ОК:

Эхо -э "АТЗ\р" > на /dev/ttyUSB3

Я вижу эту проблему с помощью другого терминала с кошкой на /dev/ttyUSB3 активный.

Как я, вместо того, чтобы использовать кошку (например, использовать одну команду, чтобы отправить команду и получить результаты), перенаправить вывод ОК в переменную или файл, так что я могу обрабатывать данные, возвращаемые от модема?

+183
user1303884 12 мар. 2010 г., 13:30:55

В общем случае, вы можете просто сделать:

СЭД 'с/./&,/4' <в >из

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

И, если вы возьмете мой совет, вы должны вообще не пользоваться переключиться на любой СЭД , который предлагает один.

+131
corn 14 авг. 2015 г., 05:40:37

Я установил VMware и я установил CentOS в нем, и я хотел бы установить Emacs на это, но я не найти какой-либо источник, который имеет tar-файл для этого. Я либо найти его для Linux или Solaris, но когда я попытался установить файл tar Учитывая для Linux на виртуальной машине, это не установка. Может кто-нибудь дать мне источник, где я могу найти файл tar редактора Emacs, которые я могу установить на виртуальную машину, а также инструкции о том, как его установить? Я найти с помощью Emacs легче, чем ВИМ. И в чем разница между Linux установлена на диск и установил на ВМ?

+120
orla mcsweeney 9 апр. 2018 г., 17:05:26

Типа "reset" в командной строке. Возможно, вам придется делать это вслепую. См. также:

Исправить терминале после вывода двоичный файл

+116
Erroid 14 янв. 2014 г., 17:08:11

Потому что вы используете двойные кавычки, Баш оценивает сначала всю строку, а затем выполняет ее.

Заменить первую строку с /бин/Баш-с эхо “\ и вы увидите следующий код в bash -с попытку запуска.

/бин/Баш-с Эхо "\
...


касание \$а; ); эхо $( эхо в подуровень, \долл; ); "
эхо в подуровень, \долл; ); "
касание \$а; ); эхо $( эхо в подуровень, \долл; ); 
прикосновение \$а; 
эхо в подуровень, \долл; ); 
эхо в подуровень, \долл; 

Вместо того, чтобы использовать одинарные кавычки.

+116
Sonia Demireva 3 янв. 2017 г., 12:16:31

Я думаю, я нашел то, что искал, а именно встроенного макроса человек из Asciidoctor расширения лаборатории. Хотя она не является частью акции AsciiDoc, по крайней мере, она указана в качестве одной из Asciidoctor официального расширения. С его помощью можно выразить одной на странице плюс что-то вроде такой человек:Вим[1].

+113
Yuki Kutsuya 27 февр. 2012 г., 23:56:49

Со следующей ням инфо звоните, мы можем захватить установленную версию ambari-метрики-монитор

 ням инфо ambari-метрики-монитор| грэп -я версия |глава -1
 Версия : 2.6.1.0

а чтобы проверить из выход версии 2.6.1.0, я просто делаю:

 ням инфо ambari-метрики-монитор| грэп -я версия |глава -1 | грэп "2.6.1.0"

Мне кажется, что этот путь не правильный путь, чтобы соответствовать версии число с плавающей точкой.

Так что это правильный путь, чтобы соответствовать версии число с плавающей точкой от производства (по моему примеру)?

+38
Lindalsonedwe 11 мар. 2015 г., 00:35:45

Я пытаюсь управлять в реальном времени (также рассматривается возможность) на мой Линукс Федора 9 машины. Для этого необходимо иметь символьное устройство файла, имени rtai_shm, в каталоге/dev, который заботится о разделяемой памяти. Я сделал этот файл с помощью команды функции mknod -M с 666 на /dev/rtai_shm с 10 254.

Если я загружаюсь с уровня 3 (т. е. initdefault == 3 в файле/etc/содержимое файла inittab файл), затем в/dev/rtai_shm существует, и я прекрасно могу печатать:

$ ЛС-л /Дев/РТ*
КВР-РВ-РВ - 1 корень 10, 254 23 сентября 2014 к /dev/rtai_shm

Однако, когда я загрузить с 5-м уровне (т. е. initdefault == 5 в файле/etc/содержимое файла inittab), то я не вижу, как/dev/rtai_shm больше, а ЛС не список любой файл с таким именем. Соответственно, мой первоначальный сервер, который должен общаться с также рассматривается возможность не реагирует. Проблема сохраняется в GUI и интерфейс терминала, и даже когда я войти в систему как root.

Я бы сильно признателен за любую помощь или намек на это!

+21
Vaibhav Shetye 19 февр. 2019 г., 11:33:30

Право, вы можете сделать это с --датчик:

#!/бин/Баш
объявить пакеты=("две" "/и т. д./dmtab" "в/etc/fstab строчку" "в/etc/содержимое файла inittab" "в/etc/mtab")
NUM_PACKAGES=${пакеты#[*]} # нет. пакеты для обновления (#пакеты в массиве $пакеты)
шаг=$((100/$NUM_PACKAGES)) # прогресс бар шаг
cur_file_idx=0
счетчик=0
ДЕСТ=${ДОМА}
(
# бесконечный цикл while
в то время как :
делать
 кошка <<ВФ
ХХХ
$счетчик
$счетчик% повышен

Команда $
ХХХ
ВФ
 Команда="СР ${пакеты[$cur_file_idx]} $ДЕСТ &>/dev/нуль" # наборы команд/обновления для запуска.
 [[ $NUM_PACKAGES -ЛТ $cur_file_idx ]] команда & & $ # - команду выполняет 

 (( cur_file_idx+=1 )) увеличение # счетчик
 (( счетчик+=шаг ))
 [ $счетчик -ГТ 100 ] && перерыв # перерыв, когда достигнет 100% (или больше
 # с тех пор как bash не только целочисленной арифметики)
 спать 10 # задержка это определенное количество времени, т. е. 1 сек.
сделано
) |
диалог --титул "обновить файл" --датчик "Пожалуйста, подождите..." 10 70 0

Этот код в действии:

            progress bar animation

Примечание. Этот код фактически копирует эти пять файлов из файл/etc/ в вашем домашнем каталоге.

+19
rosencreuz 10 авг. 2018 г., 11:21:00

Показать вопросы с тегом

$200 cialis coupon 10 mg tadalafil generic 5 mg cialis over the counter at walmart best price for tadalafil 20 mg buy cialis buy cialis generic tadalafil buy cialis online buy cialis online without script buy tadalafil buy tadalafil online canadian cialis online pharmacy canadian pharmacy cialis cheap cialis cheap cialis generic cialis cialis 20 mg best price cialis 20mg cialis 30 day sample cialis 30 day trial coupon cialis and alcohol cialis before and after cialis canada cialis canada pharmacy online cialis cost cialis coupon cialis coupons cialis coupons printable cialis dosage cialis dosage information cialis for daily use cialis for sale cialis free trial cialis free trial voucher for cialis cialis generic cialis generic release date cialis generic tadalafil cialis lowest price cialis online cialis online pharmacy cialis over the counter cialis over the counter at walmart cialis patent expiration date extended cialis picture testimonials cialis pills cialis price cialis prices cialis reviews cialis side effects cialis tadalafil cialis tadalafil 20 mg cialis vs viagra cialis vs viagra which is better cialis without a doctor's prescription cialis without doctor prescription cost of cialis cost of tadalafil generic at walgreens coupon for cialis by manufacturer does cialis lower blood pressure generic cialis generic cialis at walmart generic cialis canada generic cialis canada pharmacy generic cialis from india generic cialis tadalafil generic tadalafil generic tadalafil 20 mg is there a generic for cialis online cialis purchasing cialis on the internet side effects for cialis side effects for tadalafil side effects of cialis tadalafil tadalafil 20 mg tadalafil 20 mg canadian drug stores tadalafil 20mg tadalafil 20mg lowest price tadalafil 5 mg tadalafil 5mg tadalafil cost at walmart tadalafil dosage tadalafil generic tadalafil generic at walgreens tadalafil generic best prices tadalafil online tadalafil price tadalafil side effects tadalafil tablets tadalafil without a doctor's prescription viagra vs cialis viagra vs cialis vs levitra warnings for tadalafil $200 cialis coupon 10 mg tadalafil generic 5 mg cialis over the counter at walmart best price for tadalafil 20 mg buy cialis buy cialis generic tadalafil buy cialis online buy cialis online without script buy tadalafil buy tadalafil online canadian cialis online pharmacy canadian pharmacy cialis cheap cialis cheap cialis generic cialis cialis 20 mg best price cialis 20mg cialis 30 day sample cialis 30 day trial coupon cialis and alcohol cialis before and after cialis canada cialis canada pharmacy online cialis cost cialis coupon cialis coupons cialis coupons printable cialis dosage cialis dosage information cialis for daily use cialis for sale cialis free trial cialis free trial voucher for cialis cialis generic cialis generic release date cialis generic tadalafil cialis lowest price cialis online cialis online pharmacy cialis over the counter cialis over the counter at walmart cialis patent expiration date extended cialis picture testimonials cialis pills cialis price cialis prices cialis reviews cialis side effects cialis tadalafil cialis tadalafil 20 mg cialis vs viagra cialis vs viagra which is better cialis without a doctor's prescription cialis without doctor prescription cost of cialis cost of tadalafil generic at walgreens coupon for cialis by manufacturer does cialis lower blood pressure generic cialis generic cialis at walmart generic cialis canada generic cialis canada pharmacy generic cialis from india generic cialis tadalafil generic tadalafil generic tadalafil 20 mg is there a generic for cialis online cialis purchasing cialis on the internet side effects for cialis side effects for tadalafil side effects of cialis tadalafil tadalafil 20 mg tadalafil 20 mg canadian drug stores tadalafil 20mg tadalafil 20mg lowest price tadalafil 5 mg tadalafil 5mg tadalafil cost at walmart tadalafil dosage tadalafil generic tadalafil generic at walgreens tadalafil generic best prices tadalafil online tadalafil price tadalafil side effects tadalafil tablets tadalafil without a doctor's prescription viagra vs cialis viagra vs cialis vs levitra warnings for tadalafil blue chew viagra scam buy viagra buy viagra online buy viagra online canada pharmacy buy viagra online without script canada pharmacy viagra generic canadian pharcharmy online viagra canadian viagra canadian viagra without a doctor prescription cheap viagra cialis vs viagra cost of viagra female viagra female viagra pills free viagra free viagra samples generic viagra generic viagra 100mg generic viagra available generic viagra canada price generic viagra online pharmacy generic viagra sildenafil citrate generic viagra without a doctor prescription herbal viagra how does viagra work how long does viagra last how much does viagra cost how to take viagra for maximum effect i took viagra mom levitra vs viagra mom gives son viagra natural viagra natural viagra alternatives that work natural viagra substitute nizagara 100 mg vs viagra online viagra online viagra without subscription over the counter viagra real life viagra demonstration revatio vs viagra side effects of viagra sildenafil sildenafil 100mg sildenafil 20 mg sildenafil 20 mg tablet sildenafil 20 mg tablet vs viagra sildenafil citrate sildenafil citrate 100mg sildenafil citrate 20 mg sildenafil coupons sildenafil dosage sildenafil dosage recommendations sildenafil generic sildenafil side effects sophia viagra sophia viagra bikini sophia viagra hot stendra vs viagra stepmom gives son viagra viagra viagra 100mg viagra before after photo actual viagra boner viagra canada online pharmacy viagra coupon viagra coupons viagra coupons from pfizer viagra dosage viagra dosage recommendations viagra erection viagra erection after ejaculation viagra for men viagra for sale viagra for sale on amazon viagra for women viagra generic viagra generic availability viagra generic release date viagra in action viagra on line viagra online viagra online canada pharmacy viagra online pharmacy viagra patent expiration viagra pill viagra pills viagra porn viagra prank viagra prices viagra samples viagra sex viagra side effects viagra substitute viagra vs cialis viagra without a doctor prescription viagra without doctor prescription what is viagra when will generic viagra be available blue chew viagra scam buy viagra buy viagra online buy viagra online canada pharmacy buy viagra online without script canada pharmacy viagra generic canadian pharcharmy online viagra canadian viagra canadian viagra without a doctor prescription cheap viagra cialis vs viagra cost of viagra female viagra female viagra pills free viagra free viagra samples generic viagra generic viagra 100mg generic viagra available generic viagra canada price generic viagra online pharmacy generic viagra sildenafil citrate generic viagra without a doctor prescription herbal viagra how does viagra work how long does viagra last how much does viagra cost how to take viagra for maximum effect i took viagra mom levitra vs viagra mom gives son viagra natural viagra natural viagra alternatives that work natural viagra substitute nizagara 100 mg vs viagra online viagra online viagra without subscription over the counter viagra real life viagra demonstration revatio vs viagra side effects of viagra sildenafil sildenafil 100mg sildenafil 20 mg sildenafil 20 mg tablet sildenafil 20 mg tablet vs viagra sildenafil citrate sildenafil citrate 100mg sildenafil citrate 20 mg sildenafil coupons sildenafil dosage sildenafil dosage recommendations sildenafil generic sildenafil side effects sophia viagra sophia viagra bikini sophia viagra hot stendra vs viagra stepmom gives son viagra viagra viagra 100mg viagra before after photo actual viagra boner viagra canada online pharmacy viagra coupon viagra coupons viagra coupons from pfizer viagra dosage viagra dosage recommendations viagra erection viagra erection after ejaculation viagra for men viagra for sale viagra for sale on amazon viagra for women viagra generic viagra generic availability viagra generic release date viagra in action viagra on line viagra online viagra online canada pharmacy viagra online pharmacy viagra patent expiration viagra pill viagra pills viagra porn viagra prank viagra prices viagra samples viagra sex viagra side effects viagra substitute viagra vs cialis viagra without a doctor prescription viagra without doctor prescription what is viagra when will generic viagra be available $200 cialis coupon 10 mg tadalafil generic 5 mg cialis over the counter at walmart best price for tadalafil 20 mg buy cialis buy cialis generic tadalafil buy cialis online buy cialis online without script buy tadalafil buy tadalafil online canadian cialis online pharmacy canadian pharmacy cialis cheap cialis cheap cialis generic cialis cialis 20 mg best price cialis 20mg cialis 30 day sample cialis 30 day trial coupon cialis and alcohol cialis before and after cialis canada cialis canada pharmacy online cialis cost cialis coupon cialis coupons cialis coupons printable cialis dosage cialis dosage information cialis for daily use cialis for sale cialis free trial cialis free trial voucher for cialis cialis generic cialis generic release date cialis generic tadalafil cialis lowest price cialis online cialis online pharmacy cialis over the counter cialis over the counter at walmart cialis patent expiration date extended cialis picture testimonials cialis pills cialis price cialis prices cialis reviews cialis side effects cialis tadalafil cialis tadalafil 20 mg cialis vs viagra cialis vs viagra which is better cialis without a doctor's prescription cialis without doctor prescription cost of cialis cost of tadalafil generic at walgreens coupon for cialis by manufacturer does cialis lower blood pressure generic cialis generic cialis at walmart generic cialis canada generic cialis canada pharmacy generic cialis from india generic cialis tadalafil generic tadalafil generic tadalafil 20 mg is there a generic for cialis online cialis purchasing cialis on the internet side effects for cialis side effects for tadalafil side effects of cialis tadalafil tadalafil 20 mg tadalafil 20 mg canadian drug stores tadalafil 20mg tadalafil 20mg lowest price tadalafil 5 mg tadalafil 5mg tadalafil cost at walmart tadalafil dosage tadalafil generic tadalafil generic at walgreens tadalafil generic best prices tadalafil online tadalafil price tadalafil side effects tadalafil tablets tadalafil without a doctor's prescription viagra vs cialis viagra vs cialis vs levitra warnings for tadalafil