Linux 명령 sh는 무엇을 의미합니까?

藏色散人
풀어 주다: 2023-04-12 11:15:24
원래의
11350명이 탐색했습니다.

리눅스 명령 sh는 Linux에서 쉘을 실행하는 명령이며 쉘의 해석기입니다. 쉘 스크립트는 Linux의 쉘 및 명령줄 인터페이스입니다. 사용자는 쉘 스크립트에 명령을 입력하여 다양한 작업을 수행할 수 있습니다.

Linux 명령 sh는 무엇을 의미합니까?

이 튜토리얼의 운영 환경: linux5.9.8 시스템, Dell G3 컴퓨터.

리눅스 명령 sh는 무엇을 의미하나요?

리눅스 sh 명령에 대한 간략한 소개

1. 가능한 실행 방법

리눅스에서 .sh 파일을 실행하는 방법

.sh 파일을 실행하려면 chmod a+x xxx.sh를 사용하여 실행 파일을 제공해야 합니다. 권한.

2. 시작: #!/bin/sh

쉘 프로그램은 "#!/bin/sh"로 시작해야 합니다. 셸에서 #은 일반적으로 주석을 의미하므로 "#!"도 주석이라고 생각하는 사람이 많지만 실제로는 그렇지 않습니다.

"#!/bin/sh"는 쉘 선언으로, 사용 중인 쉘 유형과 해당 경로를 나타냅니다.

#!/bin/은 이 스크립트가 .bin/sh를 사용하여 실행된다는 의미입니다.

#!은 이 스크립트를 해석하는 쉘의 경로가 뒤에 오는 특수 식별자입니다. 선언하지 않으면 스크립트는 사용자가 실행하는 시스템에 의해 정의됩니다. 셸 스크립트. 스크립트가 Kornshell ksh에서 실행되도록 작성되었으며 기본 실행 셸 스크립트가 C 셸 csh인 경우 스크립트가 실행 중에 실패할 가능성이 높습니다. 따라서 "#!/bin/sh"를 C 언어의 주요 기능으로 취급하는 것이 모든 사람에게 권장됩니다. 이는 쉘 프로그램을 더욱 엄격하게 만들기 위해 쉘을 작성할 때 필수입니다.

3. 변수변수는 다른 프로그래밍 언어에서 사용해야 합니다. 쉘 프로그래밍에서 모든 변수는 문자열로 구성되며

변수 선언이 필요하지 않습니다

. 변수에 값을 할당하려면 다음과 같이 작성할 수 있습니다.

#!/bin/sh
 #对变量赋值:
 a=”hello world”# 现在打印变量a的内容:
 echo “A is:” echo $a
로그인 후 복사
때때로 변수 이름은 다음과 같은 다른 단어와 쉽게 혼동됩니다.

 num=2
 echo “this is the $numnd”
로그인 후 복사

This는 "this is the 2nd"를 인쇄하지 않고 "this is " 는 쉘이 변수 numnd의 값을 검색하지만 이 변수에는 값이 없기 때문입니다. 따라서 중괄호를 사용하여 우리가 인쇄하려는 내용이 num 변수임을 쉘에 알릴 수 있습니다.

 num=2
 echo “this is the ${num}nd”
로그인 후 복사

이 방법으로 "this is the 2nd"가 인쇄됩니다

4. 쉘 스크립트 명령에서 다음을 사용할 수 있습니다:

Unix 명령

모든 unix 명령을 쉘 스크립트에서 사용할 수 있지만 비교적 일반적으로 사용되는 명령이 있습니다. 이러한 명령은 일반적으로 파일 및 텍스트 작업에 사용됩니다. 예:

 echo "some text" #将文字内容打印在屏幕上
 ls #文件列表
 cp sourcefile destfile #文件拷贝
 mv oldname newname #重命名文件或移动文件
 rm file #删除文件
 grep 'pattern' file #在文件内搜索字符串,如:grep 'searchstring' file.txt
 cat file.txt #输出文件内容到标准输出设备(屏幕)上
 read var #显示用户输入,并将输入赋值给变量
로그인 후 복사


개념: 파이프, 리디렉션 및 백틱(백슬래시)

Pipe | 한 명령의 출력을 다른 명령의 입력으로 사용합니다.
grep "hello" file.txt | wc -l
로그인 후 복사

위 코드는 file.txt에서 "hello"가 포함된 줄을 검색하여 줄 수를 세는 식으로 표현됩니다. 여기서는 grep 명령의 출력이 wc 명령의 입력으로 사용됩니다.
  1. 파이프라인 뒤의 명령은 하위 명령이며 다음 명령에 나타나지 않는다는 점에 유의해야 합니다({}{}의 C++와 약간 비슷함). | 将一个命令的输出作为另外一个命令的输入。
#!/bin/shecho 1 2 3 | { read a b c ; echo $a $b $c ; } # 打印结果为: 1 2 3echo $a $b $c # 打印结果为空
로그인 후 복사

上述代码表示为:在 file.txt 中搜索包含有 “hello” 的行并计算其行数。在这里grep命令的输出作为wc命令的输入。

需要注意的是,管道后的命令是子命令,并不会出现在接下来的命令中(有点像C++在{}内和{}外赋值的区别),如以下命令:

 find . -mtime  -1  -type  f  -print
로그인 후 복사
  1. 重定向:将命令的结果输出到文件,而不是标准输出(屏幕)。
    >写入文件并覆盖旧文件
    >>追加到文件的尾部,保留旧文件内容。

  2. 反短横线 “`”:使用反短横线可以将一个命令的输出作为另一个命令的一个命令行参数

 #!/bin/sh
 # The ticks are backticks (`) not normal quotes (‘):
 tar -zcvf  lastmod.tar.gz `find . -mtime -1 -type f -print`
로그인 후 복사

上述语句用来查找过去24小时(-mtime -2则表示过去48小时)内修改过的文件。如果想将所有查找到的文件打一个包,则可以使用一下linux脚本:

 if ….; then
 …. elif ….; then
 …. else
 …. fi #注意是以fi结尾
로그인 후 복사

流程控制

if
if 表达式,如果条件为真则执行 then 后面的部分:

# expression 1# while循环:当expresssion成立的时候,执行cmdwhile (expresssion)do
  cmddone# expression 2,可以直接使用truewhile true(或 :)do 
	cmddone
로그인 후 복사

大多数情况下,可以使用测试命令来对条件进行测试。比如可以比较字符串、判断文件时都存在以及是否可读等等

while
while

# 寻找 ${path} 路径下唯一首字母为‘E’的子目录,并 cd 到该目录find ${path}/E* -type d | while read corresp_pathdo
	cd ${corresp_path}done
로그인 후 복사

    Redirect: 명령 결과를 표준 출력(화면) 대신 파일로 출력합니다.

    > 파일에 쓰고

    기존 파일을 덮어쓰고 >
    안티 대시 "`": 앤티 대시를 사용하여 한 명령의 출력

    을 다른 명령의

    명령줄 매개변수로 변환합니다.

 [ -f "somefile" ] #判断文件是否存在
 [ -d "testResults/" ] #判断目录testResults/是否存在
 [ -x "/bin/ls" ] #判断/bin/ls文件是否存在并有可执行权限
 [ -n "$var" ] #判断$var变量是否有值
 [ "$a" = "$b" ] #判断$a和$b是否相等
로그인 후 복사

위 명령문은 지난 24시간 동안 수정된 파일을 찾는 데 사용됩니다(-mtime -2는 지난 48시간을 의미함). 발견된 모든 파일을 패키지하려면 다음 Linux 스크립트를 사용할 수 있습니다.
  [ -f "/etc/shadow" ] && echo “This computer uses shadow passwors”
로그인 후 복사

Process control

ifif 표현식, 조건이 true인 경우 then 다음 부분을 실행합니다.

 #!/bin/sh
 mailfolder=/var/spool/mail/james [ -r "$mailfolder" ]‘ ‘{ echo “Can not read $mailfolder” ; exit 1; } #感觉这里的‘’应该是||
 echo “$mailfolder has mail from:” grep “^From ” $mailfolder
로그인 후 복사
로그인 후 복사
🎜대부분의 경우 test 명령을 사용하여 조건을 테스트할 수 있습니다. 예를 들어 🎜 문자열 비교, 파일 존재 여부 및 읽기 가능한지 여부 등을 확인할 수 있습니다. 🎜...🎜🎜🎜while🎜🎜while 루프의 구문 구조는 다음과 같습니다. 🎜rrreee 🎜이 명령 🎜rrreee 🎜🎜Test Conditions 🎜🎜 일반적으로 🎜 "[ ]" 🎜를 사용하여 테스트 조건을 나타냅니다. 여기서 공백은 매우 중요합니다. 🎜대괄호 안에 공백이 있는지 확인하세요🎜. 🎜rrreee 🎜🎜단축 연산자🎜🎜 C 언어에 익숙하다면 다음 표현식이 마음에 들 것입니다. 🎜rrreee 🎜Here🎜"&&"🎜는 단축 연산자입니다. 왼쪽의 표현식이 참이면 오른쪽의 명령문입니다. 실행됩니다. 물론 위 식은 논리연산에서 AND 연산으로도 간주될 수 있다. 🎜🎜동일한 OR 연산 🎜 "||" 🎜은 쉘 프로그래밍에서도 사용할 수 있습니다. 🎜
 #!/bin/sh
 mailfolder=/var/spool/mail/james [ -r "$mailfolder" ]‘ ‘{ echo “Can not read $mailfolder” ; exit 1; } #感觉这里的‘’应该是||
 echo “$mailfolder has mail from:” grep “^From ” $mailfolder
로그인 후 복사
로그인 후 복사

该脚本首先判断mailfolder是否可读。如果可读则打印该文件中的”From” 一行。如果不可读则或操作生效,打印错误信息后脚本退出。这里有个问题,那就是我们必须有两个命令:
◆打印错误信息
◆退出程序
我们使用花括号以匿名函数的形式将两个命令放到一起作为一个命令使用。一般函数将在下文提及。
不用‘与’和‘或’操作符,我们也可以用if表达式作任何事情,但是使用与或操作符会更便利很多。

推荐学习:《linux视频教程

위 내용은 Linux 명령 sh는 무엇을 의미합니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

관련 라벨:
원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿
회사 소개 부인 성명 Sitemap
PHP 중국어 웹사이트:공공복지 온라인 PHP 교육,PHP 학습자의 빠른 성장을 도와주세요!