※ 요약

ls 명령어는 "list segments"의 약자로써 가장 많이 사용하는 리눅스 명령어 중에 하나이다. 

ls는 보통 지정한 디렉토리나 파일의 정보를 출력하는데 사용한다.

옵션은 아래와 같이 상당히 많지만 자주 쓰이는 옵션은 그다지 많지 않다.


※ 경로
/bin/ls

※ 사용법
ls [옵션]... [파일]...

[옵션] : 생략 가능하고 여러개 사용가능

[파일] : 생략 가능하고 여러개 지정가능


※ 옵션

옵션은 보통 (-)와 함께 입력하여 사용한다.

그 밖에 LONG 옵션을 제공하는데, LONG 옵션은 보통 (--) 기호를 선행하여 사용한다.

 옵션

 Long 옵션

 설명

 -a

 --all

 .을 포함하여 경로 안의 모든 내용을 출력

 -A

 --almost-all

 .과 ..을 제외한 모든 내용을 출력

 -b

 --escape

 알파벳 형식의 리스트를 출력

 

 --block-size=SIZE

 지정한 바이트(SIZE) 만큼의 블록을 사용

 -B

 --ignore-backups

 ~로 끝나는 백업 파일을 출력하지 않음

 -c

 

 -lt 옵션과 함께 마지막 변경 시간을 출력하고 시간을 기준으로 정렬

 -l 옵션과 함께 마지막 변경된 시간을 출력하고 이름을 기준으로 정렬

 -C

 

 열의 엔트리를 출력

 

 --color[=WHEN]

 파일의 타입을 색으로 구별함

 WHEN에 올 수 있는 값은 'never', 'always', 'auto'

 -d

 --directory

 디렉토리의 경로를 출력, 심볼릭 링크라면 원래의 링크 정보를 출력 안 함

 -D

 --dired

 emacs를 위한 출력 형태를 생성

 -f

 

 정렬하지 않음, 이 옵션은 -aU 옵션을 활성화하고 -ls --color 옵션을 비활성화

 -F

 --classify

 목록의 마지막에 (*/=>@|) 중에 하나의 지시자를 붙임

 (실행파일은 *, 경로는 /, 소켓은 =, 심볼릭 링크는 @, FIFO는 |)

 

 --file-type

 -F, --classify과 비슷하나, *은 덧붙이지 않음

 

 --format=WORD

 옵션 대신 워드 서식을 지정하여 출력

 (across는 -x, commas는 -m, horizontal는 -x, long는 -l, single-column는 -1, verbose는 -l, vertical는 -C)

 

 --full-time

 -l --time-style=full-iso와 비슷함

 -g

 

 -l과 비슷하나 소유자의 리스트를 출력하지 않음

 

 --group-directories-first

 파일 이전에 그룹 디렉토리를 먼저 출력

 -G

 --no-group

 긴 리스트 형식으로 출력하나 그룹 이름은 출력하지 않음

 -h

 --human-readable

 -l과 함께 사람이 읽기 쉬운 형식의 크기로 출력

 

 --si

 -h와 비슷하나 1,024 단위가 아닌 1,000의 단위로 출력

 -H

 --dereference-command-line

 심볼릭 링크면 실제로 참조하는 목록을 출력

 

 --hide=PATTERN

 지정한 PATTERN과 매칭되는 리스트를 숨김(-a나 -A 옵션이 우선함)

 

 --indicator-style=WORD

 목록 이름에 WORD 스타일의 지시자를 추가

 (none은 기본값, slash는 -p, file-type은 --file-type, classify는 -F)

 -i

 --inode

 각 파일의 인덱스 값을 출력

 -I

 --ignore=PATTERN

 지정한 PATTERN에 매칭되는 목록을 출력하지 않음

 -k

 --kibibytes

 --block-size=1K와 비슷함

 -l

 

 긴 리스트 형식으로 출력

 -L

 --dereference

 심볼릭 링크의 정보를 보여줄 때 링크 파일의 원본 파일의 정보를 출력

 -m

 

 콤마로 구분된 목록 형식으로 출력

 -n

 --numeric-uid-gid

 -l 옵션과 비슷하나, 숫자 형식의 사용자와 그룹 ID를 출력

 -N

 --literal

 원래의 이름 형식으로 출력(보통 영문이 아닌 경우 \를 붙여서 출력)

 -o

 

 -l와 비슷하지만 그룹의 정보를 출력하지 않음

 -p

 --indicator-style=slash

 디렉토리에 슬래시(/)를 추가

 -q

 --hide-control-chars

 그래픽이 아닌 문자 대신 ?를 출력

 -Q

 --quote-name

 목록에 쌍 따옴표로 감싸서 출력

 -r

 --reverse

 정렬의 순서를 역순으로 바꿈

 -R

 --recursive

 현재 디렉토리를 기준으로 모든 하위의 디렉토리를 출력

 -s

 --size

 각 파일이나 블록에 할당된 크기를 출력

 -S

 

 파일의 크기를 기준으로 정렬

 -t

 

 수정된 시간을 기준으로 정렬

 -T

 --tabsize=COLS

 기본값 8 대신 지정한 COLS를 탭 간격으로 지정

 -u

 

 -lt 옵션과 함께 접근 시간을 기준으로 정렬

 -l 옵션과 함께 접근 시간을 출력하는데 이름을 기준으로 정렬

 -U

 

 정렬하지 않음

 -v

 

 

 -w

 --width=COLS

 현재 값 대신 스크린 넓이(COLS)를 지정

 -x

 

 열의 기준 대신 라인의 기준으로 출력

 -X

 

 목록의 확장자를 기준으로 알파벳 순으로 정렬

 -Z

 --context

 각 파일의 SELinux 보안 컨텍스트를 출력

 -1

 

 줄 별로 하나의 파일을 출력

 

 --help

 사용법을 출력

 

 --version

 버전 정보를 출력



※ 사용예

ls -al

: 현재 디렉토리 내의 모든 내용을 출력하는데, 출력 형식은 리스트 형식으로 출력한다.


ls -alt

: 현재 디렉토리 내의 모든 내용을 출력하고 출력 형식은 리스트 형식으로 출력하는데, 시간 순으로 정렬


ls -l --color=never

: 리스트 형식으로 출력하고 파일의 타입을 색으로 구분하지 않음


ls --tabsize=SIZE

: 아래를 보면 알겠지만 탭 사이즈를 변경해가며 출력


ls -m

: 각 파일이나 디렉토리의 간격을 콤마로 구분





※ 요약
VMware에 CentOS7 버전을 설치하는 방법이다. 
CentOS7 설치 방법이기는 하지만 그 하위 버전이나 후에 나올 최신 버전도 큰 무리가 없을 것이다.
또 다른 리눅스 배포판(Ubuntu, Fedora, Suse)들도 크게 다르지 않으므로 참고하면 도움이 될 것이다.

※ 설치 전 준비
VMware Workstation(유료)이나 VMware Player(무료)이 필요하고 설치할 리눅스 배포판 *.iso 파일이 필요하다.

먼저 *.iso 파일을 구하기 위해 CentOS사이트로 이동하여 Get CentOS Now 버튼을 클릭한다.


필자는 최신 버전이 필요하여 DVD ISO 항목을 클릭하였지만, 다른 하위 버전이 필요하다면 아래 More Download Choices 버튼을 누른다.


다운로드 받을 곳을 지정해야한다. 필자는 한국에 거주하니 kr로 검색하여 카이스트가 운영하는 FTP 서버에서 다운 받았다.


필자는 VMware가 이미 설치되어 있어서 바로 실행했다.


실행하면 아래와 같은 화면이 나오는데, Createa New Virtual Machine 버튼을 누른다.


둘 중 아무거나 해도 상관없지만 Custom이 좀 더 세밀하게 옵션을 줄 수 있으므로 Custom을 선택한다.


특별히 건드리지 않아도 된다.


위에서 다운받은 CentOS ISO를 선택하는 곳인데, 일단은 나중에 선택하도록 한다.


자신에게 맞는 운영체제를 선택해 준다.

가령 Fedora x64를 가지고 있다면, 그에 맞게 선택해주면 된다.


Virtual Machine Name은 원하는 이름이나 알아보기 쉬운 이름으로 수정해주는게 좋다.

또 필요하다면 경로도 변경해준다.


자신의 CPU에 맞게 수정해준다.

잘 모르겠으면 아래와 같이 해주면 된다.


메모리도 알맞게 변경해준다. 필자는 리눅스 상에서 큰 작업은 하지 않을 것이므로 2GB로 설정했다.


특별히 건드릴 필요가 없다.


Next 버튼을 눌러 진행한다.


Next 버튼을 눌러 진행한다.


Next 버튼을 눌러 진행한다.


여기도 특별히 건드릴 필요가 없지만 필자는 취향에 맞게 조금 변경하였다.

아무튼 대충 읽어보면 디스크의 사이즈와 설정한 디스크 용량만큼을 미리 할당할 것인지, 

또 가상디스크의 파일을 하나로 할지 여러 개로 분할해 놓을지를 설정하는 것이다.


Next 버튼을 눌러 진행한다.


Customize Hardware...버튼을 누른다.


필요없거나 필요한 하드웨어를 추가/제거 해준다.

필자는 리눅스에서 프린터는 필요없으므로 제거해줬다.

또 독자 중에 가상 하드디스크를 더 추가하려면 여기서 해주면 된다.


버튼을 눌러 세팅을 마무리 한다.


Edit virtual machine settings버튼을 누른다.


CD/DVD에 위에서 다운받은 CentOS ISO파일의 경로를 지정해준다.


Power on this virtual machine을 누른다!

이제 가상 머신이 부팅될 것이다.


아마 아래와 같은 화면을 볼 수 있을 것이다.

당연히 Install CentOS 7을 선택하여 설치를 진행한다.


아래와 같은 화면이 주르륵 지나간다.


사용할 언어를 선택하는 곳이다.

필자는 리눅스에서 한글은 사용할 일이 없어서 기본값인 영어를 선택하였다.

스크롤을 아래로 내리면 한국어도 있다.


설치 개요다. 필요한 항목들을 선택하여 설정해주면 되는데, 

필자는 4가지 항목 Date & Time, Software Selection, Installation Destination, Network & Host name을 설정했다.

잘 모르겠으면 필자처럼 4가지정도만 설정해주면 된다.


먼저 Date & Time이다.

한국에 거주하므로 아래와 같이 설정해준다.


Software Selection부분이다. 필자는 리눅스 설치 목적이 개발이므로 아래와 같이 했다.

본인의 목적에 맞게 선택해주면 되는데, 잘 모르겠으면 대충 해줘도 상관없다. 번거롭지만 나중에 따로 추가설치할 수 있기 때문이다.


Installation Destination부분이다. 학생 때는 검색해가며 최적으로 세팅해줬지만 요즘은 자동으로 하면 알아서 해준다.

잘 모르겠으면 아래처럼 Automatically configure partitioning을 선택하여 자동 세팅하게 한다.


Network & Host name부분이다. 리눅스에서 인터넷을 하고 싶다면 빨간 네모 부분을 On으로 바꿔준다.


아래와 같이 4가지 항목에 대해 설정을 마쳤다.

Begin Installation 버튼을 누르면 이제 설치가 진행된다.


설치가 진행되고 있는 화면이다.

설치를 하면서 root 패스워드와 유저를 생성하라고 표시해주는데, 각각 버튼을 눌러 진행해주면 된다.


root 패스워드 설정화면이다. 패스워드를 넣고 Done을 누른다.


유져 생성 부분이다.

리눅스는 보안 때문에 root 계정으로 로그인 할 수 없다.(설정을 바꿔줘야 root로 로그인 가능)

고로 설치시에 다른 계정을 만들어 로그인 할 수 있도록 하는 것이다.


root 패스워드와 유저 생성을 하고 왔는데도 아직 설치 중이다.


설치 완료를 기다리며 잠시 디아블로를...ㅋㅋ


아래와 같이 Reboot 버튼이 나타났다면 설치가 완료된 것이다.

Reboot 버튼을 눌러 재부팅한다.


부팅 후 아까 생성한 계정이 보인다.


로그인하면 무슨 설정창이 또 나타나는데 필요하다면 해주면 되고, 안해줘도 된다.

설정을 마무리 하면 아래와 같은 창이 보인다.

Start using CentOS Linux 버튼을 눌르면 이제 사용이 가능하다!


필자는 개발이 목적이므로 gcc 버전부터 확인해봤다.

버전이 4.8.3-9인데, 4.8.x대 버전은 C++11까지 지원하는 버전으로 알고 있다.

아무튼 이것으로 VMware에 리눅스 설치 방법을 마치겠다.



저번주에는 선릉 스시 마이우를 갔었는데, 오늘은 나무 이자카야에 갔습니다.

블로그 후기들을 볼때마다 메뉴가 달라서 같은 이름의 식당이 여러 개인가 했는데, 시간대마다 바뀌는거더군요..

암튼 돈까스가 먹고 싶어서 갔는데, 초밥은 스시 마이우가 더 낫습니다.



아래는 점심에 먹을 수 있는 메뉴인 돈가츠 세트(8,500원)입니다.

구성은 돈가츠 + 초밥 3p + 미니 우동으로 되어있는데 양이 적어요 ㅋㅋ

돈까스는 맛있어요~



아래는 초밥 세트B(10,000원)이고 구성은 초밥 10p + 미니 우동입니다.





아래 메뉴는 저녁 특선 메뉴에요 ㅋㅋ 그래서 저희가 먹은 메뉴는 없네요.


위치는 선릉역에서 7번 출구로 나오면 됩니다.


선릉에 위치한 교동짬뽕입니다!

전국 5대라고 하는데, 5대는 아니고 한 100대는 되지 않을까 싶네요 ㅠ.ㅠ

MS에서 주최한 테크데이즈 토요세미나 시리즈 끝나고 회사 선임이랑 갔습니다ㅎㅎ






사천탕수육입니다.


탕수육은 찹쌀 탕수육인데 맛있어요 ㅎㅎ

요즘 찹쌀 탕수육은 상향평준되서 어딜가도 이 정도 하지 않나 싶네요.


아래는 교동짬뽕 메뉴와 가격입니다.


위치입니다! 선릉역 5번 출구에서 멀지 않아요.





 

※ 요약
sin과 cos을 이용하여 직접 원을 그리는 방법이다.
직접 원을 그리므로 원하는 각도 만큼만 그릴수 있는데, 필자는 이를 신입때 만든 각도기 프로그램에 접목시켰다.
지금 이 예제는 Win32 API + OpenGL인데, MFC에서 GDI를 이용한 예제도 올리도록 하겠다.
또 타원 그리기 예제도 올릴것이고, 그 후에는 임의의 점이 원이나 타원에 속해 있는지 판별하는 예제도 올리도록 하겠다.
또 그후에는 타원이나 사각형 등의 도형을 직접 회전하는 예제도 올리겠다.

※ 특징
math.h에 있는 sin과 cos을 이용하여 원을 그린다.


DrawCircle2D가 원을 그리는 함수다. 배포하고 있는 프로그램이라 소스 코드의 일부만 올렸는데, 

MFC 예제를 올릴때는 전체 프로젝트를 올리겠다.

함수의 각 인자를 순서대로 설명하자면, 

원의 중심점, 시작 각도, 끝 각도, 원의 반경(반지름)이다.

각 인자의 용도를 알았으니 for문과 sin, cos을 이용하면 당장 MFC에서도 원을 그릴수 있을 것이다.

참고로 POINT는 float x, y가 멤버로 있는 구조체다.

또 아래 함수는 클래스의 멤버 함수이지만 C언어 함수로도 사용할 수 있어서 제목을 C/C++로 하였다.


아래는 위의 함수로 직접 그린 원이다.


아래는 다음 예제로 올릴 타원 그리기와 도형 회전이다.


 

※ 요약
std::forward_list의 주요 함수 목록이다.
std::forward_list의 경우는 C++11부터 추가된 컨테이너이고, 각 멤버들의 사용법은 다음 게시물부터 올리도록 하겠다.

- C++03

- C++11

 분 류

 멤버 함수

 설 명

Iterators

begin

 첫 번째 원소를 가리키는 반복자를 리턴한다.

cbegin

 첫 번째 원소를 가리키는 상수 반복자를 리턴한다.

end

 마지막 원소를 가리키는 반복자를 리턴한다.

cend

 마지막 원소를 가리키는 상수 반복자를 리턴한다.

rbegin

 제공 안 함

crbegin

 제공 안 함

rend

 제공 안 함

crend

 제공 안 함

Element access

at

 제공 안 함

operator[]

 제공 안 함

front

 첫 번째 원소의 참조를 리턴한다.

back

 제공 안 함

Capacity

empty

 원소 존재 유무를 체크한다. 아무것도 없으면 true, 있으면 false를 리턴한다.

size

 제공 안 함

max_size

 담을 수 있는 원소의 최대 개수를 리턴한다.

resize

 list의 크기를 변경하고 default 값이나 임의 값으로 초기화한다.

capacity

 제공 안 함

reserve

 제공 안 함

shrink_to_fit

 제공 안 함

Modifiers

clear

 list의 모든 원소를 제거한다.

assign

 기존 원소들은 모두 제거 후, 임의 값으로 n개의 원소를 할당한다.

insert_after

 지정된 위치에 뒤에 값을 삽입한다.

emplace_after

 원소 삽입시 컨테이너 내부에서 생성 후 지정된 위치에 뒤에 값을 삽입한다.

emplace_hint

 제공 안 함

erase_after

 지정된 위치 다음이나 지정된 위치 이후의 지정한 범위의 모든 데이터를 지운다.

push_front

 list의 처음에 원소를 추가한다.

emplace_front

 원소 삽입시 컨테이너 내부에서 생성 후 컨테이너의 처음에 원소를 추가한다.

pop_front

 list의 처음 원소를 제거한다.

push_back

 제공 안 함

emplace_back

 제공 안 함

pop_back

 제공 안 함

swap

 list1.swap( list2 )일때 list1과 list2를 swap한다.

List operations

merge

 list1.merge( list2 )일때 list1에 list2를 정렬하면서 병합한다.

splice

 2개의 list 중 인자로 주어지는 list의 지정된 원소들을 대상 list로 이동시킨다.

remove

 인자로 받은 값으로 받은 값과 같은 값의 원소를 모두 제거한다.

remove_if

 함수객체의 조건을 만족하는 원소를 모두 제거한다.

reverse

 list에 담긴 원소의 순서를 역순으로 바꾼다.

unique

 list에 담긴 원소 중 연속적으로 중복된 값이 배치된 원소를 제거한다.

sort

 list에 담긴 원소를 정렬한다. 예 : list.sort( std::greater<int>() )

Lookup

count

 제공 안 함

find

 제공 안 함

lower_bound

 제공 안 함

upper_bound

 제공 안 함

equal_range

 제공 안 함

Observers

key_comp

 제공 안 함

value_comp

 제공 안 함

hash_function

 제공 안 함

key_eq

 제공 안 함

Allocator

get_allocator

 list의 allocator 객체를 반환한다.




'STL - Containers > forward_list' 카테고리의 다른 글

[C++11 STL] std::forward_list 개요  (0) 2015.11.17

 

※ 참조 변수 요약
필자가 신입 때 부터 정말 많이 사용해온 참조 변수는 C++에서 사용 가능한 문법이다.(C언어는 안됨)
참조 변수란, 다른 변수를 참조하는 변수로써 주로 C언어의 포인터와 비교를 많이 하고는 한다. 주로 전달 인자를 함수에 넘길때 사용되며, 구조체나 클래스와 같이 덩치가 큰 타입에 사용하여 속도를 높인다. C언어에서는 문자열이나 구조체 등과 같이 덩치가 큰 타입을 포인터로 넘기지만 C++에서는 포인터 대신에 주로 참조를 사용한다. 
문법은 다음 포스팅부터 알아보도록 하겠다.

※ 참조 변수 특징
- 주 용도는 함수의 전달 인자(매개변수)에 사용한다.
- 구조체나 클래스와 같이 덩치가 큰 타입에 사용하기 적합하다.(덩치가 큰 타입을 복사해서 넘길 경우 느리기 때문)
- 참조 변수를 전달 인자로 사용하면 포인터처럼 복사본이 아닌 원본 데이터를 가지고 작업할 수 있다. (Call by reference)

※ 참조 변수와 포인터
- 포인터와 달리 참조자에는 NULL 참조라는 개념이 없다, 고로 선언될 때 반드시 초기화 해줘야 한다.
- 포인터는 중간에 가리키는 대상을 바꿀 수 있지만, 참조자는 const와 같아서 중간에 대상을 바꿀 수 없다.
- 참조자는 반드시 초기화 해줘야 하기 때문에 포인터처럼 사용하기 전, 유효성 검사를 할 필요가 없기에 더 효율적이다.

※ 참조 변수를 사용해야 하는 경우

- 참고하고자 하는 어떤 객체를 미리 알고 있을때

- 중간에 참조하는 대상을 바꿀 일이 결코 없을때

- 포인터를 사용하면 문법상 의미가 어색해지는 연산자를 구현할때(필자는 주로 STL 컨테이너를 사용할때임)


아래는 필자가 15년 09월 쯤에 제작한 클래스다.

operator>>들의 인자를 보면 죄다 참조 변수로 되어 있는데, 이처럼 참조는 클래스를 설계할 때도 필수적으로 사용된다.


전 직장 동료들과 매콤매콤한 걸 먹었더니 후식으로 달달한게 땡겨 근처에 오 쉐이크에 갔습니다.

배 불렀음에도 불구하고 잘 들어가더군요.. 가장 맛있었던건 피넛 버터 아이스브레드가 가장 맛있었습니다.

근데 너무 달아서 그런지 금방 물리는 경향이 있네요.


쉐이크 위에 휘핑 크림을 올린 오레오 더블 악마입니다.

컵 테두리에는 누텔라를 바른거 같네요. 엄청 달아요!


아래는 달마시안 미니 롤이구요.

크림이 많은 편이라 달아요!


이게 피넛 버터 아이스브레드입니다.

다음에 오게되면 이건 또 먹을거 같네요.


마지막으로 스트로베리 쉐잌ㅋㅋ

이것도 또 먹을거 같아요.



강남역 1번 출구나 3번 출구에서 가면 되구요, 지하에 있습니다.


강남 고속버스터미널역에 있는 모스버거에 다녀왔습니다.

고터라 확실히 사람이 엄청 많더군요, 주문은 데리야끼 치킨 버거와 모스치즈 버거를 주문했습니다.

맛은 그냥저냥 평범하네요 ㅎㅎ





약속이 있어서 선릉역에 갔고 때마침 점심시간이라 스시 마이우에 갔습니다.

급하게 찾아간 집인데 생각보다 괜찮아서 다음에 또 방문할 생각입니다.

저희가 먹은 메뉴는 점심 특선인 마이우B 정식인데, B정식은 초밥 12p+미니우동으로 구성된 메뉴입니다.


아래는 회전 초밥들입니다. 위 사진에서처럼 접시 색으로 가격이 나뉩니다.


아래는 미니우동입니다.


마이우 B정식 입니다.


정식 이외에 추가로 먹은 연어 치즈 초밥입니다.


역시 추가로 먹은 한우 육사시미 초밥입니다만.. 저는 별로더라구요 ㅠ.ㅠ

위치는 선릉역 5번 출구에서 가깝습니다.


+ Recent posts