여러 줄의 파일이 있습니다.
one
two
three
four
five
파일의 첫 번째 줄에 작업 중인 서버의 호스트 이름을 추가해야 합니다. 예를 들어 abcd555.india.com이 서버인 경우 출력 파일은 다음과 같아야 합니다.
abcd555.india.com
one
two
three
four
five
내 질문이 명확해지기를 바랍니다! 이 어려운 시기에 나를 도와주시는 모든 분들께 감사하겠습니다.
답변1
vi
명령 사용
:0r !hostname
또는 더 긴 형식으로,
:0read !hostname
Esc물론 먼저 눌러야합니다.
이 read
명령은 일반적으로 파일 이름을 가져와 해당 파일의 내용을 현재 줄 아래에 삽입하지만, !
그 앞에 쉘 명령을 지정하면 해당 명령의 출력을 가져와서 삽입합니다.저것현재 줄 아래.
그러나 우리는 그것을 아무 곳에나 연결하고 싶지 않습니다. 우리는 그것을 삽입하고 싶습니다첫 번째철사. 이것이 바로 우리가 말하는 이유입니다 0r
. 0은 명령 출력(또는 파일)이 배치될 줄 번호를 지정합니다.
답변2
이것을 사용할 수 있습니까 sed
?
이는 GNU를 가정합니다 sed
.
sed -i '1 i\'"$HOSTNAME" file
이것을 test1이라는 파일과 함께 사용하면 다음이 생성됩니다.
$ cat test1
one
two
three
four
five
그 다음에:
$ sed -i '1 i\'"$HOSTNAME" test1
다음으로 이어진다:
$ cat test1
chris-dell
one
two
three
four
five
답변3
프로그래밍 방식으로 이 작업을 수행하는 가장 쉬운 방법은 임시 파일에 쓴 다음 기존 파일을 덮어쓰는 것입니다.
{ hostname; cat somefile; } > somefile.tmp &&
mv somefile.tmp somefile
답변4
태그를 지정했지만 vi
CLI 옵션을 찾고 있는 것 같습니다. 그 안에 있는 동안 위에 삽입을 vi
사용하여 shift + O
자동으로 새 행을 추가한 다음 행을 직접 붙여넣을 수 있습니다. 편집기를 사용하고 싶지 않다면 그렇게 할 수 있습니다 sed
(GNU 구현을 가정).
sudo sed -i '1iabcd555.india.com' /etc/hosts