레이블이 sh인 게시물을 표시합니다. 모든 게시물 표시
레이블이 sh인 게시물을 표시합니다. 모든 게시물 표시

터미널에서 디렉토리 히스토리 및 이동

# shell builtin command 중 dirs (directory stack) 을 사용하면 최근 이동한 디렉토리들을 볼 수 있다.
# 자세한 dirs 설명은 https://www.gnu.org/software/bash/manual/html_node/Directory-Stack-Builtins.html

# zsh 은 DIRSTACKSIZE 으로 설정한 크기만큼 스택을 쌓을 수 있다.
set DIRSTACKSIZE=10

# 다음으로 현재까지 이동했던 디렉토리 목록을 스택형식으로 볼 수 있다.
dirs -v
0 ~/workspace/ysoftman
1 ~/workspace/ysoftman/test1
2 ~/workspace
3 ~

# zsh 에서 다음과 같이 스택내의 번호로 사용해 해당 디렉토리 이동할 수 있다.
# 스택 위에서 3번째 ~ 로 이동
cd +3

# 스택 맨아래에서 뒤로 2번째 ~/workspace 로 이동
cd -2

# 참고로 bash 에서는 DIRSTACKSIZE 을 사용할 수 없고 cd [-/+] 등은 사용할 수 없다.

terminal, terminal-emulator, console, shell 차이

쉘(shell)은 확실히 명령 처리 프로그램으로 구분이 가지만 터미널(terminal), 콘솔(console)이라는 용어는 많이 혼용해서 사용하는 것 같다.
뭐 거의 비슷한 의미를 가지고 있지만 정확히 분류하면 다음과 같다.

터미널 = 텍스트 입출력 환경, tty(teletypewriter, 전기 타자기)라고도불린다. 엄밀히는 부팅시 GUI 로 시작하지 않고 CLI 로 진입한 경우를 터미널이라고 하고 GUI 로 환경에서 창을 띄워 터미널을 사용할 수 있는 것을 터미널 에뮬레이터(emulator) 라고 한다.
콘솔 = 물리적 측면에서의 터미널, (초창기 유닉스 장비의 가구 느낌)
쉘 = 커맨드 실행(인터프리터) 프로그램

참고
https://askubuntu.com/questions/506510/what-is-the-difference-between-terminal-console-shell-and-command-line

위 링크에서 초창기 유닉스 시스템 사진을 보면 큰 기계 장치를 일종의 가구에 비유해 콘솔이라를 이름을 붙인것 같다.

ssh alias 실행 안되는 문제

# ssh 로 호스트에 명령을 실행할때 alias 로 지정된 키워드가 실행 안되는 경우가 있다.
# 일반 쉘 명령은 실행된다.
ssh ysoftman@ysoftman-centos7 "ls"

# 하지만 호스트에 alias 설정된 키워드 실행시 찾을 수 없다는 에러가 발생한다.
ssh ysoftman@ysoftman-centos7 "myls"
bash: myls: command not found

# 이유는 interactive 로 쉘이 실행되지 않으면 alias 를 쓸수 없는 경우로
# ~/.bashrc 에 다음과 같이 쉘 옵션을 설정해줘야 한다.
shopt -s expand_aliases

# 그리고 스크립트에 alias 가 있을때 . a.sh 실행은 되지만
# expand_aliases 가 없으면 bash a.sh 는 echoysoftman command not found 발생한다.
# 참고로 shopt 는 bash built-in 명령으로 zsh 에서는 사용할 수 없는 명령이다.
# alias script example
shopt -s expand_aliases
alias echoysoftman="echo ysoftman"
echoysoftman

Ubuntu unexpected operator 쉘스크립트 에러

# Ubuntu(우분투)에서 쉘 스크립트(.sh)를 실행할때 다음과 같은 오류 메시가가 발생한다.
[: Linux: unexpected operator

# 쉘 스크립트를 실행할때 sh 명령을 사용하는데 보통은 bash 로 링크걸려 있다.
# 그런데 우분투의 경우는 sh -> dash 로 링크가 걸려 있다.
# 다음 명령으로 sh 의 링크 상태를 확인해보자!
ls -ahl /bin/sh

# 해결방법1
# bash 로 쉘 스크립트 실행
bash ysoftman.sh

# 해결방법2
# sh -> bash 로 링크하여 sh 로 실행
sudo unlink /bin/sh
sudo ln -s /bin/bash /bin/sh
sh ysoftman.sh

# dash shell 참고
https://ko.wikipedia.org/wiki/%EC%95%94%ED%82%A4%EC%8A%A4%ED%8A%B8_%EC%85%B8

linux set export env

# set(builtin command) 현재 쉘에만 국한된 환경변수 조회
set

echo '-----'

# ysoftmanvar1=1234 로 저장된 상태
export ysoftmanvar1="1234"
echo $ysoftmanvar1


# env 만 사용하면 zzz 값으로 되지 않는다.
env ysoftmanvar1="zzz" echo $ysoftmanvar1
# ysoftmanvar1=zzz 로 명령 수행하기
ysoftmanvar1="zzz" bash -c 'echo $ysoftmanvar1'


# unexport
unset ysoftmanvar1
unset ysoftmanvar2

# export 는 현재 쉘과 현재 쉘에서 파생된 쉘에 환경변수를 적용한다.
# sh ysoftman.sh 로 실행하면 ysoftman.sh 쉘과 그 자식쉘에만 export 가 반영된다.
# source ysoftman.sh 로 실행해야 현재 쉘에 export 내용이 반영된다.
export ysoftmanvar1='ysoftmanvar1'
export ysoftmanvar2='ysoftmanvar2'

echo '-----'

# export 또는 env 로 export 된 환경변수 조회
env

linux command sheet

리눅스에서 수도없이 실행하는 명령어들 모음집~ㅎ



출처 http://www.improgrammer.net/linux-commands-cheat-sheet




스크립트로 매트릭스(Matrix) 화면 만들기

콘솔 창에서 매트릭스 화면을 위해 스크립트를 작성해 보자.

[윈도우 .bat]
@rem ysoftman
@rem cmd 창에서 매트릭스효과 내기

@echo off
color 0a
mode 1000

:matrix
echo %random%%random%%random%%random%%random%%random%%random%%random%%random%%random%%random%%random%%random%%random%%random%%random%%random%%random%%random%%random%%random%%random%%random%%random%%random%%random%%random%%random%%random%%random%%random%%random%%random%%random%%random%%random%%random%%random%%random%%random%%random%%random%%random%%random%%random%%random%%random%%random%%random%%random%%random%%random%%random%%random%%random%%random%%random%%random%

goto matrix

[리눅스]
shell script

[맥]
http://www.asty.org/cmatrix/
brew install cmatrix