처음으로 소개할 리눅스 명령은 현재 디렉토리를 표시해 주는 ‘pwd’ 명령어이다. 별다른 옵션이 없는 간단한 명령어이다. 보통 쉘프롬프트 왼편에 디렉토리가 표시되므로 잘 사용하지는 않는 명령이다.



그리고 ‘ls’명령은 디렉토리의 내용을 보여주는 명령어이다. (리눅스 명령어는 보통 소문자이다.) ‘ls’는 가장 많이 사용되는 명령어들 중 하나이다.


[표 1] ls 명령의 용례들

ls

파일과 디렉토리 리스트 (항목만, 숨김파일 표시 안 함)

리눅스에서 숨김 파일은 점(.)으로 시작됨 )

ls --help

도움말 (자세한 도움말을 위해서는 man ls 를 이용)

ls - a

숨김 파일까지 모두 보여줌.

ls -l

리스트 형식으로 보여줌 (숨김파일 표시 안 함)

ls -al

리스트 형식으로 모든 파일을 보여줌. (주로 쓰임. ll -엘엘-과 동일)

ls -lh

파일 크기를 K, M, G 등을 써서 줄여서 보여줌.

ls -alh

파일 크기를 K, M, G 등을 써서 줄여서 보여주되 숨김 파일까지 모두 표시

ls [option] [file]

특정 파일만 보여줌.

ls e*

e로 시작하는 모든 파일/디렉토리를 보여줌

ls e?o*

첫째 문자는 e, 세 번째 글자는 o인 모든 파일/디렉토리를 보여줌


‘ls -l’ 명령으로 보여지는 리스트에서 첫 글자가  -로 시작하면 파일이고 d로 시작하면 디렉토리이다. 보통 GUI 환경에서 디렉토리는 다른 색으로 표시된다.


 파일/디렉토리 이름을 터미럴에서 입력할 때 시작하는 한두 문자를 입력한 후 [TAB]을 누르면 나머지가 자동 입력된다. 특히 긴 이름을 입력할 때 이 기능을 이용하면 끝까지 타이핑 할 필요가 없어서 무척 편리하다.


만약 현재 디렉토리의 어떤 파일을 실행하고 싶다면 파일명 앞에 ./ 을 붙여야 한다. 예를 들어서 현재 디렉토리에 컴파일된 실행파일 ‘test’ 가 있다면 이를 실행하기 위해서는


./test


라고 입력해야 한다. 그냥 test 라고 하면 파일을 찾지 못하므로 반드시 앞에 현재 디렉토리를 뜻하는 ‘./’ 를 붙여야 한다.




Posted by 살레시오
,

 다음 표는 산술/논리 연산에 관련된 내장 함수들이다.


[표 1] 산술/논리 연산에 관련된 내장 함수들

hex(n)

oct(n)

bin(n)

정수 n의 16진수 값을 구해서 ‘문자열’로 반환한다.

정수 n의 8진수 값을 구해서 ‘문자열’로 반환한다.

정수 n의 2진수 값을 구해서 ‘문자열’로 반환한다.

abs(n)

절대값을 구한다. 복소수의 경우 크기를 구한다.

pow(x,y[,z])

거듭제곱을 구한다. pow(x,y)은 x**y 와 같다.

divmod(a,b)

a를 b로 나눈 (몫, 나머지)를 구한다. 튜플 반환.

all(iterable)

any(iterable)

iterable 의 모든 요소가 True 일 경우 True를 반환.

iterable 의 하나 이상의  요소가 True 일 경우 True를 반환.

max(iterable)

max(arg1, arg2, …)

최대값을 구한다.

min(iterable)

min(arg1, arg2, …)

최소값을 구한다.

round()

반올림을 한다.


hex(), oct(), bin() 함수는 각각 ‘0x’, ‘0o’, ‘0b’ 로 시작하는 ‘문자열’로 결과를 반한한다. 이 문자열을 파이썬 값으로 변환하려면 eval()함수를 이용하면 된다.



Posted by 살레시오
,

 다음은 열거형(sequence)의 정보를 얻는 내장 함수들이다.


[표 1] 열거형의 정보를 얻는 내장 함수들

함수명

기능

len(seq)

시퀀스형을 받아서 그 길이를 반환한다.

iter(obj [,sentinel] )

next(iterator)

객체의 이터레이터(iterator)를 반환한다.

이터레이터의 현재 요소를 반환하고 포인터를 하나 넘긴다.

enumerate(iterable, start=0)

이터러블에서 enumerate 형을 반환한다.

sorted(iterable[,key][,reverse])

정렬된 *리스트*를 반환

reversed(seq)

역순으로 된 *iterator*를 반환한다.

filter(func, iterable)

iterable의 각 요소 중 func()의 반환값이 참인 것만을 묶어서 이터레이터로 반환.

map(func, iterable)

iterable의 각 요소를 func()의 반환값으로 매핑해서  이터레이터로 반환.


iter()은 seq형으로부터 이터레이터를 반환하는 함수이다. next()는 이터레이터의 현재 요소를 반환하고 이터레이터의 포인터를 그 다음 요소로 넘기는 함수이다.


enumerate()은 시퀀스로부터 enumarate형을 반환한다. 이것은 인덱스와 해당 값의 튜플을 반환하는 이터레이터를 가진다.


>>> seasons = ['spring','summer','fall','winter']
>>> list(enumerate(seasons))
[(0, 'spring'), (1, 'summer'), (2, 'fall'), (3, 'winter')]
>>> list(enumerate(seasons, start=1))
[(1, 'spring'), (2, 'summer'), (3, 'fall'), (4, 'winter')]


보통은 for 문과 같이 사용되어서 반복문 안에서 이터러블의 요소값 뿐만 아니라 그 인덱스 정보도 필요할 경우 편리하게 사용할 수 있다.


>>> seasons=['spring','summer','fall','winter']
>>> for i,v in enumerate(seasons):
 …:    print("%s:%s"%(i,v))
  
0:spring
1:summer
2:fall
3:winter


filter(func, iterable)는 함수와 이터러블을 입력으로 받아서 이터러블의 요소가 하나씩 함수에 인수로 전달될 때, 참을 반환시키는 것만을 따로 모아서 이터레이터로 반환하는 함수이다.


 다음 예를 살펴보자.


def positive(l):
   result = []
   for i in l:
       if i > 0:
     result.append(i)
   return result

>>> print(positive([1,-3,2,0,-5,6]))
[1, 2, 6]


위의 positive함수는 리스트를 입력값으로 받아서 각각의 요소를 판별해 양수값만 따로 리스트에 모아 그 결과값을 돌려주는 함수이다.


 filter()함수를 이용하면 아래와 같이 똑같은 일을 동일하게 구현할 수 있다.


>>> def positive(x):
…      return x > 0
>>> print(list(filter(positive, [1,-3,2,0,-5,6])))
[1, 2, 6]


filter() 함수는 첫 번째 인수로 함수명을, 두 번째 인수로는 그 함수에 차례로 들어갈 이터러블(리스트, 터플, 문자열 등)을 받는다. filter 함수는 두 번째 인수인 이터러블의 각 요소들이 함수에 들어갔을 때 리턴값이 참인 것만을 이터레이터로 묶어서 돌려준다. 위의 예에서는 1, 2, 6 만이 양수로 x > 0 이라는 문장이 참이 되므로 [1, 2, 6]이라는 결과 값을 돌려주게 된다.


익명함수(lambda)를 쓰면 더욱 간편하게 쓸 수 있다.


>>> list(filter(lambda x: x > 0, [1,-3,2,0,-5,6]))
[1, 2, 6]


 filter()와 유사한 map() 함수가 있다. 이것은 함수와 이터러블을 입력으로 받아서 각각의 요소가 함수의 입력으로 들어간 다음 나오는 출력값을 묶어서 이터레이터로 돌려주는 함수이다. 만약 어떠 리스트의 모든 요소의 제곱값을 갖는 새로운 리스트를 만들고 싶다면 다음과 같이 하면 된다.


>>> a = [2, 3, 4, 7, 8, 10]
>>> a2 = list(map(lambda x:x**2, a))
[4,9,16,49,64,100]


파이썬 2.7은 filter()와 map()의 결과가 리스트이므로 위 예에서 list함수를 이용하여 리스트로 변환하지 않아도 된다. 파이썬 3.x에서는 이들 함수의 반환값이 리스트가 아닌 반복형(iterable)이므로 이것을 리스트로 만들기 위해서는 list()함수를 명시적으로 사용해야 한다.



Posted by 살레시오
,