codeheart 위치로그  |  태그  |  미디어로그  |  방명록
icon 2013/12 에 해당하는 글4 개
2013.12.23   powershell 응용
2013.12.22   msys (bash) 에서 batch 파일을 실행하고 싶을 때
2013.12.15   윈도우8.2 시작 메뉴 부활 소식에 관한 UX/UI 디자이너 제이 마칼라니의 제안
2013.12.14   Windows 에서 Linux Terminal 처럼 강력한 Multitab Console 창이 필요하다면 ConEmu


icon powershell 응용
개발/Script | 2013. 12. 23. 14:48

[문제]

현재 폴더에 위치한 서브 폴더 안에 있는 특정 파일을 출력한다.

조건1. 어느 서브 폴더에 있는 것부터 출력하냐면 폴더명 역순으로.


다양한 방법이 있고, 더 간단한 방법도 있을 수 있다.

하지만 파워쉘의 강력한 기능들을 인지하는 차원에서 여러 기능을 활용해본다.


ls | ?{$_.PSIsContainer} | sort -desc | %{pushd $_; if (Test-Path filename) { write-host $_ ':' (cat filename) }; popd}    


설명


ls

Get-ChildItem 의 alias. gci로 해도 되고, dir 로 해도 된다.


? { ... }

? 은 필터 기능이다. 결과물(배열) 중 필요한 녀석만 선택해 새로운 배열로 변환한다.

함수형 언어의 filter 함수라고 보면 된다. { ... } 은 람다로 보면 되고 필터할 조건구문을 서술한다.


PSIsContainer

노드객체의 프로퍼티이다. 속성명이 맘에 안드는데... 해당 노드가 디렉토리면 true, 일반 파일이면 false 를 반환한다.


$_

람다의 디폴트 파라메터 (ls 의 각 요소(파일/디렉토리 노드)들이 들어옴)


sort

정렬 기능인데, -desc 옵션을 주면 역순 정렬임.


% { ... }

foreach 인데 용법 두가지 중 하나. 파이프라인 뒤에 사용하는 foreach 는 앞선 array 들의 각 요소들 마다 람다를 수행한다.


Test-Path

파일이 존재하는지 알아보는 함수. 기타 추가적인 기능이 있을 수 있다.


write-host

command쉘은 echo 에 해당함.

(참고로 powershell 의 echo 는 좀 더 객체지향적인 이해가 가미된 write-host 라고 보면 된다.)


cat

Get-Content 의 alias


(....) // 위에서 (cat ...) 한 구문

bash 의 $(...) 와 비슷하다고 보면 된다. 하지만 파워쉘은 모든 구문이 더 명료하고 직관적이기 때문에 일반적인 언어처럼 쉽게 이해 된다.


pushd

Push-Location 의 alias. command 에도 이런 기능이 있다. cd 와 유사하나, stack 에 기존 폴더를 넣고 해당 폴더로 이동한다.


popd

Pop-Location 의 alias. command 에도 이런 기능이 있다. 스택에 넣어진 폴더로 cd 한다.



Unix 계열의 shell 특히 bash shell 은 매우 훌륭하지만, 너무 고전적이다.

그러한 단점을 모두 극복하고 프로그래머가 더 다루기 좋은 도구로 발전시킨게 PowerShell 이 아닌가 싶다.


bash 에 능숙하다면, powershell 은 더 능숙하게 사용할 수 있을 거라 생각된다.


bash 는 shell 자체 보다는 유명한 unix 커맨드 스크립트를 활용하여 강력한 면이 있지만, 보수적인 면 때문에 답답한 부분도 없지 않아 있다.


bash 도 grep, sed, awk 이런 것들을 pipeline 과 조합하여 강력하게 사용가능하지만, 

powershell 은 그 구시대적인 모든 것을 쉘 자체에서 지원하고 있다.

물론 얼마 되지 않았으므로 더 명료하고 더 간단하면서도 직관적이다.


arrow 트랙백 | 댓글



icon msys (bash) 에서 batch 파일을 실행하고 싶을 때
개발/기본 | 2013. 12. 22. 00:48

cmd shell 에서 batch 파일을 실행하는 방법은 다음과 같다.


script.bat


혹은


cmd /c script.bat




하지만, msys 에서 배치파일을 실행한다면


script.bat 는 (특별한 설정없다면) 당연히 인식못할테니


cmd /c script.bat


로 해야할 것 같다.


하지만 안된다. 게다가 cmd 쉘 상태로 남아있게 된다.


(cmd /c 는 수행 후 되돌아 오는 것이라고 설명됨에도 불구하고)


이해는 안되지만 msys 가 cmd 를 특별 취급하는 것 같다.


따라서, 의도한 대로 배치파일을 수행하려면


cmd.exe /c script.bat


처럼 .exe 확장자까지 기입하면 된다.


그러면, script.bat 을 수행후, 다시 msys bash 쉘 상태로 돌아온다.




arrow 트랙백 | 댓글



icon 윈도우8.2 시작 메뉴 부활 소식에 관한 UX/UI 디자이너 제이 마칼라니의 제안
컴퓨터 | 2013. 12. 15. 15:55

며칠전 제이 마칼라니라는 UX 디자이너가 자신의 블로그를 통해 윈도우8 UI 에 관한 제안을 했다.


블로그: http://jaymachalani.com/blog/2013/12/12/fixing-windows-8


어떤 내용은 그 동안 사람들이 생각했던 내용과 유사한 내용도 포함되어 있으나,

전반적으로 다듬고 잘 정리한 것 같다는 생각이 든다.


우선, 관련 UX 를 제이 마칼라니가 프로토타입으로 구현한 시연 동영상이다.




핵심 내용은,


1. 시작 버튼을 누르면, 윈도우7 처럼 시작 메뉴가 나올 수 있다.

다만 메뉴의 디자인은 윈도우 8 모던 UI 가 시작 메뉴에 나오는 방식이다.

[그림:제안된 UI - 시작 메뉴]


이점은 Start8 이라는 윈도우8 시작 버튼 부활 프로그램 중 하나가 사용하는 방식과 유사한 듯 하다.

[그림:Start8 - 시작 메뉴]


2. 또 하나는 데스크탑(클래식) UI 모드에서도 모던UI 앱을 실행할 수 있는 것이다. 마치 다음과 같이 창으로 모던앱이 실행되는 것을 볼 수 있다. Outlook 이랑 Fresh Paint 는 모던앱이며, 회색Steam 은 데스크탑앱이다. 두 종류의 어플리케이션이 창모드로 혼용되었다.



꽤 괜찮게 정리된 생각인 것 같다. MS 가 단순명료하면서도 기능성을 최대한 활용한 하이브리드 UI 를 선택하든지, 완전히 분리된 UI 로 갈지 선택해야할 시기가 온 것 같다. 더 이상 애매하고 복잡한 UX 를 제공해서는 사용자들의 원망을 피할 길이 없어 보인다.



현재 윈도우 8.1 동작 방식



제이 마칼라니가 제안한 윈도우 8.2 동작 방식


arrow 트랙백 | 댓글



icon Windows 에서 Linux Terminal 처럼 강력한 Multitab Console 창이 필요하다면 ConEmu
개발/기본 | 2013. 12. 14. 23:41


위 스크린샷은 git bash 를 con emu 창에서 돌리는 모습이다.

물론 windows command shell 이나 powershell 도 붙일 수 있다.

창을 스플릿한 상태이며, 처음에는 하나만 띄어져 있다. 

그리고 탭이 있는 것도 볼 수 있을 것이다.


linux 배포판들은 대부분 심플하면서 편리한 terminal 을 가지고 있다.

하지만, 그에 반해 windows 는 초창기 부터 변화가 없는 단순한 콘솔창이다.

애초에 windows 가 unix 계열보다 콘솔 스크립트 사용성이 떨어지는 OS 이기도 한 탓도 있다.


하지만, windows 에서 개발할 수 밖에 없는 상황이 많다.

그래서 linux 와 최대한 닮은 환경을 꾸미기 위해 msys 나 cygwin 등을 활용하기도 한다.

하지만 이 것은 쉘을 제공해주는 것이지, 터미널 창을 제공해주는 것은 아니다.

이럴 때 ConEmu 는 만족스러운 기본 윈도우 터미널 윈도우 역할을 할 수 있을거라 생각된다


다운로드:

https://code.google.com/p/conemu-maximus5/


1. 멀티 탭 기능

2. 창 split 기능

3. 루트 복사 탭 생성 기능 ( linux 도 현재 창 current directory 를 그대로 복사하는 기능이 있듯 )

4. 다른 어플리케이션 창을 탭 컨텍스트로 포함 기능!

( 기본적으로 svchost ? 을 사용하는 shell 은 conemu 폰트 설정을 유지하여 포함되고, (git bash 나 msys bash 같은) 그렇지 않은 프로그램도 포함이 가능하다. 심지어 putty 및 chrome 같은 프로그램도 포함시킬 수 있다. )


처음에는 다소 복잡한 기능에 헤매일 것 같지만,

최소한 windows 기본 콘솔창보다는 좋으니까 라는 생각으로 사용하다보면,

생각보다 많은 기능에 만족하면서 계속 쓰게 될 거라고 생각한다.



arrow 트랙백 | 댓글



[PREV] [1] [NEXT]
관리자  |   글쓰기
BLOG main image
code heart story
분류 전체보기 (74)
생활 (0)
잡담 (8)
컴퓨터 (11)
개발 (52)
Total :
Today :
Yesterday :
rss
위치로그 : 태그 : 방명록 : 관리자
코드하트's Blog is powered by Daum / Designed by plyfly.net