리눅스 명령어 실행 안됨 - linugseu myeonglyeong-eo silhaeng andoem

CLI의 가치

명령을 통해서 컴퓨터를 제어하는 중요한 이유 중의 하나는 해야 할 일을 순서대로 배치해서 자동화된 처리를 할 수 있다는 점입니다. 정확한 작업을 위해서는 명령어와 명령어를 연결하는 구분자를 잘 이해하셔야 합니다. 언어로치면 접속사와 같은 역할을 하는 것입니다. 여기서는 이 접속사들을 정리해봅니다. 

결론

  • ; - 앞의 명령어가 실패해도 다음 명령어가 실행
  • && - 앞의 명령어가 성공했을 때 다음 명령어가 실행
  • & - 앞의 명령어를 백그라운드로 돌리고 동시에 뒤의 명령어를 실행

; - 성공여부와 상관없이 다음 명령어 실행

한 줄에 여러 명령어를 순서대로 배열할 때는 ;를 구분자로 사용합니다. 아래 명령어는 test를 만든 후에 test 디렉토리로 이동합니다. 

mkdir test;cd test

&& - 성공한 경우에 다음 명령어 실행

&&의 의미

&&는 앞의 명령어가 실행되었을 때 성공한 경우에 다음 명령어를 실행합니다. ;와는 다릅니다. 예를들어보죠. 아래와 같은 명령어가 있을 때

mkdir test; cd test; touch abc

test 디렉토리가 이미 있어서 아래와 같은 상황이라고 해보죠. 

mkdir test(실패); cd test; touch abc

이 경우 cd test가 실행되고, touch abc도 실행됩니다. 

반면에 아래의 경우는 cd test와 touch abc가 실행되지 않습니다. 

mkdir test(실패) && cd test && touch abc

성공&실패와 무관하게 연속적으로 실행해야 할 명령이 있을 때 ;를 씁니다. 이전 명령이 성공했을 때 다음 명령을 실행하려면 &&를 씁니다. 대체로 &&를 쓰는게 좋을 때가 많습니다. 좀 더 정확하게는 &&는 이전 명령어의 실행결과가 참(true)일 때만 다음 명령을 실행합니다. 아래 내용은 참고삼아 읽어보세요. 

명령어의 반환값

리눅스(유닉스)의 모든 명령어는 종료할 때 성공 여부를 알려줍니다. 예를들어보죠. 

test 디렉토리가 없는 곳에서 아래 명령을 실행해보세요. 성공했을 때 어떻게 되는지 보시죠. 

mkdir test

그리고 아래 명령을 실행해보세요. 

echo $?

이 명령어는 이전 명령어가 반환한 값을 알아내는 것입니다. 결과는 아래와 같습니다. 

0

반대로 test 디렉토리가 이미 있는데 mkdir test를 실행한 후에 echo $?를 실행하면 아래 값이 출력됩니다. 

1

또는 존재하지 않는 명령어를 실행하면 127이 출력될꺼예요. 즉 리눅스에서는 0이 아닌 값은 실패(false)를 의미합니다. 

&와 &&는 다릅니다. 

&는 명령어를 백그라운드로 동작시킬 때 사용합니다. 

mkdir test & cd test를 실행하면 아래와 같은 결과가 나옵니다. 

[1] 19989 cd: no such file or directory: test [1] + 19989 done mkdir test

test 디렉토리를 백그라운드로 생성함과 동시에 test 디렉토리로 이동하려고 했기 때문에 cd test는 존재하지 않는 디렉토리로 진입하려고 시도하기 때문입니다. 한편, test 디렉토리는 생성됩니다. 

명령의 그룹핑 {}

명령을 그룹핑 할 수도 있습니다. 아래 명령은

mkdir test3 && { cd test3; touch abc; echo 'success!!' } || echo 'There is no dir';
  • mkdir test가
  • 성공했을 때 cd test2; touch abc를 실행하고 success!!를 출력합니다. 
  • 실패했을 때 echo 'There is no dir'를 실행합니다. 
  • 이때 실행되는 명령들은 현재 쉘의 컨텍스트에서 실행됩니다. 만약 서브 컨텍스트에서 실행하고 싶다면 '('와 ')'를 사용하시면 됩니다. (참고)

티스토리 뷰

OS/Linux

Linux ll 명령어 command not found 오류 날때 조치

호형 2021. 4. 8. 11:03

반응형

docker를 사용해서 container 내부로 들어가서 작업을 하려고 하면 ll 명령어를 치면 command not found 라는 오류가 발생하는 경우가 대부분이다. 

ll command not found

ll 이라는 명령어는 보통 ls -al 을 alias로 등록을 해놓은것인데 이걸 해놓지 않은 곳에서는 사용을 할 수 없다. 그래서 위와 같은 오류가 발생을 하는 것이다. 조치는 간단하다. 등록을 해주면 된다. 어디에? ~/.bash_profile 이라는 곳에. 

등록을 해보자. 

$ vi ~/.bash_profile #아래 내용을 작성하고 저장 alias ll="ls -al" $ source ~/.bash_profile

.bash_profile이 없다면 새로 생성하고 안에 alias를 넣어주고 반영을 해주는 순서이다. 

ll 뿐만 아니라 다른 필요한 alias를 이곳에 등록하여 사용할 수 있다. 

끝!

반응형

'OS > Linux' 카테고리의 다른 글

[Linux] We trust you have received the usual lecture from the local SystemAdministrator 오류 조치  (0) 폐쇄망(Linux) 환경에서 MySql 설치 및 시작하기  (0) Linux (CentOS) Service 등록하기 및 재기동시 자동 실행하기  (0) OpenSSL이란? CentOS 7에 OpenSSL 설치하기 (update)  (2) Linux SSH keygen 사용해서 암호 대신 SSH key로 인증하기  (0)
2021.08.09
2021.06.09
2021.01.05
2020.12.17
2020.11.17

TAGdocker ll, dokcer command not found, Linux alias, linux bash_profile, linux command not found, linux ll, linux ls -al, linux source 명령어, Linux 사용법, ll command not found

댓글

댓글쓰기 폼

비밀글

이전 1 ··· 182 183 184 185 186 187 188 189 190 ··· 483 다음

이전 다음

최근에 올라온 글

  • Java vs Kotlin 문법 비교
  • Microsoft Edge WebView2⋯
  • OWASP Top 10 2022 한글 v⋯
  • Hidden Input value XSS (⋯

최근에 달린 댓글

  • 현 스프링부트 버전에선 Web⋯
  • 정보 감사합니다~
  • 감사합니다 덕분에 잘 해결했⋯
  • 안녕하세요. 좋은 글 감사합⋯

«   2022/10   »

일월화수목금토
            1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31          

Toplist

최신 우편물

태그