Сценарии Linux - как дождаться загрузки носителя CD/DVD перед чтением/монтажом?

В Linux с systemtap (как root ) вы можете сделать

stap -e 'probe kernel.function("do_task_stat") {
           printf("%o\n", $task->fs->umask);
           exit()
         }
         probe begin {system("cat /proc/4321/stat>/dev/null")}'

Выполнение cat / proc / 4321 / stat вызовет этот зонд. на do_task_stat , где мы можем получить доступ к полю fs-> umask соответствующего процесса ' task_struct в ядре.

2
30.10.2018, 21:31
1 ответ

Проблема заключается в одинарных кавычках. Оболочка интерпретирует одинарные кавычки как «передать это дословно, без интерпретации каких-либо специальных символов». Вам нужно заменить их двойными кавычками и избежать двойных кавычек внутри параметра. Примерно так:

sed -i "2i\\
\"1.0.1\": \"1.0.1.zip\",
   " file.json

Для вашего исходного вопроса, вставив вкладку с sed, это работает(2iвставит в строку 2, где первая строка файла 1 ). Если вы хотите добавить символ табуляции в командную строку (или в vim ), нажмите Ctrl+Q-<Tab>, чтобы указать, что символ табуляции является буквальным и не должен интерпретироваться редактором/оболочкой. В случае других редакторов, посмотрите в документации редактора, как ввести литеральную вкладку.

Примером может быть:

sed -i.json "2i\\
\"1.0.1\": \"1.0.1.zip\",
<Ctrl-Q><Tab>" file.json

, где последовательность <Ctrl-Q><Tab>означает нажатие этих конкретных клавиш. Это будет зависеть от редактора, который вы используете. В комментариях вы упоминаете, что используете VS Code, поэтому вместо трюка <Ctrl+Q><Tab>вы можете использовать один из вариантов, указанных в ответах на этот вопрос:https://stackoverflow.com/questions/45566785/vscode-insert-tab-character-manually

Обратите внимание, что между -iи .jsonнет пробела.

0
27.01.2020, 22:29

Теги

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