Случайно переехала домашняя папка?

Я не совсем уверен, что произошло, все, что я делал, было запущено:

~/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`
6
задан 15 August 2017 в 23:46

9 ответов

Вы не переместили свой домашний каталог ...

Мы ссылаемся на ~ как расширение тильды, большую часть времени он будет заменен значением переменной оболочки $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 не ~.

10
ответ дан 22 May 2018 в 19:27
  • 1
    Umm, ~ не был файлом, как вы сказали. Это была папка с .local/share/application каталогом внутри. – iTux 15 August 2017 в 16:30
  • 2
    Вы уверены в команде, которую вы побежали? – Ravexina 15 August 2017 в 16:41
  • 3
    он в настоящее время на Destop, поэтому я думаю, что путь ~/Desktop/~/.local/share/applications/ – Lưu Vĩnh Phúc 16 August 2017 в 04:46
  • 4
    @ Liso, можете ли вы дать мне вывод ls ~/Desktop~? – Ravexina 16 August 2017 в 06:57

Вы не переместили свой домашний каталог ...

Мы ссылаемся на ~ как расширение тильды, большую часть времени он будет заменен значением переменной оболочки $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 не ~.

10
ответ дан 18 July 2018 в 08:29

Вы не переместили свой домашний каталог ...

Мы ссылаемся на ~ как расширение тильды, большую часть времени он будет заменен значением переменной оболочки $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 не ~.

10
ответ дан 24 July 2018 в 19:06

Тильда расширяется оболочкой до $ 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
6
ответ дан 22 May 2018 в 19:27
  • 1
    довольно ясно идти, предположение, решение и некоторые другие способы .... – solfish 15 August 2017 в 17:58
  • 2
    Я не думаю, что вам нужно убежать ~ в середине пути – Lưu Vĩnh Phúc 16 August 2017 в 04:47

Символ тильды распространяется только на ваш домашний каталог (среди других возможностей), если он не указан. Помещение символа \ перед ним предотвращает расширение тильды. Если вы сомневаетесь, используйте $HOME вместо этого, поскольку это регулярная переменная оболочки с предсказуемым синтаксисом и поведением.

Чтобы удалить каталог с именем ~ (убедитесь, что в нем нет ничего важного) , вы должны использовать тот же трюк, что и раньше: выйдите из тильды, чтобы он интерпретировался буквально. О, и вам также нужно будет запустить rm рекурсивно, чтобы удалить непустой каталог:

rm -r "~"
2
ответ дан 22 May 2018 в 19:27

Тильда расширяется оболочкой до $ 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
6
ответ дан 18 July 2018 в 08:29

Символ тильды распространяется только на ваш домашний каталог (среди других возможностей), если он не указан. Помещение символа \ перед ним предотвращает расширение тильды. Если вы сомневаетесь, используйте $HOME вместо этого, поскольку это регулярная переменная оболочки с предсказуемым синтаксисом и поведением.

Чтобы удалить каталог с именем ~ (убедитесь, что в нем нет ничего важного) , вы должны использовать тот же трюк, что и раньше: выйдите из тильды, чтобы он интерпретировался буквально. О, и вам также нужно будет запустить rm рекурсивно, чтобы удалить непустой каталог:

rm -r "~"
2
ответ дан 18 July 2018 в 08:29

Тильда расширяется оболочкой до $ 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
6
ответ дан 24 July 2018 в 19:06
  • 1
    довольно ясно идти, предположение, решение и некоторые другие способы .... – solfish 15 August 2017 в 17:58
  • 2
    Я не думаю, что вам нужно убежать ~ в середине пути – phuclv 16 August 2017 в 04:47

Символ тильды распространяется только на ваш домашний каталог (среди других возможностей), если он не указан. Помещение символа \ перед ним предотвращает расширение тильды. Если вы сомневаетесь, используйте $HOME вместо этого, поскольку это регулярная переменная оболочки с предсказуемым синтаксисом и поведением.

Чтобы удалить каталог с именем ~ (убедитесь, что в нем нет ничего важного) , вы должны использовать тот же трюк, что и раньше: выйдите из тильды, чтобы он интерпретировался буквально. О, и вам также нужно будет запустить rm рекурсивно, чтобы удалить непустой каталог:

rm -r "~"
2
ответ дан 24 July 2018 в 19:06

Другие вопросы по тегам:

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