Разумеется. Правда я бы сделал вот так: cd "/Volumes/$name"
В чем разница? Если у Вас в name строка "мама ела раму маша мыла рому" - в Вашем варианте будет выполнена команда cd /Volumes/мама, что вряд ли то, что задумывалось :)
Проблема в том, что инпут не считывается (он в одно слово).
Следующей строкой выполняется cp и она копирует мне ВСЁ содержимое каталога Volumes,
вместо того, чтобы прейти в каталог извлеченный из преременной!
Например: read $name cd "/Volumes/$name" cp -R * /Users/username/desktop/new_dir
–––––
По итогу, в директории new_dir оказывается ВСЁ из Volumes (включая образ HD)
А пораскинуть мозгами и посмотреть ВНИМАТЕЛЬНЕЕ на мой вопрос - не судьба?
По-моему из скриншота понятно, что я пробовал! Но из-за не знания синтаксиса на
должном уровне, не мог полноценно реализовать задуманное. Как следствие - постучался сюда.
Как вы стали software engineer c такими потерями в логике?
SHA_bash,
А пораскинуть мозгами и внимательнее посмотреть на свой вопрос ОБЪЕКТИВНО?
Я вот не вижу никаких подвохов - просто две команды.
Ты попробовал их выполнить?
Если да, то что конкретно не получилось? Какая возникла проблема, что пришлось обратиться сюда?
Saboteur, мы с Вами НЕ переходили на "ТЫ", а о существующей проблеме мне уже рассказали выше и вопрос был исчерпан 13 часов назад. И, да, повторюсь второй раз – исходя из скриншота и сути вопроса, следует, что я выполнял написанное мною же! Если бы скрипт сработал, я писал сюда?
Saboteur, а Вы знаете, как сделать чтобы history заработала внутри скрипта?
Если я правильно понял, то history работает только в интерактивном режиме из чего следует, что
любые действия с ней внутри скрипта не приведут ни к чему.
Я смотрел на стэковерфлоу, но там не много разных вариантов и некоторые из них не работают с zsh
Вкратце, логика хистори такова:
все команды сохраняются в памяти шелла.
При корректном выходе, из памяти оно сохраняется в файл.
Если запустить скрипт обычным способом, он же запускает НОВЫЙ шелл, у которого в памяти будет не то, что было выполнено, а то, что уже скинуто в файл.
поэтому можно запустить скрипт без запуска дочернего баш-процесса.
Пример:
myscript.sh: history
запуск:
./myscript.sh
выведет только то, что в файле
запуск
source ./myscript.sh
выведет последние команды текущего шелла
p.s. у команды source есть алиас - точка, поэтому часто можно увидеть так:
. ./myscript.sh
тут не нужно путать первую и вторую точку - первая это команда source, вторая - указание что это текущая директория ./
Saboteur, ну вот к примеру я хочу чтобы скрипт исполнился и последней командой (history -c) - затёр историю. Например: #!/usr/bin/env zsh rm -R /Users/username/desktop/folder history -c
Если запускаешь скрипт, то линукс по умолчанию запускает отдельный баш процесс, который выполняет скрипт. Твой баш процесс и баш процесс скрипта естественно имеют разную историю.
Но, команды, которые были выполнены внутри скрипта, в историю не записывают, запишется только сам запуск скрипта.
Если хочешь скрыть выполнение единичной команды, в баш просто пишешь пробел и команду - она не попадет в историю.
(потому что обычно переменная HISTCONTROL имеет значение ignorespace, иначе ее нужно установить:
HISTCONTROL=ignorespace)
Saboteur, HISTCONTROL это переменная .bashrc ? (в моем случае .zshrc). И да, вы правы, смысл был в скрытых от истории процессах. От назначения executable и его запуска до зачистки истории
да.
Можешь просто поэкспериментировать - введи команду, проверь хистори. Введи пробел и команду, проверь хистори - если команда с пробелом там отсутствует, значит уже все правильно. Если нет, то выполни
HISTCONTROL=ignorespace
и поэкспериментируй снова.