Rumah >Operasi dan penyelenggaraan >operasi dan penyelenggaraan linux >Apakah yang dimaksudkan dengan arahan linux sh?
Arahan linux sh ialah perintah untuk menjalankan shell dalam Linux Ia adalah penterjemah shell Skrip shell dan antara muka baris perintah dalam Linux melaksanakan pelbagai tugas.
Persekitaran pengendalian tutorial ini: sistem linux5.9.8 , komputer Dell G3.
Apakah yang dimaksudkan dengan arahan linux sh?
Pengenalan ringkas kepada arahan linux sh
.sh fail ialah fail teks, jika Untuk melaksanakan , anda perlu menggunakan chmod a+x xxx.sh untuk memberikan kebenaran boleh laku.
Program shell mesti bermula dengan "#!/bin/sh". # dalam shell secara amnya bermaksud ulasan, begitu ramai orang berpendapat bahawa "# juga merupakan ulasan, tetapi sebenarnya tidak!"
"#!/bin/sh" ialah pengisytiharan shell, yang menunjukkan jenis shell yang anda gunakan dan laluannya.
#!/bin/ bermaksud skrip ini menggunakan .bin/sh untuk melaksanakan.
#! ialah pengecam khas, diikuti dengan laluan shell yang mentafsir skrip ini Jika tidak diisytiharkan, skrip akan dilaksanakan dalam shell lalai, yang ditakrifkan oleh sistem tempat pengguna berada. . Untuk melaksanakan skrip shell, jika skrip ditulis untuk dijalankan dalam Kornshell ksh, dan skrip shell lalai yang dijalankan ialah C shell csh, skrip itu mungkin gagal semasa pelaksanaan. Oleh itu, adalah disyorkan agar semua orang menganggap "#!/bin/sh" sebagai fungsi utama bahasa C Ia perlu menulis shell untuk menjadikan program shell lebih ketat.
Pembolehubah mesti digunakan dalam bahasa pengaturcaraan lain. Dalam pengaturcaraan shell, semua pembolehubah terdiri daripada rentetan, dan tidak perlu mengisytiharkan pembolehubah . Untuk memberikan nilai kepada pembolehubah, anda boleh menulis:
#!/bin/sh #对变量赋值: a=”hello world”# 现在打印变量a的内容: echo “A is:” echo $aKadangkala nama pembolehubah mudah dikelirukan dengan teks lain, seperti:
num=2 echo “this is the $numnd”Ini tidak akan mencetak "ini ialah yang ke-2", tetapi hanya mencetak "ini ialah ", kerana shell akan mencari nilai pembolehubah numnd, tetapi pembolehubah ini tidak mempunyai nilai. Oleh itu, anda boleh menggunakan pendakap kerinting untuk memberitahu cangkerang bahawa apa yang kita mahu cetak ialah pembolehubah nombor:
num=2 echo “this is the ${num}nd”Dengan cara ini, "ini adalah yang ke-2" akan dicetak
Seperti:
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 -lKod di atas dinyatakan sebagai: cari baris yang mengandungi "hello" dalam file.txt dan kira bilangan baris. Di sini output arahan grep digunakan sebagai input arahan wc. Perlu diingatkan bahawa arahan selepas paip adalah subperintah dan tidak akan muncul dalam arahan seterusnya (sedikit seperti perbezaan antara tugasan C++ di dalam
dan di luar {}
), seperti Perintah berikut : {}
#!/bin/shecho 1 2 3 | { read a b c ; echo $a $b $c ; } # 打印结果为: 1 2 3echo $a $b $c # 打印结果为空
: Output hasil arahan ke fail dan bukannya output standard (skrin). 重定向
>Tulis fail dan
tulis ganti fail lama >>
Tambahkan pada penghujung fail, mengekalkan kandungan fail lama.
“`”: Gunakan sempang songsang untuk menukar output satu perintah sebagai perintah lain Parameter baris arahan .
find . -mtime -1 -type f -printPernyataan di atas digunakan untuk mencari fail yang telah diubah suai dalam tempoh 24 jam yang lalu (-mtime -2 bermaksud 48 jam yang lalu). Jika anda ingin membungkus semua fail yang ditemui, anda boleh menggunakan skrip linux:
#!/bin/sh # The ticks are backticks (`) not normal quotes (‘): tar -zcvf lastmod.tar.gz `find . -mtime -1 -type f -print`
jika
ungkapan, dilaksanakan jika keadaan adalah benar if
Bahagian berikut: then
if ….; then …. elif ….; then …. else …. fi #注意是以fi结尾Dalam kebanyakan kes, anda boleh menggunakan arahan ujian untuk menguji keadaan. Contohnya, anda boleh
membandingkan rentetan, menentukan sama ada fail itu wujud dan sama ada ia boleh dibaca, dsb. ...
sementara
struktur sintaks gelung ialah: while
# expression 1# while循环:当expresssion成立的时候,执行cmdwhile (expresssion)do cmddone# expression 2,可以直接使用truewhile true(或 :)do cmddoneArahan ini boleh digunakan dengan saluran paip, seperti:
# 寻找 ${path} 路径下唯一首字母为‘E’的子目录,并 cd 到该目录find ${path}/E* -type d | while read corresp_pathdo cd ${corresp_path}done
Syarat ujian Biasanya gunakan
"[ ]" untuk mewakili keadaan ujian. Ambil perhatian bahawa ruang di sini adalah sangat penting, pastikan terdapat ruang dalam kurungan segi empat sama.
[ -f "somefile" ] #判断文件是否存在 [ -d "testResults/" ] #判断目录testResults/是否存在 [ -x "/bin/ls" ] #判断/bin/ls文件是否存在并有可执行权限 [ -n "$var" ] #判断$var变量是否有值 [ "$a" = "$b" ] #判断$a和$b是否相等
Pengendali pintasan Jika anda biasa dengan bahasa C, anda mungkin menyukai ungkapan:
[ -f "/etc/shadow" ] && echo “This computer uses shadow passwors”Di sini
“&&” Ia ialah pengendali pintasan yang melaksanakan pernyataan di sebelah kanan jika ungkapan di sebelah kiri adalah benar. Sudah tentu, ungkapan di atas juga boleh dianggap sebagai operasi DAN dalam operasi logik.
Operasi ATAU yang sama"||" juga tersedia dalam pengaturcaraan shell:
#!/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视频教程》
Atas ialah kandungan terperinci Apakah yang dimaksudkan dengan arahan linux sh?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!