일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |
- 웹앱
- reactor core
- 공유기 서버
- 웹 커리큘럼
- reactor
- reactive
- Spring Batch
- 서버운영
- 웹 스터디
- Spring Framework
- spring reactive
- ipTIME
- Today
- Total
Hello World
[펌]Stderr check in zshell 본문
Shell로 zsh를 사용중이다. 얼마전부터 개발 환경 설정을 해놓고 이곳저곳에서
쓰다보니 해당 개발 환경이 꾸며져있지 않으면, 없다고 해당 문구가 출력된다.
은근히 신경쓰인다. 만약 두개를 설정해놨는데 둘다 없다면 줄이 두 줄로 늘어난다.
그래서 찾았다. 찾다보니 내가 무심코 사용했던 내용에대해 조금더 볼 기회가 생긴듯.
우선 Shell에서 기본 I/O 스트림을 통해서 나오는 값들에대해서 다음 숫자로 제어할
수 있다.
Handle | Name | Description |
---|---|---|
0 | stdin | Standard input |
1 | stdout | Standard output |
2 | stderr | Standard error |
간단히 하자.
go가 설치되어 있는지 확인을 한다. 제대로 설치됐다면 stdout으로 설치된 경로가 나올 것이다.
$ which go
요놈을 안나오게 해보자.
$ which go 1> /dev/null
오~~~
stderr 값이 나오면 안나오게 할려고 보면… 이건 설치가 되어있으니… 없는걸로…
$ which rbenv
이걸 위와 같이 1
을 사용하면…
$ which rbenv 1> /dev/null
음… 출력되는 문구가 stderr로 나오는 건줄 알았는데 아닌갑다. 1
로 출력되는걸 막으라했더니…
그럼 Python에서는 어디로 나올까?
In: import subprocess as sub
In: check_rbenv = sub.Popen('which rbenv', stdout=sub.PIPE,
stderr=sub.PIPE, shell=True).communicate()
In: print(check_rbenv)
Out: (b'', b'')
음?? 암것도 안나온다…
In: import os
In: os.system('which rbenv')
Out: 256
출력값이 256이라니… 혹시나 해서 봤더니 8bit밀란다. 저걸 밀면 1이 떨어지는데…
리눅스에서 반환값이 1이면 비정상 종료일때로 알고 있다. 고로니 저넘은 제대로
실행된 아이가 아니라는 말씀…
그럼 which
명령어를 사용하여 명령어를 실행하게 되면, 정상종료면 위치를
말해줄꺼고 비정상 종료면 stdout으로 없다는 메시지를 남기고 비정상 종료를
시킨다고 해석하면 될듯.
결국 내가 하고 싶은데로 안되는거네… 이런!
다른 방법으로 찾아야지 뭐 별수 있나… 그래도 이번에 건진건 저렇게 숫자를
사용해서 내가 원하는 값들만 넣을 수 있는 방법을 찾았다는거… 그정도면 1시간동안
작업한 것에 대한 내용은 될듯.
출처: http://blog.weirdx.io/stderr-check-in-zshell/
'News & Tips > 참고자료' 카테고리의 다른 글
Trello, Github, Slack을 활용한 개발 프로세스 (0) | 2016.02.20 |
---|---|
Top 10 IntelliJ Idea Plugins (0) | 2016.02.04 |
sublime text3 마스터링 코스 (0) | 2016.01.26 |
[펌]G메일 받은편지함 정리하는 팁 9가지 (0) | 2016.01.24 |
어려운 기술 면접을 변명함 (0) | 2016.01.24 |