Я могу восстановить свой .bash_profile с открытой вкладки Terminal?

Другие опции:

  • pgrep -xq processname
    • Только соответствует первым 15 символам в GNU/Linux
    • Не включает предков в OS X
  • ps -eo comm= | sed 's|.*/||' | grep -xq processname
    • Только соответствует первым 15 символам в GNU/Linux
    • sed 's|.*/||' удаляет dirname части на OS X

В GNU/Linux ps -o comm усекает названия команды к 15 символам и pgrep и ps -C только соответствуйте первым 15 символам.

ps -C (соответствуйте названиям команды), не поддерживается на OS X.

В OS X ps -o comm печатает полные пути команд и ps -co comm только названия команды печати. В GNU ps -o comm только названия команды печати и -c имеет другое значение.

pgrep OS X не включает процессы предка (как удар, Терминал или launchd) без -a. pgrep GNU включает их по умолчанию, и он не поддерживает -a.

grep -x и pgrep -x не подразумевать -F, так использование -Fx если имя процесса может содержать regex символы.

5
10.05.2019, 00:39
4 ответа
find . -name '*_*'

Благодаря Стефане Чазеласу, как отмечено в комментариях выше!

-121--174894-

Если ваш терминал все еще открыт, введите ENV : он будет отображать все ваши переменные среды. Если это новая установка или если вы никогда не делали никаких изменений, наиболее важные переменные - путь (это всегда существует) и ld_library_path (может не существовать, я не привык OSX).

Например:

$ env
...
PATH=/usr/bin:/bin:/home/user/bin:/sbin
...

Это также общее значение для источника .bashrc в этом файле.

Затем вы можете редактировать ваш .bash_profile , чтобы добавить такую ​​строку:

# Source your .bashrc
if [ -f ~/.bashrc ]; then
  source ~/.bashrc
fi

# Export the interesting env variables you
#   displayed from env command previously
export PATH=/usr/bin:/bin:/home/user/bin:/sbin

Это не реальное решение, поскольку это не реальная «резервная копия», но имейте в виду, что так же, как долго ваш терминал Открыть, вы можете знать вашу среду переменные, а главное назначение .bash_profile - установить эти переменные.

Кроме того, у вас могут быть несколько псевдонимов: в вашем открытом терминале типа псевдоним для отображения всех определенных псевдонимов. Вы можете скопировать и вставить Ouput AS - в вашем .bash_profile . (Очевидно, что если эти псевдонимы доступны в вашем .Bashrc .bashrc . Вам не нужно определять их в вашем .bash_profile , поскольку вы источнили .bashrc ранее. )

4
27.01.2020, 20:35

Я перезаписал текстовый файл (VQ1.txt) с тестовыми данными за 12 ч: ( Представление о том, что unix сохраняет предыдущую версию файла в формате text.txt ~, заставил меня заглянуть в папку, содержащую перезаписанный файл с $ -ll В полном списке указан файл VQ1.txt ~ с моими «потерянными» данными!

$ cat VQ1.txt~  
Start time at: Thu Apr  2 18:07:23 PDT 2015
User, KW: 12hrFA_OEM_HelloVoiceQ
Test Case: 
Detection:  1, 1, 04-03 01:07:00.673 D/MultiKeywordBdctReceiver( 1743): vs status 258 : 2 : 1
Detection:  2, 1, 04-03 01:09:04.813 D/MultiKeywordBdctReceiver( 1743): vs status 258 : 2 : 1
Detection:  3, 1, 04-03 04:09:26.023 D/MultiKeywordBdctReceiver( 1743): vs status 258 : 2 : 1
Detection:  4, 1, 04-03 04:11:29.893 D/MultiKeywordBdctReceiver( 1743): vs status 258 : 2 : 1
Detection:  5, 1, 04-03 07:12:27.013 D/MultiKeywordBdctReceiver( 1743): vs status 258 : 2 : 1
Detection:  6, 1, 04-03 07:14:30.803 D/MultiKeywordBdctReceiver( 1743): vs status 258 : 2 : 1
Detection:  7, 1, 04-03 08:37:13.113 D/MultiKeywordBdctReceiver( 1743): vs status 258 : 2 : 1
Detection:  8, 1, 04-03 10:21:23.533 D/MultiKeywordBdctReceiver( 1743): vs status 258 : 2 : 1
Detection:  9, 1, 04-03 10:23:27.733 D/MultiKeywordBdctReceiver( 1743): vs status 258 : 2 : 1
Detection:  10, 1, 04-03 13:23:47.893 D/MultiKeywordBdctReceiver( 1743): vs status 258 : 2 : 1
Detection:  11, 1, 04-03 13:25:52.203 D/MultiKeywordBdctReceiver( 1743): vs status 258 : 2 : 1

12hrFA_OEM_HelloVoiceQ,  
KW detect count: 11
-121--10108-

CTRL + D здесь бессмысленно - это просто другой байт. Это связано с тем, что последовательный терминал не настроен на его обработку. В частности, вы находитесь в необработанном режиме или неканоническом режиме ввода . Смотрите флаг -иканон на выходе stty -a ? Это его ошеломляет. Вот как POSIX описывает терминал должен учитывать символ EOF:

  • EOF
    • Специальный символ на входе, который распознается, если набор флаг ICANON . При получении все байты, ожидающие чтения, немедленно передаются процессу без ожидания новой строки, и EOF отбрасывается. Таким образом, если нет байтов, ожидающих (то есть EOF возникла в начале строки) , из read () возвращается отсчет байтов, представляющий собой указание конца файла. Если установлено значение ICANON , то при обработке символ EOF будет удален.

Но вы не работаете с каноническим терминалом - вы работаете с терминалом, который будет передавать любые/все данные любому читателю, если его попросят, если есть хотя бы один байт. Терминал не буферизирует ввод по строкам - и поэтому он не может заменить байт EOF пустым чтением - вместо этого он просто толкает байт, который cat только побуждает его продолжать чтение.

  • При наборе ICANON должна быть включена каноническая обработка. Это обеспечивает возможность стирания и уничтожения функций редактирования, а также сборки входных символов в строки, разделенные NL , EOF и EOL , как описано в Canonical Режима Input Processing .

  • Если ICANON не наборы, запросы на чтение удовлетворяются непосредственно из входной очереди. Считывание не выполняется до тех пор, пока не будет получено не менее байт MIN или не истечет время ожидания TIME между байтами. Значение времени представляет десятые доли секунды. Для получения дополнительной информации см. Обработка ввода в неканоническом режиме .

-121--139555-

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

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

Существует небольшая вероятность того, что в освобожденной оперативной памяти есть фрагменты самого файла, которые еще не были перераспределены или возвращены в ОС,но это, вероятно, не стоит вашего времени, чтобы попытаться создать программу для выгрузки содержимого ОЗУ в файл диска, а затем просунуть его, чтобы попытаться найти содержимое вашего файла.

Возьмите полученные уроки и извлеките из них уроки:

  1. Подумайте дважды, прежде чем нажать Enter по команде с участием > вместо > > , так же, как вы, надеюсь, научились быть осторожными с помощью команд rm .

  2. Установите Time Machine , быстрее всего.

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

2
27.01.2020, 20:35

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

Определенные переменные и функции:

$ declare > definitions.bash.txt

Псевдонимы:

$ alias > aliases.bash.txt
4
27.01.2020, 20:35

Глупый скрипт сделал это с моим bashrc, поэтому я запустил следующее, чтобы получить большую часть моего файла.

# Retrieve functions definitions
$ declare >.bashrc.new
# Retrieve aliases
$ alias >>.bashrc.new
# Retrieve env
$ echo "export $(env | grep ^PATH=)" >>.bashrc.new

Здесь большая часть вашего .bashrcпрактически реконструирована. Теперь вам просто нужно внести небольшие коррективы, чтобы убедиться, что он соответствует вашим лучшим практикам. ;)

Классная команда для поиска определения ваших пользовательских функций:type my_function >>.bashrc.new.

Кроме того, не забудьте просмотреть возвращаемое значение env, чтобы включить во вновь созданный файл то, что вы считаете важным.

1
27.01.2020, 20:35

Теги

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