Разница между 2>&-, 2>/Дев/нуль, |&, &>/dev/нуль и >/dev/нуль 2>&1

У меня простой bash-скрипт ленты комментариев из файла JS:

#!/бин/Баш
СЭД -е '/^[[:пробел:]]*(\/\/|#)/д;ы/#.*//' $1 >> stripped.js

это работает почти идеально, за исключением комментариев, которые происходят рядный, таких как

// file-to-be-stripped.js
...
...
константный someVar = 'ВАР' // этот комментарий не будет лишен
// этот комментарий будет удален

что я пропустил в полосу встроенных комментариев?

Обновление:

Что действительно странно я запустил ваш пример с интернет-bash и она работает безупречно! Однако, когда я запускаю точно такой же код локально, это не Стрип встроенный одни!? Любая идея, почему / как это может быть? Я явно упускаю что-то... очень странно. Вот мой обновленный код, используя ответы @Афшин.

Мой сценарий: stripper.sh

#!/бин/Баш
СЭД -э-э-х:(\с+(//|#)|^\с*(//|#)).*$::; /^$/Д' 1 $ > "раздели.${1}"

Мой тестовый файл: test.js

// испытуемые один
испытуемые константный = 'два'
консоль.журнал(яички) // три
// испытуемые четыре!?
консоль.журнала('Ммммм тост') // Я не буду лишили прав!

Затем я выполните команду: ./stripper.sh test.js а на выходе:

испытуемые константный = 'два'
консоль.журнал(яички) // три
консоль.журнала('Ммммм тост') // Я не буду лишили прав!

Любые идеи, почему работает тот же код локально только СЭД по всей линии, но он работает с интернет-Баш переводчик (к сожалению я не могу поделиться точную ссылку на мою оболочку, потому что это немного.лы ссылке и, видимо, это "нет" здесь.) работает, как ожидалось?

+641
user68690 8 апр. 2012 г., 15:17:52
21 ответов

Я думаю, хорошим вариантом для вас может быть просто по rsync от источника к получателю, как правило, считая это отдельной физической файловой системы передачи, используя что-то вроде

по rsync -е 'СШ -П 22' -quaxz --bwlimit=1000 --дель --теперь --удалить-основе --исключить-от=/excludedstufflist /исходный_каталог IP-адресов сервера:/destinationdir

а потом, когда все это скопировать в нужное место в новой системе, узнайте, какие новые жидкости системы дал данные из исходной системы. Это, наверное, 1001, 1002 и т. д. В этом случае вы можете легко сделать

найти /destinationdir пользователем 1001 -старпома на chown имя_пользователя '{}' \;
найти /destinationdir -пользователей 1002 -экзек Чаун otherusername '{}' \;
и т. д.

Да, тебе придется сделать это последнее, что 100 раз, но вы могли бы легко скрипт, который, если вы знаете идентификатор последовательность, используемая при помощи rsync.. я сделала именно в этот раз, перенос около 60 пользователей с одного сервера на другой, и она работала достаточно хорошо. Я также нужны для замены разрешения группы, подобные сделки;

Чаун-от=oldguy newguy * -Р
Чаун-от=:друзья :семья * -Р

Подобное. Надеюсь, что вы можете использовать это.

+935
Senu George 03 февр. '09 в 4:24

Это сервер с 128ГБ SSD.

Есть две ЛВС, / и /Home.

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

Как я могу объединить их?

+849
Ronald Symons 19 апр. 2014 г., 19:53:41

У меня была такая же проблема и вдохновился вашей идеей использовать WebIDE. Оказывается можно получить доступ к профилю файлов в JavaScript на протяжении, по крайней мере, в моем Firefox для Android версии 59.0.2, но это помогает только частично, чтобы резервное копирование всех данных профиля.

Принцип

Содержимое файла можно получить с помощью AJAX (см. здесь), также, если они являются бинарными (ссылка). Однако, похоже, вы можете только доступ к файлам, которые находятся в текущем каталоге или в каталоге.

Например, содержимое браузера.дБ можно получить, перейдя в файл:///данных/данных/орг.от Mozilla.для Firefox/файлы/Мозилла/ХХХХХХХХ.по умолчанию/ и затем выполнив в консоли с помощью WebIDE:

вар для xmlhttp = новый запрос();
для xmlhttp.открыть("вам", "браузер.БД");
для xmlhttp.responseType = "буфер ArrayBuffer";
для xmlhttp.отправить();

Результат будет храниться в метод xmlhttp.ответ как буфер ArrayBuffer. Если данные не в двоичном, "текст" можно использовать вместо "буфер ArrayBuffer".

Для небольших двоичных файлов это может быть достаточно, чтобы скопировать их в буфер обмена с копией(для xmlhttp.responseText), но для больших файлов это может выбросить из памяти ошибки.

Тот же метод можно использовать, чтобы получить список файлов и каталогов. Проблема в том, что это (для меня по крайней мере) работал только для каталога, браузер был переход, но не для подкаталогов. Возвращаемые данные-это список файлов, как обычный текст:

300: файл:///данных/данных/орг.от Mozilla.для Firefox/файлы/Мозилла/ХХХХХХХХ.по умолчанию/
200: именем содержанием-длина последнего изменения файла-тип
201: AlternateServices.txt 0 Чт,%2010%20мая%202018%2015:33:файл 20%20GMT 
201: Offlineкэш 0, Чт,%2009%20Nov%202017%2018:28:каталог 54%20GMT 
...

Резервное копирование

Для полноты, вот два скрипта, которые я использовал для резервного копирования файлов. Как только быстрые и грязные и минимальный сценарии. Данные передаются на языке Python-сервер, работающий на компьютере, который затем сохраняет их.

Важно: они только резервное копирование файлов в текущем каталоге, но не в каталогах (см. Ограничения выше). Однако, поскольку большинство профиля в корневом каталоге этого может быть достаточно. Если вы хотите хранить файлы в подкаталогах, а вам нужно вставить и вновь запустить JavaScript для каждого каталога. Необходимые каталоги будут создаваться на сервере.

Питон сервера (сохранить как server.py а потом работать, например, с питон3 server.py 2222 в зависимости от порта, который вы хотите использовать)

импорт ОС
с HTTP.импорт BaseHTTPRequestHandler сервера, http-сервера

класс FileReceiveHandler(BaseHTTPRequestHandler):
 деф _set_headers(самовыдвижение):
самовывоз.send_response(200)
 самовывоз.контент-тип send_header ('', 'текст/равнина')
самовывоз.end_headers()

 деф do_POST(самовыдвижение):
 content_length = инт(самовыдвижение.заголовки['контент-длина']) # <--- возвращает размер данных
 post_data = собственн.rfile.читать(content_length) # <--- получает сами данные 
печати(самовыдвижение.путь)

 Файловое хранилище # 
 relative_file_path = ОС.путь.присоединяйтесь к('received_files', самовывоз.путь.lstrip('/'))
 каталоги = ОС.путь.каталог(relative_file_path)
 ОС.makedirs(каталоги, exist_ok=истина)
 с открытыми(relative_file_path, 'ВБ') как F:
Ф.писать(post_data)

самовывоз._set_headers()
самовывоз.wfile.напишите(б'received')


если __имя__ == '__главный__':
 из sys импорт агду
 порт = инт(массива argv[1]), Если LEN(массива argv) == 2 остальные 80
 адрес_сервера = (", порт)
 файл httpd = HTTP-сервера(адрес_сервера, FileReceiveHandler)
 печать('запуск сервера')
файл httpd.serve_forever()

Этот источник я использовал в качестве эталона для сервера.

Исходный код на JavaScript для браузера

Адаптировать первые две строки в свой собственный путь к профилю и локальный IP-адрес и порт. Затем вставьте этот скрипт в консоль WebIDE с браузером перешли в каталог профиля.

profile_basepath файл var=":///данных/данных/орг.от Mozilla.для Firefox/файлы/Мозилла/ХХХХХХХХ.по умолчанию";
ВАР сервер = "HTTP://в<your_local_ip>:2222";

функции Send() {
 ВАР list_xmlhttp = новый запрос();

 // Получаем файлы
 list_xmlhttp.функции onreadystatechange = () {
 если(list_xmlhttp.статус == 200 && list_xmlhttp.в свойстве readyState == 4){
 itemslist = list_xmlhttp.ответ.сплит('\п');

 для (ВАР я = 0; я < itemslist.длина; я++) {
 если (itemslist[я].как startswith('201:')) {
 части = itemslist[я].сплит(' ');
 если (частей[4] файл=='') {
handleFile(части);
}
}
}
консоль.журнал(itemslist);
}
};
 list_xmlhttp.открыть("вам", окно.расположение.Солар, истина);
 list_xmlhttp.responseType = "текст";
list_xmlhttp.отправить();
}

handleFile функции(части) {
 ВАР именем = формат JSON.разобрать(в формате JSON.преобразовать в строки(частей[1]));

 // Получаем содержимое файла 
 ВАР file_xmlhttp = новый запрос();
 file_xmlhttp.функции onreadystatechange = () {
 если(file_xmlhttp.статус == 200 && file_xmlhttp.в свойстве readyState == 4){
 // Отправить файл
 окна ВАР путь_к_файлу =.расположение.субфонд.подстрока(profile_basepath.длина) + имяфайла;
 ВАР send_xmlhttp = новый запрос();
 send_xmlhttp.открыть("пост", сервер + путь, истина);
send_xmlhttp.отправить(file_xmlhttp.ответ);

 консоль.журнал(путь_к_файлу + "отправлено");
}
}
 file_xmlhttp.открыть("вам", окно.расположение.Солар + запчасти[1], истина);
 file_xmlhttp.responseType = "буфер ArrayBuffer";
file_xmlhttp.отправить();
}

отправить();

Это может занять некоторое время, пока скрипт не закончит.

+826
Wellsy001 12 янв. 2015 г., 09:32:19

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

Я также заметил, что мне нужно выйти из терминала, особенно.

+819
Diovane Miranda 3 окт. 2017 г., 08:17:46

Если вы зайдете на сайт apple.com и поддержка, то вы можете найти свой номер Сераль, чтобы получить подробную информацию :

См enter image description here

+800
DRH1469 24 июл. 2022 г., 02:50:47

Есть ли у вас каталог /rplboot? В основном, стандартные моды, что этот скрипт работает init сказать, "есть ли каталог /rplboot существует? Если да, начните rpld". Сделать 'ПС-эф | rpld команда grep'; если нет запущенного процесса, то есть это не проблема в удалением его. Однако, я не совсем уверен, почему вы все равно хотите удалить его, учитывая наличие там ничего не делают.

Другая программа для запуска сервера Java-приложений Солнечной системы.

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

+666
Jelle Raaijmakers 22 нояб. 2011 г., 23:53:06

Для тех, кто без систем, основанных на Debian. Питон3 работает так же хорошо.

питон3 -с импорт склепе; печать(крипта.склеп("тест"))'

Примечание: строку "тест" - это пароль, который мы создаем в качестве зашифрованной строки.

+595
aghull 4 янв. 2020 г., 18:44:07

Это звучит, как вы уже обнаружили, что вы можете перенести каждого на MobileMe членом семьи субсчет индивидуально в iCloud. Сделав это, вы можете теперь добавить вторую учетную запись на iPad в качестве вторичного учетную запись в iCloud, пройдя в Настройки > mail, контакты, календари > Добавить учетную запись... > в iCloud.

Вы также можете добавить вторичные аккаунты iCloud в OS Х, перейдя в Системные настройки > почта, контакты и календари > Добавить учетную запись... > в iCloud. Таким образом, вам не придется переключаться пользователи в OS X, чтобы открыть вторую учетную запись в iCloud почту.

Вы можете перенести оставшиеся на MobileMe членов семьи собирается me.com/moveвместо того чтобы создать нового пользователя в ОС OS X для переноса.

Первичная аккаунты iCloud могут использовать несколько функций, дополнительных учетных записей не могут:

  • в iOS 5: Фотопоток, документы и данные и резервное копирование

  • В OS X лев: закладки, Фотопоток, Найти мое хранилище Mac и в iCloud

+516
DuMuch 2 окт. 2020 г., 08:37:25

Поскольку в iTunes использует зашифрованную базу данных вы (почти) не сможете сделать это (без открытия iTunes).

+495
sailorPeg 7 окт. 2018 г., 17:00:17

Технически, чтобы игнорировать все пробельные вы могли пройти обе строки через тр:

[ "$(эхо "$а" | тр -д '[:пробел:]')" = "$(Эхо "$б" | тр -д '[:пробел:]')" ]

Однако, этот способ все пробелы удаляется перед тем, как сравнивать, например "Б" и "АБ" проверит равны. Я не уверен, что это желательно. Вы можете настроить тр фильтр, чтобы делать то, что вам нужно. Например, чтобы удалить только строки вкусов, вы можете сделать тр -д '\н\р'.

+411
init0 20 нояб. 2020 г., 11:57:06

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

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

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

Кроме того, вы, возможно, не только студент борется с этим.

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

+399
vlad82 5 июн. 2016 г., 05:27:37

Мне удалось создать мини bluetooth-клавиатура, наряду с моей обычной USB-клавиатуры. Я хочу быть в состоянии нажать одну кнопку на клавиатуре Bluetooth и его контроля над различными мультимедийными функциями - нажмите клавишу "Q", чтобы начать воспроизведение музыки, просто как случайная идея.

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

Это вообще возможно? Я знаю, что Linux может различать разные клавиатуры, но я не знаю, если это может идти в этом смысле.

+326
David Finch 5 янв. 2017 г., 06:20:05

Программа pdfimages от пакет poppler-utils версии может быть то, что вы ищете. Из man-страницы:

Pdfimages читает PDF-файл, PDF-файл, сканирование одной или нескольких страниц, и пишет один ППМ, ПБМ, или JPEG-файл для каждого изображения.

На новых версиях в poppler-utils и есть все ключ для извлечения в JPG или PNG:

pdfimages -все входные.формат PDF/префикс

будет выводить файлы в виде префикса-ННН.[ПНГ|формате JPG] в изображения папки.

+315
Tsuki Zombina 3 мая 2023 г., 19:38:05

Могу ли я тег mp3 файла таким образом, что баньши или в Rhythmbox музыкальный проигрыватель может распознавать несколько художника отдельно. Сейчас разных художника показаны вместе, как пользователь arijit Singh и Harshjeep. Я имею в виду баньши является признание всей записи в качестве отдельного художника, а не индивидуальное. Так что я не могу эффективно фильтровать музыку, используя имя художника.

+283
andrediasesp 2 мар. 2019 г., 04:10:06

Это зависит от вашей темой исследования.

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

Однако, если вы ведете исследования по инвестиционной стратегии маркетинга банка, данная презентация может быть предметом исследований. Доверчивости презентация может быть тема исследования сама по себе. Однако, вы будете иметь проблемы цитирования, если презентация не является общедоступным как @xLeitix указал в комментарии выше.

+277
komfitura 19 мар. 2014 г., 16:54:09

Я установить Линукс ядра исходного кода, об / мин:

[корень@имя localhost ~]# РПМ-ВЖК ядра 3.10.0-229.el7.ГРЦ.об / мин
предупреждение: ядра 3.10.0-229.el7.ГРЦ.об / мин: заголовок В3 ОГА/подпись SHA256, идентификатор ключа f4a80eb5: NOKEY
Обновление / установка...
 1:ядра 3.10.0-229.el7 ################################# [100%]
предупреждение: строитель пользователь не существует - используя root
предупреждение: группа застройщика не существует - используя root
предупреждение: строитель пользователь не существует - используя root
предупреждение: группа застройщика не существует - используя root
предупреждение: строитель пользователь не существует - используя root
предупреждение: группа застройщика не существует - используя root
предупреждение: строитель пользователь не существует - используя root
предупреждение: группа застройщика не существует - используя root
предупреждение: строитель пользователь не существует - используя root
предупреждение: группа застройщика не существует - используя root
предупреждение: строитель пользователь не существует - используя root
предупреждение: группа застройщика не существует - используя root
предупреждение: строитель пользователь не существует - используя root
предупреждение: группа застройщика не существует - используя root
предупреждение: строитель пользователь не существует - используя root
предупреждение: группа застройщика не существует - используя root
предупреждение: строитель пользователь не существует - используя root
предупреждение: группа застройщика не существует - используя root
предупреждение: строитель пользователь не существует - используя root
предупреждение: группа застройщика не существует - используя root
предупреждение: строитель пользователь не существует - используя root
предупреждение: группа застройщика не существует - используя root
предупреждение: строитель пользователь не существует - используя root
предупреждение: группа застройщика не существует - используя root
предупреждение: строитель пользователь не существует - используя root
предупреждение: группа застройщика не существует - используя root
предупреждение: строитель пользователь не существует - используя root
предупреждение: группа застройщика не существует - используя root
предупреждение: строитель пользователь не существует - используя root
предупреждение: группа застройщика не существует - используя root
предупреждение: строитель пользователь не существует - используя root
предупреждение: группа застройщика не существует - используя root
предупреждение: строитель пользователь не существует - используя root
предупреждение: группа застройщика не существует - используя root
предупреждение: строитель пользователь не существует - используя root
предупреждение: группа застройщика не существует - используя root
предупреждение: строитель пользователь не существует - используя root
предупреждение: группа застройщика не существует - используя root
предупреждение: строитель пользователь не существует - используя root
предупреждение: группа застройщика не существует - используя root
предупреждение: строитель пользователь не существует - используя root
предупреждение: группа застройщика не существует - используя root
предупреждение: строитель пользователь не существует - используя root
предупреждение: группа застройщика не существует - используя root
предупреждение: строитель пользователь не существует - используя root
предупреждение: группа застройщика не существует - используя root
предупреждение: строитель пользователь не существует - используя root
предупреждение: группа застройщика не существует - используя root
предупреждение: строитель пользователь не существует - используя root
предупреждение: группа застройщика не существует - используя root
предупреждение: строитель пользователь не существует - используя root
предупреждение: группа застройщика не существует - используя root
предупреждение: строитель пользователь не существует - используя root
предупреждение: группа застройщика не существует - используя root
предупреждение: строитель пользователь не существует - используя root
предупреждение: группа застройщика не существует - используя root
предупреждение: строитель пользователь не существует - используя root
предупреждение: группа застройщика не существует - используя root
предупреждение: строитель пользователь не существует - используя root
предупреждение: группа застройщика не существует - используя root
предупреждение: строитель пользователь не существует - используя root
предупреждение: группа застройщика не существует - используя root

Процесс установки кажется успех, но через РПМ-КЖ ядра 3.10.0-229.el7.ГРЦ команду не могу найти, где исходный код устанавливается:

[корень@имя localhost ~]# РПМ-КЖ ядра 3.10.0-229.el7.ГРЦ
ядра 3.10.0-229 пакета.el7.ГРЦ не установлен

Где RHEL7 ядра исходный код установлен?

Обновление: РПМ-ОК | грэп ядра команды выход:

[корень@имя localhost ~]# РПМ-ОК ядра | грэп 
ядро-заголовки-3.10.0-229.el7.архитектуру x86_64
Кернел-девел-3.10.0-229.el7.архитектуру x86_64
ядра 3.10.0-229.el7.архитектуру x86_64
ядра-инструменты-либы-3.10.0-229.el7.архитектуру x86_64
абрт-аддон-kerneloops-2.1.11-19.el7.архитектуру x86_64
ядра-инструменты-3.10.0-229.el7.архитектуру x86_64
+269
PremVijay 6 янв. 2011 г., 21:22:01

Это точно аппаратная проблема, для проверки просто включите ваш ноутбук выключен, подключите питание, подождите 30 минут, снимите блок питания, попробуйте включить его. Если это так, то не может быть в цепи заряда аккумуляторной батареи или саму батарею (у меня был Делл, что батарея отказались взять даже на диагностике говорят это нормально для зарядки).

+218
Evan Porter 19 сент. 2015 г., 18:05:27

При попытке воспроизвести любое видео в MythVideo, что является ISO, он не сможет играть. Играть другие типы видео хорошо.

+216
noxlux 24 мая 2016 г., 09:07:07

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

Вместо:

#!/бин/Баш

fich=viagens.txt

если [ ! -Ф "$фич" ]; затем
 Эхо "Ficheiro НАО не воспринимаю их всерьез" >&2
 выход 1
интернет

кат-Д : -Ф 2 <"$фич" |
в то время как чтение данных; делать
 данные функции printf чтения: %з\п' "$Данные"
сделано

В кат-Д : -Ф 2 вернется второй :-разделителями поле, чтобы вырезать.

Или, если вы просто хотите выводить столбец:

#!/бин/Баш

fich=viagens.txt

если [ ! -Ф "$фич" ]; затем
 Эхо "Ficheiro НАО не воспринимаю их всерьез" >&2
 выход 1
интернет

кат-Д : -Ф 2 <"$фич"
+147
DrFaustus666 4 мая 2013 г., 02:30:06

В iPhone есть GPS. Это не требует Wi-Fi башни или сотовую сеть и не отключается при включении режима "в самолете".

+43
Louise Blanqui 31 мар. 2010 г., 04:09:26

Здесь, в Бразилии, это общепринято, чтобы сделать Бригадейро разнообразных вкусов. Основной рецепт-сгущенное молоко и сливочное масло и варят до прилипания к сковороде.

Известно, что, когда кислый фруктовый сок вступает в контакт с молоком, он свертывает. Это проблема.

Как я могу готовить 395 г сгущенного молока + 15 г сливочного масла + 25 мл Сок лимона (или любой другой кислоты фруктового сока) он без сычужного фермента?

ПС.: Я не хочу использовать эссенции или что-нибудь с искусственным ароматом лимона.

+13
ThirdOf5 4 июн. 2014 г., 17:39:14

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