「个人理解」:Shell就是我们平时用的“命令行”,它就是一个解释器,既然有一个解释器,那也就能当成一门变成语言,写代码(或者说脚本)来交给解释器运行(like Python)
Shell 是一个用 C 语言编写的程序,它是用户使用 Linux 的桥梁。Shell 既是一种命令语言,又是一种程序设计语言。
Shell 是指一种应用程序,这个应用程序提供了一个界面,用户通过这个界面访问操作系统内核的服务。
Ken Thompson 的 sh 是第一种 Unix Shell,Windows Explorer 是一个典型的图形界面 Shell。
Linux 的 Shell 种类众多,常见的有:
Q:有很多中shell的种类(sh,bash…),我怎么知道我的系统正在用的是哪一种呢?不同的shell之间有什么区别吗?
你可以通过以下方法确认当前使用的 Shell:
检查当前 Shell 的类型: 输入以下命令:
echo $0
这会显示当前正在使用的 Shell 名称,如 bash
、zsh
或 sh
。
检查默认登录 Shell: 输入以下命令:
echo $SHELL
这会显示用户的默认 Shell 路径,例如 /bin/bash
或 /bin/zsh
。
通过进程查看: 输入以下命令:
ps -p $$
这会显示当前进程的名称,通常是当前 Shell 的类型。
查看系统支持的 Shell: 查看系统上可用的 Shell 列表:
cat /etc/shells
不同的 Shell 提供了不同的功能特性和语法支持。以下是常见 Shell 的特点:
sh
(Bourne Shell):
bash
(Bourne Again Shell):
sh
的改进版,最常见的 Linux 默认 Shell。
zsh
(Z Shell):
csh
(C Shell):
tcsh
:
csh
的改进版本,提供了更好的用户交互功能。
ksh
(Korn Shell):
sh
和 csh
的优点,适合脚本编写。
fish
(Friendly Interactive Shell):
sh
或 bash
是不错的选择。zsh
或 fish
。echo $SHELL
或 ps -p $$
能快速确定当前使用的 Shell 类型。不同 Shell 的选择取决于你的需求和个人偏好,你可以尝试切换并探索其特性。
一个简单的自动备份脚本(Bash),代码来自:服务器配置
mail_gzher@wikihost-us:~/backup_script$ cat backup.sh backupExecTime=$(date +"%Y%m%d%H%M%S") backupFilePath="/var/www/webdav/autobackup" backupFileName="GcpBackup" doDelete() { cd ${backupFilePath} local -i count=0 # Integer for backup_file in $(ls -r *.zip); do if ((count < 5)); then echo "Keep ${backup_file}" else echo "Delete ${backup_file}" rm ${backup_file} fi count=${count}+1 done } doInit() { doClean cd ${backupFilePath} mkdir ${backupFileName} } doCopy() { cd ${backupFilePath} cd ./${backupFileName} echo "Copy ${1}" cp -r ${1} . } doZip() { cd ${backupFilePath} echo "Start Zip" zip -rq ./${backupFileName}-${backupExecTime}.zip ./${backupFileName} } doChown() { cd ${backupFilePath} chown mail_gzher:mail_gzher ./${backupFileName}-${backupExecTime}.zip } doClean() { cd ${backupFilePath} echo "Start Clean" # Folder Exist if [ -d ${backupFileName} ]; # Keep the Space then rm -rf ${backupFileName} fi } doDelete doInit doCopy /var/www/DokuWikiStick/dokuwiki # doCopy /var/www/webdav/data/Joplin # doCopy /var/www/webdav/data/Notability doCopy /var/www/webdav/data/BCKY doZip doChown doClean