집 >운영 및 유지보수 >리눅스 운영 및 유지 관리 >Linux 명령 sh는 무엇을 의미합니까?
리눅스 명령 sh는 Linux에서 쉘을 실행하는 명령이며 쉘의 해석기입니다. 쉘 스크립트는 Linux의 쉘 및 명령줄 인터페이스입니다. 사용자는 쉘 스크립트에 명령을 입력하여 다양한 작업을 수행할 수 있습니다.
이 튜토리얼의 운영 환경: linux5.9.8 시스템, Dell G3 컴퓨터.
리눅스 명령 sh는 무엇을 의미하나요?
리눅스 sh 명령에 대한 간략한 소개
.sh 파일을 실행하려면 chmod a+x xxx.sh를 사용하여 실행 파일을 제공해야 합니다. 권한.
쉘 프로그램은 "#!/bin/sh"로 시작해야 합니다. 셸에서 #은 일반적으로 주석을 의미하므로 "#!"도 주석이라고 생각하는 사람이 많지만 실제로는 그렇지 않습니다.
"#!/bin/sh"는 쉘 선언으로, 사용 중인 쉘 유형과 해당 경로를 나타냅니다.
#!/bin/은 이 스크립트가 .bin/sh를 사용하여 실행된다는 의미입니다.
#!은 이 스크립트를 해석하는 쉘의 경로가 뒤에 오는 특수 식별자입니다. 선언하지 않으면 스크립트는 사용자가 실행하는 시스템에 의해 정의됩니다. 셸 스크립트. 스크립트가 Kornshell ksh에서 실행되도록 작성되었으며 기본 실행 셸 스크립트가 C 셸 csh인 경우 스크립트가 실행 중에 실패할 가능성이 높습니다. 따라서 "#!/bin/sh"를 C 언어의 주요 기능으로 취급하는 것이 모든 사람에게 권장됩니다. 이는 쉘 프로그램을 더욱 엄격하게 만들기 위해 쉘을 작성할 때 필수입니다.
. 변수에 값을 할당하려면 다음과 같이 작성할 수 있습니다. #!/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"가 인쇄됩니다
echo "some text" #将文字内容打印在屏幕上 ls #文件列表 cp sourcefile destfile #文件拷贝 mv oldname newname #重命名文件或移动文件 rm file #删除文件 grep 'pattern' file #在文件内搜索字符串,如:grep 'searchstring' file.txt cat file.txt #输出文件内容到标准输出设备(屏幕)上 read var #显示用户输入,并将输入赋值给变量
|
한 명령의 출력을 다른 명령의 입력으로 사용합니다. grep "hello" file.txt | wc -l
{}
및 {}
의 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
重定向
:将命令的结果输出到文件,而不是标准输出(屏幕)。
>写入文件并覆盖旧文件
>>追加到文件的尾部,保留旧文件内容。
反短横线 “`”:使用反短横线可以将一个命令的输出作为另一个命令的一个命令行参数。
#!/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结尾
ifif
表达式,如果条件为真则执行 then
后面的部分:
# expression 1# while循环:当expresssion成立的时候,执行cmdwhile (expresssion)do cmddone# expression 2,可以直接使用truewhile true(或 :)do cmddone
大多数情况下,可以使用测试命令来对条件进行测试。比如可以比较字符串、判断文件时都存在以及是否可读等等…
whilewhile
# 寻找 ${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是否相等
[ -f "/etc/shadow" ] && echo “This computer uses shadow passwors”
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 중국어 웹사이트의 기타 관련 기사를 참조하세요!