Могу ли я обрабатывать все, что я набрал после команды в качестве исходной строки?

Я создал bash func для себя, поэтому я могу через несколько слов в файл tree_hole, это выглядит так: bashrc:

function th { echo -e "\n$@" >> /Users/zen1/zen/pythonstudy/tree_hole; } export -f th 

Таким образом, я могу сделать th Tom, I like your new laptop чтобы вытащить целое предложение «Tom …» в конец файла tree_hole.

Но есть проблема. Кажется, эта функция не конвертировала всю часть переменных в необработанную строку. Так что th "hi, Tom" получит hi Tom вместо предполагаемого "hi, Tom" , " отсутствует». Кроме того, я не могу набирать ни одного ' или " или », который будет неверно истолкован bash и потребует большего ввода ,

Итак, есть ли способ, чтобы я мог набирать все, что следовало за командой как необработанная строка? Или как мне улучшить свою функцию, чтобы можно было решить специальную проблему " , ' , «?

  • Как разбить CSV-файл на начальный столбец (с заголовками)?
  • Связь между процессами запуска оболочки и средой родительского процесса
  • Установка, резервное копирование и восстановление цветов в терминале
  • как создать столбец с нулевыми значениями в оболочке?
  • Как преобразовать стиль отступа в каталог проекта
  • Как создать большой файл в UNIX?
  • команда elif бросает ошибку
  • Как выйти из программы sh?
  • One Solution collect form web for “Могу ли я обрабатывать все, что я набрал после команды в качестве исходной строки?”

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

    Думаю, это будет лучше для вас:

     function th { { echo; cat; } >> /Users/zen1/zen/pythonstudy/tree_hole; } 

    Ваша функция будет вызываться без параметров. cat будет читать со стандартного ввода и добавлять к файлу. Вы можете вводить все, что позволяет терминал (т. Е. Никаких проблем с " , ' , «новая линия» и т. Д.). Вы должны завершить ввод с помощью Ctrl- D .

    Linux и Unix - лучшая ОС в мире.