터미널에서 디렉토리를 변경하고 내가있는 디렉토리를 어떻게 알 수 있습니까?


15

@ Ubuntu 커뮤니티 도움말 의 지침을 따르고 있습니다 . 그러나 여전히 몇 가지 사항에 대해 혼란스러워합니다. 나는 그것을 연구 하고이 게시물을 발견했다 : 터미널을 사용하여 디렉토리를 변경 했지만, 그것은 나 위에 있으며 여전히 그것에 대해 어떻게 해야할지 모르겠다. 나는 새로운 & 조금 여분의 방향이 필요하므로 나와 함께 붙어! ;-) 다음은 내 터미널의 스크립트입니다.

christy@ubuntu:~$ ls
Desktop    examples.desktop     install-tl-unx.tar.gz  Pictures  Templates
Documents  install-pkgs.log     libnautilus-gksu.so    Projects  Videos
Documents  install-pkgs.log     libnautilus-gksu.so    Projects  Videos
christy@ubuntu:~$ cd/
bash: cd/: No such file or directory

어떤 디렉토리에 무엇이 있는지, 어떻게 탐색하는지 어떻게 알 수 있습니까? 나는 간단한 것을 배제해야한다는 것을 안다.


4
"cd"와 같은 명령 뒤에 항상 공백이 필요합니다. "cd /"를 입력하면 명령이 작동하고 루트 디렉토리로 이동합니다.
마티 프라이드

환상적인 마티! 당신의 도움에 크게 감사드립니다. ;-)
user74713

답변:


19

세션 ls에서 현재 디렉토리의 내용이 표시되지만 파일 이름의 점으로 시작하는 숨겨진 파일은 표시되지 않습니다. 을 입력하여 다른 디렉토리로 이동 cd dirname합니다. 여기에서 변경하려는 디렉토리 이름으로 "dirname"을 지정해야합니다. 일반적으로 홈 디렉토리를 현재 작업 디렉토리로 시작합니다. 귀하의 경우에는 그럴 가능성이 높습니다 /home/christy. ls"템플릿"이라는 디렉토리가 표시 되면 다음 명령을 입력 (공백)하여 "템플릿"(= 현재 작업 디렉토리로 변경)으로 변경할 수 있습니다.

cd Templates

현재 디렉토리에 해당 이름의 디렉토리가 존재하지 않으면 현재 작업 디렉토리를 "템플릿"으로 변경하거나 "해당 파일 또는 디렉토리 없음"을 인쇄합니다. 입력 pwd하면 항상 부모를 포함하여 현재 작업 디렉토리에 전체 패치가 제공됩니다.

각 명령에 선택적 인수를 제공 할 수 있습니다. 들어 cd문자열 "템플릿"등의 선택적 인수했다. ls -a예를 들어 입력 하면이 ls명령은 숨겨진 파일도 인쇄합니다. 또는 ls Templates현재 작업 디렉토리의 내용 대신 Tempaltes 디렉토리의 내용을 인쇄합니다. 인수는 하나 이상의 공백으로 명령 이름과 서로 분리해야합니다. 둘 사이에 공백이 없기 때문에 명령이 작동하지 않았습니다.

공백 문자는 특별한 의미가 있으므로 인수의 일부인 경우 공백 문자를 인용하거나 이스케이프해야합니다. 예를 들어 현재 작업 디렉토리를 "소스 파일"로 변경하려면 다음 명령 중 하나를 입력해야합니다.

cd Source\ Files
cd "Source Files"

하단 라인은 "인용"되는 동안 상단 라인은 "탈출"됩니다.

더 나은 안내서를 배우고 싶다면 Linux 소개 ( pdf ) ( html )


편집 :

좋아요, 죄송합니다. 링크가 보이지 않습니다. 귀하의 게시물이 약간 오도되었으므로 이제는 내가 당신을 얻었다 고 생각합니다.

따라서 게시 한 "시작하기"안내서에 링크 된 소스 아카이브 에서 tex-live를 설치하려고합니다 . 이를 위해서는 먼저 기존의 tex-live 설치를 제거해야합니다. 이렇게하는 터미널을 열어서 그렇게하십시오.

christy@ubuntu:~$ pwd 
/home/christy # <---- This is the directory you are working in
christy@ubuntu:~$ sudo apt-get remove texlive-*
[sudo] password for christy: 

이 시점에서 비밀번호를 입력해야하며 여기서는 생략 할 몇 가지 지루한 메시지가 표시됩니다. 그런 다음 이름이 지정된 아카이브를 다운로드해야합니다 install-tl-unx.tar.gz(이미 수행 한 후 다시 다운로드 할 필요는 없지만, 경우에 따라 덜 수행하는 방법을 보여줍니다).

christy@ubuntu:~$ wget http://mirror.ctan.org/systems/texlive/tlnet/install-tl-unx.tar.gz

--2012-07-09 15:08:23--  http://mirror.ctan.org/systems/texlive/tlnet/install-tl-unx.tar.gz
Resolving mirror.ctan.org... 80.237.159.15
Connecting to mirror.ctan.org|80.237.159.15|:80... connected.
HTTP request sent, awaiting response... 302 Found
# ... some more stuff like this ...
Saving to: `install-tl-unx.tar.gz'

100%[=====================================>] 2,530,831   --.-K/s   in 0.1s    

2012-07-09 15:08:23 (17.3 MB/s) - `install-tl-unx.tar.gz' saved [2530831/2530831]

아카이브를 다운로드 했으므로 압축을 풀 수 있습니다.

christy@ubuntu:~$ tar xvf install-tl-unx.tar.gz
install-tl-20120701/
install-tl-20120701/readme-txt.dir/
install-tl-20120701/readme-txt.dir/README.RU-cp1251
# ... bla bla skipping over some more messages like this ...
install-tl-20120701/readme-html.dir/readme.sr.html
install-tl-20120701/readme-html.dir/readme.ru.html
install-tl-20120701/readme-html.dir/readme.de.html

아카이브의 압축을 풀었으므로 압축을 푼 디렉토리로 변경할 수 있습니다.

christy@ubunut:~$ ls | grep install-tl-  # <---- with this line you find out the number
install-tl-20120701                      # <---- in this case "20120701"
install-tl-unx.tar.gz                    # <---- if just this is present with no number you did something wrong
christy@ubuntu:~$ cd install-tl-20120701 # <---- enter this number here
christy@ubuntu:~$ pwd
/home/christy/install-tl-20120701/       # <--- this is your new working directory

숫자 "20120701"은 사용중인 tex-live 버전을 나타내는 타임 스탬프입니다. 이 숫자는 명령과 다를 수 있지만ls | grep install-t1- 대신 사용할 것을 알려줍니다. 이 모든 것이 효과가 있으면 여기에서 설치 스크립트를 실행할 수 있습니다.

christy@ubuntu:~$ sudo ./install-tl
[sudo] password for jan: 
Loading http://ftp.univie.ac.at/packages/tex/systems/texlive/tlnet/tlpkg/texlive.tlpdb
Installing TeX Live 2012 from: http://ftp.univie.ac.at/packages/tex/systems/texlive/tlnet
Platform: x86_64-linux => 'x86_64 with GNU/Linux'
# ... bla bla and so on bla ...
Actions:
  <I> start installation to hard disk
  <H> help
  <Q> quit

Enter command: I
# ... and so on ...

여기서부터는 설치 스크립트가 묻는 질문에 대답하면됩니다.


@ con-f-use : 훌륭한 정보! 이제 원래 게시물의 터미널 스크립트를 참조하십시오. install-tl-unx.tar.gz 디렉토리는 무엇이고 어떻게 실행합니까? 설치 명령에 익숙하지만 패키지를 설치해야한다고 생각합니까? tarball의 압축을 푸는 명령은 @ ubuntu-manual.org/getinvolved/editors 입니다. 당신이 올바른 방향으로 나를 가리킬 수 있다면 ... 정말 감사합니다. 당신은 매우 유익했습니다.
user74713

문제 없어요. 확실하지 않습니다. 정확히 당신의 목표가 무엇인지, 그래서 더 많은 정보없이 도움을주는 것은 조금 어렵습니다. 분명히 'install-tl-unx.tar.gz'아카이브에서 TeX-Live를 설치하려고합니다. 이를 위해서는 설치 스크립트를 실행하는 것보다 먼저 아카이브의 압축을 풀어야합니다. 위의 게시물을 곧 수정하기 위해 몇 가지 지침으로 편집했습니다.
con-f-use

10

총괄 요약 (TL; DR)

  • 현재 pwd위치를 알거나 프롬프트에서 :와 사이를 살펴 보는 데 사용 $합니다.
  • cd다른 곳에서 디렉토리를 변경하는 데 사용하십시오 . Windows와 달리 항상 뒤에 공백이 cd있어야합니다 . 명령은 좋아 하고 작동하지 않지만 및 것입니다.cd/cd..cd /cd ..

당신이 어디에 있는지 알기

방법 1 : 실행 pwd.

현재 사용중인 디렉토리는 쉘 특정 (보다 일반적으로 응용 프로그램 특정)입니다. 하나의 디렉토리에있는 하나의 쉘과 다른 디렉토리에있는 다른 쉘을 실행할 수 있습니다.

현재 어떤 디렉토리에 있는지 알려면 다음을 실행하십시오.

pwd

예를 들어 (쉘에서 내 컴퓨터에서 지금 열었습니다) :

ek@Kip:~$ pwd
/home/ek

이것은 내가 디렉토리에 있음을 알려줍니다 /home/ek. 인간 사용자의 /home 디렉토리를 포함 하는 디렉토리입니다 (그 자체가 사용자의 홈 디렉토리가 아닙니다). 휴먼 사용자 는 홈 디렉토리를 가지고 있습니다.username/home/username

root사용자 의 홈 디렉토리가 없습니다 /home. 대신 root의 홈 디렉토리는 /root입니다. 이것은와 혼동되지 않는 루트 디렉토리 입니다 /.

방법 2 : 프롬프트를 검사하십시오.

프롬프트의 기본 구성은 현재 어떤 디렉토리에 있는지 알려주는 것입니다. 프롬프트는 쉘이 명령을 승인 할 준비가되었음을 알리는 텍스트입니다.

당신이 당신의 질문에 우리를 보여준 예에서, 당신의 프롬프트는 :

christy@ubuntu:~$

christy귀하의 사용자 이름입니다. @문자에서 분리 ubuntu컴퓨터의 호스트 이름입니다. 라이브 CD를 실행하는 경우 호스트 이름은 ubuntu이며 일부 사람들은 설치 중에 컴퓨터 이름으로이 이름을 선택합니다.

:문자에서 분리 현재에있는 디렉토리의 이름. 로 표시이 경우, ~. ~홈 디렉토리의 줄임말입니다. 홈 디렉토리에 없으면 전체 디렉토리 이름이 표시됩니다. 예를 들면 다음과 같습니다.

ek@Kip:~$ cd /var/log
ek@Kip:/var/log$

(프롬프트의 각 부분이 의미하는 바를 마치기 위해 :이 규칙을 따르는 프롬프트의 경우 a $또는 #문자가 나타납니다. $이 경우와 같이 일반 사용자 쉘임을 의미합니다. #문자는 root쉘 임을 의미합니다 .)

현재 위치 변경

"cd"명령이 작동하지 않는 이유

디렉토리를 변경하려면 cd명령을 사용하십시오 .

당신은 달렸다 cd/. 실제로 cd명령을 실행하지 않았기 때문에 작동하지 않습니다 . 우분투 및 다른 유닉스 계열 운영 체제 (실제로 사용중인 과 같은 유닉스 스타일 쉘 에서는 bash) 명령 의 이름 은 공백이나 줄 끝에서만 끝나는 것으로 간주됩니다.

(윈도우에서 프롬프트 명령과 달리 지금 cd\과 동일하게 해석 cd \하고 cd..동일로 해석됩니다 cd ..에) bash(당신이 우분투에서 사용하고있는 쉘), cd/유효한 명령이 아닙니다. 당신은 사용해야합니다cd / .

cd/"현재 디렉토리에서 이름이 cd있고 디렉토리이기도 한 항목"을 의미합니다 . 이러한 서브 디렉토리가 존재하는지 여부에 상관없이 명령으로 실행할 수 없으므로 오류가 발생합니다 ( 어떤 오류가 발생 하더라도 다름).

ek@Kip:~$ cd/
bash: cd/: No such file or directory
ek@Kip:~$ mkdir cd
ek@Kip:~$ cd/
bash: cd/: Is a directory

홈 디렉토리로 이동

홈 디렉토리로 이동하려면 cd인수없이 자체적으로 실행하십시오 .

cd

어떤 사람들은 자신의 홈 디렉토리 이름을 명시 적으로 선호합니다. 전체 이름을 사용하거나

cd ~

그러나 cd그 자체로는 충분합니다.

한 디렉토리 위로 이동

디렉토리를 현재 디렉토리의 상위 디렉토리 (예 : 디렉토리를 포함하는 디렉토리)로 변경하려면 다음을 사용하십시오.

cd ..

..현재 디렉토리의 상위 디렉토리를 나타냅니다. 루트 디렉토리 ( /)에있는 경우 예외가 있습니다 : ..just represent /. 따라서 달리기 cd ..는 어디에서나 실행할 때 하나의 디렉토리 위로 이동합니다 /. 에서 실행 /하면에 유지됩니다 /.

모든 디렉토리에는 ..항목이 있습니다. 또한 모두 .현재 디렉토리 자체를 나타내는 항목을 포함 합니다. cd .그래도 실행되지는 않습니다 . 당신은 항상 당신이 어디에 있는지 유지합니다.

절대 및 상대 경로

로 시작 cd하지 않는/ 것으로 이동 하면 현재 디렉토리 내의 해당 디렉토리로 이동하려고 시도합니다. .

예를 들어,

cd var/log

그런 다음 var현재 위치 의 하위 디렉토리 로 이동하여 하위 디렉토리 로 이동 log합니다. 둘 다 존재하지 않는 한 그 장소에서 그 cd명령은 실패 할 것입니다 (그리고 당신은 원래 있던 곳에 남아있을 것입니다).

루트 디렉토리 하위 디렉토리의 log하위 디렉토리 로 이동하려면 다음을 대신 실행하십시오.var

cd /var/log

현재있는 /경우 cd var/log에만와 같습니다 cd /var/log.

로 시작하는 경로 /는 절대적입니다. 해결 방법은 현재 위치에 따라 달라지지 않습니다.

경로 ~는 (본질적으로) 속기 때문에 절대적입니다 $HOME. HOME환경 변수 및 표현식$HOME 은 현재 사용자 홈 디렉토리의 전체 절대 경로로 확장됩니다.

~다른 사용자의 홈 디렉토리 를 나타내는 데에도 표기법을 사용할 수 있습니다 . 작성하면 의 홈 디렉토리를 나타냅니다 .~usernameusername

이전의 위치로 돌아 가기

현재있는 디렉토리는 PWD환경 변수에 저장됩니다 . 마지막으로 당신이 있었다 디렉토리는에 저장되어있는 OLDPWD환경 변수. OLDPWD환경 변수를 보는 것과 같은 방식으로 볼 수 있습니다 .

echo $OLDPWD

이 정보는 저장되어 있기 때문에 cd이전의 위치로 돌아갈 수있는 특별하고 빠르고 쉬운 방법이 있습니다. 으로 pst007x는 말한다 , 당신은 실행에 있던 마지막 디렉토리로 이동합니다 :

cd -

당신이에 있던 이전의 모든 디렉토리가 결코 경우 그 쉘에서 , 다음 OLDPWD환경 변수가 설정되지 않았을 것이며, 실행하려고하면 cd -오류가 발생합니다 (그리고 당신이 어디에 당신이있을 것이다) :

ek@Kip:~$ cd -
bash: cd: OLDPWD not set

당신이 보스와 같은 곳을 바꾸다

pushdpopd : 디렉토리 스택

디렉토리 이름의 스택을 상상해보십시오. 으로 스택 , I 평균 뭔가 어디에 당신은 상단에가는 무언가를 추가하고 한 번에 한 가지를 제거 할 수 있습니다, 당신은 제거 것은 상단에 현재 무엇을 항상합니다.

다음 을 실행하여 디렉토리 에 스택을 넣을 수 있습니다 dir.

pushd dir

현재 디렉토리를 스택의 맨 위로 푸시하려면 .위에서 설명한대로 항상 현재 디렉토리를 나타내는 다음을 사용할 수 있습니다 .

pushd .

그런 다음 원하는만큼 디렉토리를 변경하여 비즈니스를 진행할 수 있습니다. 를 사용하여 스택에 푸시 한 마지막 디렉토리로 돌아가려면 다음을 pushd실행하십시오.

popd

이것은 해당 디렉토리로 이동 하여 스택에서 합니다. 이제 스택은 하나의 디렉토리보다 짧습니다. 이것이 스택의 유일한 디렉토리 인 경우 스택은 이제 비어 있습니다.

1보다 큰 스택을 가질 수 있습니다. 즉, 별도의 pushd명령을 사용 하여 여러 디렉토리를 스택으로 푸시 할 수 있습니다 . 이후의 각 popd명령은 스택으로 이동하여 스택에서 제거됩니다. 아직 팝되지 않은 가장 최근에 푸시 된 디렉토리 ).

예를 들면 다음과 같습니다.

ek@Kip:~$ cd /etc/apt/sources.list.d
ek@Kip:/etc/apt/sources.list.d$ pushd .
/etc/apt/sources.list.d /etc/apt/sources.list.d
ek@Kip:/etc/apt/sources.list.d$ pushd /home/ek
~ /etc/apt/sources.list.d /etc/apt/sources.list.d
ek@Kip:~$ cd /var/log/apt
ek@Kip:/var/log/apt$ pushd .
/var/log/apt /var/log/apt /etc/apt/sources.list.d /etc/apt/sources.list.d
ek@Kip:/var/log/apt$ cd
ek@Kip:~$ popd
/var/log/apt /etc/apt/sources.list.d /etc/apt/sources.list.d
ek@Kip:/var/log/apt$ popd
/etc/apt/sources.list.d /etc/apt/sources.list.d
ek@Kip:/etc/apt/sources.list.d$ cd /
ek@Kip:/$ pushd usr
/usr / /etc/apt/sources.list.d
ek@Kip:/usr$ cd
ek@Kip:~$ popd
/ /etc/apt/sources.list.d
ek@Kip:/$ popd
/etc/apt/sources.list.d
ek@Kip:/etc/apt/sources.list.d$ popd
bash: popd: directory stack empty
ek@Kip:/etc/apt/sources.list.d$

pushd그리고 popd더 자주보다 사용된다 cd. 또한 다른 고급 용도도 있습니다. 실행 help pushdhelp popd세부 사항.

더 배우고 문서에 액세스

cd그리고 pwd너무 고급 용도를 가지고있다. 이에 대해 알아 보려면 help cd및을 실행하십시오 man pwd.

help위한 쉘 내장 명령 . man독립 실행 형 명령-별도의 프로세스로 실행되고 별도의 실행 파일로 존재하는 명령입니다. type가 실행 프로그램의 위치 명령이 아닌 경우, 쉘 내장인지하고있는 경우 명령을 보여준다. 예를 들어, 실행할 수 있습니다 type help, type type또는 type man.


5

예를 들면 다음과 같습니다.

cd Desktop/ 홈 디렉토리에있는 경우 데스크탑 디렉토리로 이동합니다.

cd - 이전 디렉토리로 돌아갑니다.

cd / 루트 디렉토리로 이동하십시오.

cd ~/Desktop 어디에 있든지 데스크탑 디렉토리로 이동합니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.