기본적으로 파일시스템은 프로그램 자체에 if문이나 case문으로 인자 ($1~10) 값을 처리하는 자동완성을 콘솔 밖에서 bash가 자동으로 잡아내지는 못한다.

그와 같은 응용 프로그램에 사용되는 자동완성 기능은 파일시스템의 '/etc/bash_completion'이 담당 하며 '/etc/bash_completion.d/~' 폴더를 들여다 보면 해당 프로그램에 대한 자동완성 기능이 있는 쉘 구축 파일들을 볼 수가 있다.

해당 파일들은 '/etc/bash_completion'가 처리 할 수 있는 함수들이 있으며 소크 코드의 형태를 이해하면 여러분도 직접 만든 응용 프로그램에 대한 자동완성 인자 값 추가 기능을 파일 시스템에 도입 할 수가 있다.

자 그렇다면 쇠뿔도 단 김에 빼라고 곧바로 소스코딩에 들어가 보자.

먼저 실행 가능한 $PATH에 실행 가능한 프로그램이 있어야 한다. 

그래서 간단한 shell 프로그램을 설계해 보자.

Source_File name : friend.sh

[Download]  

Type : bash

클립보드로 복사 → (본문 클릭)

무제



위는 인자 쉘에서 인자값을 인지하여 출력하는 간단한 대화형 출력 프로그램 이다.

완성 되었으면 간단하게 테스트를 해보자.

-- 터미널 텍스트 박스 (Terminal text box) --

<Drag와 복사가 가능합니다.>

// 파일명을 'friend'로 바꾼다음 실행을 가능케 속성을 추가한다.


user@user-test:~$ mv friend.sh frined && chmod +x friend


user@user-test:~$  ./friend hi

hello


user@user-test:~$  ./friend bye

see you tomorrow~!


// 되었으면 $PATH로 복사 한다.


user@user-test:~$  sudo cp friend /usr/bin/


// 테스트 해본다.


user@user-test:~$ friend

what?


자 이제 간단한 인자값 인지 프로그램을 만들었으니 이제는 이 프로그램을 자동 완성 시켜주는 소스를 설계해 보자.


Source_File name :friend.bash_completion

[Download]

Type : bash

클립보드로 복사 → (본문 클릭)

무제


설계가 끝났으면 만든 파일을 '/etc/bash_completion.d' 로 복사하자.

-- 터미널 텍스트 박스 (Terminal text box) --

<Drag와 복사가 가능합니다.>


user@user-test:~$ sudo cp friend.bash_completion /etc/bash_completion.d



// 그리고 테스트 해보자.


// '/etc/bash_completion' 를 호출해주는 '~/.bashrc'를 로딩 한다.



user@user-test:~$ source ~/.bashrc



user@user-test:~$ friend '⇔'(탭키 연타)


hi    bye



> 자동 완성이 성공했다.



그리고 중요한 friend.bash_completion 파일의 소스코드 구조는 다음 그림과 같다. 



  

도움이 되셨다면 '♡' 버튼을 꼭눌러 주시면 감사 하겠습니다.


그리고 글에 부족한 점이 있거나 틀린점, 혹은 틀린 부분이 있는 것 같다면 꼭 댓글로 알려 주시면 감사 하겠습니다.




awk 프로그래밍 가이드1 [링크] 에서는 awk를 활용해 텍스트 파일의 원하는 열만 출력하는 것을 배웠다


이번 가이드2 에서는 awk를 활용해 원하는 텍스트 파일의 첫번째 행에 원하는 열을 추가 하여 출력 하는 것을 배워 볼 것이다.

먼저 예제 파일의 구조는 다음과 같다.

file

1 jaen 24 male
2 lesser 32 female
3 kerten 15 male




본격적으로 위 파일에 수식어가 담긴 행을 입혀 출력해 보자.

-- 터미널 텍스트 박스 (Terminal text box) --

<Drag와 복사가 가능합니다.>

// 주석


root@test:~$ awk 'BEGIN{printf "No\tName\tOld\tGender\n"} {print}' file


No Name Old Gender
1    jaen     24 male
2    lesser   32 female
3    kerten  15 male


->위와 같이 출력 된다.





간단한 원리는 다음 그림과 같다.



다른 파일(file2)로의 저장 응용은 다음과 같다.

-- 터미널 텍스트 박스 (Terminal text box) --

<Drag와 복사가 가능합니다.>


root@test:~$ awk 'BEGIN{printf "No\tName\tOld\tGender\n"} {print}' file > file2





다음 가이드3에서는 awk 프로그래밍에 대한 기본적인 언어 습득과 awk 스크립트를 내장하고 있는 파일을 호출하여 다루는 방법에 대하여 포스팅할 예정이다.


도움이 되셨다면 '♡' 버튼을 꼭눌러 주시면 감사 하겠습니다.






awk는 기능이 무척 다양하기에 쉘에서 동작함에도 불구하고 'awk는 프로그래밍 이다!'라고 말하는 전문가 들이 많다.

그래서 이번강의 부터 재미있는 awk 프로그램을 활용하는 방법들에 대해 차근차근 알아 보도록 하자.

1. awk로 텍스트 파일의 원하는 열만 출력 하기

우선 텍스트 파일은 이렇게 구성 되어 있다고 가정하자.


file.txt

fire born ask
letter land smile



해당 파일의 3번째 열을 출력한다.

-- 터미널 텍스트 박스 (Terminal text box) --

<Drag와 복사가 가능합니다.>


root@test:~$ awk '{print $3}' file.txt


ask
 smile

-> 파일의 첫번째 줄 3번째열에 해당 되는 'ask' 단어가 출력 되었다.





응용하여 행과 열을 동시에 출력해 보자.

-- 터미널 텍스트 박스 (Terminal text box) --

<Drag와 복사가 가능합니다.>

// 주석


root@test:~$ head -2 file.txt |tail -1 |awk '{print $2}'


land

-> 파일의 두번째 행의 2번째 열인 'head'를 출력한다.




 

도움이 되셨다면 '♡' 버튼을 꼭눌러 주시면 감사 하겠습니다.



[Name]   



ldic



[ Section ]   


utils


[ Version - 날짜]


0.1-2 (Thu, 03 Nov 2016 17:57:31 +0900 )


[ 지원 아키텍쳐 ]   


x86_64, i386, armhf, arm64


[ 지원 운영체제 ]   


Linux_debian_ubuntu : xenial, wily, vivid, trusty, preceis, linux mint.....


[ 빌드 & 컴파일러 ]


bash


[ 의존 패키지 ]


language-pack-ko, fonts-nanum



[ 설명 ]   


리눅스를 위한 콘솔 터미널에서 작동하는 사전 입니다.


[ 특징 및 변경 사항 : Changes log ]   


 * First release.   


[ 개발자 ]


C O S M O S project.


site: http://cosmosproject2015.tistory.com


e-mail : cosmosproject15@gmail.com


[ 설치 방법 ]   


-- 터미널 텍스트 박스 (Terminal text box) --

<Drag와 복사가 가능합니다.>



root@test:~$ sudo apt-add-repository ppa:cosmosp2016/apps


root@test:~$ sudo apt-get update

root@test:~$ sudo apt install ldic




[실행]   


-- 터미널 텍스트 박스 (Terminal text box) --

<Drag와 복사가 가능합니다.>


root@test:~$ ldic







[사용 방법]


-- 터미널 텍스트 박스 (Terminal text box) --

<Drag와 복사가 가능합니다.>

root@test:~$ ldic





[ 소스 다운로드 ]  


준비중

대부분 파이썬(python)은 소스코드 그대로를 실행해서 사용하는 것이 일반적이다.

그렇다면 가장 중요하게 생각해야 할 점은 이썬을 굳이 컴파일 해야 하는 이유는 무엇인가? 일 것이다.

C언어의 경우는 소스코드를 해당 시스템의 바이너리로 변환해주는 컴파일 과정을 반드시 거쳐야만 실행이 가능한 구조를 가지고 있다.

하지만 파이썬의 경우에는 시스템에 파이썬 라이브러리가 깔려 있다면 자체 인터프리터 프로세스 기능을 활용하여 소스코드 그 자체로써의 실행이 가능해 진다.

물론 이 과정에서 시스템은 이미 해당 바이너리에 일치하는 파이썬 라이브러리 모듈을 가지고 있기 때문에 바이너리가 틀려도 얼마든지 실행될수 있다는 장점을 가지고 있다.

하지만 프로그래밍을 한 번 이상 해 본 사람은 뭔가 애매모호한 파이썬의 결점에 대해서 생각해 볼 수 밖에 없어 진다.

바로 해당 시스템에 소스코딩에 사용된 임포트(IMPORT) 라이브러리와나 기존의 베이스 기반은 파이썬 모듈이 없다면...

이것은 매우 중요한 문제이다.

예를 들어 기초 파일시스템을 설계 할때나 즉 파이썬이 설치 되지 않은 상태에서는 해당 소스코드 파일이 실행이 불가능 하기 때문이다.

즉 그 자체로서는 소프트웨어가 될수 없는 반드시 부모 프로세스인 파이썬이 있어야만 실행이 되는 비운의 운명인 것이다.

일부 의견들 중에는 파이썬을 컴파일 하는 이유가 '암호화'의 목적이 있다고 하는 경우가 있는데 그것은 매우 비전문적인 의견 이라고도 볼 수가 있다.

컴파일의 목적은 암호화가 목적이 아니라 독자적인 아키텍쳐로써의 실행을 가능케 하기 위한 바이너리화를 그 목적으로 두고 있으며 컴파일된 파일은 아스키 문자와 16진수로의 리딩이 가능하다. 뿐만 아니라 C언어나 파이썬은 디컴파일러를 수행할수 있는 소프트웨어가 존재한다.

또 파이썬의 컴파일의 장점을 또 한가지 예를 든다면 예를 들어 똑같은 GTK+(Gimp tool kit for gui)를 수행하는 각각의 컴파일 된 C언어와 파이썬 파일을 보았을때 용량에서 부터 큰 차이를 가진다.

즉 파이썬이 C언어 보다 컴파일된 크기가 훨씬 가볍다.


그렇다면 다음 장에서 부터 직접 적으로 파이썬을 컴파일 해보도록 하자.


도움이 되셨다면 '♡' 버튼을 꼭눌러 주시면 감사 하겠습니다.


BASH 쉘 프로그래밍으로 인공지능 '가위, 바위, 보' 게임을 만들어 보자.


리눅스에서 bash는 윈도우와 비교한다면 autobat 과 비슷하다고 볼수 있다 라는 것은... 훼이크고

그렇다고 말하는 사람들이 있지만 그것과는 사실 게임이 되지 않는다.


즉 bash 가 더욱 강력하고 하나의 소프트웨어를 만들 정도로 어마어마 하다 이거지~


bash는 쉘스크립트로 불리움으로써 유닉스 체계를 전부 응용하여 다룰수 있는 전역 프로그래밍 이라고 말할수 있다.


원래는 그낭 sh 로 불리우지만 기존의 sh에서 여러 기능이 업그레이드 되면서 bash 가 탄생한 것이다.

뿐만 아니라 bash가 이전 sh를 기반으로 하지만 유닉스 시스템 체계에서 이 둘은 개별적으로 존재 한다.


또 bash의 스크립트 방식으로 프로그래밍을 짰을 경우 { #!/bin/sh } 모듈을 로드해서 실행 할 경우 정상적으로 동작 하지 않을 수 있다.

그렇기에 현재로써는 주로 개발자들은 bash { #!/bin/bash }를 채택해서 사용 하는 경우가 일반적이다.


자 그렇다면 bash shell script programming을 이용해서 심플한 인공지능 형태의 '가위, 바위, 보' 게임을 만들어 보자.

여기서 중점으로 다뤄야하는 소스 형태는 크게 다섯 가지로 분류 된다.


첫째, 변수 지정


pn=0
yn=0


∴ 위는 승리 횟수 카운트 저장을 위한 숫자 0부터 시작하는 기본적은 변수 적용이다.


둘째, 함수 지정

rpsai() {

if [ $pc = 1 ]; then
    echo "
저는 가위를 냈습니다."
    if [ $rps = 1 ]; then
        echo "
        우린 비겼습니다."
        echo "
당신의 점수는 $yn 저의 점수는 $pn 입니다."
    fi
fi

}  


∴ rpsai 란 이름으로 인공지능 설정을 위한 if문을 응용한 전체 함수를 지정한다.


셋째, if문

if [ $rps = 1 ]; then
        echo "
당신은 1 (가위)를 내셨습니다."

# 지정한 rpsai 함수를 불러온다.

        rpsai       
fi


∴ 사용자 키 입력시 발생하는 스크립트를 처리하는 if 문 설계


넷째, read문

# 사용자의 입력을 받아 들이는 read 문 변수를 지정한다.

read -n 1 -p "nput key [1(가위), 2(바위), 3(보), 0(종료)]" rps


∴ rps란 이름으로 변수를 만들어 사용자 입력을 연동 (저장) 시킨다.

사실 read문은 기존 스크립트가 아닌 유닉스 기본 프로그램 중 하나고 콘솔의 명령 체계를 이용하는 것이다.


다섯째, while문

while [ : ]; do

script

done


∴ while문은 계속해서 반복수행하는 스크립트를 구성할수 있다.


실행을 위한 전체 소스코드

Source_File name : rps

[Download]

Type : Bash

클립보드로 복사 → (본문 클릭)

무제


코딩을 완료 하고 'rps'로 저장하였으면 터미널을 열고 본격적으로 실행을 위한 준비를 한다.

-- 터미널 텍스트 박스 (Terminal text box) --

<Drag와 복사가 가능합니다.>

//  실행이 가능하겠끔 파일의 속성을 변환 시킨다.


root@test:~$ chmod +x rps


//  이제 실행을 해본다.


root@test:~$ ./rps

This program is 'Rock Paper Scissors game' by type simple AI.
How to play game?
    You need select 1(가위), 2(바위), 3(보), 0(exit)

Enter or any key to let's start!'

-> Enter키나 아무키를 눌러 게임을 시작하자.


Ok. let's start.'

Input key [1(가위), 2(바위), 3(보), 0(종료)]



위와 같이 게임이 진행 된다.



소스 다운로드 :


github : https://github.com/cosmosproject15/rps_game

-- 터미널 텍스트 박스 (Terminal text box) --

<Drag와 복사가 가능합니다.>

// git 명령으로 소스를 다운받는다.


root@test:~$ git clone https://github.com/cosmosproject15/rps_game


// 다운 받은 폴더로 진입한다.


root@test:~$ cd rps_game


// 실행한다.


root@test:~/rps_game$ ./rps

This program is 'Rock Paper Scissors game' by type simple AI.
How to play game?
    You need select 1(가위), 2(바위), 3(보), 0(exit)

Enter or any key to let's start!'



도움이 되셨다면 '♡' 버튼을 꼭눌러 주시면 감사 하겠습니다.

리눅스에서 아주 쉬운 콘솔에서의 환경변수에 대해서 알아보자.

'환경변수' 라는 것은 그럴듯하게 어렵게 들릴수도 있겠지만 매우 쉬우며 어렵지 않다.

그냥 단순하게 환경의 조건을 정하는 것이다.

어떤 운영체제를 다룬다면 그 체제의 왕은 절대적으로 여러분이다.

그렇다. 여러분이 왕이 되어서 어떤 여러가지 문자를 함축적으로 정하는 것이다.

예를 들어,

"she=my love" 라고 정하고 싶다면 보통 프로그래밍 에서는 변수를 이렇게 설정한다.

she="my love"

그냥 바로 이거다. 이것이 변수라는 것이다.

얼마나 쉬운가?

여기에서 변수에 환경이란 말을 더하여 콘솔에서의 '환경변수'를 절대적으로 정한다고 한다면 터미널에 그저 'export'를 앞에 갖다 붙히기만 하면 되는 것이다.

자 그러면 터미널에서 그것을 한번 시험해 보도록 하자.




// 환경변수를 지정한다.


root@test:~$ export she="my love"



// 지정된 환경변수를 불러온다.


root@test:~$ echo $she

my love

-> 'she'에 대한 환경변수가 출력 되는데 성공했다.





보시는 바와 같이 "my love" 라는 글이 출력 되는 것을 볼 수가 있다.

그리고 중요한 것은 그것을 불러오는 명령에서 she 앞에 '$'를 붙였다는 것이다.
'$' 문자는 유닉스 시스템의 쉘 스크립트 에서 변수를 불러오는 매우 중요한 담당 역할을 하는 문자 이다.

하지만 이와 같은 단순한 환경변수 지정은 여러분이 연 그 터미널에서만 변수로 동작하며 다른 터미널 콘솔 에서는 변수로 지정 되지 않는다.

그렇다면 변수를 계속 유지되도록 전역설정을 하려면 어떻게해야 할까?

이는 '$/HOME/.bashrc' 파일에 해당 스크립트를 입력하여 처리가 가능하다.
($HOME = /home/user)


// 먼저 만일을 대비해서 bashrc의 백업을 만든다. (물론 부팅시를 기준으로 한 백업 파일인 '$HOME/.bashrc~'가 존재 한다.) 


root@test:~$ cp ~/.bashrc ~/.bashrc.bak



// .bashrc 파일에 추가할 환경변수를 삽입 한다.


root@test:~$ echo 'export she="my love"' >> ~/.bashrc



// 재부팅 할 필요 없이 '~/.bashrc' 파일의 소스를 로드한다.


root@test:~$ source ~/.bashrc



// 지정된 환경변수를 불러온다.


root@test:~$ echo $she

my love


-> 'she'에 대한 환경변수가 출력 되는데 성공했다.




이와 같은 환경변수는 전역 bash 프로그래밍에서 활용되며 여러 소프트웨어들이 이러한 환경변수를 활용한다.
대표적으로 많이 사용되는 환경변수들은 다음과 같다.

$HOME     사용자의 홈 디렉토리
$PATH     실행 파일 경로
$LANG     환경변수에 설정된 언어
$PWD         사용자의 현재 작업중인 디렉토리
$SECONDS     해당 콘솔이 실행된 경과를 초 단위 시간으로 나타냄
$SHLVL     사용되는 쉘 레벨
$SHELL     사용되는 쉘 이름($BASH와 같게 나옴.)
$PPID     부모 프로세스의 PID
$BASH     BASH 실행 파일 경로
$BASH_VERSION     설치된 BASH 버전
$MAIL     환경변수에 설정된 메일주소
$OSTYPE     운영체제 종류
$TERM     현재 사용되는 터미널 이름
$HOSTNAME     호스트 전체 이름
$HOSTTYPE     시스템의 아키텍처
$MACHTYPE     PC의 아키텍쳐와 운영체제표시
$LOGNAME     로그인 사용자 이름
$UID         사용자 UID
$EUID     su 명령에서 사용하는 사용자의 유효 아이디 값(UID와 EUID 값은 다를 수 있음)
$USER     사용자의 이름
$HISTFILE     history파일의 경로
$DISPLAY     현재 사용되는 X 디스플레이 이름

도움이 되셨다면 '♡' 버튼을 꼭눌러 주시면 감사 하겠습니다.


이전 ls 강의  에 이어서 마지막 ls 강의 02에 들어가 보도록 하겠다.

     $ ls -pR

.:
U           bp   else  get    getter       hz   op  ro  screen.png  testd2
autopoboot  bpt  f     geted  gettter.ods  odg  r   rt  testd       uu

./testd:
bp  get  getter  r  ro  rt  screen.png  uu

./testd2:

-- '-R' 은 하부 디렉토리 전부를 동시에 같이 보여준다.

// 그렇다면 이번에는 이전에 배운 명령어와 '-R' 를 조합해 사용해 볼 것이다.

    $ ls -RalphS

.:
합계 656K
-rwxr-x---.   1 tester tester 343K  7월 30 14:43 screen.png
drwxr-x---. 131 tester tester  44K  8월  5 23:52 ../
-rwxr-x---.   1 tester tester  17K  6월 12 19:49 geted
-rwxr-x---.   1 tester tester 9.6K  6월 12 16:44 gettter.ods
drwxr-x---.   5 tester tester 4.0K  8월  5 19:23 ./
drwxrwxr-x.   2 tester tester 4.0K  8월  5 19:06 .hidf/
drwxrwxr-x.   2 tester tester 4.0K  8월  5 23:52 testd/
drwxrwxr-x.   2 tester tester 4.0K  8월  5 16:30 testd2/
-rwxr-x---.   1 tester tester 3.8K  5월 21 18:25 bp
-rwxr-x---.   1 tester tester 3.0K  6월 12 22:30 hz
-rwxr-x---.   1 tester tester 1.3K  5월 29 21:37 odg
-rwxr-x---.   1 tester tester  610  5월 21 17:26 rt
-rwxr-x---.   1 tester tester  205  6월  4 21:54 autopoboot
-rwxr-x---.   1 tester tester  181  6// 먼저 grep을 ls와 같이 조합해 명령을 내려 보도록 하자.

    $ ls -lap |grep hid
 

-rw-rw-r--.   1 tester tester      2  8월  5 19:05 .hid.txt
drwxrwxr-x.   2 tester tester   4096  8월  5 19:06 .hidf/


: 'hid' 문자가 들어간 파일과 폴더를 찾아 그것만 출력해 주는 것을 볼 수 있다.

// 이젠 less를 ls와 같이 조합해 명령을 내려 보도록 하자.

     $ ls -RalphS |less

-- 다음과 페이지를 나눠 첫번째 페이지에 멈추어 같이 출력 된다.

.:
합계 656K
-rwxr-x---.   1 tester tester 343K  7월 30 14:43 screen.png
drwxr-x---. 131 tester tester  44K  8월  5 23:52 ../
-rwxr-x---.   1 tester tester  17K  6월 12 19:49 geted
-rwxr-x---.   1 tester tester 9.6K  6월 12 16:44 gettter.ods
drwxr-x---.   5 tester tester 4.0K  8월  5 19:23 ./
drwxrwxr-x.   2 tester tester 4.0K  8월  5 19:06 .hidf/
drwxrwxr-x.   2 tester tester 4.0K  8월  5 23:52 testd/
drwxrwxr-x.   2 tester tester 4.0K  8월  5 16:30 testd2/
-rwxr-x---.   1 tester tester 3.8K  5월 21 18:25 bp
-rwxr-x---.   1 tester tester 3.0K  6월 12 22:30 hz
-rwxr-x---.   1 tester tester 1.3K  5월 29 21:37 odg
-rwxr-x---.   1 tester tester  610  5월 21 17:26 rt
-rwxr-x---.   1 tester tester  205  6월  4 21:54 autopoboot
-rwxr-x---.   1 tester tester  181  6월  1 00:05 ro
-rwxr-x---.   1 tester tester  114  6월 12 19:49 get
-rwxr-x---.   1 tester tester  110  5월 21 18:42 bpt
-rwxr-x---.   1 tester tester  103  7월 16 16:23 getter
-rwxr-x---.   1 tester tester   85  5월 14 23:29 r
-rwxr-x---.   1 tester tester   72  6월 16 23:53 else
-rwxr-x---.   1 tester tester   47  5월 30 11:00 uu
-rwxr-x---.   1 tester tester   45  5월 29 19:17 op
:

= 여기서 화살표키나 엔터키 혹은 'pagedown'로 내려가며 볼수가 있으며 'less 프로세스' 내에서 빠져 나오려면
키보드에서 "ctrl + z" 로 빠져 나올수가 있다.월  1 00:05 ro

-rwxr-x---.   1 tester tester  114  6월 12 19:49 get
-rwxr-x---.   1 tester tester  110  5월 21 18:42 bpt
-rwxr-x---.   1 tester tester  103  7월 16 16:23 getter
-rwxr-x---.   1 tester tester   85  5월 14 23:29 r
-rwxr-x---.   1 tester tester   72  6월 16 23:53 else
-rwxr-x---.   1 tester tester   47  5월 30 11:00 uu
-rwxr-x---.   1 tester tester   45  5월 29 19:17 op
-rwxr-x---.   1 tester tester   10  5월 30 11:01 U
-rwxr-x---.   1 tester tester    5  6월  3 19:11 f
-rw-rw-r--.   1 tester tester    2  8월  5 19:05 .hid.txt

./.hidf:
합계 8.0K
drwxrwxr-x. 2 tester tester 4.0K  8월  5 19:06 ./
drwxr-x---. 5 tester tester 4.0K  8월  5 19:23 ../

./testd:
합계 444K
-rwxr-x---. 1 tester tester 343K  8월  5 16:30 screen.png
drwxrwxr-x. 2 tester tester 4.0K  8월  5 23:52 ./
drwxr-x---. 5 tester tester 4.0K  8월  5 19:23 ../
-rwxr-x---. 1 tester tester 3.8K  8월  5 16:30 bp
-rwxr-x---. 1 tester tester  610  8월  5 16:30 rt
-rwxr-x---. 1 tester tester  181  8월  5 16:30 ro
-rwxr-x---. 1 tester tester  114  8월  5 16:30 get
-rwxr-x---. 1 tester tester  103  8월  5 16:30 getter
-rwxr-x---. 1 tester tester   85  8월  5 16:30 r
-rwxr-x---. 1 tester tester   47  8월  5 16:30 uu

./testd2:
합계 8.0K
drwxrwxr-x. 2 tester tester 4.0K  8월  5 16:30 ./
drwxr-x---. 5 tester tester 4.0K  8월  5 19:23 ../


-- 디렉터리 하부의 모든 내용들을 전부 나누어 출력해 주고 있다.




지금까지 ls에 관한 여러 명령어 사용과 조합 방법에 대해 알아 보았다.

그렇다면 이제부터는 조금 더 고급 조합 사용 방법들에 대해서 알아 보도록 해 보자.

지금 부터 배울 것은 기존 ls 명령어 에다가 'less' 'grep'을 조합해 볼 것이다.

less는 less 자체 프로세스 내부로 진입하여 페이지를 나누어 볼 수 있게 해주는 시스템 명령어 소프트웨어 이며

grep 원하는 문자 행만 찾아 주는 역할을 하는 시스템 명령어 소프트웨어 이다.

시스템 명령 끼리 조합해 사용하기 위해서는 ' | ' 를 같이 사용해 줘야 하는데 ' | '는 키보드에서 "시프트키(Shift key) + \(₩)" 를 눌러 구현 할수 있다.


// 먼저 grep을 ls와 같이 조합해 명령을 내려 보도록 하자.

    $ ls -lap |grep hid
 
-rw-rw-r--.   1 tester tester      2  8월  5 19:05 .hid.txt
drwxrwxr-x.   2 tester tester   4096  8월  5 19:06 .hidf/


= 'hid' 문자가 들어간 파일과 폴더를 찾아 그것만 출력해 주는 것을 볼 수 있다.



// 이젠 less를 ls와 같이 조합해 명령을 내려 보도록 하자.

    $ ls -RalphS |less

-- 다음과 페이지를 나눠 첫번째 페이지에 멈추어 같이 출력 된다.

.:
합계 656K
-rwxr-x---.   1 tester tester 343K  7월 30 14:43 screen.png
drwxr-x---. 131 tester tester  44K  8월  5 23:52 ../
-rwxr-x---.   1 tester tester  17K  6월 12 19:49 geted
-rwxr-x---.   1 tester tester 9.6K  6월 12 16:44 gettter.ods
drwxr-x---.   5 tester tester 4.0K  8월  5 19:23 ./
drwxrwxr-x.   2 tester tester 4.0K  8월  5 19:06 .hidf/
drwxrwxr-x.   2 tester tester 4.0K  8월  5 23:52 testd/
drwxrwxr-x.   2 tester tester 4.0K  8월  5 16:30 testd2/
-rwxr-x---.   1 tester tester 3.8K  5월 21 18:25 bp
-rwxr-x---.   1 tester tester 3.0K  6월 12 22:30 hz
-rwxr-x---.   1 tester tester 1.3K  5월 29 21:37 odg
-rwxr-x---.   1 tester tester  610  5월 21 17:26 rt
-rwxr-x---.   1 tester tester  205  6월  4 21:54 autopoboot
-rwxr-x---.   1 tester tester  181  6월  1 00:05 ro
-rwxr-x---.   1 tester tester  114  6월 12 19:49 get
-rwxr-x---.   1 tester tester  110  5월 21 18:42 bpt
-rwxr-x---.   1 tester tester  103  7월 16 16:23 getter
-rwxr-x---.   1 tester tester   85  5월 14 23:29 r
-rwxr-x---.   1 tester tester   72  6월 16 23:53 else
-rwxr-x---.   1 tester tester   47  5월 30 11:00 uu
-rwxr-x---.   1 tester tester   45  5월 29 19:17 op
:

= 여기서 화살표키나 엔터키 혹은 'pagedown'로 내려가며 볼수가 있으며 'less 프로세스' 내에서 빠져 나오려면
키보드에서 "ctrl + z" 로 빠져 나올수가 있다.



도움이 되셨다면 '♡' 버튼을 꼭눌러 주시면 감사 하겠습니다.


 

'ls'유닉스 운영체제의 기초 시스템 툴 로써 파일 리스트를 출력해 주는 명령어로써 예를 들어 윈도우즈나 DOS에 있어서 dir과 같다.

하지만 그 기원은 dos의 dir 보다 유닉스 시스템의 ls가 훨씬 더 오래 되었고 1970년대에 이미 AT&T에 의해 유닉스가 처음 개발 되었을때 부터 존재했던 거의 운영체제의 뿌리와 같은 콘솔 툴 이다.

필자는 아직 접해 보지는 못했지만 혹자는 명령어 'ls' 에 관한 두꺼운 책이 있을 정도 라고 하니

ls는 단순해 보이지만 사실은 수많은 활용 방식과 조합 명령 시스템을 인지 할수 있는 기능을 가지고 있다.

즉, 특히나 소프트웨의 구동의 상위가 되는 BASH 스크립트 구동에 있어서 빠져서는 안되며 운영체제 운영에 있어서도 빠져서는 안되는 뿌리 기둥이나 마찬가지 인 소프트웨어라고 보면 될 것이다.

하지만 혹자들 중에는 ls가 사용하기 불편하다고 말하는 사람들도 있다.

왜냐하면 그냥 'ls'를 치면 단순 명료하지만 알아보기 힘들게 나온다는 것이다.



// ls를 그냥 쳐 보도록 한다.

$ ls
   
-- 다음과 같이 출력 된다.  (단순히 구분마다 색깔로 구분되어 있으며 이는 'ls -C'(Color)를 한 것과 같다.

U  autopoboot  bp  bpt  else  f  get  geted  getter  gettter.ods  hz  odg  op  r  ro  rt  screen.png  testd  testd2  uu


// 색깔로 구분하는 명령을 내린다.

$ ls -C
        
  (Color: 색깔)
   
-- 이전과 똑같이 출력 된다.

U  autopoboot  bp  bpt  else  f  get  geted  getter  gettter.ods  hz  odg  op  r  ro  rt  screen.png  testd  testd2  uu






이렇게 보면 기존의 ls 명령은 칼라 속성을 가지는 'ls -C'로 동작하는 것을 알 수가 있다.

여기서 색깔을 구분 하자면 초록색은 실행 파일 흰색(일반색)은 일반파일 파란색이 폴더(디렉토리) 이다.

하지만 이것도 알아보기 힘들다면 -p 로 하여금 폴더를 구분하는 명령을 줄수가 있다.


// -p 옵션을 준다.

$ ls -p

-- 폴더는 '/'가 붙는 것을 확인할수가 있다.

U  autopoboot  bp  bpt  else  f  get  geted  getter  gettter.ods  hz  odg  op  r  ro  rt  screen.png  testd/  testd2/  uu

// 그렇다면 이제부터는 연달아서 ls의 기능을 활용해 보도록 해보자.

// '-a' 옵션으로 숨겨져 있는 폴더와 파일들을 확인하자.

$ ls -a

-- 앞에 '.'이 붙은 파일과 폴더들이 나타난 것을 살펴 볼 수 있다.

..        .hidf  autopoboot  bpt   f    geted   gettter.ods  odg  r   rt          testd   uu
.          .hid.txt  U      bp          else  get  getter  hz           op   ro  screen.png  testd2

// '-p' 옵션과 합하여 보자.

$ ls -pa

-- 숨긴 파일들 표시와 함께 '/'폴더 표시가 함께 표시된다.    

./   .hid.txt  U           bp   else  get    getter       hz   op  ro  screen.png  testd2/
../  .hidf/    autopoboot  bpt  f     geted  gettter.ods  odg  r   rt  testd/      uu

// 그렇다면 이제는 권한 속성까지 표현하는 '-l' 옵션을 함께 줘보자.



$ ls -pal


drwxr-x---.   5 tester tester   4096  8월  5 19:23 ./
drwxr-x---. 131 tester tester  45056  8월  5 15:22 ../
-rw-rw-r--.   1 tester tester      2  8월  5 19:05 .hid.txt
drwxrwxr-x.   2 tester tester   4096  8월  5 19:06 .hidf/
-rwxr-x---.   1 tester tester     10  5월 30 11:01 U
-rwxr-x---.   1 tester tester    205  6월  4 21:54 autopoboot
-rwxr-x---.   1 tester tester   3841  5월 21 18:25 bp
-rwxr-x---.   1 tester tester    110  5월 21 18:42 bpt
-rwxr-x---.   1 tester tester     72  6월 16 23:53 else
-rwxr-x---.   1 tester tester      5  6월  3 19:11 f
-rwxr-x---.   1 tester tester    114  6월 12 19:49 get
-rwxr-x---.   1 tester tester  16897  6월 12 19:49 geted
-rwxr-x---.   1 tester tester    103  7월 16 16:23 getter
-rwxr-x---.   1 tester tester   9756  6월 12 16:44 gettter.ods
-rwxr-x---.   1 tester tester   3004  6월 12 22:30 hz
-rwxr-x---.   1 tester tester   1275  5월 29 21:37 odg
-rwxr-x---.   1 tester tester     45  5월 29 19:17 op
-rwxr-x---.   1 tester tester     85  5월 14 23:29 r
-rwxr-x---.   1 tester tester    181  6월  1 00:05 ro
-rwxr-x---.   1 tester tester    610  5월 21 17:26 rt
-rwxr-x---.   1 tester tester 350393  7월 30 14:43 screen.png
drwxrwxr-x.   2 tester tester   4096  8월  5 16:30 testd/
drwxrwxr-x.   2 tester tester   4096  8월  5 16:30 testd2/
-rwxr-x---.   1 tester tester     47  5월 30 11:00 uu

-- 속성결과 함께 이번에는 세로로 나열되어 출력된다.

// 이번에는 용량을 알아보기 쉽게 '-h 옵션을 같이 줘 보도록 하자.

$ ls -laph

합계 656K
drwxr-x---.   5 tester tester 4.0K  8월  5 19:23 ./
drwxr-x---. 131 tester tester  44K  8월  5 15:22 ../
-rw-rw-r--.   1 tester tester    2  8월  5 19:05 .hid.txt
drwxrwxr-x.   2 tester tester 4.0K  8월  5 19:06 .hidf/
-rwxr-x---.   1 tester tester   10  5월 30 11:01 U
-rwxr-x---.   1 tester tester  205  6월  4 21:54 autopoboot
-rwxr-x---.   1 tester tester 3.8K  5월 21 18:25 bp
-rwxr-x---.   1 tester tester  110  5월 21 18:42 bpt
-rwxr-x---.   1 tester tester   72  6월 16 23:53 else
-rwxr-x---.   1 tester tester    5  6월  3 19:11 f
-rwxr-x---.   1 tester tester  114  6월 12 19:49 get
-rwxr-x---.   1 tester tester  17K  6월 12 19:49 geted
-rwxr-x---.   1 tester tester  103  7월 16 16:23 getter
-rwxr-x---.   1 tester tester 9.6K  6월 12 16:44 gettter.ods
-rwxr-x---.   1 tester tester 3.0K  6월 12 22:30 hz
-rwxr-x---.   1 tester tester 1.3K  5월 29 21:37 odg
-rwxr-x---.   1 tester tester   45  5월 29 19:17 op
-rwxr-x---.   1 tester tester   85  5월 14 23:29 r
-rwxr-x---.   1 tester tester  181  6월  1 00:05 ro
-rwxr-x---.   1 tester tester  610  5월 21 17:26 rt
-rwxr-x---.   1 tester tester 343K  7월 30 14:43 screen.png
drwxrwxr-x.   2 tester tester 4.0K  8월  5 16:30 testd/
drwxrwxr-x.   2 tester tester 4.0K  8월  5 16:30 testd2/
-rwxr-x---.   1 tester tester   47  5월 30 11:00 uu
 
-- 용량이 함께 표시되어 출력된다.

// 모든 결과를 용량순대로 정렬시켜 보자. ('-S' 옵션을 사용한다.)


dsad

$ ls -laphS


합계 656K
-rwxr-x---.   1 tester tester 343K  7월 30 14:43 screen.png
drwxr-x---. 131 tester tester  44K  8월  5 15:22 ../
-rwxr-x---.   1 tester tester  17K  6월 12 19:49 geted
-rwxr-x---.   1 tester tester 9.6K  6월 12 16:44 gettter.ods
drwxr-x---.   5 tester tester 4.0K  8월  5 19:23 ./
drwxrwxr-x.   2 tester tester 4.0K  8월  5 19:06 .hidf/
drwxrwxr-x.   2 tester tester 4.0K  8월  5 16:30 testd/
drwxrwxr-x.   2 tester tester 4.0K  8월  5 16:30 testd2/
-rwxr-x---.   1 tester tester 3.8K  5월 21 18:25 bp
-rwxr-x---.   1 tester tester 3.0K  6월 12 22:30 hz
-rwxr-x---.   1 tester tester 1.3K  5월 29 21:37 odg
-rwxr-x---.   1 tester tester  610  5월 21 17:26 rt
-rwxr-x---.   1 tester tester  205  6월  4 21:54 autopoboot
-rwxr-x---.   1 tester tester  181  6월  1 00:05 ro
-rwxr-x---.   1 tester tester  114  6월 12 19:49 get
-rwxr-x---.   1 tester tester  110  5월 21 18:42 bpt
-rwxr-x---.   1 tester tester  103  7월 16 16:23 getter
-rwxr-x---.   1 tester tester   85  5월 14 23:29 r
-rwxr-x---.   1 tester tester   72  6월 16 23:53 else
-rwxr-x---.   1 tester tester   47  5월 30 11:00 uu
-rwxr-x---.   1 tester tester   45  5월 29 19:17 op
-rwxr-x---.   1 tester tester   10  5월 30 11:01 U
-rwxr-x---.   1 tester tester    5  6월  3 19:11 f
-rw-rw-r--.   1 tester tester    2  8월  5 19:05 .hid.txt

-- 모든 출력 결과가 용량과 함께 출력 된다.



'ls' 명령어 가이드는 다음 2화에 계속된다.
 

도움이 되셨다면 '♡' 버튼을 꼭눌러 주시면 감사 하겠습니다.

+ Recent posts