윈도: 윈도 드라이브에 이름이 있는 파이프가 있습니까?

13050 단어 BashOnUbuntuOnWindows
소비기한 만료
이 보도는 너무 낡아서 적절하게 부패했다.
최신판은 이 페이지에서 할 수 없다고 할 수 있다.
나는 보도를 따르고 싶지만, 나는 전혀 그런 특별한 마음을 가지고 있지 않다.
최신 정보를 찾아보세요.
이마
Surface의 Windows 10에서 Anniversary Update는 아무렇게나 다시 시작하거나 업데이트할 때마다 분개할 정도로 소문난 Bash와 Ubuntu를 사용할 수 있다.
최근 윈도를 적극적으로 쓰는 이유가 미쓰코의 똥만큼 많지는 않지만, 가끔 윈도가 아니면 안 되는 고통 현상1도 일어나는 것도 사실이다.
Cygwin이면 스페셜 파일 주변에 힘든 부분이 있는데 거기를 어디로 이동하는지에 관심이 생겨서 잠깐 놀았어요.
설치하다.
고그레카스
정말 우분투인가요?
$ cat /etc/lsb-release
DISTRIB_ID=Ubuntu
DISTRIB_RELEASE=14.04
DISTRIB_CODENAME=trusty
DISTRIB_DESCRIPTION="Ubuntu 14.04.4 LTS"
혼연일체의 우분투다.
Windows File I/O
Windows 영역에서 읽기
hello!
ァゼソゾタダチボポマミ
АЪЫЬЭЮЯклмн
이러한 텍스트 파일을 C:\바로 아래에 저장합니다. Bash on Ubuntu Windows에서 보십시오...
$ file /mnt/c/test.txt
/mnt/c/test.txt: Non-ISO extended-ASCII text, with CRLF line terminators
$ cat /mnt/c/test.txt
hello!
�@�[�\�]�^�_�`�{�|�}�~
�@�[�\�]�^�_�`�{�|�}�~
예상대로 별다른 감동은 없었다.
Windows 파일 시스템을 설치하는 파일 읽기와 관련해서는/mnt 아래에 자동으로 설치되는 것 외에는 기존 VM 및 컨테이너와 거의 차이가 없습니다.
사용 권한
Windows와 Linux는 파일 권한 방식에 있어서 호환성을 전혀 느끼지 못합니다.
$ ll /mnt/c
ls: cannot access hiberfil.sys: Permission denied
ls: cannot access pagefile.sys: Permission denied
ls: cannot access swapfile.sys: Permission denied
total 140
drwxrwxrwx 2 root root  0 Aug  8 07:08 ./
drwxr-xr-x 2 root root  0 Jan  1  1970 ../
-r-xr-xr-x 1 root root  1 Oct 30  2015 BOOTNXT*
-????????? ? ?    ?     ?            ? hiberfil.sys
drwxrwxrwx 2 root root  0 Nov 27  2015 Intel/
drwxrwxrwx 2 root root  0 May  4 02:02 OneDriveTemp/
-????????? ? ?    ?     ?            ? pagefile.sys
d--------- 2 root root  0 Jul 16 20:47 PerfLogs/
drwxrwxrwx 2 root root  0 Aug  6 20:21 ProgramData/
dr-xr-xr-x 2 root root  0 Aug  6 19:53 Program Files/
dr-xr-xr-x 2 root root  0 Aug  8 07:04 Program Files (x86)/
...
  • 카탈로그: 777
  • 액세스 가능한 파일: 777
  • 무권한 파일: 555
  • 중요 시스템 파일????????
  • 이런 호쾌함(simple ´63;)최대 임무.
    ?????????Bash를 놀게 할 뜻은 전혀 없는 것 같습니다.
    Windows 영역에 쓰기
    777이면 소쿠리로 해 봤어요, 그렇게 달지 않아요.
    $ echo hoge > /mnt/c/hoge.txt
    bash: /mnt/c/hoge.txt: Permission denied
    
    777은 무엇입니까
    그럼 루트면 갈 수 있어요.
    $ sudo echo hoge > /mnt/c/hoge.txt
    bash: /mnt/c/hoge.txt: Permission denied
    
    있잖아 그래...
    그럼 Admin으로 Bash를 시작해 보십시오.
    $ echo hoge > /mnt/c/hoge.txt
    $ cat /mnt/c/hoge.txt
    hoge
    
    아, 큰일났다.
    Bashon Ubuntu Windows는 언뜻 보기에는 Linux이지만 실제로는 Windows에서 실행되는 과정으로 Windows의 파일 시스템과 권한이 먼저 있는 데다 Linux의 권한까지 더해져 2층 구조를 형성한 것으로 파악됐다.
    따라서 Bash on Ubuntu on Windows에서/mnt/ 이하의 권한은 반드시 정확하지 않으며 Write 권한이 있어도 위치에 따라 Windows에 속박될 수 있습니다.
    파이프 이름 지정
    Cygwin에서 잘 안되는 스페셜 파일은 어때요?
    $ mkfifo /mnt/c/bash_test/hoge_pipe
    mkfifo: cannot create fifo ‘/mnt/c/bash_test/hoge_pipe’: Operation not permitted
    
    오, 파이프도 만들 줄 모르다니, 정말 못났다.
    참고: Ubuntu의 파일 시스템 영역에서 이름이 지정된 파이프를 만들 수 있습니다.
    소프트 링크
    $ cd /mnt/c/bash_test/
    $ ln -s /mnt hoge
    $ ll
    total 8
    drwxrwxrwx 2 root root 0 Aug  8 09:14 ./
    drwxrwxrwx 2 root root 0 Aug  8 08:56 ../
    lrwxrwxrwx 1 root root 4 Aug  8 09:14 hoge -> /mnt/
    
    링크를 붙일 수 있을 것 같아요.
    링크된 파일이 포함된 창고를 체크아웃하고 여기서 고치면 어떨까cp -rf뜯어버리면 어떨까 관심이 쏠린다.
    장치 파일 관련
    mount
    안되겠지?
    $ mkisofs -r -J -V test_image -o image.iso /home/
    I: -input-charset not specified, using utf-8 (detected in locale settings)
    Total translation table size: 0
    Total rockridge attributes bytes: 1614
    Total directory bytes: 8192
    Path table size(bytes): 70
    Max brk space used 23000
    198 extents written (0 MB)
    $ ll
    total 404
    drwxrwxrwx 2 root root      0 Aug  8 09:42 ./
    drwxrwxrwx 2 root root      0 Aug  8 08:56 ../
    -rwxrwxrwx 1 root root 405504 Aug  8 09:42 image.iso*
    drwxrwxrwx 2 root root      0 Aug  8 09:23 test_mount/
    $ sudo mount image.iso test_mount/
    mount: Could not find any loop device. Maybe this kernel does not know
           about the loop device? (If so, recompile or `modprobe loop'.)
    
    안된다고 하기 전에 케네르는 루프 장비를 모른다는 슬픈 말을 했어요.
    $ ll /dev/
    ls: cannot access /dev/lxss: Operation not permitted
    ls: /dev/random: Invalid argument
    total 8
    drwxr-xr-x 2 root     root    0 Aug  8 05:18 ./
    drwxr-xr-x 2 root     root    0 Jan  1  1970 ../
    drwxr-xr-x 2 root     root    0 Aug  8 04:57 block/
    lrwxrwxrwx 1 root     root   13 Aug  8 04:57 fd -> /proc/self/fd/
    crw------- 1 root     root 0, 0 Aug  8 09:55 kmsg
    c????????? ? ?        ?       ?            ? lxss
    crw-rw-rw- 1 root     root 1, 3 Jan  1  1970 null
    crw-rw-rw- 0 root     tty  5, 2 Aug  8 09:40 ptmx
    drwxr-xr-x 0 root     root    0 Aug  8 04:57 pts/
    crw-rw-rw- 1 root     root 1, 8 Aug  8 09:55 random
    lrwxrwxrwx 1 root     root    8 Aug  8 04:57 shm -> /run/shm/
    lrwxrwxrwx 1 root     root   15 Aug  8 04:57 stderr -> /proc/self/fd/2
    lrwxrwxrwx 1 root     root   15 Aug  8 04:57 stdin -> /proc/self/fd/0
    lrwxrwxrwx 1 root     root   15 Aug  8 04:57 stdout -> /proc/self/fd/1
    crw------- 1 integral tty  4, 1 Aug  8  2016 tty
    crw-rw-rw- 1 root     tty  4, 0 Aug  8 09:55 tty0
    crw------- 1 integral tty  4, 1 Aug  8  2016 tty1
    crw------- 1 integral tty  4, 2 Aug  8 09:55 tty2
    crw-rw-rw- 1 root     root 1, 9 Aug  8 09:55 urandom
    crw-rw-rw- 1 root     root 0, 0 Aug  8 09:55 zero
    
    시원하군. 제대로 된 장비가 없네. lxss는 마법이야. 뭐야.
    LXSS
    Linux Subsystem에서는 Bash on Ubuntu Windows의 핵심 기술인 것 같습니다.
  • http://blog.ryukiy.net/2016/04/01/bash-on-windows/
  • http://rcmdnk.github.io/blog/2016/06/05/computer-windows-ubuntu-bash/
  • Ubuntu의 파일은 (Windows의) 홈 디렉터리 아래의/AppData/Local/lxss/에 있는 것 같습니다.
    $ ll /mnt/c/Users/ひみつ/AppData/Local/lxss/
    total 912
    drwxrwxrwx 2 root root      0 Aug  8 04:57 ./
    drwxrwxrwx 2 root root      0 Aug  8 07:03 ../
    -rwxrwxrwx 1 root root 911975 Aug  6 20:34 bash.ico*
    d--------- 2 root root      0 Aug  6 20:34 cache/
    d--------- 2 root root      0 Aug  6 20:34 data/
    d--------- 2 root root      0 Aug  6 20:45 home/
    d--------- 2 root root      0 Aug  6 20:34 mnt/
    d--------- 2 root root      0 Aug  8 09:36 root/
    d--------- 2 root root      0 Aug  6 20:34 rootfs/
    -rwxrwxrwx 1 root root     64 Aug  6 20:32 sha256*
    d--------- 2 root root      0 Aug  8 04:57 temp/
    
    읊다, 읊조리다권한은 000입니다. 이곳은 불가침 구역인 것 같습니다.
    참고로 lxss 디렉터리는 Windows에서 보면 500MB 정도입니다.
    인터넷은요?
    네트워크 차단
    LXSS의 구조와/dev의 모습으로 미뤄 네트워크 차단은 없는 것 같다.
    $ ip a
    SO_SNDBUF: Invalid argument
    $ ifconfig
    Command 'ifconfig' is available in '/sbin/ifconfig'
    The command could not be located because '/sbin' is not included in the PATH environment variable.
    This is most likely caused by the lack of administrative privileges associated with your user account.
    ifconfig: command not found
    $ route
    Command 'route' is available in '/sbin/route'
    The command could not be located because '/sbin' is not included in the PATH environment variable.
    This is most likely caused by the lack of administrative privileges associated with your user account.
    route: command not found
    
    빙고!인터넷은 역시 Windows를 이용한다.
    네트워크를 사용할 수 없는 Linux에는 Tsumannaku가 없습니까?
    ping 재미있는 행동을 하다.
    # ユーザー権限でbashを起動した場合
    $ sudo ping google.com
    ping: icmp open socket: Permission denied
    
    # Admin権限でbashを起動した場合
    $ ping google.com
    PING google.com (172.217.25.78) 56(84) bytes of data.
    64 bytes from nrt13s50-in-f14.1e100.net (172.217.25.78): icmp_seq=1 ttl=53 time=12.7 ms
    
    oh...
    Resolver
    이름 해결은 Ubuntu Windows에 혼자 있는 것 같습니다.
    $ cat /etc/hosts
    127.0.0.1 localhost
    
    # The following lines are desirable for IPv6 capable hosts
    ::1 ip6-localhost ip6-loopback
    ...
    $ dig google.com
    
    ; <<>> DiG 9.9.5-3ubuntu0.8-Ubuntu <<>> google.com
    ;; global options: +cmd
    ;; Got answer:
    ...
    
    
    인터넷 소켓을 사용하면 어떻게 됩니까?
    $ python -m SimpleHTTPServer
    Serving HTTP on 0.0.0.0 port 8000 ...
    
    PowerShell에서 볼 때 Windows에 포트가 있음을 알 수 있습니다.
    PS C:\> netstat -na
    
    Active Connections
    
      Proto  Local Address          Foreign Address        State
      TCP    0.0.0.0:22             0.0.0.0:0              LISTENING
      TCP    0.0.0.0:135            0.0.0.0:0              LISTENING
      TCP    0.0.0.0:445            0.0.0.0:0              LISTENING
      TCP    0.0.0.0:8000           0.0.0.0:0              LISTENING
      ...
    
    총결산
    뻔한 일
  • Linux SubSystem 기술을 통한 Bash on Ubuntu Windows 구현
  • VM이나 컨테이너가 아닌 Windows Subsystem으로 Linux 바이너리를 구동하는 구조입니다. 방법은 Cygwin
  • 에 가깝습니다.
  • VM처럼 완전히 격리되지 않음
  • 전체적으로 Cygwin의 폭발 속도보다 빠르다
  • 스페셜 파일은 이동이 가능하지만 지원되지 않는 파일도 있으므로 하층부에서 모두 즐길 수 있는 사람은 기대하지 않는 것이 좋다
  • Ubuntu에 설치된 Windows 영역에서는 파일 작업에 제한이 있음
  • 편지 777775000, 편지 63;, 편지 63;, 편지 6363;, 편지 6363;, 편지 63,???????
  • Ubuntu Windows라는 두 층의 구조가 미묘하게 Windows에 침투했다
  • Bashon Ubuntu Windows 호스트는 C:\Windows\System32\bash.exe
  • Ubuntu 파일은 /mnt/c/Users/<username>/AppData/Local/lxss/에 있지만 Windows에 의해 조작되지 않습니다2
  • 네트워크는 Windows를 사용하기 때문에 Linux가 자랑하는 최고 수준의 네트워크 기능은 기본적으로 사용할 수 없습니다
  • Resolver 또는 ping
  • 을 미묘하게 사용할 수 있음
    알 수 없음
    이번 접촉 과정에서 의문은 있었지만 화려하게 화제를 놓았다
  • 내부 핵을 만들 수 있습니까?
  • modprobe가 움직일까요?
  • Windows 파일 시스템의 사용 권한을 Ubuntu에서 변경하면 어떻게 됩니까?
  • 데몬은 그렇게 어디로 이동할 수 있습니까?
  • Windows 2원 on Wine on Bash on Ubuntu Windows의 작동 여부
  • lxss 디렉터리의 파일은 어떻게 관리합니까?
  • 감상
    처음에는 이름이 붙은 파이프 운동이었나요?하지만 정신을 차리면 아침이야,
    Bash on Ubuntu Windows는 폭발 속도가 빠르고 진정한 Linux에 가깝다는 장점이 있지만, Bash에 의해 Windows 컨트롤러를 가지고 놀지 않고, Windows에 의해 Ubuntu의 파일을 직접 가지고 놀지 않는 약점도 있다.
    나는 Cygwin이 Windows와 Linux의 상호 곱셈으로 더욱 편리하다고 생각한다.
    Microsoft의 관점에서 볼 때 OSS계에서 폭발적으로 성장한 자원을 얻으려면 Windows에서도 OSS와 같은 판매 대화를 문제 없이 사용하려는 의도가 명백하다3.
    하지만 VM, 컨테이너, Cygwin에 비하면 비교할 수 없는 미묘한 실상이다. 솔직히 깜짝 놀랄 만한 사용법은 생각해 내지 못했다.
    뱀발이지만 기본적으로 터미널이 너무 똥을 싸서 우수한 터미널 소프트웨어에서 bash를 얻을 수 있다.가장 좋은 것은exe를 실행하는 것이다.
    유니코드가 왜 UTF-16이야!SJIS가 바보야?이렇게 불평하면서 Windows로 마변성을 하고 망가진 파일을 고친다. 일부 위험한 문자는 비슷하지만 비문자로 돌아온다. BOM이 있는지 없는지 곳곳에서 폭발이 일어나고 CRLF가 방해가 되는 등 여러 가지 문제가 있기 때문에 Windows기기를 모두 창문에서 던져버린다!이렇게 사람을 웃게 하는 광경이 여러 번 반복되어 나는 피곤했다
    이 사이트는 많은 실험을 하였는데, 캐비닛의 민감한 파일 이름이 Windows에서 어떻게 해석되는지는 또 다른 것이 많다. http://rcmdnk.github.io/blog/2016/06/05/computer-windows-ubuntu-bash/
    이런 의미에서 맥과 OSS의 친화력은 OSS의 친화력보다 훨씬 높아서 매우 편리하다

    좋은 웹페이지 즐겨찾기