Я не совсем уверен, что произошло, все, что я делал, было запущено:
~/Desktop$ mv sublime.desktop \~/.local/share/applications/
Знак \ перед ~/.local появился как автозаполнение, поэтому я подумал, что все в порядке запустить его.
Но вместо перемещения файла рабочего стола на /.local/share/applications/ (который был моим намерением) команда создала новую папку на рабочем столе. ([F8] была папкой)
Liso@thinkpad:~/Desktop$ ls
~ backup.sql Apps
Когда я попытался удалить ~:
~/Desktop$ rmdir ~
rmdir: failed to remove ‘/home/liso’: Permission denied
Итак, что мне не хватает на самом деле?
EDIT
@Ravexina попросит меня запустить команду test, чтобы подтвердить, была ли она каталогом или файлом.
Liso@thinkpad:~/Desktop$ test -d \~ && echo "it's a dir"
it's a dir`
Вы не переместили свой домашний каталог ...
Мы ссылаемся на ~ как расширение тильды, большую часть времени он будет заменен значением переменной оболочки $HOME перед выполнением команды. \ - самый сильный тип цитирования в оболочке.Таким образом, используя \~, вы пропустите расширение тильды, указав его. Означает, что вы на самом деле говорите: переместите «sublime.desktop» в новый файл с именем «~ ...».
Я не могу воспроизвести результат вашей команды, но каким-то образом вы оказались в file / directory, точно названный ~.
Проверьте, является ли это файлом или каталогом и получает список его содержимого:
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 перед выполнением команды. \ - самый сильный тип цитирования в оболочке.Таким образом, используя \~, вы пропустите расширение тильды, указав его. Означает, что вы на самом деле говорите: переместите «sublime.desktop» в новый файл с именем «~ ...».
Я не могу воспроизвести результат вашей команды, но каким-то образом вы оказались в file / directory, точно названный ~.
Проверьте, является ли это файлом или каталогом и получает список его содержимого:
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 перед выполнением команды. \ - самый сильный тип цитирования в оболочке.Таким образом, используя \~, вы пропустите расширение тильды, указав его. Означает, что вы на самом деле говорите: переместите «sublime.desktop» в новый файл с именем «~ ...».
Я не могу воспроизвести результат вашей команды, но каким-то образом вы оказались в file / directory, точно названный ~.
Проверьте, является ли это файлом или каталогом и получает список его содержимого:
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 пользователя, в вашем случае /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
Символ тильды распространяется только на ваш домашний каталог (среди других возможностей), если он не указан. Помещение символа \ перед ним предотвращает расширение тильды. Если вы сомневаетесь, используйте $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
Символ тильды распространяется только на ваш домашний каталог (среди других возможностей), если он не указан. Помещение символа \ перед ним предотвращает расширение тильды. Если вы сомневаетесь, используйте $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
Символ тильды распространяется только на ваш домашний каталог (среди других возможностей), если он не указан. Помещение символа \ перед ним предотвращает расширение тильды. Если вы сомневаетесь, используйте $HOME вместо этого, поскольку это регулярная переменная оболочки с предсказуемым синтаксисом и поведением.
Чтобы удалить каталог с именем ~ (убедитесь, что в нем нет ничего важного) , вы должны использовать тот же трюк, что и раньше: выйдите из тильды, чтобы он интерпретировался буквально. О, и вам также нужно будет запустить rm рекурсивно, чтобы удалить непустой каталог:
rm -r "~"