반응형

OS: Ubuntu Server 16.04.2 (amd64)


처음 우분투 서버 설치 당시의 호스트 이름(hostname)이 마음에 들지 않아서 /etc/hostname 파일에서 이름을 바꿨다.

그 뒤에 sudo를 사용하는 명령을 칠 때마다 sudo: unable to resolve host "변경된 호스트 이름" 에러 메세지가 출력이 되었다.


이것은 /etc/hostname 파일에 적힌 이름과 /etc/hosts 파일에 있는 이름이 다르기 때문이다.


/etc/hosts 파일에 보면,

127.0.0.1    localhost

127.0.1.1    원래의_호스트_이름

(이하 생략)


이런 식으로 적혀 있는데, 원래의_호스트_이름 부분을 /etc/hostname 파일과 맞춰 줘야 한다.




반응형
블로그 이미지

Bryan_

,
반응형

Tested OS: Ubuntu 14.04

Python: 2.7.6


Firebase 같은 곳에서 json 파일을 다운로드 받으면, 개행문자(newline)와 들여쓰기 없이 모두 붙어 있어서 눈으로 확인하기 힘들다. 이것을 사람이 보기 좋게 공백과 들여쓰기를 적용해서 변환하는 방법으로 여러 가지가 있겠지만, 비교적 간단한 두 가지 방법은 파이썬의 json 도구를 쓰거나 jq를 쓰는 방법이다.



1. Python의 json.tool 사용


$ python -m json.tool [original_file]


위와 같이 하면 화면에 출력된다. 바로 텍스트 파일에 저장하려면, 리다이렉션(redirection)을 쓰거나, argument로 저장될 파일 이름을 하나 더 써 준다.


$ python -m json.tool [original_file] [new_file]

$ python -m json.tool [original_file] > [new_file]



2. jq 사용


시스템에 jq가 미리 설치되어 있어야 함.


$ jq '.' [original_file]


위와 같이 하면 화면에 출력되고, 텍스트 파일에 저장하려면 리다이렉션 사용:


$ jq '.' [original_file] > [new_file]




15MB 정도 되는 json 파일을 테스트해 본 결과, 처리 시간은 jq가 더 빠르게 나왔다.

파이썬에서도 argument를 쓰는 방법보다 redirection이 근소하게 더 빨랐다.


(json 파일을 보기 좋게 처리하는 데 걸린 시간. jq, python with redirection, python with argument 순서대로 빨랐다.)



참고로 jq로 변환하면, 원본 json 파일에 유니코드로 적혀 있는 글자들(e.g. 한글)은 모두 자동으로 사람이 읽을 수 있는 한글 문자로 변환된다. 

python에서는 유니코드를 유니코드 문자열 그대로 둔 채로 변환한다.

유니코드 문자를 어떻게 처리할 지 경우에 따라 맞춰서 사용하면 될 듯.



반응형
블로그 이미지

Bryan_

,
반응형

1. 찾아서 바꾸기 기능 쓸 경우:


:%s/\t/[원하는 공백 크기]/g


예를 들어, 4칸의 공백으로 바꿀 경우,


:%s/\t/    /g




2. VIM에 정의된 다른 명령어의 조합으로:


:set expandtab

:set ts=4

:retab


set ts=4에서 ts를 원하는 숫자로 바꾸면 바뀐 크기만큼 적용된다.




반응형
블로그 이미지

Bryan_

,
반응형

OS: Ubuntu 16.04 (amd64)



우분투에 와인을 설치해 두고 쓰다 보면 몇몇 확장자의 파일에 wine에서 작동하는 어플리케이션들이 "Open With" 메뉴에 선택 항목으로 표시된다.

몇 가지 예를 들어 보면:


txt 파일에서 Open With에 notepad (윈도우 메모장)이 연결되고, 

png, jpg 같은 이미지 파일에는 Internet Explorer가 연결되고,

hwp 파일에는 리눅스용 한컴뷰어 대신 wine에 내장된 한글 워드프로세서가 연결

그외 다수...


우분투에서 wine을 적극적으로 사용하는 경우에는 편리할 수 있지만, 단순한 텍스트 문서를 열고 싶을 때 굳이 wine에 연동된 메모장을 쓰고 싶지는 않을 것이다.


Open With 에 나타나는 wine 기반 윈도우용 어플리케이션 목록을 제거하려면,

텍스트 에디터로 ~/.local/share/applications/mimeinfo.cache 파일을 열고,

"wine-extension-" 문자열이 들어가 있는 라인을 모두 제거한다.


예를 들어, txt 파일에는 wine-extension-txt.desktop과 wine-extension-htm.desktop이 쓰여져 있을 텐데, 이 라인들을 지우고 mimeinfo.cache 파일을 저장한다. 그러면 이후 txt 파일을 마우스 오른쪽 버튼으로 클릭했을 때, Open With에서 더이상 notepad는 보이지 않게 된다.



<참고자료>

[1] https://askubuntu.com/questions/186494/remove-wines-notepad-from-open-with-options

반응형
블로그 이미지

Bryan_

,
반응형

테스트 환경: Ubuntu 14.04, bash shell 사용



Bash 스크립트 파일에서 점점 awk를 써야 될 일이 많아지고, 그 awk 스크립트가 점점 더 복잡해지면서 한 줄에 주욱 이어서 썼더니 점점 가독성이 떨어지고 디버그하기 어렵게 되었다.


결론부터 말하자면, 그냥 가장 바깥에 있는 두 개의 single quote 문자 사이에는 마음대로 띄워써도 된다. ㅡㅡ;

개행 문자(newline), 탭 문자 마음대로 써도 상관이 없다.



그런데 내가 뭘 잘못했는지 command not found 에러가 났다.

뭐가 문제였을까?


확인해 보니,

awk [각종_옵션들] 

'                <---- awk 명령과 single quote 문자를 개행문자로 분리(...)

{

...

}

'


이런 식으로 썼던 거였다. 그러니까,


awk [각종_옵션들] '

{

...

}

'


코드의 시작을 나타내는 single quote 문자를 awk 명령줄과 같은 위치에 써야 하는데 그걸 엔터 쳐서 분리했더니, bash shell이 두 개의 서로 다른 명령으로 이해했던 것이었다. ㅜㅜ


아니면,

awk [각종_옵션들] \

'

{

...

}

'


이렇게 역슬래시로 다음 줄까지 명령 하나로 인식하도록 처리했어야 했다.


POSIX 명령의 기본 규칙을 잊지 말자. ㅠㅠ



반응형
블로그 이미지

Bryan_

,