vi에서 텍스트 파일을 만들면 컴퓨터가 변경됩니까?


9

Linux는 텍스트 파일을 기반으로하는 운영 체제라는 것을 알고 있습니다. 내가하고 싶은 것은 내가 vi배운 모든 다양한 명령을 사용하여 파일을 만드는 것입니다 . 그렇게하면 /in을 사용하여 각 개별 명령을 매우 쉽게 찾을 수 있습니다 vi. 그러나 컴퓨터가 작동하는 방식을 변경하지 않는 경우에만이 작업을 수행하고 싶습니다. 이것이 좋은 생각입니까?


12
예, 더 어딘가에 텍스트 파일이 있습니다. ;-) (Joking) 실제로 파일은 파일입니다. 폴더에 사진을 추가하거나 새 단어 문서를 만들면 컴퓨터가 변경되는지 묻는 것과 같습니다. 그렇습니다. 거기에 사진 / 문서가 하나 더 있습니다. 어쨌든, 당신이받은 대답은 대부분 정확합니다.
Rmano 2019

왜 그렇게 할 것이라고 생각하십니까?
Braiam

2
"텍스트 파일을 기반으로하는 운영 체제"의 의미를 잘 모르지만 Linux는 텍스트 파일과 관련하여 Windows와 크게 다르지 않습니다. 예를 들어 Windows에 .ini 및 .bat 파일이 있습니다.
hyde

또한, vi(와 비교하여) 특별한 것이 있다고 생각 gedit합니까? 아니면 그냥 "텍스트 편집기"를 의미 했습니까?
Mr Lister

1
@BJsgoodlife 일부 텍스트 파일은 시스템을 제어합니다. 그것들은 특별한 장소에 배치되며 일반적으로 없이는 수정할 수 없습니다 sudo.
cpast

답변:


34

텍스트 파일을 작성해도 "컴퓨터 작동 방식이 변경되지 않습니다".

특히, 그런 것을하기 위해서는 다음 중 하나를 수행해야합니다.

  • 중요한 파일을 덮어 쓰기
  • / etc의 * .d 디렉토리와 같은 특별한 보호 위치에 파일을 작성하십시오. 이 작업을 수행 할 권한이 없습니다
  • 파일 실행 파일을 표시하고 경로에 넣으십시오.

명시 적으로 이와 같은 작업을 수행하지 않기 때문에 걱정할 사항이 없습니다. 특히, 다른 대답은 텍스트 파일이 모든 줄에서 해시로 시작해야 함을 제안하여 불필요한 길이로 진행됩니다. 물론 그렇지 않습니다. 일반 홈 디렉토리의 어딘가에 텍스트 파일을 저장하는 것만으로는 아무것도 할 수 없습니다.


3
나는 #우연히 우연히 수행되는 일이 없도록 퍼팅을 제안했다 . 항상 더 안전한쪽에있는 것이 좋습니다.
heemayl

8
더 안전한쪽에있는 것이 항상 낫지는 않다고 생각합니다 . 안전에는 비용이 있으며, 위험 감소가 더 이상 비용이 들지 않는 시점이 있습니다. 예를 들어, 값이이 값을 초과하면 안전을 유지하려고합니다 (이 인수가 의미가있는 상황에서). 에 걸쳐 정보 보안 당신은 적절한 보안이 절충이며,이 모든 경우에 완벽한 보안을 주장하는 어리석은 것, 그래서 유일한 완벽한 보안 시스템도 완전히 쓸모 얼마나 논의 답변을 많이 찾을 수 있습니다.
David Z

9
다소 별개의 문제로서, 나는 (이 답변이하고 다른 답변은하지 않는) 제기해야 할 가장 중요한 점은 임의의 파일을 만드는 것이 시스템을 변경하기 위해 아무것도 할 수 없다는 것입니다. 시스템에 영향을주는 코드가 포함 된 다른 프로세스가 찾고있는 파일을 만들거나 생성 한 파일을 실행해야만 시스템에 영향을 줄 수 있습니다. 그러나 완전히 알려지지 않은 쉘 명령을 실행하지 않는 일반적인 조언에 속합니다. 파일 작업 여부에 관계없이 똑똑합니다.
David Z

2
샌드위치주세요 You won't have permission to do this. sudo는 나를 샌드위치로 만든다. Aye, aye, sir!
Lie Ryan

2
@heemayl 왜 파일의 첫 줄을 만드 exit시겠습니까?
Random832

15

배운 모든 명령을 파일로 저장할 수 있지만 몇 가지 중요한 사항에 유의하십시오.

  • 파일을 실행 가능하게 만들지 마십시오
  • 절대 source파일
  • 가장 좋은 방법은 #모든 명령의 시작 부분에 모든 명령을 주석 처리하여 실수로 실행되지 않도록하는 것입니다. 이렇게하면 실제로 필요한 명령을 검색 할 수 있으며 위험이 없습니다. #다음 명령으로 각 줄의 시작 부분에 추가 할 수 있습니다 .

    sed -i 's/^/#/' <file_name>

편집 : 나는 "neon_overload"와 "David Z"가 모든 라인에 해시를 넣는 것이 너무 광범위하고 따라서 필요하지 않다고 지적하면서 극단적 인 보안 수단으로 세 번째 포인트를주었습니다.이 맥락에서 두 번째입니다. 또한 "random832"에 의해 지적 된 것처럼, 세 번째 요점에 대한 훨씬 더 나은 대안은 exit나중에 명령이 실행되지 않으므로 파일을로 시작하는 것입니다.

편집 -2 : "Rinzwind"는 두 가지 중요한 점을 언급했습니다.

  • 기존 파일을 덮어 쓰지 마십시오

  • 파일을 사용자의 홈 디렉토리 ( /home/$USER/)에 저장하십시오.


4
put a # in the beginning of all the commands to comment out all the commands so they don't get executed accidentally그것이 진지한 제안인지 농담인지 확실하지 않습니다. 내 풍자 탐지기가 오늘 나에게 실패했습니다.
Lie Ryan

당신은 '실수'입니다에 중요성을 둘 필요가 있다고 .. 사용자가 실수로 실행 파일과 안전하지 않은 파일 곳을 유지할 수 있습니다 단어는 여기에 .... 난 그냥 당신이 지금 .. 분명 더 chances..hope을 복용하지 오전
heemayl

4
그는 모든 줄을 주석 처리하는 대신 파일의 시작 부분에 "종료"나 그와 비슷한 것을 넣을 수 없었습니까?
o0 '.

아마도 그는 #을 의미했을 것입니다! -인터프리터가 null로 설정되어 실행되지 않습니다.
Joshua

1
@BJsgoodlife, 아니 #!-그냥 exit; 그렇게하면 당신도 보호받을 수 있습니다 sh yourfile. 무효 한 세방은 도움이되지 않습니다.
찰스 더피

7

neon_overload는 매우 좋은 대답을 가지고 있습니다.

나는 당신의 질문의 특정 측면에 대해 조금 확장 할 것입니다-나는 이것을 논평 할 것이지만, 나는 여기에 충분한 평판을 가지고 있지 않습니다.

운영 체제 인 Linux는 텍스트 파일을 기반으로하지 않습니다. 즉, 당신이 어디에서 왔는지 알 수 있습니다. 외부 관찰자에게는 특히 Windows와 비교할 때 "텍스트"파일을 편집하고 시작하는 데 약간의 어려움이 있습니다.

여기에는 몇 가지 이유가 있습니다. 그 중 일부는 다음과 같습니다.

  • Linux에는 Windows와 같은 레지스트리 시스템이 없습니다. 따라서 응용 프로그램은 텍스트 파일에 설정을 저장하는 것이 일반적이며 Windows에서와 같이 레지스트리를 편집하는 대신 편집하도록 지시합니다.
  • Linux는 서버 시스템으로 널리 사용되며 데스크탑에서 Linux를 사용하는 많은 사람들이 서버 시스템과 함께 작업합니다. Windows Server와 달리 Linux 서버는 일반적으로 그래픽 인터페이스없이 실행됩니다. 따라서 Linux 서버에서 실행될 것으로 예상되는 제품, 실제로 사용자와 관리자는 그래픽 인터페이스없이 작동 할 것으로 예상됩니다. Windows에서만 실행될 것으로 예상되는 제품 (및 가치있는 시스템 기능)은 대개 GUI 중심으로되어 있습니다 (예 : MS SQL).
  • Linux 스크립팅 시스템은 Windows보다 다소 일반적이고 투명합니다. Windows에는 스크립트가 표시되지만 something.vbs 또는 another.bat라고합니다. 텍스트 파일이라는 것을 반드시 인식하지는 못하지만, 두 번째 요점을 고려할 때 Linux에서는 .sh 파일을 스누핑하는 것이 훨씬 일반적입니다.
  • 마지막으로, 많은 Linux 사용자는 그래픽 인터페이스없이 작업하는 데 익숙하며, 그래픽 도구를 사용하지 않고 GUI없이 파일을 직접 편집 할 수 있습니다. 시스템에서 더 깊이 무언가를하고 싶을 때는 터미널을 시작하기 만하면 많은 동료들도 그렇게한다는 것을 알고 있습니다.

"Linux에는 레지스트리 시스템이 없지만"dconf ( en.wikipedia.org/wiki/Dconf )가 있습니다. Linux 커널을 실행하는 모든 시스템에 Linux 커널이 설치되어있는 것은 아니며 Windows 시스템이 레지스트리에서 구성하는 모든 것이 여기에 구성되는 것은 아닙니다.
Daniel Landau

1

짧은 대답은 아닙니다 . vi에서 텍스트 파일을 만들어서 컴퓨터 를 변경하지는 않을 것 입니다. 그러나 조심하지 않으면 첫 번째 텍스트 파일을 만들면 인생 이 바뀔 수 있습니다 . 유닉스 방식을 배우는 것은 큰 보람이 될 수 있습니다.


0

vi는 텍스트 편집기 이므로 텍스트 파일에 텍스트 스 니펫을 저장하고 검색하는 것만 있으면 내장 명령을 사용하여 터미널에서 직접 모든 작업을 수행 할 수 있습니다.

  1. 텍스트 파일에 메모를 작성하십시오 (없는 경우 파일을 작성하십시오).

    중요한 데이터가있는 에코 메모 >> info.txt

중요 : 작은 따옴표와 큰 따옴표를주의해서 포함 시키려면 슬래시를 접두어로 붙이십시오.

  1. 파일에서 일부 텍스트를 검색하십시오 (예 :) important.

    grep --color -i 중요한 info.txt

--color -i별명을 입력 해야하는 것을 피하려면 ~/.bashrc.

기존 또는 존재하지 않는 텍스트 파일에 여러 줄 텍스트를 추가 할 수도 있습니다.

cat >> info2.txt

그런 다음 텍스트를 입력하거나 붙여넣고 완료되면 CTR+ 를 누릅니다.Z

시스템 변경과 관련하여 아니요, 홈 폴더에 파일을 생성하고 실행하지 않는 한 시스템 작동 방식은 변경되지 않습니다 (예 :를 사용하여 파일을 실행할 수없는 경우에도 파일을 실행할 수 있음 bash myFile) . 또한 루트 권한이 필요할 때만 엄격하게 사용해야합니다.

그리고 마지막으로, 파일 기반 시스템에 대한 해석은 다소 잘못된 결과를 낳았습니다. 대부분의 운영 체제에는 시스템 작동 방식에 크게 영향을 미치는 중요한 설정을 저장하는 파일이 있지만 사전 정의 된 위치에 있으며 일반적으로 일반 사용자가 수정하지 못하도록 보호됩니다.

예를 들어 일반 사용자로서 추가 한 로컬 '실행 가능'폴더가 PATH있고 해당 폴더에 빌드 된 이름과 동일한 이름을 가진 실행 파일이있는 경우 쉽게 발을 딛을 수 있습니다. 같은 일반적인 유틸리티 나 bash는 키워드, -에서 test, echo, cat, for, cut, 등

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