저는 Ubuntu/Linux 세계에 처음 입문했으므로 나에게 너무 가혹하게 대하지 마십시오.
저는 Windows에서 WSL2 및 bash 쉘과 함께 Ubuntu를 사용하고 있습니다. 가끔 Windows에서 Ubuntu로 또는 그 반대로 파일을 복사하고 싶을 때가 있습니다. 이 작업을 수행하는 방법에 대한 몇 가지 튜토리얼을 온라인에서 찾았는데, 가장 쉬운 방법은 로 이동하는 것입니다 /mnt/c/Users/<your_user>
.
~
내 Windows 사용자의 홈 디렉터리를 나타내는 물결표와 같은 변수를 만들고 싶습니다 . 나는 ~~
그것이 예약되어 있지 않다는 것을 알았기 때문에 이중 물결표 사용을 고려했습니다 .
/bin
해당 이름으로 실행 파일을 생성했는데 이것이 필요한 경로 ~~
가 됩니다 . echo
그러나 이것은 사용하기가 번거롭다.
이런 특수 캐릭터를 만드는 방법이 있나요 ~
? 그렇지 않다면 더 좋은 방법이 있습니까?
내가 원하는 최종 결과는 다음과 같은 작업을 수행할 수 있는 것입니다.
cp ~~/Desktop/somefile.txt ~/somefile.txt
답변1
귀하의 경우에는 쉘 변수를 대신 사용할 수 있습니다. 예 를 들어 $WH
, 여전히 매우 짧습니다.
~$ export WH=/mnt/c/Users/your_user
그러면 변수가 WH
Windows 홈 디렉터리로 설정되고 환경 변수로 내보내집니다. 그런 다음 해당 변수를 다음과 같이 사용할 수 있습니다.
~$ cp $WH/Desktop/somefile.txt ~/somefile.txt
이 설정을 영구적으로 만들려면 이 변수 사양을 파일에 추가하면 됩니다 .bashrc
.
노트Windows 홈 디렉터리 경로에 공백이 포함된 경우 변수 정의 및 이후 사용 시 경로를 인용해야 합니다.
export WH="/mnt/c/Users/your user"
.bashrc
너와 사이
~$ cp "$WH"/Desktop/somefile.txt ~/somefile.txt
콘솔에서 사용하는 경우.
답변2
WSL에서 내 솔루션은 내 홈 디렉터리에 내 Windows 프로필에 대한 기호 링크를 만드는 것입니다. 나는 개인적으로 다음을 사용합니다.
ln -s /mnt/c/Users/<username> ~/winhome
하지만 단축할 수는 있습니다. 아래로 bash
, 적어도~~
나타나다심볼릭 링크 이름으로도 사용할 수 있지만 경우에 따라 잘못 해석될 수도 있습니다. 이 경로를 시도하고 싶다면:
ln -s /mnt/c/Users/<username> ~/~~
그런 다음 액세스하면 다음과 같습니다.
cp ~/myfile ~/~~/Documents/
답변3
질문에 태그가 붙어 있다는 것을 알고 있지만 을 bash
사용하면 zsh
다음과 같이 할 수 있습니다.
hash -d w='/mnt/c/Users/<your_user>'
이런 식으로 ~w
해당 도로로 확장됩니다. 이것은"정적으로 이름이 지정된 디렉터리". 이는 변수 확장 사용에 대한 AdminBee의 제안과 비슷하지만 한 가지 차이점은 탭 완성이 확장에 대해 작동한다는 것입니다 ~w/
. 또한 해당 디렉토리 아래에 있고 프롬프트가 현재 디렉토리를 표시하도록 설정된 경우 지정된 이름으로 짧은 버전이 표시됩니다. 확장 프로그램의 전체 경로가 아닌 디렉터리입니다.
~
은(는) 이 기능에 유효하지 않은 문자이므로 ~~
사용할 수 없습니다.
답변4
또한 대부분의 셸(적어도 Bash, Fish, Zsh 및 심지어 Dash)에서 작동하는 @JoL의 답변 접근 방식의 경우 w
Windows 사용자 프로필을 가리키는 홈 디렉터리 이름을 딴 새 사용자를 만들면 됩니다. 그러다가 ~w/
바로가기가 되었습니다. 또한 사용자 이름과 함께 작동하여 바로 가기가 ~
생성되는 것 같습니다 ~~
. 자세한 내용은 아래를 참조하세요.
사용자 수준 보안 개념이 없기 때문에 이 목적으로 WSL에서 사용자를 생성하는 데에는 실제로 단점이 없습니다(즉, wsl -u root
암호 없이 WSL 인스턴스의 모든 것에 대한 전체 액세스 권한이 이미 부여되었습니다).
간단한...
sudo useradd --home-dir /mnt/c/Users/<username> w
...WSL에서 작동합니다. 그러나 "모범 사례"는 다음과 같을 수 있습니다.
sudo useradd --no-user-group --non-unique -u 1000 -g 1000 --shell /sbin/nologin -f0 -e0 --home-dir /mnt/c/Users/<username> w
w
이렇게 하면 기본 WSL 사용자와 동일한 사용자 ID 및 그룹 ID(1000:1000)를 가진 사용자가 생성됩니다 (이는 불필요한 uid/gid로 시스템을 오염시키지 않기 위한 개인적인 선호 사항일 뿐입니다). 이 사용자는 nologin 쉘, 만료된 비밀번호 및 잠긴 계정을 갖게 됩니다. 그렇다면 WSL에는 어쨌든 이 추가 "보안"이 실제로 필요하지 않습니다.
JoL의 답변과 마찬가지로 이는 다음을 허용합니다.
cp ~/myfile ~w/Documents/
일부 극단적인 경우에는 문제가 발생할 수 있습니다. 옵션을 useradd
사용하여 사용자 이름으로 --badname
강제로 허용 할 수 있습니다.~
sudo useradd --badname --home-dir /mnt/c/Users/<username> "~" # or ...
sudo useradd --badname --no-user-group --non-unique -u 1000 -g 1000 --shell /sbin/nologin -f0 -e0 --home-dir /mnt/c/Users/<username> "~"
귀하의 초기 요청 결과는 다음과 같습니다.
cp ~/myfile ~~/Documents