怎么查看网站是否备案,基于php技术的个人网站设计,大前端xiu阿里百秀wordpress主题,网站制作手机概览
在上一节中我们了解了关于 Shell 的执行流程#xff0c;知道了在 Linux 环境中一般有哪些常用的 Shell。而在本节中#xff0c;将会学习到 Linux 中最常见的一个 Shell —— Bash#xff0c;了解到 bash 的相关知识和用法。 本节目录 概览相关知识bash 命令提示符bas…概览
在上一节中我们了解了关于 Shell 的执行流程知道了在 Linux 环境中一般有哪些常用的 Shell。而在本节中将会学习到 Linux 中最常见的一个 Shell —— Bash了解到 bash 的相关知识和用法。 本节目录 概览相关知识bash 命令提示符bash 基本格式 bash 常用特殊符号特殊字符通配符逻辑运算符重定向符命令替换符变量和环境符引号符其他符号 bash 有哪些常用配置文件可能常用的系统级配置文件可能常用的用户级配置文件bash 的配置文件加载顺序 bash 内建命令几个常用的内建命令 相关知识
在上一节中说到bash 是 sh 的拓展集除开一些特殊情况它差不多完全兼容 sh所以说 bash 也是众多 Linux 发行版中默认使用最多的 Shell。
bash 命令提示符
[irislocalhost ~]$iris登录到当前终端的用户名称。localhost当前计算机的主机名称。~当前用户所在的目录在此处表示的是用户所在的家目录。$当前用户的级别在此处表示当前用户为普通用户# 表示超级用户。 在非特殊情况下我们并不推荐你使用超级用户来管理你的计算机必要情况下可以使用 sudo 来暂时切换到超级用户权限来管理计算机这将会在后面说到。 bash 基本格式
[irislocalhost ~]$ 命令 [OP] [ARG]命令指定要执行的操作。例如ls、cd、echo 等。OP命令选项用于修改命令的行为通常以单个短划线-或双短划线–开头如 ls -l 或 ls --all。ARG命令需要操作的对象例如文件或目录名称如 ls -l /usr。
bash 常用特殊符号 所有的特殊符号在后面的所有章节中都会提到 特殊字符
符号含义示例\转义字符用于转义特殊字符echo $HOME#注释符一般用于在bash 脚本中注释文字# this is note~主目录符表示当前用户家目录ls ~.一个点表示当前目录ls .…两个点表示上一级目录cd …-表示上一次所在的目录cd -将命令置于后台运行sleep 5
通配符
符号含义示例*匹配 0 个的任意字符ls *.txt匹配任意 1 个字符ls file?.txt匹配任意字符至少 1 个echo “abc123” | grep -E “[a-z]”[ ]匹配括号中的任意一个字符或者一个范围。如 [a-z] 匹配所有小写字母[2,e,4] 只能匹配 2、e、4 三个字符可以与符号 ! 联合使用[!0-9] 匹配除数字之外的任意字符ls file[1-3].txt 匹配以 1、2、3任意一个字符结尾的 txt 文件{ }扩展或者枚举括号中每一个字符ls -l {a,c,d} 只查看括号中规定的目录
逻辑运算符
符号含义示例逻辑与前一个命令成功后执行后一个命令不会忽略返回值成功True、失败Falsemkdir test cd test||逻辑或无论前一个命令是否成功不会忽略返回值cat txt || touch txt!用于执行历史中的命令也是逻辑非运算! 3 执行 history 中的第三条命令顺序执行无论前一个命令是否成功会忽略返回值mkdir test; cd test
重定向符
符号含义示例输出重定向将覆盖文件echo “Hello” file.txt输出重定向追加内容到文件echo “Hello” file.txt输入重定向从文件中读取wc -l file.txt2错误输出重定向到文件ls /invalid-dir 2 error.log标准输出和错误输出同时重定向到文件command output.txtHere Document用于多行输入cat EOF|管道符将前一命令的输出作为后一命令的输入cat file.txt | grep Hello
命令替换符
符号含义示例 使用反引号执行命令并返回结果echo date$(cmd)与反引号功能相同但更推荐使用echo $(date)
变量和环境符
符号含义示例$引用变量值echo $HOME${}用于更复杂的变量操作或避免歧义echo ${USER}$n获取命令行传递的第 n 个参数第 0 个参数为命令本身echo $1$获取所有参数将每个参数视为一个独立单元echo $$*获取所有参数将所有参数视为一个整体当作一个字符串echo $*$#脚本中传递的参数总个数echo $#$?获取上一个命令的退出状态码echo $?$$当前进程的 PIDecho $$$!最近运行的后台任务的 PIDecho $! 更多与 bash shell 编程有关的符号将在后面陆续说到 引号符
符号含义示例’单引号原样输出变量和特殊字符无效echo ‘$HOME’双引号支持变量替换和转义字符echo “Home: $HOME”引号命令替换echo date
其他符号
符号含义示例()分组用于控制命令优先级用于运算(cd /tmp ls)空操作始终返回成功!!执行上一条命令!!!*获取上一条命令的所有参数!* 还有众多作者未曾使用过的特殊符号欢迎有人在评论区指正 bash 有哪些常用配置文件
可能常用的系统级配置文件
/etc/profile是系统级的环境变量和启动配置文件它适用于所有用户的登录 Shell 会话仅适用于登录 shell。它在用户登录时被执行一般用它来设置全局环境变量或者执行其他全局脚本文件。/etc/profile.d/额外的环境变量或启动脚本所有用户生效。/etc/bashrc 或 /etc/bash.bashrc是系统级的 Bash 配置文件用于为所有用户的非登录 Shell 提供全局配置。/etc/bash_completion.d Bash 自动补全tab 补全 的扩展目录存放特定命令的补全脚本。当启用了 Bash 补全功能时该目录下的脚本会自动加载并为对应的命令提供 Tab 键补全。通常可以安装 bash-completion 工具包或手动添加补全脚本。关于此用法将在文章最后的附录部分进行介绍。/etc/skel/是 Linux 系统中的“用户模板目录”用于存放新用户的默认配置文件。当创建新用户时使用 useradd 命令系统会自动复制 skel 目录中的所有文件到新用户的 home 目录。也用于初始化新用户的 Shell 环境避免每次创建用户都手动配置 .bashrc、.profile 等。
可能常用的用户级配置文件
~/.bashrc非登录 Shell 配置。~/.bash_profile登录 Shell 配置。~/.profile兼容 sh 脚本的用户级登录 Shell 配置。~/.bash_logout登出Bash 会话时执行。 注意这些配置文件会随时随着系统版本的变化而变化但大致作用不会做出大的改变。如 ~/.profile 在最新的 RHEL9 中就默认不存在但是如果手动创建它那它将仍然是一个有效的配置文件 bash 的配置文件加载顺序
对于登录 shell 的加载顺序 加载全局配置/etc/profile、/etc/profile.d/*.sh由 /etc/profile 加载加载用户级配置~/.bash_profile 若 ~/.bash_profile 文件不存在尝试加载 ~/.bash_login 若 ~/.bash_login 也不存在则加载 ~/.profile 若 ~/.bash_profile 里有 source ~/.bashrc则继续加载 ~/.bashrc登出时加载~/.bash_logout 对于非登录 shell 的加载顺序 加载系统级配置文件/etc/bashrcRHEL系列/etc/bash.bashrc Debian/Ubuntu等系列加载用户级配置文件~/.bashrc
bash 内建命令
bash 内建命令是 bash 自带的命令它们不依赖于 /usr/bin/ 或其他外部程序因此执行速度更快并且即使 /usr/bin/ 不可用它们仍然可以运行。
[rootlocalhost ~]# type logout # 查看单个命令是不是 bash 内建命令type本身也是内建命令
logout 是 shell 内建
[rootlocalhost ~]# compgen -b # 查看 bash 包含的所有内建命令或使用 help 查看所有内建命令及其语法
.
:
alias
bg
...几个常用的内建命令
内建命令 cd
[rootlocalhost ~]# ls
公共 模板 视频 图片 文档 下载 音乐 桌面 anaconda-ks.cfg
[rootlocalhost ~]# cd /usr # 去往各个目录
[rootlocalhost usr]# ls
bin games include lib lib64 libexec local sbin share src tmp内建命令 history、fc
[rootlocalhost ~]# history # 显示所有历史执行过的命令1 ip a2 ping baidu.com....117 ls118 history
[rootlocalhost ~]# fc 117 # 编辑并重新执行对应编号的历史命令将 ls 重新编辑为 ls -l 执行。!117 只是执行对应编号的命令
ls -l
总用量 8
-rw-r--r--. 1 root root 2 2月 12 13:00 1
drwxr-xr-x. 2 root root 6 1月 18 10:47 公共内建命令 alias、unalias
[rootlocalhost ~]# la
bash: la: command not found...
[rootlocalhost ~]# alias lals -a # 给一些命令设置临时别名也可以写入.bashrc等预加载脚本中永久生效
[rootlocalhost ~]# la
. 公共 视频 文档 音乐 anaconda-ks.cfg .bash_logout .bashrc .config .local .tcshrc
.. 模板 图片 下载 桌面 .bash_history .bash_profile .cache .cshrc .mozilla
[rootlocalhost ~]# unalias la # 反过来也可以去取消别名
[rootlocalhost ~]# la
bash: la: command not found...内建命令 logout、exit
[rootlocalhost ~]# logout # 退出登录 Shell适用于 SSH 或终端SSH 192.168.0.100: session closed
按任意键重新连接
[rootlocalhost ~]# exit # 退出当前 Shell并返回退出代码内建命令dirs、pwd
[rootlocalhost ~]# cd /usr/share/
[rootlocalhost share]# dirs # 显示当前目录栈
/usr/share
[rootlocalhost share]# pwd # 一样的功能
/usr/share内建命令 jobs、fg、bg
[rootlocalhost share]# sleep 100
[1] 2704
[rootlocalhost share]# jobs # 查看所有后台作业
[1] 运行中 sleep 100
[rootlocalhost share]# fg # 将后台作业调度到前台执行
sleep 100
[rootlocalhost share]# bg # 将后台已暂停的作业恢复到后台执行内建命令 disown、kill
[rootlocalhost ~]# sleep 1000
[1] 2720
[rootlocalhost ~]# jobs
[1] 运行中 sleep 1000
[rootlocalhost ~]# disown # 让已经存在的任务脱离当前终端运行当关闭终端时此任务将不会受到任何影响
[rootlocalhost ~]# jobs
[rootlocalhost ~]#
[rootlocalhost ~]# ps aux | grep sleep # 任务已脱离终端运行
root 2720 0.0 0.0 220956 1024 pts/0 S 12:50 0:00 sleep 1000
root 2724 0.0 0.0 221684 2484 pts/0 S 12:52 0:00 grep --colorauto sleep
[rootlocalhost ~]# kill -9 2720 # 杀死任务id为 2720 的任务
[rootlocalhost ~]# ps aux | grep sleep
root 2727 0.0 0.0 221684 2428 pts/0 S 12:55 0:00 grep --colorauto sleep其他常用内建命令将在 shell 编程中提到