Я не совсем уверен, что просто произошло, все, что я сделал работал:
~/Desktop$ mv sublime.desktop \~/.local/share/applications/
\
знак прежде ~/.local
подошел как автоматическое заполнение, таким образом, я думал, что оно должно было хорошо выполнить его.
Но вместо того, чтобы переместить файл на рабочем столе в /.local/share/applications/
(который был моим намерением), команда создала новую папку на Рабочем столе. ( ~
была папка),
Liso@thinkpad:~/Desktop$ ls
~ backup.sql Apps
Когда я пытался удалить ~
:
~/Desktop$ rmdir ~
rmdir: failed to remove ‘/home/liso’: Permission denied
Таким образом, что я пропускаю на самом деле?
Править
@Ravexina спрашивают меня к, работал test
команда, чтобы подтвердить, было ли это каталогом или файлом.
Liso@thinkpad:~/Desktop$ test -d \~ && echo "it's a dir"
it's a dir`
Вы не перемещали свой корневой каталог...
Мы обращаемся к ~
как расширение тильды, большинство времен это будет заменено значением $HOME
окружите переменную, прежде чем команда будет выполнена.
\
самый сильный тип заключения в кавычки в оболочке.
Так использование \~
Вы пропускаете расширение тильды путем заключения в кавычки его. Средства, которые Вы на самом деле говорите: переместите "sublime.desktop" в новый файл, названный точно "~...".
Я не могу воспроизвести результат Вашей команды, но так или иначе Вы закончили с файлом/каталогом, точно названным ~
.
Проверьте, чтобы видеть, является ли это файл или каталог, и получите список его содержания:
test -d ~/Desktop/~ && ls -l ~/Desktop/~ || echo 'it is a file'
Затем переместите их в корректный путь, если бы это был файл для перемещения его назад, то необходимо выйти из его имени снова, иначе это будет расширено до /home/liso
:
mv \~ new-name
mv "~" new-name # works
mv '~' new-name # also works
mv ~/Desktop/~ new-name # works fine too
И помните rmdir ~
Вы пытаетесь удалить фактический корневой каталог: /home/liso
не ~
.
Символ тильды только расширен до Вашего корневого каталога (среди других возможностей), когда он не заключается в кавычки. При помещении \
символ перед ним предотвращает расширение тильды. Когда в сомнении, используйте $HOME
вместо этого, поскольку это - регулярная переменная оболочки с предсказуемым синтаксисом и поведением.
Для удаления каталога, названного ~
(удостоверяются, нет ничего важного в нем сначала), необходимо использовать тот же прием как прежде: выйдите из тильды, таким образом, она интерпретируется буквально. О, и необходимо будет также работать rm
рекурсивно для удаления непустого каталога:
rm -r "~"
Тильда расширена оболочкой до $HOME пользователя в Вашем случае /home/liso
. В первой команде Вы вышли ~
таким образом, это не было расширено до местоположения, которое Вы хотели, вместо этого это было передано буквально mv
как символ ~
.
Я думаю, что Вы хотели работать
mv sublime.desktop ~/.local/share/applications
(с дополнительным запаздыванием /
)
Я ожидал бы команду, Вы говорите, что работали для сбоя как это
mv: cannot move 'sublime.desktop' to '~/.local/share/applications/': No such file or directory
потому что mv
не создает целевые каталоги как этот. Если Вы действительно выполняли ту команду, я думаю, что Вам, должно быть, уже назвали каталог на самом деле ~
в Вашем Desktop
с тем путем, т.е.
/home/liso/Desktop/\~/.local/share/applications
и раз так Вы теперь найдете файл там:
~/Desktop/\~/.local/share/applications/sublime.desktop
И необходимо работать
mv ~/Desktop/\~/.local/share/applications/sublime.desktop ~/.local/share/sublime.desktop
Но если Вы работали
mv sublime.desktop \~
это создало бы файл ~
потому что sublime.desktop
был бы переименован ~
. Попытайтесь читать файл
less ~Desktop/\~
Если это содержит содержание Вашего sublime.desktop
файл, затем выполненный
mv \~ ~/.local/share/applications/sublime.desktop