kornshell基础知识
作者:lhpa | 来源:互联网 | 2017-08-11 17:51
kornshell基础知识--Linux通用技术-Linux编程与内核信息,下面是详情阅读。
Korn Shell执行命令的顺序
1.关键字,如if,for,function等
2.别名(Aliases)
3.内部命令,如cd, whence和函数等
4.函数Functions
5.脚本Scripts、在PATH中的可执行程序
※找到命令的根源用下面的命令:
whence -v command
或:
type command
Alias(别名)
alias aliasname=command
取消一个别名:
unalias aliasname
列出当前所有的别名:
alias
【TIP】
用来显式当前目录下的所有目录的别名:alias ldir='ls -l|grep ^d'
提问:alias|grep ^ls会看到:ls=/usr/bin/ls,请问:系统为什么要定义这个别名?
Functions(函数)
定义的位置:
Function可以在命令行、.kshrc(ENV文件,见下篇)或在shell script中定义
定义的方法:
function funcname {
shell commands
}
或:
funcname () {
shell commands
}
列出所有当前的functions
functions
取消一个function
unset -f funcname
输出一个function:
typeset -fx funcname
取消输出一个function:
typeset +fx funcname
※function是"typeset -f"的预定义的别名
Korn Shell 的选项
Korn Shell有一些选项,如果在.kshrc(ENV文件,见下篇)中设定他们,那么他们就是全局的,并且可以传递给subshell。
列出所有的Korn Shell选项:
set -o
设置一个选项
set -o OptionName
取消一个选项
set +o OptionName
Korn Shell 选项的意义
allexport 自动export随后定义地所有变量(文件名中不含有.).(等于set -a)
errexit 如果一个命令的返回值不为0,就执行错误陷阱(ERR trap)。但对profile文件例外。(等于set -e)
bgnice 后台进程以较低的优先级运行,这是缺省值
emacs 使用emacs风格的行内编辑器
gmacs 使用gmacs风格的行内编辑器
ignoreeof 遇到文件结束符时不退出shell。要想退出shell必须使用exit命令或者敲Ctrl-D 11次。
keyword 为了保持与Bourne shell的兼容性。(set -k)
markdirs 在完成文件名替换后在目录名后面加一个斜线(/)。
monitor Runs background jobs in a separate process and prints a line upon completion. (set -m)
noclobber 不能用>重定向符覆盖已经存在的文件。只能用>|来重写已经存在的文件。noexec 读入命令只检查它的语法但不执行。 (set -n)
noglob 禁止文件名替换。(set -f)
nolog 不在历史文件中保存函数的定义。
nounset 在试图扩展没有定义的变量时显示错误信息。(set -u)
privileged 禁止执行HOME/.profile file 并且使用/etc/suid _profile 而不是ENV文件。 (set -p)
verbose 显示shell读入的输入.(set -v)
trackall Designates each command as a tracked alias when first encountered.(set -h)
vi 使用vi风格的行内编辑器
viraw Processes each character as it is typed in vi mode.
xtrace 在运行命令前,先显示命令.(set -x)
※举例:使vi成为inline editor
set -o vi
Debuging(调试)
调试一个shell script的方法:
#set -o xtrace
然后再运行shell
或者直接执行
#ksh -x shellprog args
或
#sh -v shellprog args
Debug 一个function
#typeset -ft funcname
Prompts(提示)
PS1 主shell提示符(普通用户缺省是 $,而root缺省是#)
PS2 继续提示符( 缺省 > )
什么是继续提示符?
在命令行上输入
for i in 11 12 13 14 15 16
do
lspv hdisk$i
done
从第二行开始,屏幕最左面就是继续提示符。
PS3 在选择循环中的选择提示符(缺省是 #? )
PS4 调试提示符 (缺省是 + )
【tip】:命令行上提示主机名称和当前目录
export PS1="[`hostname`-"'$PWD]'
注意:一定是""包括``才能取得命令的结果,''包括变量才能随时更改变量的值
效果:
[hostname-/tmp]
推荐阅读
-
在 openSUSE Tumbleweed 系统上搭建 51 单片机开发环境并进行编程实践。首先,通过 `sudo zypper in emacs` 命令安装文本编辑器 Emacs。接着,使用 `sudo zypper in sdcc` 安装 SDCC 编译器。最后,利用 `wget` 下载 sdcflash Python 脚本,以便于单片机的烧录和调试。此外,还介绍了如何配置开发环境,确保各组件协同工作,提高开发效率。 ...
[详细]
蜡笔小新 2024-11-04 12:23:18
-
本文推荐了七款高效的编辑器与笔记工具,并详细解析了KindEditor的自动换行功能。其中,轻笔记QingBiJi是一款完全免费的记事本软件,用户可以通过其简洁的界面和强大的功能轻松记录和管理日常事务。此外,该软件还支持多平台同步,确保用户在不同设备间无缝切换。 ...
[详细]
蜡笔小新 2024-11-06 11:14:53
-
-
Python数据分析入门指南:全面了解Python在数据科学中的应用 ...
[详细]
蜡笔小新 2024-10-31 11:37:04
-
本文面向第一次在linux尝试写C语言程序的新人。有经验的请绕行。C语言用法不是本文介绍的关键,本文只是引入如何第一次在linux系统下编写、编译和执行一个简单的c程序。学会后请自行深入 ...
[详细]
蜡笔小新 2024-10-23 18:06:01
-
1.Lunix是什么1.1Lunix是操作系统还是应用程序Lunix是一套操作系统,它提供了一个完整的操作系统当中最底层的硬件控制与资源管理的完整架构, ...
[详细]
蜡笔小新 2024-09-27 20:30:30
-
本文介绍了提升Python编程效率的十点建议,包括不使用分号、选择合适的代码编辑器、遵循Python代码规范等。这些建议可以帮助开发者节省时间,提高编程效率。同时,还提供了相关参考链接供读者深入学习。 ...
[详细]
蜡笔小新 2023-12-14 21:51:04
-
BashShell作为Linux的指定合作伙伴我们已经再熟悉不过了,使用Bash可以快速编写简单的脚本方便我们的日常比如善用vim,awk和sed三剑客,也可以创建十分复杂的逻辑, ...
[详细]
蜡笔小新 2023-10-15 15:25:58
-
ANSI是什么编码?用Notepad创建一个文本文件text.txt,其默认编码格式为ANSI(乍看之下,还以为是ASCII ...
[详细]
蜡笔小新 2023-10-14 11:04:33
-
许多用户在使用Windows 10系统时,经常会遇到开机时自动进行磁盘检查的情况。这不仅影响了开机速度,还可能带来不必要的麻烦。本文将详细介绍如何通过简单的注册表修改来避免每次开机时的磁盘自检,提升系统启动效率。 ...
[详细]
蜡笔小新 2024-12-22 13:35:42
-
本文详细介绍了流编辑器sed中的G、H、g、h命令,探讨了它们的工作原理及应用场景。通过实例解析和图解分析,帮助读者掌握这些高级命令的使用方法。 ...
[详细]
蜡笔小新 2024-12-22 12:24:49
-
本文将深入浅出地介绍HTML的基础知识,包括其定义、开发工具、制定机构、特性、基本标签及更多实用内容。 ...
[详细]
蜡笔小新 2024-12-21 15:07:54
-
本文介绍了解决Oracle 10G数据库中ORA-12541 TNS: no listener错误的详细步骤。该错误通常发生在监听器服务未正确启动或配置不当的情况下,文章将指导您通过检查服务状态、配置注册表和启动监听器来解决问题。 ...
[详细]
蜡笔小新 2024-12-21 14:36:56
-
在安装 SQL Server 时,选择混合验证模式可以提供更高的灵活性和管理便利性。如果您已经安装了 SQL Server 并使用单一的 Windows 身份验证模式,可以通过以下步骤将其更改为混合验证模式。 ...
[详细]
蜡笔小新 2024-12-21 11:32:52
-
本文详细介绍如何在Python环境中安装和配置Selenium,包括开发工具PyCharm的安装、Python环境的设置以及Selenium包的安装方法。此外,还提供了编写和运行第一个自动化测试脚本的步骤。 ...
[详细]
蜡笔小新 2024-12-21 10:48:56
-
在本教程中,我们将探讨如何在Java EE的CDI(上下文和依赖注入)框架中有效解决依赖关系的冲突问题。通过学习如何使用限定符,您将能够为应用程序的不同客户端提供多种接口实现,并确保每个客户端都能正确调用其所需的实现。 ...
[详细]
蜡笔小新 2024-12-16 03:05:02
-