当前位置: 首页 > news >正文

文章类网站选什么内容微商城开发软件

文章类网站选什么内容,微商城开发软件,wordpress微博评论箱,房产网租房文章目录 5. 理解shell5.1 shell的类型5.2 交互shell和系统默认shell5.3 安装zsh shell程序5.4 shell的父子关系5.5 命令列表5.6 命令分组5.7 使用命令分组创建子shell5.8 子shell用法5.9 shell的非内建命令和内建命令5.9.1 非内建命令5.9.2 内建命令5.9.3 history和alias命令介… 文章目录 5. 理解shell5.1 shell的类型5.2 交互shell和系统默认shell5.3 安装zsh shell程序5.4 shell的父子关系5.5 命令列表5.6 命令分组5.7 使用命令分组创建子shell5.8 子shell用法5.9 shell的非内建命令和内建命令5.9.1 非内建命令5.9.2 内建命令5.9.3 history和alias命令介绍 5. 理解shell shell不单单是一种CLI它是一个时刻都在运行的复杂交互式程序。 输入命令并利用shell来运行脚本会出现一些既有趣又令人困惑的问题。搞清楚shell进程以及它与系统之间的关系能够帮助你解决这些难题或是完全避开它们。 在本文章中你会了解到如何创建子shell以及父shell与子shell之间的关系。探究各种用于创建子进程的命令和内建命令。 5.1 shell的类型 系统启动什么样的shell程序取决于你个人的用户ID配置。在/etc/passwd文件中在用户ID记录的第7个字段中列出了默认的shell程序。只要用户登录到某个虚拟控制台终端或是在GUI中启动终端仿真器默认的shell程序就会开始运行。 # 1. 在现代Linux系统中bash shell程序bash通常位于/usr/bin目录或者/bin目录which bash命令可以帮助我们找出bash shell的位置。 [rootFedora-Desktop ~]# which bash /usr/bin/bash [rootFedora-Desktop ~]# # 2. 从/usr/bin目录中可以看到bash shell是一个程序。 [rootFedora-Desktop ~]# ls -lF /usr/bin/bash -rwxr-xr-x. 1 root root 1406608 2月 9日 08:00 /usr/bin/bash* [rootFedora-Desktop ~]# # 3. root用户使用bash shell作为默认shell程序。 [rootFedora-Desktop ~]# head -n 1 /etc/passwd root:x:0:0:Super User:/root:/bin/bash [rootFedora-Desktop ~]# # 4. 用户可以将这些shell程序中的某一个作为自己的默认shell。不过由于bash shell的广为流行很少有人使用其他的shell作为默认的交互式shell。 [rootFedora-Desktop ~]# cat /etc/shells /bin/sh /bin/bash /usr/bin/sh /usr/bin/bash [rootFedora-Desktop ~]# 除了BashBourne Again SHell和shBourne Shell之外还有多种其他的shell它们各有特色适用于不同的场景和需求。以下是一些常见的shell 1. C Shell (csh) Turbo C Shell (tcsh): C Shell 的语法类似于C编程语言提供了命令历史、别名等功能。tcsh 是 csh 的增强版本增加了命令行编辑、自动完成等便利功能。 2. Korn Shell (ksh): 由David Korn设计是Bourne Shell的一个扩展支持更高级的编程结构如函数、数组等同时兼容sh脚本。 3. Z Shell (zsh): 功能强大是bash的一个超集拥有丰富的插件系统、高级自动补全功能、主题支持等近年来因其高度可定制性和用户体验而在开发者中变得非常流行。 4.Fish (Friendly Interactive Shell): 设计用于提供更好的用户体验有着出色的命令补全和颜色高亮特性以及友好的交互界面适合新手。 5. Debian Almquist Shell (dash): 一个轻量级的shell专为速度优化主要用于系统的初始化脚本是Debian和Ubuntu等系统中的/bin/sh的默认实现。 6. BusyBox Ash: 通常在嵌入式Linux系统中使用是一个小型化的Almquist Shell旨在减少资源占用。 7. PowerShell: 虽然起源于Microsoft Windows平台但现在也有Linux和macOS版本它是一种面向对象的shell专为系统管理和自动化任务设计支持.NET框架和CMDLETs。 这些shell各有优劣选择哪种shell往往取决于用户的特定需求、习惯以及系统环境的要求。 5.2 交互shell和系统默认shell 默认的交互shell (bash会在用户登录某个虚拟控制台终端或在GUI中运行终端仿真器时启动。 默认的系统shellsh用于那些需要在启动时使用的系统shell脚本。 1.某些发行版使用软链接将默认的系统shell指向bash shell比如Fedora发行版: [rootFedora-Desktop ~]# which sh /usr/bin/sh [rootFedora-Desktop ~]# ls -lF /usr/bin/sh lrwxrwxrwx. 1 root root 4 7月 9日 08:00 /usr/bin/sh - bash* [rootFedora-Desktop ~]# 在有些发行版中默认的系统shell并不指向bash shell比如Ubuntu发行版 [rootUbuntu-Desktop ~]# which sh /usr/bin/sh [rootUbuntu-Desktop ~]# ls -lF /usr/bin/sh lrwxrwxrwx 1 root root 4 7月 9日 08:01 /usr/bin/sh - dash* [rootUbuntu-Desktop ~]# 使用不同的shell。 # 使用echo $0显示当前所用shell的做法仅限在shell命令行中使用。如果在shell脚本中使用则显示的是该脚本的名称。 -bash中的 - [rootFedora-Desktop ~]# echo $0 -bash -bash中的 -表示它是交互式shell [rootFedora-Desktop]~## 输入命令exit就可以退出sh程序 [rootFedora-Desktop]~# sh sh-5.2# exit exit [rootFedora-Desktop ~]# zsh[rootFedora-Desktop]~# echo $0 zsh [rootFedora-Desktop]~#5.3 安装zsh shell程序 # 1. 在Fedora 40-1.14系统上安装zsh [rootFedora-Desktop ~]# dnf install zsh -y# 2. 将zsh设置为当前系统的默认shell [rootFedora-Desktop ~]# chsh -s $(which zsh) Changing shell for root. Shell changed. [rootFedora-Desktop ~]# # 3. 查看root用户现在使用的默认shell。 [rootFedora-Desktop ~]# head -n 1 /etc/passwd root:x:0:0:Super User:/root:/usr/bin/zsh [rootFedora-Desktop ~]# echo $PATH /root/.local/bin:/root/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin [rootFedora-Desktop ~]# # 4. 重新打开一个终端执行exec zsh 或者重启生效 [rootFedora-Desktop]~# exec zsh [rootFedora-Desktop]~# echo $PATH /usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin [rootFedora-Desktop]~# cat /etc/shells /bin/sh /bin/bash /usr/bin/sh /usr/bin/bash /usr/bin/zsh /bin/zsh [rootFedora-Desktop]~# # 5. 改回原来的shell: chsh -s [原来shell的完整路径] [rootFedora-Desktop]~# chsh -s /bin/bash Changing shell for root. Shell changed. [rootFedora-Desktop]~# echo $PATH /usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin# 6. 重新打开一个终端执行exec bash 或者重启生效 [rootFedora-Desktop]~# exec bash [rootFedora-Desktop ~]# echo $PATH /root/.local/bin:/root/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin [rootFedora-Desktop ~]# 其他shell的安装方法类似不过多介绍了。 5.4 shell的父子关系 [rootFedora-Desktop ~]# echo $0 -bash [rootFedora-Desktop ~]# bash [rootFedora-Desktop ~]# echo $0 bash [rootFedora-Desktop ~]# exit exit [rootFedora-Desktop ~]# echo $0 -bash [rootFedora-Desktop ~]# # 好像什么并没有改变什么但是bash程序已经退出了。为了理解这个过程我们接下来将探究登录shell程序与新启动的shell程序之间的关系。 # 1. 用户登录某个虚拟控制台终端或在GUI中运行终端仿真器时所启动的默认的交互式shel登录shell是一个父shell。 [rootFedora-Desktop ~]# ps -f UID PID PPID C STIME TTY TIME CMD root 2636 2621 0 17:07 pts/1 00:00:00 -bash root 2713 2636 99 17:28 pts/1 00:00:00 ps -f [rootFedora-Desktop ~]# # 2. 当你在CLI提示符处输入/usr/bin/bash或者bash命令或是其他shell程序名时会创建新的shell程序。这是一个子shell。子shell也拥有CLI提示符同样会等待命令输入。 [rootFedora-Desktop ~]# bash [rootFedora-Desktop ~]# ps -f UID PID PPID C STIME TTY TIME CMD root 2636 2621 0 17:07 pts/1 00:00:00 -bash root 2714 2636 0 17:29 pts/1 00:00:00 bash #它的父进程是2636 root 2735 2714 0 17:30 pts/1 00:00:00 ps -f [rootFedora-Desktop ~]# 第一个bash shell程序也就是父shell进程其进程PID是2636。 第二个bash shell程序即子shell进程其进程PID是2430。 它们之间的关系如下图 注意 子shell child shell也叫subshell可以从父shell中创建也可以从另一个子shell中创建。 在生成子shell进程时只有部分父进程的环境被复制到了子shell环境中。这会对包括变量在内的一些东西造成影响。 # bash命令被输入了两次这实际上创建了两个子shell。 [rootFedora-Desktop ~]# ps -f UID PID PPID C STIME TTY TIME CMD root 1860 1846 0 21:17 pts/0 00:00:00 -bash root 1894 1860 25 21:17 pts/0 00:00:00 ps -f [rootFedora-Desktop ~]# bash [rootFedora-Desktop ~]# bash [rootFedora-Desktop ~]# ps --forestPID TTY TIME CMD1860 pts/0 00:00:00 bash1909 pts/0 00:00:00 \_ bash1943 pts/0 00:00:00 \_ bash2016 pts/0 00:00:00 \_ ps [rootFedora-Desktop ~]# # 使用exit可以退出子shell [rootFedora-Desktop ~]# exit exit [rootFedora-Desktop ~]# exit exit [rootFedora-Desktop ~]# ps --forestPID TTY TIME CMD1860 pts/0 00:00:00 bash2055 pts/0 00:00:00 \_ ps [rootFedora-Desktop ~]# bash 主页http://www.gnu.org/software/bash 使用 GNU 软件的通用帮助http://www.gnu.org/gethelp/ # 获取更多帮助信息 [rootFedora-Desktop ~]# bash --help [rootFedora-Desktop ~]# [rootFedora-Desktop ~]# man bash5.5 命令列表 是一系列由分号(;)、换行符或空格分隔的命令集合它们在shell中按顺序执行。每个命令独立运行它们共享当前shell的环境包括变量、工作目录等。命令之间互不影响前一个命令的输出、错误或状态不会直接影响后续命令的执行除非通过重定向或命令替换等方式显式地传递数据或状态。 # 命令列表 (用 ;) [rootFedora-Desktop ~]# pwd; ls; cd /var/log; pwd; echo $BASH_SUBSHELL /root anaconda-ks.cfg zy.txt /var/log 0 [rootFedora-Desktop log]# # 命令列表 (用 \) [rootFedora-Desktop log]# virt-install \ --boot hd \ --namemysql-EC3 \ --os-typelinux \ --os-variantfedora18 \ --cpu host \ --vcpus 2,maxvcpus2 \ --memory 2048 \ --disk/var/lib/libvirt/images/LinuxImage.qcow2 \ --network networkovs01_network,targetif01,mac02:01:01:01:01:01 \ --graphics vnc,listen0.0.0.0,port60001 bash: virt-install: 未找到命令... 安装软件包“virt-install”以提供命令“virt-install” [N/y] 如果 echo $BASH_SUBSHELL该命令返回0表明没有子shell返回其他数字则表明存在子shell。 5.6 命令分组 命令分组是指在执行复杂操作或需要将多个命令组合以实现特定逻辑时对这些命令进行的一种逻辑上的组织。这通常涉及使用shell的结构化特性。 利用括号 ()、大括号 {}需配合;、或换行符或特定语法如$(command)用于命令替换来组织命令。当使用 () 时会创建一个新的子shell环境来执行括号内的命令组。这意味着在子shell中对环境的修改如变量赋值、工作目录变更不会影响到外部的父shell。当时用{}时不会创建新的子shell不过它们通常需要配合分号或换行以及命令执行符如;、来正确执行。使用复杂逻辑如前一命令成功后执行后一命令、||前一命令失败后执行后一命令、;无论前一命令成功与否都执行后一命令等来进行命令的串联或并行执行。 命令分组可以实现 逻辑分组使得一组命令作为单一单元处理比如在条件语句或循环中。流程控制控制命令的执行顺序和条件比如基于前一个命令的成功或失败来决定是否执行下一个命令。环境隔离在子shell中执行命令组可以保持或隔离环境变量和状态不影响外部shell环境。资源共享在同一个子shell内的命令可以更容易地共享输出或状态信息例如使用管道|连接的命令组前一个命令的输出直接作为后一个命令的输入。 简而言之命令列表关注的是Linux提供的所有独立命令及其功能而命令分组则侧重于如何通过逻辑组织这些命令来实现更复杂的操作流程和任务自动化。 5.7 使用命令分组创建子shell 不使用bash shell命令和运行shell脚本你也可以生成子shell。一种方法就是使用命令分组 。 # 1.使用圆括号生成了一个子shell来执行这些命令。 [rootFedora-Desktop ~]# (pwd; ls; cd /var/log; pwd; echo $BASH_SUBSHELL) /root anaconda-ks.cfg zy.txt /var/log 1 # 存在子shell [rootFedora-Desktop ~]# # 2.使用包围起来的一组命令它能够创建出子shell来执行这些命令。甚至可以在命令列表中嵌套括号来创建子shell的子shell。 [rootFedora-Desktop ~]# echo $BASH_SUBSHELL 0 [rootFedora-Desktop ~]# (pwd; echo $BASH_SUBSHELL) /root 1 [rootFedora-Desktop ~]# (pwd; (echo $BASH_SUBSHELL)) /root 2 [rootFedora-Desktop ~]# # 3. 使用花括号进行命令分组并不会像进程列表那样创建子shell。 [rootFedora-Desktop ~]# { pwd ; echo $BASH_SUBSHELL; } /root 0 [rootFedora-Desktop ~]# 子shell在shell脚本中经常用于多进程处理。但是创建子shell要消耗更多的资源比如内存和计算能力会明显拖慢任务进度。在交互式CLI shell会话中子shell同样存在问题它并非真正的多进程处理原因在于终端与子shell的I/O绑定在了一起。 5.8 子shell用法 在交互式shell中一种高效的子shell用法是后台模式。 # 1. 探究后台模式 在后台模式运行命令可以在处理命令的同时让出CLI以供他用sleep命令会接受一个参数作为希望进程等待睡眠的秒数。该命令在shell脚本中常用于引入一段暂停时间。 [rootFedora-Desktop ~]# sleep 10 [rootFedora-Desktop ~]# # 2. 要想将命令置入后台模式可以在命令末尾加上字符 第一条信息是方括号中的后台作业号1。第二条信息是后台作业的进程ID2162。 [rootFedora-Desktop ~]# sleep 5000 [1] 2162 [rootFedora-Desktop ~]# ps -f UID PID PPID C STIME TTY TIME CMD root 1305 1298 0 08:58 pts/0 00:00:00 -bash root 2162 1305 0 10:30 pts/0 00:00:00 sleep 5000 root 2163 1305 0 10:31 pts/0 00:00:00 ps -f [rootFedora-Desktop ~]# # 3. jobs命令能够显示当前运行在后台模式中属于你的所有进程作业 [rootFedora-Desktop ~]# jobs -l [1] 2162 运行中 sleep 5000 [rootFedora-Desktop ~]# 需要提醒的是后台作业的结束状态可未必会一直等待到合适的时候才现身。当作业结束状态突然出现在屏幕上的时候你可别吃惊啊。 后台模式非常方便它可以让我们在CLI中创建出有实用价值的子shell。 将分组列表置入后台 通过将分组列表置入后台可以在子shell中进行大量的多进程处理。由此带来的一个好处是终端不再和子shell的I/O绑定在一起。 # 4. 分组列表前台运行 在分组列表中加入sleep命令并显示BASH_SUBSHELL变量结果不出所料 [rootFedora-Desktop ~]# (sleep 2 ; echo $BASH_SUBSHELL ; sleep 2) 1 [rootFedora-Desktop ~]# # 5. 将同样的进程列表置入后台会产生些许不同的命令输出 [rootFedora-Desktop ~]# (sleep 2 ; echo $BASH_SUBSHELL ; sleep 2) [2] 2183 [rootFedora-Desktop ~]# 1 ^C [2] 已完成 ( sleep 2; echo $BASH_SUBSHELL; sleep 2 ) [rootFedora-Desktop ~]# # 6. tar 创建备份文件有效利用后台进程列表的一个实用例子 [rootFedora-Desktop ~]# lsdocuments music [rootFedora-Desktop ~]# (tar -cf doc.tar documents/ ; tar -cf music.tar music/) [2] 2211 [rootFedora-Desktop ~]# ls *.tar doc.tar music.tar [2] 已完成 ( tar -cf doc.tar documents/; tar -cf music.tar music/ ) [rootFedora-Desktop ~]# ls doc.tar documents music music.tar [rootFedora-Desktop ~]# 协程 进程、线程、协程是现代计算中用于实现并发和多任务处理的三种基本概念它们之间存在显著的区别 资源拥有与隔离 进程是操作系统资源分配的最小单位每个进程都有自己独立的地址空间包括代码段、数据段、堆和栈。这意味着进程之间不共享内存通信通常需要通过IPC进程间通信机制。线程是进程内的执行单元线程之间共享所属进程的地址空间包括代码、数据和文件描述符等资源。线程减少了上下文切换的开销但增加了资源共享的复杂度需要同步机制如锁、信号量来防止数据竞争。协程是一种用户态轻量级线程运行在单个线程内共享同一地址空间。协程的调度由程序自身控制而非操作系统因此切换更快且无需操作系统介入。协程通过协作而非抢占的方式进行任务切换降低了同步开销。 系统开销 进程创建和销毁进程的开销相对较大因为需要分配独立的地址空间和其他资源。线程相比进程创建线程的开销较小但仍需分配栈空间等资源且线程间的切换由操作系统管理有一定的开销。协程创建和切换协程的开销极小仅需保存和恢复少量上下文通常只需几字节到几十字节的栈空间。 调度方式 进程和线程通常由操作系统内核调度可以被中断并由操作系统决定何时恢复执行。协程调度责任在于程序本身程序员通过明确的yield让出控制权操作来控制协程的执行流这使得协程能够避免不必要的调度提高效率。 应用场景 进程适用于需要隔离资源和独立执行环境的任务如服务器上运行的不同服务。线程适用于需要共享资源但又希望保持相对独立执行路径的场景如Web服务器处理多个请求。协程特别适合于I/O密集型应用如网络请求处理、异步IO、游戏开发等它们能高效地处理大量的并发请求而无需大量线程。 资源占用 进程占用资源最多包括独立的内存空间。 线程相对较少但仍需分配栈空间。协程占用资源最少一般只需要少量栈空间。 执行顺序 线程线程的执行顺序由操作系统调度通常是无序的。协程通过程序控制可以实现按需、有序的执行。 这篇文章可以大致看一下一文彻底搞懂协程coroutine是什么值得收藏-CSDN博客 总的来说进程提供了最高级别的隔离和独立性但开销大线程减少了这种开销实现了更细粒度的并发但增加了资源共享的复杂性而协程以其轻量、高效的特性成为处理高并发I/O密集型任务的理想选择但需要手动管理调度逻辑。 将进程列表置入后台并不是子shell在CLI中仅有的创造性用法还有一种方法是协程。 协程同时做两件事一是在后台生成一个子shell二是在该子shell中执行命令。 # 1. 要进行协程处理可以结合使用coproc命令以及要在子shell中执行的命令 [rootFedora-Desktop ~]# ps -f UID PID PPID C STIME TTY TIME CMD root 1305 1298 0 08:58 pts/0 00:00:00 -bash root 2162 1305 0 10:30 pts/0 00:00:00 sleep 5000 root 2237 1305 99 11:05 pts/0 00:00:00 ps -f [rootFedora-Desktop ~]# [rootFedora-Desktop ~]# coproc sleep 10 [1] 2238 [rootFedora-Desktop ~]# jobs -l [1] 2238 运行中 coproc COPROC sleep 10 [rootFedora-Desktop ~]# [1] 已完成 coproc COPROC sleep 10 [rootFedora-Desktop ~]# # 2. COPROC是coproc命令给进程起的名字。你可以使用命令的扩展语法自己设置这个名字 [rootFedora-Desktop ~]# coproc My_Job { sleep 10; } [1] 2240 [rootFedora-Desktop ~]# jobs -l [1] 2240 运行中 coproc My_Job { sleep 10; } [rootFedora-Desktop ~]# 必须确保在第一个花括号{和命令名之间有一个空格。还必须保证命令以分号 ;结尾。另外分号和闭花括号 }之间也得有一个空格。 协程能够让你尽情发挥想象力发送或接收来自子shell中进程的信息。只有在拥有多个协程的时候才需要对协程进行命名因为你得和它们进行通信。否则的话让coproc命令将其设置成默认的名字COPROC就行了。 # 可以发挥才智将协程与进程列表结合起来创建嵌套子shell。只需将命令coproc放在进程列表之前即可 [rootFedora-Desktop ~]# coproc ( sleep 20; sleep 10) [1] 2253 [rootFedora-Desktop ~]# jobs [1] 运行中 coproc COPROC ( sleep 20; sleep 10 ) [rootFedora-Desktop ~]# ps --forestPID TTY TIME CMD1305 pts/0 00:00:00 bash2253 pts/0 00:00:00 \_ bash2254 pts/0 00:00:00 | \_ sleep2255 pts/0 00:00:00 \_ ps [rootFedora-Desktop ~]# 记住生成子shell的成本不低而且速度还慢。创建嵌套子shell更是火上浇油在命令行中使用子shell能够获得灵活性和便利。要想获得这些优势重要的是理解子shell的行为方式。对于命令也是如此。 5.9 shell的非内建命令和内建命令 5.9.1 非内建命令 外部命令有时也称为文件系统命令是存在于bash shell之外的程序它并不属于shell程序的一部分。外部命令程序通常位于 /bin、/usr/bin、/sbin或 /usr/sbin目录中。 # ps命令就是一个外部命令。可以使用which命令和type命令找到其对应的文件名 [rootFedora-Desktop ~]# which ps /usr/bin/ps [rootFedora-Desktop ~]# type -a ps ps 是 /usr/bin/ps [rootFedora-Desktop ~]# ls -l /bin/ps -rwxr-xr-x. 1 root root 120776 1月26日 08:00 /bin/ps [rootFedora-Desktop ~]# # 每当执行外部命令时就会创建一个子进程。这种操作称为衍生forking。外部命令ps会显示其父进程以及自己所对应的衍生子进程。 [rootFedora-Desktop ~]# ps -f UID PID PPID C STIME TTY TIME CMD root 1305 1298 0 08:58 pts/0 00:00:00 -bash root 2290 1305 99 11:39 pts/0 00:00:00 ps -f [rootFedora-Desktop ~]# 只要涉及进程衍生就需要耗费时间和资源来设置新子进程的环境。因此外部命令系统开销较高。 当进程必须执行衍生操作时它需要花费时间和精力来设置新子进程的环境。所以说外部命令多少还是有代价的。 就算衍生出子进程或是创建了子shell你仍然可以通过发送信号与其沟通这一点无论是在命令行还是在脚本编写中都是极其有用的。 5.9.2 内建命令 内建命令无须使用子进程来执行。内建命令已经和shell编译成一体作为shell的组成部分存在无须借助外部程序文件来执行。cd命令和exit命令都内建于bash shell。可以使用type命令来判断某个命令是否为内建。 [rootFedora-Desktop ~]# type cd cd 是 shell 内建 [rootFedora-Desktop ~]# type exit exit 是 shell 内建 [rootFedora-Desktop ~]# # echo和pwd既有内建命令也有外部命令 [rootFedora-Desktop ~]# type -a echo echo 是 shell 内建 echo 是 /usr/bin/echo [rootFedora-Desktop ~]# which echo /usr/bin/echo [rootFedora-Desktop ~]# [rootFedora-Desktop ~]# type -a pwd pwd 是 shell 内建 pwd 是 /usr/bin/pwd [rootFedora-Desktop ~]# which pwd /usr/bin/pwd [rootFedora-Desktop ~]# # type -a命令显示出了每个命令的两种实现内建和非内建。注意which命令只显示外部命令文件。提示 对于有多种实现的命令如果想使用其外部命令实现直接指明对应的文件即可。例如要使用外部命令pwd可以输入/usr/bin/pwd。 5.9.3 history和alias命令介绍 1. history是一个有用的内建命令 当输入 !! 时bash会先显示从shell的历史记录中唤回的命令然后再执行该命令。命令历史记录被保存在位于用户主目录的隐藏文件.bash_history之中 [rootFedora-Desktop ~]# ls .bash_history .bash_history [rootFedora-Desktop ~]# 在CLI会话期间bash命令的历史记录被保存在内存中。当shell退出时才被写入历史文件 以在不退出shell的情况下强制将命令历史记录写入.bash_history文件。为此需要使用history命令的 -a选项 [rootFedora-Desktop ~]# history -a [rootFedora-Desktop ~]# 如 果 你 打 开 了 多 个 终 端 会 话 仍 然 可 以 使 用 history -a 命 令 在 打 开 的 会 话 中 向.bash_history文件中添加记录。但是对于其他打开的终端会话历史记录并不会自动更 新。这是因为.bash_history文件只有在打开首个终端会话时才会被读取。要想强制重新读 取.bash_history文件更新终端会话的历史记录可以使用history -n命令。2. 使用命令别名 alias命令是另一个实用的shell内建命令。命令别名允许为常用命令及其参数创建另一个名称从而将输入量减少到最低。 [rootFedora-Desktop ~]# alias -p alias cpcp -i alias egrepgrep -E --colorauto alias fgrepgrep -F --colorauto alias grepgrep --colorauto alias l.ls -d .* --colorauto alias llls -l --colorauto alias lsls --colorauto alias mvmv -i alias rmrm -i alias which(alias; declare -f) | /usr/bin/which --tty-only --read-alias --read-functions --show-tilde --show-dot alias xzegrepxzegrep --colorauto alias xzfgrepxzfgrep --colorauto alias xzgrepxzgrep --colorauto alias zegrepzegrep --colorauto alias zfgrepzfgrep --colorauto alias zgrepzgrep --colorauto [rootFedora-Desktop ~]# # 命令别名属于内建命令所以别名仅在其被定义的shell进程中才有效。 在定义好别名之后你随时都可以在shell中使用它就算在shell脚本中也没问题。 但要注意因为命令别名属于内建命令一个别名仅在它所被定义的shell进程中才有效。 [rootFedora-Desktop ~]# alias lils -li --colorauto [rootFedora-Desktop ~]# li 总计 326034 -rw-------. 1 root root 480 5月 4日 12:02 anaconda-ks.cfg 406259 -rw-r--r-- 1 root root 10240 7月12日 10:56 doc.tar 406255 drwxr-xr-x 1 root root 0 7月12日 10:54 documents 406257 drwxr-xr-x 1 root root 0 7月12日 10:55 music 406260 -rw-r--r-- 1 root root 10240 7月12日 10:56 music.tar 406256 -rw-r--r-- 1 root root 0 7月12日 10:55 zy.mp4 402585 -rw-r--r-- 1 root root 62 7月10日 10:04 zy.txt [rootFedora-Desktop ~]# zsh [rootFedora-Desktop]~# echo $0 zsh [rootFedora-Desktop]~# li bash: li: 未找到命令... [rootFedora-Desktop]~# exit [rootFedora-Desktop]~## 取消别名 [rootFedora-Desktop ~]# unalias li [rootFedora-Desktop ~]# echo $0 -bash [rootFedora-Desktop ~]# li bash: li: 未找到命令... [rootFedora-Desktop ~]# unalias命令的作用通常是临时的仅在当前shell会话中有效。如果你想永久删除别名你需要编辑配置文件如.bashrc, .bash_profile, 或者 .zshrc取决于你使用的shell并从文件中删除或注释掉定义该别名的行。然后你需要重新加载配置文件或新开一个shell会话以使改动生效。例如如果你使用Bash可以执行 [rootFedora-Desktop ~]# source ~/.bashrc
http://www.ho-use.cn/article/10824111.html

相关文章:

  • discuz图片网站模板wordpress权重
  • 外贸网站租用外国服务器好还是自己装一个服务器好数据库 搭建 网站
  • 天津个人专业做网站成都网站设计与制作
  • 成都神速建站做营销网站 如何让商家入驻
  • 国内网站赏析网站霸屏对网站好吗
  • 温州知名网站网页设计简单
  • 不花钱的网站建设网络营销方式的使用方法
  • 珠海网站优化培训wordpress 伪静态html
  • 企业做什么需要有网站怎么给公司网站上放视频
  • 各大网站黑白几天建立网站如何
  • 深圳建设造价信息网站成都网站设计最加科技
  • python做网站用什么软件wordpress ks主题
  • 郑州企业建站模板邮箱验证wordpress
  • 青山湖南昌网站建设网页翻译app
  • 学院网站群建设方案界面交互设计
  • 临沂建设网站怎么做网站接家纺订单
  • 烟台免费网站建站模板办公室装修大概多少钱一平方
  • 长沙优化网站技术厂家网站建设公司未来方向
  • 网站建设做什么会计科目莞城营销型网站建设
  • 做网站容易还是做小程序容易电商运营是做什么
  • 网站特效 素材网站开发教育
  • 网站建设运营免费连接附近wifi
  • 1997年做网站是什么语言网站推广在线
  • 视频网站建设wordpress首页文章数
  • 海尔建设网站的目的html制作网页代码
  • 关于企业网站建设南平网站seo
  • 信誉比较好的网上做任务的网站个人网页设计与制作开题报告
  • 网站前后台套装模板做哪种网站流量上的快
  • 网站优化反馈机制 seowordpress怎么开启
  • 网站治做啊app建立单页网站