글

라벨이 bash인 게시물 표시

bash에서 alias 무시하는 방법

alias ifconfig='ifconfig en0' 이렇게 설정했는데 진짜 ifconfig 명령을 실행하고 싶으면 아래처럼 하면 된다. 첫번째 방법 $ command ifconfig 두번째 방법 $ "ifconfig" 세번째 방법 $ \ifconfig

bash programming - read

read 표준 입력으로부터 입력을   받는다. read 명령에는 여러가지 옵션이 있다. 알고 있으면 좋은 옵션 몇개만 정리하면 -p (prompt) # 새로 만들 branch명을 입력받는다. echo -n "enter new branch name : " read branchname # 이렇게 하는 대신 아래처럼 할 수 있다. read -p "enter new branch name : " branchname # branchname 파라미터가 없으면 $REPLY라는 변수에 저장된다. read -p "enter new branch name :" echo $REPLY -d (delim) # newline 즉 enter key를 입력하면 입력이 종료되는데 다른 문자로 변경할 수 있다. # : 문자를 만나면 입력이 끝난다. read -d : -s (silent) # 입력받은 문자를 화면에 표시하지 않는다. read -s 모든게 그렇겠지만 linux 또한 아는만큼 쓰는거 같다. 옵션 하나면 해결될 문제를 그 옵션을 몰라서 고생한다. 리눅스를 사용하다가 뭔가 불편하다면 의문을 가지자. 이런 기능은 혹시 없을까? 좀 더 쉬운 방법이 있을텐데라고... 그동안 수많은 개발자들이 리눅스를 개발하면서 그냥 지나쳤을리 없으니까..

bash programming - 연산자

&& 연산자와 || 연산자는 short-circuiting 연산자이다. 즉, && 왼쪽 명령의 exit 코드가 0이 아니면 && 오른쪽의 명령은 실행되지 않는다. 마찬가지로 || 왼쪽 명령의 exit 코드가 0이면 || 오른쪽 명령은 실행되지 않는다. bash는 exit가 0을 리턴하면 성공, 그 외의 숫자는 실패를 의미한다. 아무것도 리턴하지 않으면 0을 리턴한것으로 간주한다. # 컴파일에 성공하면 배포한다. 배포에 실패하면 서버를 재시작하지 않는다. compile_project && deploy_war && restart_server # 컴파일에 실패하면 에러 메시지를 출력한다. compile_project || echo "컴파일에 실패하였습니다."

bash programming - 배열에 대해서

bash는 1차원 배열만 지원한다. 인덱스는 0부터 시작하며 정수값만 사용할 수 있다. 인덱스가 반드시 0부터 시작해야 하는건 아니며 연관 배열처럼 사용할 수도 있다. declare -a name 명령을 사용해서 배열을 선언할 수도 있으며 declare -a 명령을 사용하면 현재 선언되어 있는 모든 배열변수를 볼 수 있다. # 네 개의 요소를 가지는 배열 선언 names=(e0 e1 e2 e3) # 첫번째 엘리먼트를 출력 echo ${names[0]} # 인덱스값을 넣지 않으면 0번째 엘리먼트를 출력 echo ${names} # 배열 요소의 개수 echo ${#names[*]} # n번째 엘리먼트의 글자수를 구하려면 echo ${#names[n]} # 0번째 엘리먼트의 글자수를 구하려면 echo ${#names} # 인덱스가 2 이상인 엘리먼트들을 출력 echo ${names[*]:2} # 인덱스가 1 이상인 엘리먼트 두개만 출력 echo ${names[*]:1:2} # 엘리먼트 추가 names=(${names(*)} e4 e5 e6) # 엘리먼트 삭제 unset names[2] [*]과 [@]는 따옴표(") 안에서 서로 다르게 동작한다. books=(java cpp js sql css) mybooks=("${books[*]}") yourbooks=("${books[@]}") # declare -a 실행 결과 declare -a books='([0]="java" [1]="cpp" [2]="js" [3]="sql" [4]="css")' declare -a mybooks='([0]="java cpp js sql css")' declare -a yourbooks='([0]="java" [1]="cpp" ...