`
su1216
  • 浏览: 670945 次
  • 性别: Icon_minigender_1
  • 来自: 北京
博客专栏
Group-logo
深入入门正则表达式(jav...
浏览量:71915
E60283d7-4822-3dfb-9de4-f2377e30189c
android手机的安全问...
浏览量:128760
社区版块
存档分类
最新评论

《Unix & Linux 大学教程》 - 第七、八章 学习笔记

阅读更多

学习笔记,内容基础,适合初学者。

 

阅读之前,请务必花30秒查看前言说明(在第一、二章前面部分)

《Unix & Linux 大学教程》 - 第一、二章 学习笔记    Unix简介 & 什么是Linux?什么是Unix

《Unix & Linux 大学教程》 - 第三、四章 学习笔记    Unix连接 & 开始使用Unix

《Unix & Linux 大学教程》 - 第五、六章 学习笔记    GUI:图形用户界面 & Unix工作环境

《Unix & Linux 大学教程》 - 第七、八章 学习笔记    Unix键盘使用 & 能够立即使用的程序

《Unix & Linux 大学教程》 - 第九、十章 学习笔记    文档资料:Unix手册与Info & 命令语法

《Unix & Linux 大学教程》 - 第十一、十二章 学习笔记    shell & 使用shell:变量和选项

《Unix & Linux 大学教程》 - 第十三章 学习笔记    使用shell:命令和定制

《Unix & Linux 大学教程》 - 第十四、十五章 学习笔记     使用shell:初始化文件

《Unix & Linux 大学教程》 - 第十八章 学习笔记    过滤器:统计和格式化
《Unix & Linux 大学教程》 - 第十九章(一) 学习笔记    过滤器:选取、排序、组合及变换
《Unix & Linux 大学教程》 - 第十九章(二)、第二十章 学习笔记  过滤器:选取、排序、组合及变换 正则表达式

《Unix & Linux 大学教程》 - 第二十一章 学习笔记  显示文件

《Unix & Linux 大学教程》 - 第二十二章(一) 学习笔记  vi文本编辑器(一)

《Unix & Linux 大学教程》 - 第二十二章(二) 学习笔记  vi文本编辑器 (二)

《Unix & Linux 大学教程》 - 第二十二章(三) 学习笔记  vi文本编辑器 (三)

《Unix & Linux 大学教程》 - 第二十四章 学习笔记  目录操作

《Unix & Linux 大学教程》 - 第二十五章 学习笔记  文件操作

《Unix & Linux 大学教程》 - 第二十六章(一) 学习笔记  进程和作业控制

《Unix & Linux 大学教程》 - 第二十六章(二) 学习笔记  进程和作业控制

《Unix & Linux 大学教程》 - 附录F 时区与24小时制时间

 

 

 

 

第七章:Unix 键盘使用

基础知识

信号:

intr(interrupt):ctrl+c,用来终止程序,少数终端将delete映射到intr上。此映射可修改。

可以停止一个僵死的程序,一些程序封闭了intr信号,防止不小心按下^C。

取消shell中输入并没有执行的命令

 

quit:^\,同intr,并生成一个磁心文件(core file),用于调试程序。如果没有调试过程序,但是一个名为core的文件出现在一个目录中,那么意味着运行的程序出现严重错误而终止(最常见的是段故障segmentation fault,当程序试图访问不是为该程序分配的内存时就会发生这种故障,例如:不正确的使用指针)。

(关于磁心文件的来历和使用在书中第128页。)

 

stop:^S,发送stop信号,Unix暂停屏幕显示。

start:^Q(qontinue即continue),发送start信号,重新启动屏幕显示。

 

eof(end of file):文件结束信号,^D。

封闭eof信号

Bash:设置环境变量IGNOREEOF,例如

$ IGNOREEOF=2
$ echo $IGNOREEOF
2
$ Use "exit" to leave the shell.
$ Use "exit" to leave the shell. 

按下^D后会显示Use "exit" to leave the shell.

Korn Shell:设置ignoreeof,命令、提示不同而已

C-Shell:设置ignoreeof,命令、提示不同而已

 

erase:删除最后一个键入的字符。backspace或delete,取决于键盘及其映射。

^H与^?

backspace与^H相同,用来发送BS码。delete与^?相同,用来发送DEL码,^?只是缩写,并不是真正的键组合。其意味着:whichever key on your keyboard that sends the code that used to be called DEL(您的键盘上某一个用来发送DEL码的键)。

后来Unix系统被配置成backspace等同于^?而不是^H。这种情况下,^?映射到erase而不是^H。

远程连接Unix主机时,按下backspace可能发生意想不到的情况。在自己机器上面可以删除最后的字符,可是远程机器上却没有,而是显示的^H。

这是因为本地机器将^H映射到了erase而远程机器将^?映射到了erase,可以通过修改映射来解决。

stty erase ^H

 

werase:删除最后一个键入的单词。通常是ctrl+w

kill:删除整行。ctrl+x或ctrl+u,取决键盘映射(我的ubuntu64bit10.10是ctrl+u)。


换行与返回

换行:^J,等同换行字符,新行字符;发送LF(linefeed,换行)码。

返回:^M,发送CR(carriage return,托架返回)码。

一般而言,每行文本必须以新行字符结束。

当按下return键时将发送一个返回字符,Unix自动将返回字符改变为新行字符。

在终端上显示数据时,每行必须以字符序列“返回+换行”结束。Unix自动将每行末尾的新行字符改变为返回字符+新行字符。

windows使用^M^J标记每行结束,所以在Unix和Windows之间复制文件,必须进行转换,程序应该知道如何转换,如果不能自动改变,则需要工具完成)

 

程序/命令

tty:显示自己终端的名称,我的结果:/dev/pts/0

stty(set tty):用来显示或改变终端设置,如果不加参数和选项,则只显示默认值已经改变的映射。stty -a:显示键映射,我机器部分结果为:

intr = ^C; quit = ^\; erase = ^?; kill = ^U; eof = ^D; eol = M-^?; eol2 = M-^?; swtch = M-^?; start = ^Q; stop = ^S; susp = ^Z; rprnt = ^R; werase = ^W; lnext = ^V; flush = ^O;

stty +信号名称 +对应键:修改键映射。如修改kill对应为^U,则需要按下脱字符(^)和一个U,而不是ctrl+u。

getty(get tty):用来打开一个终端的通信,并启动登录进程

pwd(print working ):显示工作目录

dmesg:显示系统启动过程中的全部消息。

cat:将数据连接起来,发送到默认输出(或标准输出)位置上。

less(+文件):分屏显示

向前移动一屏:space

向后移动一屏:b

退出:q

显示帮助:h

搜索:键入“/”即可,搜索字符为正则。

 

echo $变量名:显示变量值。

printenv:显示环境变量。

 

两个重要的打印命令:

lp(line printer,行打印机),lpr

 

环境变量:

TERM:设置为使用终端的类型。

IGNOREEOF:忽略eof信号,设置按下多少次^D后注销。

 

名次解释:

termcap:将所有不同类型的终端描述收集到一个数据库中,数据为纯文本,可以直接打开

curses:为使termcap使用简单而开发的程序界面。

terminfo:为了提高curses性能开发。terminfo将数据存储在一系列文件中,每种终端类型一个文件。这些文件组织到26个命名为a-z的目录中,都保存在terminfo目录下。数据编译过,无法直接打开,使用infocmp即可。

书中给了几个terminfo目录可能存在的位置,不过我在我机器上面都没找到什么有用的内容

/usr/share/terminfo/

/usr/lib/terminfo/

/user/share/lib/terminfo/

/usr/share/misc/terminfo/

 

破坏性退格:当光标向后移动时,光标经过的字符被删除,如按下backspace。

非破坏性退格:当光标向后移动时,没有内容被修改,例如按下left。

 

 

第八章:能够立即使用的程序

基础知识

程序/命令

which +程序名称:查看某个程序是否可用。

$which date less vi
/bin/date
/usr/bin/less
/usr/bin/vi

 type +程序名称:类似which,可能会比which显示更多信息,korn shell使用whence。

$ type date less
date is /bin/date
less is /usr/bin/less

android中执行上面两条命令

shell@android:/ # type whence                                                  
whence is a shell builtin
shell@android:/ # whence type                                                  
'whence -v'

另一台机器上面有which

root@android:/ # which type
1|root@android:/ # type which
which is /sbin/which
root@android:/ # type whence
whence is a shell builtin
root@android:/ # whence type
'whence -v'

 

date:显示时间和日期。date -u,查看UTC时间。

cal:显示日历。cal+4位年份,显示此年日历。-j可以显示出这是一年中的第几天。

比如现在是2012年8月,那么cal、cal 8 2012、cal 08 2012结果是一致的,下面是带有-j的结果。

cal -j 写道
八月 2012
一     二    三     四    五    六   日
                214 215 216 217 218
219 220 221 222 223 224 225
226 227 228 229 230 231 232
233 234 235 236 237 238 239
240 241 242 243 244

 

calendar:提醒服务,需要先建立一个名为calendar的文件,格式形为:June 21<Tab>内容。

系统有一些内置信息,感觉好像是“历史上的今天”应用一样。

calendar 写道
$ calendar
8月 06 Jonathan B. Postel is born in Altadena, California, 1943
8月 06 Atomic bomb dropped on Hiroshima, 1945
8月 06 Caricom in Barbados
8月 06 Cy Young pitches first game, 1890
8月 06 Bank Holiday in British Columbia, Fiji, Iceland, Ireland, Ontario
8月 06 Emancipation Day in Bahamas
8月 06 Independence Day in Bolivia
8月 06* Bank Holiday (ACT, NSW)
8月 06* Picnic Day (NT)
8月 06 Soleil rouge en août,
C'est de la pluie partout.
8月 06 Erster Atombombenabwurf auf Hiroshima, 1945
8月 06 Berta, Bettina
8月 07 Battle of Boyaca in Colombia
8月 07 Aujourd'hui, c'est la St(e) Gaëtan.
8月 07 Gründung der Sozialdemokratischen Arbeiterpartei in Eisenach
unter der Führung von August Bebel und Wilhelm Liebknecht, 1869
8月 07 Ibolya

 

 

uptime:显示系统运行了多长时间

$ uptime
 14:48:23 up  5:16,  7 users,  load average: 0.09, 0.04, 0.05

hostname:查看计算机名。

uname:显示操作系统名称(-a,显示全部信息)

root@android:/ # uname
Linux

whoami:(之前提到过)显示当前用户标识,如果没有此命令,可以尝试who am i

$ who am i
su1216 pts/4        2012-08-06 09:32 (:0.0)
$ whoami
su1216

quota:在共享系统上查看自己被允许使用多少磁盘空间(有的机器没有集成这个程序,我安装了之后,输入命令什么结果都没有输出)。

 

users:显示当前登录系统的所有用户标识

who:显示用户标识的登录时间,终端名称等。

who
su1216   tty7         2012-07-13 15:26 (:0)
su1216   pts/0        2012-07-26 09:59 (:0)
su1216   pts/1        2012-08-06 14:59 (192.168.15.12)

一个ip为192.168.15.12的人正在使用su1216登录

 

w(who is doing what):可以查看更多信息

$ w
 15:03:00 up 23 days, 23:49,  3 users,  load average: 0.00, 0.01, 0.00
USER     TTY      FROM              LOGIN@   IDLE   JCPU   PCPU WHAT
su1216   tty7     :0               13Jul12 23days 49:25   0.19s gnome-session --session=ubuntu
……

第一行输出同uptime

下面8列信息分别为:

USER:当前登录系统的用户标识

TTY:各个用户标识使用的终端名称。

FROM:用户标识登录系统所使用的远程计算机名称。

LOGIN@:用户标识登录的时间。

IDLE:用户上一次按键后已经过去的时间。

JCPU:自登录后所有进程总共使用的处理器时间,J代表jobs。

PCPU:当前进程所使用的处理器时间,P代表process。

WHAT:当前正在运行的命令。

 

lock:终端临时上锁(我机器上没有这个程序。。)

leave:提醒何时离开。leave 1033,则10:33提醒,如果现在是下午八点,leave 855则意味着下午八点55提醒,而不是第二天上午。leave +15表示15分钟后提醒。系统注销时将废弃悬挂的leave命令。

 

内置计算器:bc

$ bc -l
bc 1.06.95
Copyright 1991-1994, 1997, 1998, 2000, 2004, 2006 Free Software Foundation, Inc.
This is free software with ABSOLUTELY NO WARRANTY.
For details type `warranty'. 
3+4;s(3.1415926);3^4;sqrt(16);ln(2.718)
7
.00000005358979323846
81
4.00000000000000000000
Runtime error (func=(main), adr=48): Function ln not defined.
3/4
.75000000000000000000
scale=2
3/4
.75
^C
(interrupt) use quit to exit.

-l选项可以使用内置数学库。

s表示sin,这里脱字符表示方幂,sqrt表示算数平方根,显然,当执行ln函数的时候失败了,系统没有提供这个函数。

然后计算3/4,发现居然保留了20位小数,通过设置scale改变精确度。

最后,当想使用ctrl+c结束程序的时候,系统提示需要使用quit命令来退出。

在bc也可以使用变量,如:

x=20
2*x
40

也可以改变进制,内容见bc帮助文档,或书中第160页。

 

 

名次解释:

儒略历(Julian calendar):儒略历是格里历的前身,由罗马共和国独裁官儒略·恺撒采纳埃及亚历山大的希腊数学家兼天文学家索西琴尼计算的历法,在公元前46年1月1日起执行,取代旧罗马历法的一种历法。一年设12个月,大小月交替,四年一闰,平年365日,闰年于二月底增加一闰日,年平均长度为365.25日。由于累积误差随着时间越来越大,1582年后被教皇格里高利十三世改善,变为格里历,即沿用至今的公历。

格里历(Gregorian calendar):儒略历1年平均长365.25日,比实际公转周期的365.2422日长11分14秒,即每400年约长3日。这样到公元16世纪时已经积累了有10天误差。可以明显感觉到两至两分提前了。在此情况下,教皇格里高里十三世于1582年宣布改历。先是一步到位把儒略历1582年10月4日的下一天定为格里历10月15日,中间跳过10天。同时修改了儒略历置闰法则。除了保留儒略历年数被4除尽的是闰年外。增加了被100除得尽而被400除不尽的则不是闰年的规定。这样的做法可在400年中减少3个闰年。在格里高里历历法里,400年中有97个闰年(每年366日)及303个平年(每年365日),所以每年平均长365.2425日,与公转周期的365.2422日十分接近。可基本保证到公元5000年前误差不超过1天。

 

代数式的表示:

例:34加上25的和再乘以15

中缀表示法:(34+25)*15

前缀表示法(波兰表示法,Polish notation):* + 34 25 15,将运算符放在操作数之前,使表达式更加紧凑。

后缀表示法(postfix notation)(逆波兰表示法RPN):34 25 + 15 *,将运算符放在操作数之后,适合自动计算。

dc:基于栈的计算器,dc的使用参见164页-166页。

栈:一种后进先出(last in first out,LIFO)的数据结构。

 

 

至此,160页已经过去了,终于感觉有点像unix教程了。历史内容似乎有所减少,作者依旧喜爱冷笑话和冷故事,汗阿!

从目录上看,大概从第十章开始才会出现大量技术内容,希望到时作者不要再讲历史了。估计他平时都是双份工资,一份是历史老师的工资。

 

 

 

 

转贴请保留以下链接

本人blog地址

http://su1216.iteye.com/

http://blog.csdn.net/su1216/

分享到:
评论

相关推荐

    Unix-Linux编程实践教程

    《Unix-Linux编程实践教程》是一本专注于系统开发编程的书籍,主要涵盖了Unix和Linux操作系统下的编程技术。作为程序员或系统管理员,理解Unix和Linux的底层机制是至关重要的,因为这两种操作系统广泛应用于服务器端...

    unix linux GRUB学习笔记

    ### GRUB学习笔记知识点梳理 #### 一、基础概念 **1.1 启动管理器** 启动管理器是一段程序,通常存储在磁盘的特定位置,如硬盘的主引导记录(MBR)。当计算机完成加电自检(POST)后,BIOS会将控制权传递给MBR中...

    linux学习笔记.docx

    Linux是一种免费使用和自由传播的类UNIX计算机操作系统的内核,其源代码可以免费获得。它诞生于1991年,由芬兰赫尔辛基大学的学生Linus Torvalds首次发布,并逐渐发展成为当今最流行的操作系统之一。Linux不仅广泛...

    UNIX和Linux操作系统(第一章).ppt

    这门课程【UNIX和Linux操作系统(第一章)】着重于介绍这两个操作系统的基础知识和操作方法,旨在培养学生的实践能力和对操作系统深入理解。课程内容分为两个部分:第一部分是【LINUX基础与应用】,涵盖7个章节,主要...

    Linux学习笔记.pdf,linux详解,LINUX

    本资料“Linux学习笔记.pdf”将带你深入理解Linux的基础知识和高级应用。 一、Linux系统概述 1. Linux的起源:Linux的诞生源于托瓦兹对Minix系统的不满,他决定创建一个符合个人需求的、免费的Unix-like操作系统...

    推荐一本Linux学习笔记

    #### 第七章 Linux基本网络配置 **一、网络配置文件** - **/etc/sysconfig/network**: 设置主机名。 - **/etc/sysconfig/network-scripts/ifcfg-ethX**: 设置网卡的 IP 地址、子网掩码等。 **二、网络服务** - *...

    linux学习笔记 .doc

    Linux学习笔记概述 Linux是一种自由和开放源代码的操作系统,其设计目标是提供一个轻量级、高效且安全的计算平台。Linux系统采用类UNIX目录结构,每个目录都有特定的功能和用途。以下是对Linux主要目录及其内容的...

    Ubuntu Linux实用学习笔记.doc

    ### Ubuntu Linux 实用学习笔记知识点概览 #### 一、Ubuntu简介 - **定义与适用范围**:Ubuntu是一款广泛使用的开源操作系统,适用于个人电脑、服务器和云计算环境。它基于Debian GNU/Linux,提供了丰富的应用程序...

    韩顺平linux 笔记

    Linux 笔记 Linux 是一个开源的操作系统,具有免费、稳定、安全等特点。Linux 有两个主要方向:Linux 系统管理员和 Linux 软件工程师。学习 Linux 需要经过以下几个阶段:Linux 基础知识、Unix 环境高级编程、Linux...

    2009 达内Unix学习笔记

    集合了 所有的 Unix命令大全 登陆服务器时输入 公帐号 openlab-open123 telnet 192.168.0.23 自己帐号 sd08077-you0 ftp工具 192.168.0.202 tools-toolss 老师测评网址 http://172.16.0.198:8080/poll/ 各个 ...

    linux系统学习笔记

    ### Linux系统学习笔记 #### 一、Linux系统Shell介绍 1. **Linux系统Shell类型**:Linux系统提供了多种Shell供用户选择,常见的包括Bourne shell (`sh`), C shell (`csh`), Korn shell (`ksh`)等。其中,`sh`是Unix...

    unix shell编程第三版笔记

    通过深入学习"Unix Shell编程第三版笔记",你将能够编写出高效的自动化脚本,提高工作效率,解决日常的系统管理和开发问题。同时,对Unix Shell的熟练掌握也是成为高级系统管理员或全栈开发者的必备技能之一。

    UNIX多线程学习笔记

    【UNIX多线程学习笔记】 在UNIX操作系统中,多线程是一种重要的编程模型,它允许多个执行流在单个进程中并发运行。多线程带来了许多优势,包括提高应用程序响应速度,充分利用多CPU系统的资源,以及优化程序结构,...

    Linux学习笔记(CentOS).docx

    Linux学习笔记(CentOS) Linux 是一个遵循 POSIX 标准的免费操作系统,具有 BSD 和 SYSV 的扩展特性。 Linux 的开放性和灵活性使它得以在实验室和其他研究机构中被用于创新性技术变革的前沿。学习 Linux 需要掌握...

    linux学习笔记.pdf

    Linux是一种开源的类Unix操作系统内核,自1991年由芬兰学生林纳斯·托瓦兹发明以来,由于其强大的网络功能和稳定高效的性能,已被广泛应用于服务器、嵌入式系统和个人电脑上。Linux操作系统是由众多社区和企业支持,...

    qt 学习笔记 qt学习笔记

    ### Qt学习笔记知识点详解 #### 一、从Hello Qt开始 **知识点1:Qt程序的基本结构** - **头文件引入**: - 第1行和第2行代码中,`#include &lt;QApplication&gt;` 和 `#include &lt;QLabel&gt;` 是引入Qt中的两个类:`...

    linux与unix经典编程

    - 第六至第七部分表示文件的更新时间。 - 第八部分表示文件名。 #### 文件权限位 - 一个文件的权限位由九个字符组成,分为三个三元组,分别表示文件属主、组用户和其他用户的权限。 - 每个三元组包含三个字符位...

    Linux学习笔记.docx

    Linux是开源的操作系统,主要基于Unix,被广泛应用于服务器、嵌入式系统和个人计算机。Linux的学习,特别是对于初学者,通常从掌握基本的命令行操作开始。本篇笔记重点介绍了在CentOS7环境下的一些核心概念和命令。 ...

Global site tag (gtag.js) - Google Analytics