Невозможно перейти в существующий каталог

Сделайте это в два шага: сначала удалите префикс (в случае, если терминатор присутствовал в префиксе), затем удалите все после префикса. Используйте команду T, чтобы пропустить строку, если она не совпадает:

echo "This is a test some stuff I want string junk string end" |
sed -n 's/.*\(.te.*ng\)/\1/; T; s/\(ng\).*/\1/p'

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

echo "This is a test some stuff I want string junk string end" |
sed '/.*\(.te.*ng\)/!d; s/.*\(.te.*ng\)/\1/; s/\(ng\).*/\1/'

В качестве альтернативы выполните замену и окончательную печать только на совпадающих строках.

echo "This is a test some stuff I want string junk string end" |
sed '/.*\(.te.*ng\)/ { s/.*\(.te.*ng\)/\1/; s/\(ng\).*/\1/p; }'
0
25.04.2017, 08:19
1 ответ

Проблема заключается в / в начале команды. Позвольте мне попытаться объяснить.

Символ / в начале пути к файлу означает от корня системы.

Например:

cd /Desktop_Launchables

Эта команда ищет каталог Desktop_Launchables в корне /. В системе Windows это была бы аналогичная команда:

cd C:\Desktop_Launchables

С другой стороны, вы можете использовать ~ для ярлыка пути к каталогу home из любого места файловой системы.

Например, если Desktop_Launchables находится в домашнем каталоге пользователя.

cd ~/Desktop_Launchables

И вы можете расширить ~, если Desktop_Launchables находится в домашнем каталоге другого пользователя. Например, в доме пользователя root (и у вас есть разрешение на доступ к нему).

cd ~root/Desktop_Launchables

Расширенная, не сокращенная версия этого была бы (скорее всего):

cd /home/<user>/Desktop_Launchables

Где - ваш логин.

Я думаю, что вы действительно хотели:

cd Desktop_Launchables

или

cd Desktop/Desktop_Launchables

Но чтобы подстраховаться, вы всегда можете поставить ~ впереди, например:

cd ~/Desktop_Launchables

или

cd ~/Desktop/Desktop_Launchables
4
28.01.2020, 02:19

Теги

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