四川住房和城乡建设厅网站打不开,毕业季网站如何做网页,开发工具指的是什么,科技公司手机网站文章目录 认识BASH这个Shell硬件、内核与shell为什么要学命令行模式的Shell#xff1f;Bash Shell的功能命令与文件补全(TAB)命令别名设置(alias)历史命令(history)任务管理、前台、后台控制(jobs#xff0c;fg#xff0c;bg)通配符程序化脚本 查询命令是否为Bash shell 的内… 文章目录 认识BASH这个Shell硬件、内核与shell为什么要学命令行模式的ShellBash Shell的功能命令与文件补全(TAB)命令别名设置(alias)历史命令(history)任务管理、前台、后台控制(jobsfgbg)通配符程序化脚本 查询命令是否为Bash shell 的内置命令(type)使用案例 命令的执行与快速编辑按钮 认识BASH这个Shell
管理整个计算机硬件的其实是操作系统的内核(kernel)这个内核是需要保护的。所以我们一般只能通过Shell来跟内核沟通以让内核完成我们所想要实现的任务。那么系统有多少shell可用呢为什么要使用bash
硬件、内核与shell
什么是shell只要摸过计算机对于操作系统(不论是Linux、UNIX或是Windows)有点概念的朋友大多听过这个名词因为只要有操作系统那么就离不开shell这个东西。不过在讨论shell之前我们先来了解一下计算机的运行情况吧举个例子当你要计算机播放出音乐的时候你的计算机需要什么东西
硬件当然就是需要你硬件有声卡这个设备否则怎么会有声音。内核管理操作系统的内核可以支持这个芯片组当然还需要提供芯片的驱动程序应用程序需要用户(就是你)输入发生声音的命令
这就是基本的一个输出声音所需要的步骤也就是说你必须要输入一个命令之后硬件才会通过你执行的命令来工作。那么硬件如何知道你执行的命令那就是内核(kernel)的管理工作了也就是说我们必须要通过Shell将我们输入的命令与内核沟通好让内核可以控制硬件来正确无误第工作。 操作系统其实就是一组软件由于这组软件在控制整个硬件与管理系统的活动检测如果这组软件能被用户随意使用若用户应用不当将会使得整个系统崩溃
但是用户总是需要让用户使用操作系统的所以就有了在操作系统上面发展的应用程序。用户可以通过应用程序来指挥内核让内核完成我们所需要的硬件任务。
为什么要学命令行模式的Shell
学习命令行模式的shell有以下几个原因
提高效率在命令行模式下可以通过简单的命令完成复杂的任务比如批量修改文件名、查找文件、处理文本等。这些命令可以通过脚本自动化执行提高操作效率。方便远程操作通过ssh等远程登录工具可以在远程机器上使用命令行模式的shell方便远程操作比如服务器管理、文件传输等。更好地理解计算机学习命令行模式的shell可以更好地理解计算机的底层工作原理比如文件系统、进程管理等。更好地理解编程很多编程语言都可以在命令行模式下编写和执行学习命令行模式的shell可以更好地理解编程语言的底层原理和编写脚本的技巧。适用于各种操作系统命令行模式的shell是各种操作系统都支持的学习命令行模式的shell可以适用于各种操作系统比如Linux、Mac、Windows等。
Bash Shell的功能
不论你是使用的哪个Linux发行版你都难逃要学习bash的宿命那么这个shell有什么好处呢为什么选择它为默认shellbash的优点主要有下面几个
命令与文件补全(TAB)
在bash环境中使用【TAB】是一个很好的习惯可以让你少打很多字还可以保证你输入的都是正确的。
【TAB】接在一串命令的第一个字后面则为命令补全【TAB】接在一串命令的第二个字后面则为文件补全
所以我想知道【c】开头的命令呢就按下【c [TAB] [TAB]】就行了。
命令别名设置(alias)
假如我需要知道这个目录下面所有文件(包含隐藏文件)及所有的文件属性那么我就必须要执行【ls -al】 这样的命令很麻烦我们就可以使用命令别名的方式。例如想让输入 ls 替换为输入 ls -al那么该如何做呢
[rootlocalhost ~]# alias lsls -al
[rootlocalhost ~]# ls
总用量 48
dr-xr-x---. 3 root root 179 4月 21 16:48 .
dr-xr-xr-x. 17 root root 224 4月 5 20:11 ..
-rw-------. 1 root root 4765 4月 21 10:07 .bash_history
-rw-r--r--. 1 root root 18 4月 20 08:44 .bash_logout
-rw-r--r--. 1 root root 193 4月 20 08:44 .bash_profile
-rw-r--r--. 1 root root 231 4月 20 08:44 .bashrc
drwxr-----. 3 root root 19 4月 20 10:39 .pki
-rw-r--r--. 1 root root 16 4月 21 09:53 utf8zw
-rw-------. 1 root root 4881 4月 21 16:48 .viminfo
-rw-r--r--. 1 root root 83 4月 20 20:16 .vimrc
-rw-r--r--. 1 root root 16 4月 21 09:36 zw
-rw-r--r--. 1 root root 11 4月 21 09:41 zwbig5
-rw-r--r--. 1 root root 11 4月 21 09:43 zwbig555总所周知root可以删除(rm)任何数据所以当你使用root的身份在工作时需要特别小心但是总有失手的时候那么rm提供一个选项让我们确认是否删除文件就是-i的选项所以你可以这样做
[rootlocalhost ~]# alias rmrm -i这样使用rm的时候就不用太担心会误删的情况这也是命令别名的优点.。那么如何知道当前我设置了哪些别名呢如下所示
[rootlocalhost ~]# alias
alias egrepegrep --colorauto
alias fgrepfgrep --colorauto
alias grepgrep --colorauto
alias l.ls -d .* --colorauto
alias llls -l --colorauto
alias lsls -al
alias rmrm -i
alias whichalias | /usr/bin/which --tty-only --read-alias --show-dot --show-tilde那么怎么取消别名呢如下所示
[rootlocalhost ~]# unalias ls
[rootlocalhost ~]# alias
alias egrepegrep --colorauto
alias fgrepfgrep --colorauto
alias grepgrep --colorauto
alias l.ls -d .* --colorauto
alias llls -l --colorauto
alias rmrm -i
alias whichalias | /usr/bin/which --tty-only --read-alias --show-dot --show-tilde历史命令(history)
bash里面最棒的就是这个【history】命令它能够记录使用过的命令我们只需要在命令行里按下【上下键】就可以找到前一个输入的命令。 这么命令在哪里呢在你的家目录内的【.bash_history】不过需要留意的是~/.bash_history记录的是前一次登录以前所执行的命令而至于这一次登录所执行的命令都被存在内存中当你成功的注销系统后该命令才会记录到./bash_history中。
如果我觉得每次输入history字符太多太麻烦可以使用命令别名来设置
[rootlocalhost ~]# alias hhistory这样输入h等于输入了history那么history 有什么用法呢
history [n]
history [-c]
history [-raw] histfiles
选项n数字意思是【列出最近的n条命令】的意思
-c将目前的shell中的所有history内容全部删除
-a将目前新增的history命令新增histfiles中若没有加histfiles则默认写入~/.bash_history。
-r将history的内容读到目前这个shell的history记录中
-w将目前history记录的内容写入histfiles中。使用案例
列出最近的3条数据
[rootlocalhost ~]# history 38 echo $bash9 echo $PATH10 history 3立刻将目前的数据写入histfiles.txt中
[rootlocalhost ~]# history -w histfiles.txt那么这个history命令只能让我查询命令而已吗当然不止我们还可以利用相关的功能帮我们执行命令
!number
!command
!!
什么意思呢
number执行第几条命令的意思
command有最近的命令向前查找【命令串开头为command】的那个命令并执行
!!就是执行上一条命令使用案例
[rootlocalhost ~]# h1 h2 cat3 cat -a zw4 whoaim5 whoami 6 echo $7 echo $LANG8 echo $bash9 echo $PATH10 history 311 history -w12 ls13 echo $(HISTSIZE)14 history -w histfiles.txt15 cat histfiles.txt 16 h
[rootlocalhost ~]# !9 # 执行第9条命令
echo $PATH
/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/.local/bin:/root/bin任务管理、前台、后台控制(jobsfgbg)
此内容可参考这篇博客https://blog.csdn.net/qq_52089863/article/details/129976536
使用前、后台的控制可以让任务进行的更加顺利至于任务管理(jobs)的用途更为广泛可以让我们随时将任务丢到后台执行不怕使用[ctrl c]来停掉更该程序很不错。在单一登录的环境下达到多任务的目的。
通配符
除了完整的字符串之外bash还支持许多的通配符来帮助用户查询与命令执行。举例来说我想要知道/usr/bin 下面有多少以X开头的文件可以使用【ls -l /usr/bin/*X】此外还有其他可利用的通配符这些都能够加快用户操作的速度。
程序化脚本
什么是程序化脚本就是将你平时管理需要执行的连续命令写成一个文件该文件并且可以通过交互式的方式来进行主机的检测工作也可以借由shell提供的环境变量及相关的命令来进行设计。
查询命令是否为Bash shell 的内置命令(type)
那我怎么知道这这个命令到底是来自外部命令(指的是非bash所提供的命令)或是内置在bash中呢可以用type这个命令来观察
type [-tpa] name
选项不加任何参数时type显示出name是外部命令还是bash内置命令。
-t当加入 -t参数时type将name以下面这些资源显示出它的意义。file 表示外部命令alias表示该命令为命令别名所设置的名称builtin表示该命令为bash的内置命令功能
-p如果后面接的name为外部命令时才会显示完整的文件名
-a会由PATH变量定义的路径中将所有含name的命令都列出来包括alias使用案例
查询下rm这个命令是否为bash内置
[rootlocalhost ~]# type rm
rm 是 rm -i 的别名 # 什么参数都没加列出rm的最主要使用情况
[rootlocalhost ~]# type -t rm
alias
[rootlocalhost ~]# type -a rm
rm 是 rm -i 的别名 # 最先展示的是rm的最主要使用情况
rm 是 /usr/bin/rm # 外部命令在所在的路径那么cd是bash的内置命令吗
[rootlocalhost ~]# type cd
cd 是 shell 内嵌 # cd是shell的内置命令命令的执行与快速编辑按钮
如果命令太长的话如何用两行来输入
[rootlocalhost ~]# cp -rf /etc/sysconfig/network-scripts/ifcfg-ens33 \/home/csq/上面这个命令是将网卡文件复制到 csq这个普通用户下不过因为命令太长就利用【\Enter】来将这个按键转义让【Enter】不在具有执行的功能好让命令可以继续下一行输入。需要注意的是[Enter]是紧挨着( \ )的两者中间没有其他字符因为( \ )仅转义紧接着的下一个字符而已。
如果成功转义[Enter]后下一行最前面会出现 的符号可以继续输入命令也就是说那个 是系统自动出现的不需要你输入。
另外当你需要执行的命令特别长或是你输入了一串错误的信息时你想要快速的将这串命令整个删除一般来说我们都是使用删除键。其实还有组合键可以使用。
组合键功能示范[ctrl] u/[ctrl] k分别是从光标处向前删除命令串(ctrl u)及向后删除命令串(ctrl k)[ctrl] a/[ctrl] e分别是让光标移动到整个命令串的最前面(ctrl a) 或最后面(ctlr e)