Jak zmienić nazwę katalogu?

0

Mój katalog domowy nie był tam, gdzie powinien być. Byłem w stanie naprawić lokalizację katalogu. Następnie musiał naprawić uprawnienia do katalogu domowego za pomocą

$ cd /Users/
$ sudo chown -R hook1:staff /Users/hook1
chown: /Users/hook1: no file or directory
$ ls -F
Shared/    chris/      hook1???/

Katalog domowy jest niepoprawnie wyświetlany jako hook1???/nie hook1/ Czy jest tego powód?

Chris
źródło
1
Musisz dokładniej określić, na czym polega Twój problem ... co jest niepoprawnie wyświetlane? Czy możesz nam powiedzieć bardziej szczegółowo, co było nie tak, co próbujesz naprawić, w jaki sposób próbujesz to naprawić, oraz jakie są szczegóły tego, co widzisz teraz, co jest nie tak?
Tyson,
@Tyson Zmieniłem to. Kiedy chcę pokazać sekwencję poleceń w pytaniu, co z tego korzystać
Chris
Wygląda na to, że w nazwie użytkownika znajdują się niedrukowalne znaki. Czy edytujesz swój post za pomocą polecenia i wyjścia id ; id -un.
fd0
Próbowałem naprawić twoją kopię z Terminala (w tym części, które pominąłeś), sprawdź i popraw w razie potrzeby.
nohillside
@Chris: zaktualizuj swoje OQ za pomocą ls -aBl(in /Users), co jest kolejnym sposobem na sprawdzenie, które postacie znajdują się na końcu nazwy twojego konta.
dan

Odpowiedzi:

1

Jeśli to, co opublikowałeś, było dosłownie nazwą katalogu, powinno to działać:

cd /Users
mv hook1\?\?\? hook1

Problem, jak wskazuje fd0, polega na tym, że w nazwie katalogu znajdują się niewidoczne / niedrukowalne znaki. Użyj podstawowych, nieniszczących poleceń powłoki, aby odizolować nazwę katalogu za pomocą symboli wieloznacznych, a następnie zmień jej nazwę. Na przykład spróbuj tego:

cd /Users
ls -ld h*

Powinno to spowodować wyświetlenie dokładnie jednego katalogu. Jeśli nie, kontynuuj dodawanie liter przed *, aby utworzyć maskę wieloznaczną, która daje dokładnie jeden wynik:

ls -ld ho*     # produces 3 results
ls -ld hoo*    # produces 1 result

Jeśli dojdziesz do punktu, w którym przejdziesz od więcej niż jednego wyniku do zera, natknąłeś się na inną niewidzialną postać. Utwórz kopię zapasową jednej litery, dodaj znak zapytania, a następnie dodaj ponownie.

ls -ld ho*     # produces 3 results
ls -ld hoo*    # produces 0 results
ls -ld ho?o*   # produces 1 result

Jeśli nadal masz problemy, pobaw się z nimi więcej *i ?dopóki nie uzyskasz czegoś, co da dokładnie jeden wynik:

ls -ld ho*     # produces 3 results
ls -ld hoo*    # produces 0 results
ls -ld ho?o*   # produces 0 results
ls -ld ho*o*   # produces 1 result

Gdy to zrobisz, użyj tego w swoim mvpoleceniu:

mv ho*o* hook1

Jeśli to nie zadziała, prześlij wyniki swoich ls -ldeksperymentów.

Joe Casadonte
źródło
mv hook\?\?\? hook1 nie działało Jeśli twoim drugim zestawem poleceń jest, cd /Users mv hook1* hook1 myślę, że brakuje ci 1.
Chris
Czy mój format komentarza jest prawidłowy? Proszę doradzić, wciąż nowy
Chris
Twój komentarz był w porządku. Pierwotnie miałem mv h* hook1, ale nie wiedziałem, czy masz więcej katalogów, niż pokazałeś w swoim przykładzie. Zasadniczo, jak wskazuje fd0, w nazwie katalogu znajdują się niewidoczne / niedrukowalne znaki. Zaktualizuję moją odpowiedź o więcej szczegółów.
Joe Casadonte,
Myślę, że to ma coś wspólnego. The-Glass-Hook:/ chris1$ ls -ld hoo* drwxr-xr-x+ 15 hook1 staff 510 Jul 15 22:25 hook1??? The-Glass-Hook:/ chris1$ cd /Users The-Glass-Hook:Users chris1$ ls -ld hoo* drwxr-xr-x 15 hook1 admin 510 Jul 18 08:20 hook1???
Chris
The-Glass-Hook:/ chris1$ ls -F Applications/ etc@ Incompatible Software/ home/ Library/ hook1???/ Network/ installer.failurerequests System/ net/ User Information@ private/ Users/ sbin/ Volumes/ tmp@ bin/ usr/ cores/ var@ dev/
Chris