文档库 最新最全的文档下载
当前位置:文档库 › 红旗Linux学习笔记(上)

红旗Linux学习笔记(上)

红旗Linux学习笔记(上)
红旗Linux学习笔记(上)

红旗Linux学习笔记(上)

第1章Linux概述

第2章Linux的安装及其桌面环境

第3章Linux操作系统快速入门

第4章Linux常用命令

第5章vi的使用

第6章用户和工作组管理

第7章BASH使用及编程

第8章Linux下软件安装

第9章linux文件系统及其维护

第10章Linux内核及系统引导

Linux 概述

计算机系统由计算机的硬件系统和软件系统共同组成,硬件是计算机的物质基础而软件则是计算机的灵魂。现在我们要讲的这门课程就是软件系统当中最重要的一部分——操作系统。那么究竟什么是操作系统?什么是Linux,linux能做什么?Linux真的像媒体炒的那么好吗?Linux到底有什么优势?怎样学好Linux?

一:什么是Linux

Linux是一个免费的微机上运行的Unix的操作系统。最早是由芬兰大学生Linus Torvalds 首先于1991年开始开发的,经过一群遍布于全世界的Internet上的自愿参加的程序员努力,加上计算机公司的支持,Linux的影响和应用日益广泛,已成为仅次于微软Windows的第二大操作系统。

二:Linux能干什么

·日常办公:·窗口界面:·网络功能:可以作局域网的文件服务器、打印服务器;从远处看,也可以作为远程登录服务器、FTP服务器、WWW万维网服务器、邮件服务器、路由器、网关、域名服务器,可以架设BBS站。·多媒体支持:·其它系统:

三:Linux的优势

·提供了先进的网络支持:·真正意义上的完全多任务、多用户的操作系统,也就是说允许多用户同时运行多道程序而不互相干扰。·与Unix系统在源代码级兼容,符合IEEEPOSIX.1标准。·核心能仿真数学辅助处理器。·支持包括MSDOS在内的数十种文件系统。·完全运行于保护模式,充分利用了CPU的性能。·可以通过仿真模拟器运行DOS、Windows的程序。·提供了所有的源代码,用户可以自己对系统进行改进。·采用先进的内存管理机制,更加有效地利用物理内存。

四:Linux发展历史

五:几种主要操作系统介绍

1:微软windows

2:传统的Unix(Sun公司Solaris,IBM公司的AIX,SCO公司的Sco-Unix,HP-UNIX)

3:BSD-Unix(FreeBSD,NetBSD,OpenBSD)

4:Novell公司的Netware

六:Linux的主要发行厂

1:国外厂商

RedHat TurboLinux Debian Mandrake S.u.S.E. Linux(以被Novell收购)2:国内厂商

Redflag XTeam 中软Linux Bluepoint

Linux的安装及其桌面环境

Linux常用命令

一:关机,登录及注销命令

1:shutdown

语法:shutdown [-efFhknr][-t 秒数][时间][警告信息]

说明:shutdown指令可以关闭所有程序,并依用户的需要,进行重新开机或关机的动作。使用shutdown命令时在系统将要关机前,系统管理员会通知所有登录的使用者系统将要关闭。而且login指令会被冻结,即新的用户不能再登录。这是最安全的一种关机方法, shutdown 执行它的工作是送信号给init程序,要求它改变runlevel。

runlevel 0被用来停机(halt),runlevel 6是用来重新启动(reboot)系统,而runlevel 1则是被用来让系统进入管理工作可以进行的状态;这是预设的,假定没有-h也没有-r参数给shutdown。

参数:

-c 取消目前正在执行的关机程序。当执行"shutdown -h 11:50"指令时,只要按Ctrl+c键就可以中断关机的指令。

-f 重新启动时不执行fsck。

-F 重新启动时执行fsck。

-h 将系统关机(halt)。

-k 只是送出信息给所有用户,但不会实际关机。

-n 不调用init程序进行关机,而由shutdown自己进行。

-r shutdown之后重新启动。

-t<秒数> 送出警告信息和删除信息之间要延迟多少秒。

[时间] 设置多久时间后执行shutdown指令。

[警告信息] 要传送给所有登入用户的信息。

2:reboot

语法:reboot [-dfinw]

说明:执行reboot指令可让系统停止运作,并重新开机。

参数:

-d 重新开机时不把数据写入记录文件/var/log/wtmp。本参数具有"-n"参数的效果。

-f 强制重新开机,不调用shutdown指令的功能。

-i 在重开机之前,先关闭所有网络界面。

-n 重开机之前不检查是否有未结束的程序。

-w 仅做测试,并不真的将系统重新开机,只会把重开机的数据写入/var/log目录下的wtmp记录文件。

3:halt

语法:halt [-dfinpw]

说明:halt会先检测系统的runlevel。若runlevel为0或6,则关闭系统,否则即调用shutdown 来关闭系统。

参数:

-d 不要在/var/log/wtmp中记录。

-f 不论目前的runlevel为何,不调用shutdown即强制关闭系统。

-i 在halt之前,关闭全部的网络界面。

-n halt前,不用先执行sync。

-p halt之后,执行poweroff。

-w 仅在wtmp中记录,而不实际结束系统。

4:login

说明:当出现login:时输入用户名接着输入密码即可进入系统。

4:logout

语法:logout

功能说明:退出系统。logout指令让用户退出系统,其功能和login指令相互对应。Ctrl+D 组合键也可以。

5:Ctrl+Alt+Del

功能说明:键盘组合键Ctrl+Alt+Del为重新启动系统

6:init

语法:init [0-6]

功能说明:转换运行级别(runlevel);init 0为关机,init 6为重启。

二:文件目录操作命令

1:cat-------type

语法:cat [选项列表] [文件列表]...

功能说明:连接文件并在标准输出上输出

2:head / tail

语法:head/tail [OPTION]... [FILE]...

功能说明:输出文件的开始/结尾部分

3:more / less

在显示器上阅读文件的过滤器,less比more功能要强大。

4:cp

语法:cp [-abdfilpPrRsuvx][-S <备份字尾字符串>][-V <备份方式>][--help][--spares=<使用时机>][--version][源文件或目录][目标文件或目录] [目的目录]

说明:复制文件或目录。cp指令用在复制文件或目录,如同时指定两个以上的文件或目录,且最后的目的地是一个已经存在的目录,则它会把前面指定的所有文件或目录复制到该目录中。若同时指定多个文件或目录,而最后的目的地并非是一个已存在的目录,则会出现错误信息。

参数:

-a或--archive 此参数的效果和同时指定"-dpR"参数相同。

-b或--backup 删除,覆盖目标文件之前作备份,备份文件会在字尾加上一个备份字符串。

-d或--no-dereference 复制符号链接作为符号链接而不是复制它指向的文件, 并且保护在副本中原文件之间的硬链接.

-f或--force 强行复制文件或目录,不论目标文件或目录是否已存在。

-i或--interactive 覆盖既有文件之前先询问用户。

-l或--link 对源文件建立硬连接,而非复制文件。(见LN命令)

-p或--preserve 保留源文件或目录的属性。

-P或--parents 保留源文件或目录的路径。

-r 递归处理,将指定目录下的文件与子目录一并处理。

-R或--recursive 递归处理,将指定目录下的所有文件与子目录一并处理。

-s或--symbolic-link 对源文件建立符号连接,而非复制文件。

-S<备份字尾字符串>或--suffix=<备份字尾字符串> 用"-b"参数备份目标文件后,备份文件的字尾会被加上一个备份字符串,预设的备份字尾字符串是符号"~"。

-u或--update 使用这项参数后只会在源文件的更改时间较目标文件更新时或是名称相互对应的目标文件并不存在,才复制文件。

-v或--verbose 显示指令执行过程。

-V<备份方式>或--version-control=<备份方式> 用"-b"参数备份目标文件后,备份文件的字尾会被加上一个备份字符串,这字符串不仅可用"-S"参数变更,当使用"-V"参数指定不同备份方式时,也会产生不同字尾的备份字串。

-x或--one-file-system 复制的文件或目录存放的文件系统,必须与cp指令执行时所处的文件系统相同,否则不予复制。

--help 在线帮助。

--sparse=<使用时机> 设置保存稀疏文件的时机。

--version 显示版本信息。

5:rm

语法:rm [-dfirv][--help][--version][文件或目录...]

说明:删除文件或目录。执行rm指令可删除文件或目录,如欲删除目录必须加上参数"-r",否则预设仅会删除文件。

参数:

-d或--directory 直接把欲删除的目录的硬连接数据删成0,删除该目录。

-f或--force 强制删除文件或目录。

-i或--interactive 删除既有文件或目录之前先询问用户。

-r或-R或--recursive 递归处理,将指定目录下的所有文件及子目录一并处理。

-v或--verbose 显示指令执行过程。

--help 在线帮助。

--version 显示版本信息。

6:find(相当于WIN中的搜索)

语法:find [目录...][-amin <分钟>][-anewer <参考文件或目录>][-atime <24小时数>][-cmin <分钟>][-cnewer <参考文件或目录>][-ctime <24小时数>][-daystart][-depyh][-empty][-exec <执行指令>][-false][-fls <列表文件>][-follow][-fprint <列表文件>][-fprint0 <列表文件>][-fprintf <列表文件><输出格式>][-fstype <文件系统类型>][-gid <群组识别码>][-group <群组名称>][-help][-ilname <范本样式>][-iname <范本样式>][-inum ][-ipath <范本样式>][-iregex <范本样式>][-links <连接数目>][-lname <范本样式>][-ls][-maxdepth <目录层级>][-mindepth <目录层级>][-mmin <分钟>][-mount]

[-mtime <24小时数>][-name <范本样式>][-newer <参考文件或目录>][-nogroup][noleaf] [-nouser][-ok <执行指令>][-path <范本样式>][-perm <权限数值>][-print][-print0][-printf <输出格式>][-prune][-regex <范本样式>][-size <文件大小>][-true][-type <文件类型>][-uid <用户识别码>][-used <日数>][-user <拥有者名称>][-version][-xdev][-xtype <文件类型>]

说明:查找文件或目录。find指令用于查找符合条件的文件。任何位于参数之前的字符串都将被视为欲查找的目录。

参数:

-amin<分钟> 查找在指定时间曾被存取过的文件或目录,单位以分钟计算。

-anewer<参考文件或目录> 查找其存取时间较指定文件或目录的存取时间更接近现在的文件或目录。

-atime<24小时数> 查找在指定时间曾被存取过的文件或目录,单位以24小时计算。

-cmin<分钟> 查找在指定时间之时被更改的文件或目录。

-cnewer<参考文件或目录> 查找其更改时间较指定文件或目录的更改时间更接近现在的文件或目录。

-ctime<24小时数> 查找在指定时间之时被更改的文件或目录,单位以24小时计算。

-daystart 从本日开始计算时间。

-depth 从指定目录下最深层的子目录开始查找。

-expty 寻找文件大小为0 Byte的文件,或目录下没有任何子目录或文件的空目录。

-exec<执行指令> 假设find指令的回传值为True,就执行该指令。

-false 将find指令的回传值皆设为False。

-fls<列表文件> 此参数的效果和指定"-ls"参数类似,但会把结果保存为指定的列表文件。

-follow 排除符号连接。

-fprint<列表文件> 此参数的效果和指定"-print"参数类似,但会把结果保存成指定的列表文件。

-fprint0<列表文件> 此参数的效果和指定"-print0"参数类似,但会把结果保存成指定的列表文件。

-fprintf<列表文件><输出格式> 此参数的效果和指定"-printf"参数类似,但会把结果保存成指定的列表文件。

-fstype<文件系统类型> 只寻找该文件系统类型下的文件或目录。

-gid<群组识别码> 查找符合指定之群组识别码的文件或目录。

-group<群组名称> 查找符合指定之群组名称的文件或目录。

-help或--help 在线帮助。

-ilname<范本样式> 此参数的效果和指定"-lname"参数类似,但忽略字符大小写的差别。-iname<范本样式> 此参数的效果和指定"-name"参数类似,但忽略字符大小写的差别。-inum 查找符合指定的inode编号的文件或目录。

-ipath<范本样式> 此参数的效果和指定"-ipath"参数类似,但忽略字符大小写的差别。

-iregex<范本样式> 此参数的效果和指定"-regexe"参数类似,但忽略字符大小写的差别。

-links<连接数目> 查找符合指定的硬连接数目的文件或目录。

-iname<范本样式> 指定字符串作为寻找符号连接的范本样式。

-ls 假设find指令的回传值为True,就将文件或目录名称列出到标准输出。

-maxdepth<目录层级> 设置最大目录层级。

-mindepth<目录层级> 设置最小目录层级。

-mmin<分钟> 查找在指定时间曾被更改过的文件或目录,单位以分钟计算。

-mount 此参数的效果和指定"-xdev"相同。

-mtime<24小时数> 查找在指定时间曾被更改过的文件或目录,单位以24小时计算。

-name<范本样式> 指定字符串作为寻找文件或目录的范本样式。

-newer<参考文件或目录> 查找其更改时间较指定文件或目录的更改时间更接近现在的文件或目录。

-nogroup 找出不属于本地主机群组识别码的文件或目录。

-noleaf 不去考虑目录至少需拥有两个硬连接存在。

-nouser 找出不属于本地主机用户识别码的文件或目录。

-ok<执行指令> 此参数的效果和指定"-exec"参数类似,但在执行指令之前会先询问用户,若回答"y"或"Y",则放弃执行指令。

-path<范本样式> 指定字符串作为寻找目录的范本样式。

-perm<权限数值> 查找符合指定的权限数值的文件或目录。

-print 假设find指令的回传值为True,就将文件或目录名称列出到标准输出。格式为每列一个名称,每个名称之前皆有"./"字符串。

-print0 假设find指令的回传值为True,就将文件或目录名称列出到标准输出。格式为全部的名称皆在同一行。

-printf<输出格式> 假设find指令的回传值为True,就将文件或目录名称列出到标准输出。格式可以自行指定。

-prune 不寻找字符串作为寻找文件或目录的范本样式。

-regex<范本样式> 指定字符串作为寻找文件或目录的范本样式。

-size<文件大小> 查找符合指定的文件大小的文件。

-true 将find指令的回传值皆设为True。

-typ<文件类型> 只寻找符合指定的文件类型的文件。

-uid<用户识别码> 查找符合指定的用户识别码的文件或目录。

-used<日数> 查找文件或目录被更改之后在指定时间曾被存取过的文件或目录,单位以日计算。

-user<拥有者名称> 查找符合指定的拥有者名称的文件或目录。

-version或--version 显示版本信息。

-xdev 将范围局限在先行的文件系统中。

-xtype<文件类型> 此参数的效果和指定"-type"参数类似,差别在于它针对符号连接检查。

7:grep(相当于WIN中的查找)

语法:grep [-abcEFGhHilLnqrsvVwxy][-A<显示列数>][-B<显示列数>][-C<显示列数>][-d<进行动作>][-e<范本样式>][-f<范本文件>][--help][范本样式][文件或目录...] 说明:查找文件里符合条件的字符串。grep指令用于查找内容包含指定的范本样式的文件,如果发现某文件的内容符合所指定的范本样式,预设grep指令会把含有范本样式的那一列显示出来。若不指定任何文件名称,或是所给予的文件名为“-”,则grep指令会从标准输入设备读取数据。

参数:

-a或--text 不要忽略二进制的数据。

-A<显示列数>或--after-context=<显示列数> 除了显示符合范本样式的那一列之外,并显示该列之后的内容。

-b或--byte-offset 在显示符合范本样式的那一列之前,标示出该列第一个字符的位编号。

-B<显示列数>或--before-context=<显示列数> 除了显示符合范本样式的那一列之外,并显示该列之前的内容。

-c或--count 计算符合范本样式的列数。

-C<显示列数>或--context=<显示列数>或-<显示列数> 除了显示符合范本样式的那一列之外,并显示该列之前后的内容。

-d<进行动作>或--directories=<进行动作> 当指定要查找的是目录而非文件时,必须使用这项参数,否则grep指令将回报信息并停止动作。

-e<范本样式>或--regexp=<范本样式> 指定字符串做为查找文件内容的范本样式。

-E或--extended-regexp 将范本样式为延伸的普通表示法来使用。

-f<范本文件>或--file=<范本文件> 指定范本文件,其内容含有一个或多个范本样式,让grep查找符合范本条件的文件内容,格式为每列一个范本样式。

-F或--fixed-regexp 将范本样式视为固定字符串的列表。

-G或--basic-regexp 将范本样式视为普通的表示法来使用。

-h或--no-filename 在显示符合范本样式的那一列之前,不标示该列所属的文件名称。 -H或--with-filename 在显示符合范本样式的那一列之前,表示该列所属的文件名称。 -i或--ignore-case 忽略字符大小写的差别。

-l或--file-with-matches 列出文件内容符合指定的范本样式的文件名称。

-L或--files-without-match 列出文件内容不符合指定的范本样式的文件名称。

-n或--line-number 在显示符合范本样式的那一列之前,标示出该列的列数编号。

-q或--quiet或--silent 不显示任何信息。

-r或--recursive 此参数的效果和指定“-d recurse”参数相同。

-s或--no-messages 不显示错误信息。

-v或--revert-match 反转查找。

-V或--version 显示版本信息。

-w或--word-regexp 只显示全字符合的列。

-x或--line-regexp 只显示全列符合的列。

-y 此参数的效果和指定“-i”参数相同。

--help 在线帮助。

8:mv

语法:mv [-bfiuv][--help][--version][-S <附加字尾>][-V <方法>][源文件或目录][目标文件或目录]

说明:移动或更名现有的文件或目录。mv可移动文件或目录,或是更改文件或目录的名称。参数:

-b或--backup 若需覆盖文件,则覆盖前先行备份。

-f或--force 若目标文件或目录与现有的文件或目录重复,则直接覆盖现有的文件或目录。

-i或--interactive 覆盖前先行询问用户。

-S<附加字尾>或

--suffix=<附加字尾> 与-b参数一并使用,可指定备份文件的所要附加的字尾。

-u或--update 在移动或更改文件名时,若目标文件已存在,且其文件日期比源文件新,则不覆盖目标文件。

-v或--verbose 执行时显示详细的信息。

-V=<方法>或

--version-control=<方法> 与-b参数一并使用,可指定备份的方法。

--help 显示帮助。

--version 显示版本信息。

9:file

语法:file [-beLvz][-f <名称文件>][-m <魔法数字文件>...][文件或目录...]

说明:辨识文件类型。通过file指令,我们得以辨识该文件的类型。

参数:

-b 列出辨识结果时,不显示文件名称。

-c 详细显示指令执行过程,便于排错或分析程序执行的情形。

-f<名称文件> 指定名称文件,其内容有一个或多个文件名称呢感,让file依序辨识这些文件,格式为每列一个文件名称。

-L 直接显示符号连接所指向的文件的类别。

-m<魔法数字文件> 指定魔法数字文件。

-v 显示版本信息。

-z 尝试去解读压缩文件的内容。

10:touch

语法:touch [-acfm][-d <日期时间>][-r <参考文件或目录>][-t <日期时间>][--help] [--version][文件或目录...] 或 touch [-acfm][--help][--version][日期时间][文件或目录...]

说明:改变文件或目录时间。使用touch指令可更改文件或目录的日期时间,包括存取时间和更改时间。若touch后跟信文件,也可以创建这个新文件。

参数:

-a或--time=atime或--time=access或--time=use 只更改存取时间。

-c或--no-create 不建立任何文件。

-d<时间日期> 使用指定的日期时间,而非现在的时间。

-f 此参数将忽略不予处理,仅负责解决BSD版本touch指令的兼容性问题。

-m或--time=mtime或--time=modify 只更改变动时间。

-r<参考文件或目录> 把指定文件或目录的日期时间,统统设成和参考文件或目录的日期时间相同。

-t<日期时间> 使用指定的日期时间,而非现在的时间。

--help 在线帮助。

--version 显示版本信息。

11:mkdir

语法:mkdir [-p][--help][--version][-m <目录属性>][目录名称]

说明:建立目录。mkdir可建立目录并同时设置目录的权限。

参数:

-m<目录属性>或--mode<目录属性> 建立目录时同时设置目录的权限。

-p或--parents 若所要建立目录的上层目录目前尚未建立,则会一并建立上层目录。

--help 显示帮助。

--verbose 执行时显示详细的信息。

--version 显示版本信息。

12:rmdir

语法:rmdir [-p][--help][--ignore-fail-on-non-empty][--verbose][--version][目录...]

说明:删除空目录。

参数:

-p或--parents 删除指定目录后,若该目录的上层目录已变成空目录,则将其一并删除。 --help 在线帮助。

--ignore-fail-on-non-empty 忽略非空目录的错误信息。

--verbose 显示指令执行过程。

--version 显示版本信息。

13:cd

说明:改变工作目录。

14:pwd

说明:返回当前的工作目录

15:ls

语法:ls [-1aAbBcCdDfFgGhHiklLmnNopqQrRsStuUvxX][-I <范本样式>][-T <跳格字

数>][-w <每列字符数>][--block-size=<区块大小>][--color=<使用时机>][--format=<列表格式>][--full-time][--help][--indicator-style=<标注样式>][--quoting-style=<引号样式>][--show-control-chars][--sort=<排序方式>][--time=<时间戳记>][--version][文件或目录...]

说明:列出目录内容。包括文件和子目录的名称。

参数:

-1 每列仅显示一个文件或目录名称。

-a或--all 下所有文件和目录。

-A或--almost-all 显示所有文件和目录,但不显示现行目录和上层目录。

-b或--escape 显示脱离字符。

-B或--ignore-backups 忽略备份文件和目录。

-c 以更改时间排序,显示文件和目录。

-C 以又上至下,从左到右的直行方式显示文件和目录名称。

-d或--directory 显示目录名称而非其内容。

-D或--dired 用Emacs的模式产生文件和目录列表。

-f 此参数的效果和同时指定"aU"参数相同,并关闭"lst"参数的效果。

-F或--classify 在执行文件,目录,Socket,符号连接,管道名称后面,各自加上"*","/","=","@","|"号。

-g 次参数将忽略不予处理。

-G或--no-group 不显示群组名称。

-h或--human-readable 用"K","M","G"来显示文件和目录的大小。

-H或--si 此参数的效果和指定"-h"参数类似,但计算单位是1000Bytes而非1024Bytes。-i或--inode 显示文件和目录的inode编号。

-I<范本样式>或--ignore=<范本样式> 不显示符合范本样式的文件或目录名称。

-k或--kilobytes 此参数的效果和指定"block-size=1024"参数相同。

-l 使用详细格式列表。

-L或--dereference 如遇到性质为符号连接的文件或目录,直接列出该连接所指向的原始文件或目录。

-m 用","号区隔每个文件和目录的名称。

-n或--numeric-uid-gid 以用户识别码和群组识别码替代其名称。

-N或--literal 直接列出文件和目录名称,包括控制字符。

-o 此参数的效果和指定"-l" 参数类似,但不列出群组名称或识别码。

-p或--file-type 此参数的效果和指定"-F"参数类似,但不会在执行文件名称后面加上"*"号。

-q或--hide-control-chars 用"?"号取代控制字符,列出文件和目录名称。

-Q或--quote-name 把文件和目录名称以""号标示起来。

-r或--reverse 反向排序。

-R或--recursive 递归处理,将指定目录下的所有文件及子目录一并处理。

-s或--size 显示文件和目录的大小,以区块为单位。

-S 用文件和目录的大小排序。

-t 用文件和目录的更改时间排序。

-T<跳格字符>或--tabsize=<跳格字数> 设置跳格字符所对应的空白字符数。

-u 以最后存取时间排序,显示文件和目录。

-U 列出文件和目录名称时不予排序。

-v 文件和目录的名称列表以版本进行排序。

-w<每列字符数>或--width=<每列字符数> 设置每列的最大字符数。

-x 以从左到右,由上至下的横列方式显示文件和目录名称。

-X 以文件和目录的最后一个扩展名排序。

--block-size=<区块大小> 指定存放文件的区块大小。

--color=<列表格式> 配置文件和目录的列表格式。

--full-time 列出完整的日期与时间。

--help 在线帮助。

--indicator-style=<标注样式> 在文件和目录等名称后面加上标注,易于辨识该名称所属的类型。

--quoting-syte=<引号样式> 把文件和目录名称以指定的引号样式标示起来。

--show-control-chars 在文件和目录列表时,使用控制字符。

--sort=<排序方式> 配置文件和目录列表的排序方式。

--time=<时间戳记> 用指定的时间戳记取代更改时间。

--version 显示版本信息。

16:clear

说明:清除终端屏幕。

17:wc

说明:输出文件中的字节数、单词数、行数

18:ln

语法:ln [-bdfinsv][-S <字尾备份字符串>][-V <备份方式>][--help][--version][源文件或目录][目标文件或目录] 或 ln [-bdfinsv][-S <字尾备份字符串>][-V <备份方式>][--help][--version][源文件或目录...][目的目录]

说明:ln指令用在连接文件或目录,如同时指定两个以上的文件或目录,且最后的目的地是一个已经存在的目录,则会把前面指定的所有文件或目录复制到该目录中。若同时指定多个文件或目录,且最后的目的地并非是一个已存在的目录,则会出现错误信息。

参数:

-b或--backup 删除,覆盖目标文件之前的备份。

-d或-F或--directory 建立目录的硬连接。

-f或--force 强行建立文件或目录的连接,不论文件或目录是否存在。

-i或--interactive 覆盖既有文件之前先询问用户。

-n或--no-dereference 把符号连接的目的目录视为一般文件。

-s或--symbolic 对源文件建立符号连接,而非硬连接。

-S<字尾备份字符串>或--suffix=<字尾备份字符串> 用"-b"参数备份目标文件后,备份文件的字尾会被加上一个备份字符串,预设的字尾备份字符串是符号"~",您可通过"-S"参数来改变它。

-v或--verbose 显示指令执行过程。

-V<备份方式>或--version-control=<备份方式> 用"-b"参数备份目标文件后,备份文件的字尾会被加上一个备份字符串,这个字符串不仅可用"-S"参数变更,当使用"-V"参数<备份方式>指定不同备份方式时,也会产生不同字尾的备份字符串。

--help 在线帮助。

--version 显示版本信息。

三:帮助类命令

1:man

说明:格式化并显示在线帮助手册页

2:info

说明:返回关于Tcl 解释器状态的信息

3: --help

说明:大部分命令后都有一个—help选项可以得到命令的使用说明。

VI编辑器

vi是unix世界中最通用的全屏编辑器,linux中是用的是vi的加强版vim,vim同vi完全兼容。它可以执行输出、删除、查找、替换、块操作等众多文本操作,而且用户可以根据自己的需要对其进行定制,这是其它编辑程序所没有的。只要在命令行上键入vi就可进入vi 的编辑环境。vi有三种状态:命令模式,文本输入模式和末行模式。键入vi回车后首先进入vi的命令模式。

在命令模式下用户输入的任何字符都被Vi当作命令加以解释执行,如果用户要将输入的字符当作是文本内容时,则首先应将Vi的工作模式从命令模式切换到文本输入模式。在命令

模式下,按一下"a"("A")键或者”i”("I")或者"o"("O")键,即进入插入态文本输入模式。按"a"键,插入到当前光标的后面;按"i"键,在当前光标处插入;按"A"键,在当前光标所在行的最后插入;按"I"键,在当前光标所在行的开头插入。在文本输入模式下,按Esc 键,即回到命令模式。

末行模式也称ex转义模式。Vi有一个专门的“转义”命令,可访问很多面向行的Ex命令。在命令模式下,用户按“:”键即可进入末行模式下,此时Vi会在显示窗口的最后一行(通常也是屏幕的最后一行)显示一个“:”作为末行模式的提示符,等待用户输入命令。多数文件管理命令都是在此模式下执行的(如把编辑缓冲区的内容写到文件中等)。末行命令执行完后,Vi自动回到命令模式。

例如::1,$s /A/a/g

则从文件第一行至文件尾将大写A全部替换成小写a。

若在末行模式下输入命令过程中想转换的到命令模式,可按键,或用退格键将输入的命令全部删除之后,再按一下退格键,即可使Vi回到命令模式下。如果要从命令模式转换到编辑模式,可以键入命令a或者i;如果需要从文本模式返回,则按Esc键即可。在命令模式下输入“:”即可切换到末行模式,然后输入命令。Vi中的许多命令都要用到行号及行数等数值。若编辑的文件较大时,自己去数是非常不方便的。为此Vi提供了给文本加行号的功能。这些行号显示在屏幕的左边,而相应行的内容则显示在行号之后。需要说明的是,这里加的行号只是显示给用户看的,它们并不是文件内容的一部分。当用Vi建立一个新文件时,在进入Vi的命令中也可以不给出文件名,当编辑完文件需要保存数据时,再由用户指定文件名。

进入Vi时,用户不仅可以指定一个待编辑的文件名,而且还有许多附加操作。如果希望在进入Vi之后,光标处于文件中特定的某行上,可在Vi后加上任选项+n,其中n为指定的行数。例如键入命令:vi +3 example.txt后,光标将位于文件example.txt中的第3行上。

vi常用的命令

1.插入(Insert)命令

Vi提供了两个插入命令:i 和 I命令

(1)i命令插入文本从光标所在位置前开始,并且插入过程中可以使用键删除错误的输入。此时Vi处于插入状态,屏幕最下行显示“--INSERT--”(插入)字样。

(2)I命令该命令是将光标移到当前行的行首,然后在其前插入文本.

2.光标移动操作在屏幕上移动

Vi中的光标移动既可以在命令模式下,也可以在文本输入模式下,但操作的方法不尽相同。

(1)在文本输入模式下,可直接使用键盘上的四个方向键移动光标。

(2)在命令模式下,有很多移动光标的方法。不但可以使用四个方向键来移动光标,还可以用

h、j、k、l这四个键代替四个方向键来移动光标,这样可以避免由于不同机器上的不同键盘定义所带来的矛盾,而且使用熟练后可以手不离开字母键盘位置就能完成所有操作,从而提高工作效率。

3.在屏幕上移动

Vi提供了三个关于光标在全屏幕上移动并且文件本身不发生滚动的命令。它们分别是H、M和L命令。

(1)H命令

该命令将光标移至屏幕首行的行首(即左上角),也就是当前屏幕的第一行,而不是整个文件的第一行。利用此命令可以快速将光标移至屏幕顶部。若在H命令之前加上数字n,则将光标移至第n行的行首。值得一提的是,使用命令dH将会删除从光标当前所在行至所显示屏幕首行的全部内容。

(2)M命令

该命令将光标移至屏幕显示文件的中间行的行首。即如果当前屏幕已经充满,则移动到整个屏幕的中间行;如果并未充满,则移动到文本的那些行的中间行。利用此命令可以快速地将光标从屏幕的任意位置移至屏幕显示文件的中间行的行首。例如,在上面屏幕显示的情况下(不论光标在屏幕的何处),在命令模式下,输入命令M之后,光标都将移到add这一行的字母a上。同样值得一提的是,使用命令dM将会删除从光标当前所在行至屏幕显示文件的

中间行的全部内容。

(3)L命令

当文件显示内容超过一屏时,该命令将光标移至屏幕上的最底行的行首;当文件显示内容不足一屏时,该命令将光标移至文件的最后一行的行首。可见,利用此命令可以快速准确地将光标移至屏幕底部或文件的最后一行。若在L命令之前加上数字n,则将光标移至从屏幕底部算起第n行的行首。同样值得一提的是,使用命令dL将会删除从光标当前行至屏幕底行的全部内容。

4.编辑命令

(1)x--删除一个字符

删除文字的最简单的方式是用x。这个命令的结果是光标所处的字符的消失,后面的文字左移动。如果你删除的字符是一行最后的一个字符,那么光标将向左移动一个,这样光标就不会停留在不存在的字符的下面了。假如没有任何文字了,喇叭就叫。

(2)d--删除对象

这个命令的右边还要有一定的文字对象。文字对象就是一块文字。他右边接的就是在控制光标移动的那些字符。例如 w 表示向前一个单词,那么 dw 将删除下一个单词。5w 表示前进5个单词,那么 d5w 将删除他们。

(3)dd--删除一行

最常用的 d 系列命令之一。和前面一样, 5dd 将删除 5 行

(4)D--整个删除

大写形式的 D 用来删除从光标到行尾。和 d$ 一样效果。

(5)u--恢复

要后悔吗?他不仅仅撤消删除,还撤消你所有的编辑工作。

(6).--重复

重复编辑工作。

5.退出Vi

当编辑完文件,准备退出Vi返回到shell时,可以使用以下几种方法之一。

(1)在命令模式中,连按两次大写字母Z,若当前编辑的文件曾被修改过,则Vi保存该文件后退出,返回到shell;若当前编辑的文件没被修改过,则Vi直接退出, 返回到shell。(2)在末行模式下,输入命令 :w Vi保存当前编辑文件,但并不退出,而是继续等待用户输入命令。在使用w命令时,可以再给编辑文件起一个新的文件名。

例如:w newfile

此时Vi将把当前文件的内容保存到指定的newfile中,而原有文件保持不变。若newfile是一个已存在的文件,则Vi在显示窗口的状态行给出提示信息:

File exists (use ! to override)

此时,若用户真的希望用文件的当前内容替换newfile中原有内容,可使用命令

:w! newfile

否则可选择另外的文件名来保存当前文件。

(3)在末行模式下,输入命令 :q 系统退出Vi返回到shell。若在用此命令退出Vi时,编辑文件没有被保存,则Vi在显示窗口的最末行显示如下信息:

No write since last change (use ! to overrides)

提示用户该文件被修改后没有保存,然后Vi并不退出,继续等待用户命令。若用户就是不想保存被修改后的文件而要强行退出Vi时,可使用命令:q! Vi放弃所作修改而直接退到shell 下。

(4)在末行模式下,输入命令 :wq Vi将先保存文件,然后退出Vi返回到shell。

(5)在末行模式下,输入命令 :x 该命令的功能同命令模式下的ZZ命令功能相同。

用户和工作组管理

一、建立一个新用户

建立一个新的用户包括两个步骤,第一步是使用useradd/adduser命令完成一个新用户的初始化设置工作;第二步是用passwd为这个新用户设置密码。例如,我们要给系统添加一

个用户叫test,密码为test,那相关的操作是:

#useradd test<回车>

#passwd test <回车>

注意,系统提示输入两次新密码,由于linux并不采用类似windows的密码回显(显示为*号)——为避免输入密码时被人注意到有多少位——所以,输入的这些字符是看不见的。

到这里,新用户的创建工作就算完成了。

adduser/useradd命令介绍:

语法:useradd [-mMnr][-c <备注>][-d <登入目录>][-e <有效期限>][-f <缓冲天数>][-g <群组>][-G <群组>][-s ][-u ][用户帐号] 或 useradd -D [-b][-e <有效期限>][-f <缓冲天数>][-g <群组>][-G <群组>][-s ]

说明:useradd可用来建立用户帐号。帐号建好之后,再用passwd设定帐号的密码.而可用userdel删除帐号。使用useradd指令所建立的帐号,实际上是保存在/etc/passwd文本文件中。

参数:

-c<备注> 加上备注文字。备注文字会保存在passwd的备注栏位中。

-d<登入目录> 指定用户登入时的启始目录。

-D 变更预设值.

-e<有效期限> 指定帐号的有效期限。

-f<缓冲天数> 指定在密码过期后多少天即关闭该帐号。

-g<群组> 指定用户所属的群组。

-G<群组> 指定用户所属的附加群组。

-m 自动建立用户的登入目录。

-M 不要自动建立用户的登入目录。

-n 取消建立以用户名称为名的群组.

-r 建立系统帐号。

-s 指定用户登入后所使用的shell。

-u 指定用户ID。

三.删除用户

删除一个用户可以使用userdel命令,直接带用户名做参数就可以了。

userdel命令介绍:

语法:userdel [-r][用户帐号]

说明:删除用户帐号。userdel可删除用户帐号与相关的文件。若不加参数,则仅删除用户帐号,而不删除相关文件。

参数:

-r 删除用户登入目录以及目录中所有文件。

四:修改用户的设置

使用usermod命令

例如把test的默认组改为nobody,可以使用如下命令:

#username -g nobody test

usermod命令的使用说明:

语法:usermod [-LU][-c <备注>][-d <登入目录>][-e <有效期限>][-f <缓冲天数>][-g <群组>][-G <群组>][-l <帐号名称>][-s ][-u ][用户帐号]

说明:usermod可用来修改用户帐号的各项设定。

参数:

-c<备注> 修改用户帐号的备注文字。

-d登入目录> 修改用户登入时的目录。

-e<有效期限> 修改帐号的有效期限。

-f<缓冲天数> 修改在密码过期后多少天即关闭该帐号。

-g<群组> 修改用户所属的群组。

-G<群组> 修改用户所属的附加群组。

-l<帐号名称> 修改用户帐号名称。

-L 锁定用户密码,使密码无效。

-s 修改用户登入后所使用的shell。

-u 修改用户ID。

-U 解除密码锁定。

五:文件和目录的权限

linux下,每一个文件、每一个目录都有一个属主,并针对用户自己、用户所在组、其它所有帐号(组)分别设定读、写、执行三种权限。例如,我(假定是webusers组的test帐户的拥有者)使用如下命令建立一个新的文件

touch mytestfile

然后我们使用ls -l mytestfile这一命令来查看这个文件的权限状态(关于ls命令,可以查阅本站的命令查询),可以得到如下的屏幕输出显示:

-rw-rw-r-- 1 test webusers 0 Feb 6 21:37 mytestfile

输出由空格分为9个部分,我们比较关心第一、三、四个字段,分别表示文件权限属性、文件所有者帐户、文件所属组。

◆使用chown命令修改文件的主人

当你新建立一个文件的时候,文件的所有者当然就是你了。这一事实只有超级用户(比如说root)才可以通过chown命令改变(例如 chown otheruser mytestfile,把mytestfile 文件的属主改为otheruser)。普通用户不能把自己的文件“送”给别人,不然你把有特殊目的的程序给了root怎么办?:)

chown命令的用法比较简单。这里我先假设你现在拥有超级用户权限,那么你就可以使用如下命令将一个文件“送给”test了:

chown test /home/test/thefileisrootcreate.txt (假定该文件是由root创建的)修改一个目录的所有者也是类似的:

chown test /home/newboat

当然,如果这个目录还有子目录及文件需要同时送给test,chown也是支持-R参数的:chown -R test /home/newboat

如果你同时想修改文件/目录所属的组的话,你可以使用以下命令方便的达到目的:chown -R test.ftpusers /home/newboat

这样,不但文件主人得到了修改,文件所属的组也变成了ftpusers

◆修改文件的组属性

文件所属组你倒是可以改变,前提是:

1、你的超级用户。

2、你同时属于两个或两个以上的组。

两个条件你至少具备一个,你才能够把文件所属旧组变为新组。使用如下的命令将当前目录下所有html文件所属的组改为httpd:

chgrp httpd *.html

和chown命令一样,chgrp也可以使用-R参数对一个目录内的所有文件和子目录进行递归的修改组属性。

<提示>:你可以使用不带参数的groups命令查看自己属于哪个组。

文件权限的设定是我们这一小节讨论的核心,我们主要介绍chmod命令的两种用法。

◆使用访问字符串设置文件目录权限

正如前面所说的,每一个文件、目录都针对用户自己、用户所在组、其它所有帐号(组)分别有读、写、执行三种权限及其组合。当一个普通用户新建一个文件的时候,它默认的访问权限显示就如我们刚才所举例子的第一个字段所示。总共十位字符“-rw-rw-r--”,第一位是目录区分标志,如果是d的话,表示这是一个目录。第二到四位分别表示文件所有者的读(r:read)、写(w:write)、执行(x:execute)属性,第五到七位是文件所属组的读、写、执行权限,第八到第十位则是其它用户的读、写、执行权限。如果对应的位是相应的字母,就是有这相应权限,否则为“-”,表示没有获得这个许可。象刚才例子中的文件就是自己可读写,本组可读写,其它用户可读,所有的用户(包括自己)都不能执行它。

我们的用u、g、o分别来指代用户(user)、组(group)、其它帐户(other),就可以方便的设置文件和目录的权限了。当然,我们也可以用a来表示所有的这三项。

例如,我们要对所有perl的脚本文件设定权限,对所有用户都可以读和执行,文件所有者还允许写许可,那么我们可以使用如下命令:

chmod a+rx,u+w *.pl

注意:如果要使用多个访问字符串,它们之间要用逗号隔开,各个许可字符串之间不允许有空格。正如上例所示。

如果要修改目录中所有文件和子目录的权限属性,可以使用chmod提供的-R参数来递归修改。例如,下列命令将/www/site1目录及其下面的子目录的权限属性设定为所有者和组可读、写、执行,其它用户不可访问:

chmod -R a+rwx,o-rwd /www/site1

注意,不要轻易使用-R选项,这可能会带来安全隐患。

使用字符串方便了理解,单输入那么多字母还是有点累,如果你对8进制有些概念的话,可以使用下面介绍的方法来做权限设置。

◆使用八进制数设置文件目录权限

我们知道,在ls -l的输出中,文件权限表示为“-rw-rw-r--”,前一位只和是否为目录有关,其它九位正好可以分成三段,每段三位,“rw-”、“rw-”和“r--”,“-”代表无效“0”,其它字符代表有效“1”,那么这个文件的权限就是“110”、“110”、“100”,把这个2进制串转换成对应的8进制数就是6、6、4,也就是说该文件的权限为664(三位八进制数)。我们也可以使用类似这种三位八进制数来设定文件授权,如上边两个例子,就也可以写为:chmod 755 *.pl

chmod -R 770 /www/site1

是不是很简洁?关键在于你能根据你需要设定的权限正确的选择八进制数(利用八进制数的二进制表示可以非常轻易的做到这一点)。

◆读、写、执行的权限说明

1、所谓写的权限,也就是对文件修改和删除的权限。如果目录的写权限也对你开放了,则可以创建、删除或修改该目录下的任何文件或子目录——即使该文件和子目录并不属于你。

2、对目录有只读许可的用户,不能用cd命令进入该目录;还必须同时有执行许可才可以进入该目录。

3、必须同时拥有读和执行权限才可以使用ls这样的程序列出目录内容清单。

4、只对目录有执行权限的用户,想访问该目录下的文件有读权限的文件,必须知道该文件名才可以访问。

六:两个重要文件:/etc/passwd与group

在linux的安全机制里,/etc/passwd与/etc/group这两个文件占着非常重要的地位。它们控制着linux的用户和组一些重要设置。

◆/etc/passwd文件说明

下面是一个普通的passwd文件的例子:

root:x:0:0:root:/root:/bin/bash

bin:x:1:1:bin:/bin:

daemon:x:2:2:daemon:/sbin:

……

operator:x:11:0:operator:/root:

games:x:12:100:games:/usr/games:

gopher:x:13:30:gopher:/usr/lib/gopher-data:

ftp:x:14:50:FTP User:/home/ftp:

nobody:x:99:99:Nobody:/:

xfs:x:43:43:X Font Server:/etc/X11/fs:/bin/false

named:x:25:25:Named:/var/named:/bin/false

postgres:x:26:26:PostgreSQL Server:/var/lib/pgsql:/bin/bash

lanf:x:500:500::/home/hujm:/bin/bash

mysql:x:101:101:MySQL server:/var/lib/mysql:/bin/bash

imnotroot:x:0:0::/home/imnotroot:/bin/bash

在这个文件里只有一个普通帐号lanf。其它都是系统或系统服务的进程需要的帐号,包括我们非常熟悉的root这个超级用户。在passwd的文件里,每一行被冒号(":")分成7个部分,分别是:

[用户名]:[密码]:[UID]:[GID]:[身份描述]:[主目录]:[登录shell] 其中:

⒈[用户名]是passwd文件里各记录行唯一的有"唯一性"要求的域。也就是说每一行的第

一个区域的内容都不能相同,其它区域就无所谓了。

⒉[密码]区域在以前,保存着一个经过不可逆的哈希算法进行DES加密的13位字符,但不包括单引号和冒号。这13位字符中,前两位是密钥,在加密的时候随机生成的。由于这个字符串不包括单引号,所以以前有一种不修改密码又禁止用户登录的方式就是在密码前面加一个单引号。值得注意的是,现在由于使用了shadow口令,在密码区域只有一个x字符。

⒊[UID]虽然是系统用来标志文件归属,确定各种权限的标志,但这个区域的内容并不要求唯一的。比较常见而又与安全问题相关的一个例子是有多个UID和GID均为0的用户帐号。注意到在该文件最后一行还有一个UID和GID为0的用户imnotroot,虽然它声称自己不是root,但是它却有和root完全相同的权限,因为系统并非根据[用户名],而是根据UID和GID 来分用户的权力的。所以,这种情况无疑为系统埋下了安全的炸弹。但是,当imnorroot做锁定屏幕等操作的时候,如果它的密码和root的不一样,它将无法解锁,因为系统只是查到第一个UID为0的用户(自然是root)后,就不在往下查找了——它当UID也是唯一的。

⒋[GID]用户默认的组ID,这个ID可以在文件 /etc/group里查到对应的组名。

⒌[身份描述]:就是用户的身份说明,默认的是无任何说明,可人工添加。

⒍[主目录]:用户的主目录,可以使用前面介绍的命令修改。

⒎[登录shell]:用户登录时系统提供的shell,请参考前面的有关内容。

<注意>:[UID]和[GID]小于500的一般都是系统自己保留,不做普通用户和组的标识的,所以新增加的用户和组一般都是UID和GID大于500的。

◆/etc/group文件说明

下面是一个group文件的例子:

root:x:0:root,hujm,hjm

bin:x:1:root,bin,daemon

daemon:x:2:root,bin,daemon

sys:x:3:root,bin,adm

adm:x:4:root,adm,daemon

tty:x:5:

disk:x:6:root

lp:x:7:daemon,lp

mem:x:8:

kmem:x:9:

wheel:x:10:root

mail:x:12:mail

news:x:13:news

uucp:x:14:uucp

……

hujm:x:503:root,mynoshell,hjm

mysql:x:101:

mynoshell:x:505:

ftpusers:x:506:

它总共分四个部分:

[组名]:[密码域]:[GID]:[组员列表]

意思非常明显,需要说明一下的是,由于组一般都不用密码保护,所以虽然看起来密码域有个X字符,其实那只表示使用了SHADOW(对应文件为gshadow)。组员列表用逗号分隔各个帐号。另外,一个组的组员如果默认登录组就是它的话,那么在组员列表里将不显示这个组员的帐号,例如用如下命令增加的用户:

useradd -g ftpusers test

在/etc/group文件里ftpusers的组员列表将不显示这个组员(真是失败),而只是在passwd文件中的GID被设置为506。而使用如下命令:

usermod -G ftpusers,mysql,webusers test

就可以看见相关的组后边加上了test帐号。当然,你可以直接用vi来直接编辑这个文件。

group文件和passwd文件是通过GID联系在一起的,这有点象关系数据库。根据passwd 文件中一个帐户的GID,可以在group文件中找到对应的组名。如果采用了用户私有组机制的

话,那么一般新增一个帐号,就会有对应的一个与帐号同名的组增加到group文件中。虽然这时passwd文件中具有唯一性的[用户名]字段和group文件中具有唯一性的[组名]字段一样,并不代表着它们是通过这两个字段形成一一对应的关系的。千万别忘记,系统对数字(UID,GID)更加敏感^_^。

再有一点应该注意,你统计一个组的组成员的时候,千万别只记得看组成员列表,还应该查找默认登录组也是这个组的用户——它们可不一定在列表里。

〈提示〉新组的增加可以使用 groupadd newgroupname。

七.关于手工创建账号

使用adduser/useradd命令常见过程的本质也就是在系统的账号数据库中加入账号信息。我们可以据此来手工创建系统账号。在passwd和group中加入账号信息即可(注意,现在的Linux发行版本都是用了shadow文件所以还要执行pwconv命令将密码转移到shadow中,一增强安全性)。

BASH使用及编程

命令行补齐功能

输入命令的任何时刻,都可以按Tab键。bash将会试图补全此时键入的部分命令。如果不能补全,bash就会用声音提醒它需要更多的信息,这时再按Tab键则列出所有可能的选项。使用通配符

Linux支持在查找文件和字符时使用通配符,bash支持三种通配符

1:“*”表示任意和所有的字符,可表示任何的字符序列。如:#cp * /tmp(将拷贝当前目录下的所有不是以“.”开头的文件到/tmp目录)

2:通配符“?”代表一个字符。如当前目录下有文件file1.doc、file2.doc、file1c.doc、file2s.doc和file2q.doc,执行如下命令将拷贝file1.doc file2.doc文件到/tmp目录

# cp file?.doc /tmp

因为“?”只代表一个字符,可以用ls *.???来产生一个扩展名为三个字符的文件列表。

3:通配符[…],如用户想选择文件file1.doc,file2.doc和file3.doc,但不选file4.doc,可用file[123]作为文件的通配符。还可以在[ ]中括入一个字符范围来代表一个字符。假设有名为redflag.1,redflag.2 ,redflag.3和redflag.4的四个文件,把前三个文件移动到/tmp下,可用:# mv redflag.[1-3] /tmp

注意与“?”一样,在[ ]中的一项代表一个字符,如[123],代表只允许字符1、2、3;如[1-5]表示在数字1到5的任意字符;[A-Z,a-z]代表在ASCII字符集中,26个大小写字符。

使用历史命令

bash支持历史命令(history),它可以保留一定数量的、曾使用过的shell命令。便于重复执行同一组命令。例如,在开发程序和查错时,将重复进行相同的循环。编辑源程序、编译源程序、运行可执行文件来测试它的性能,然后在从头开始。为了避免重复输入同样的命令,bash在执行命令时将它们保存起来,需要时可重复使用这些命令。bash用命令历史表(history list)保存这些命令。历史表一般可保留1000行命令。每次当用户退出系统时, bash自动将当前历史表保存到一个文件中。默认的文件用户主目录下的 .bash_history,下一次登录时,bash自动将历史文件的内容加载到的命令历史表中。

最简单的调用历史命令的方法是是使用上下箭头键,逐个列出使用过的命令。用向上箭头键会使最新敲入的命令现示在命令行上;再次使用就可以得到次新的命令,以此类推。向下箭头键反之。

另一种使用历史文件的方法是用history命令,history命令有两种使用方法。第一种是使用命令:# history [n]

如果history命令后不带任何参数,那么整个历史表的内容都会现示在屏幕上。在history

命令后跟上参数n使历史表中最后n条命令被显示出来。

History的第二种使用方法是使用下面的格式改变历史文件或历史表的内容:

# history [-r | w | a | n] [filename]

-r是告诉history命令读取历史文件的内容,并把它们作为当前的历史表。-w是告诉history 命令把当前历史表写入历史文件(覆盖当前历史文件)。-a参数则把当前历史表添加到历史

文件的尾部。-n参数把历史文件中的最后n行读取到当前历史表中。

History命令的这些参数的执行结果都会被送入其后的[filename]中,并把该文件作为历史文件。

shell变量HISTFILE表示要把历史命令记录在哪个文件当中,shell变量HISTSIZE当前历史命令允许的个数。

另外,可以使用fc命令编辑已有的历史命令,该命令会自动打开vi编辑器,用户修改号命令后,保存退出时即可执行新修改的命令了。

使用命令别名(alias)

把用户经常使用的命令或者容易错误的命令重新起一个名字。

如下面的别名则使原来的命令输入简单

# alias mycd=’cd /usr/X11R6/lib/X11/config/’

下面的别名则使原来的命令输入更安全

# alias rm=’rm –i’

系统已经帮我们建立了很多命令别名,可以使用如下命令察看系统当前的命令别名:

#alias

取消一个已有的命令别名如:#unalias mycd

注意:在定义命令别名时在等号两边不能有空格,命令中包含有空格或特殊字符时需要引号。输入输出重定向

重定向的由来

一般情况下Linux命令是从键盘输入的,并将命令的运行结果送给屏幕显示。有时从文件接受输入或把结果送到文件中去也是很有用的。在这种情况下,在编写命令时,增加文件名作为附加的或可选的参数是能做到的,一些命令也是这样做的。但是,每条命令都增加这些并不经常使用的功能将会不必要地增加命令执行文件的长度,为了间花操作,shell提供了重定向的功能。在必要时,允许将程序的标准输入输出进行重定向。

重定向举例

# ls –l /bin >tmp

该命令的前部分产生 /bin目录的长清单。在正常情况下,应该是在屏幕上显示。在命令后面跟上“>”和文件名时,清单将送到指定的文件中,而不是在屏幕上显示。如果指定的文件存在,其原有的内容将被覆盖。

ls命令其实并不知道“>”的作用,它甚至不知道“>”的存在。因为bash将任何命令行参数送给ls命令以前已将“>”和后面的文件名移去。ls命令执行时象往常一样将它的输出送到标准输出设备。由bash在ls命令执行之前将它的输出从屏幕上重新定向到指定的文件。其它重定向功能也是类似的。追加重定向操作符(>>)将一条命令的输出结果追加到已有的文件的后面。

和程序的标准输出重定向一样,程序的错误输出也可以重新定向。程序的标准输出和错误输出通常作为两件不同的事情对待,可以对它们分别进行重定向。例如,要在屏幕上看到程序的正常输出结果,但又要将程序的任何错误信息送到一个文件中去以备以后检查,可以用下面的命令: # ls /usr/tmp/ 2> err.file,使用符号“2>”表示对错误输出设备重定向。为了将标准输出和错误输出同时送到一个文件中,可以使用另一个输出重定向操作符“&>”(也可以使用” >&”): # ls /usr/tmp/ &> err.file

用“<”作为重定向操作符:#wc < /etc/passwd

用“<<”输入重定向称为here文档。它告诉bash当前命令的标准输入来自命令行。它将一对分格符(delimiter)之间的正文重新定向输入给命令

使用重定向实现系统单个命令未提供的新功能

使用管道

使用管道命令可以把一系列的命令连接起来,使第一条命令的输出作为第二条命令的输入、第二条命令的输出作为第三条命令的输入,以此类推。管道使用“|”作为管道操作符。

用户可以通过几个用“|”分开的命令告诉bash产生一个管道如:

# cat example.txt | grep "test" | wc –l

管道命令把cat命令的输出(example.txt文件的内容)送给grep命令。grep命令在当前输入中寻找字符串test。输出再送给wc命令。带-l参数的wc命令再打印出输入的行数。

重定向和管道的区别:如果用重定向实现管道的功能需要创建一个临时文件保存中间结果而管道不需要这个临时文件。

命令替换

命令替换的符号是反单引号,在一个命令中和引用另一个命令的之心结果。例如:

#ehco Today is `date`

其中date为系统命令将显示系统日期。

有关bash的提示符

提示符的概念

bash有两级提示符。第一级是bash在等待输入命令时用户看到的提示符,这也是通常所看到的提示符,存在shell变量$PS1中,二级提示符存在shell变量$PS2中(第二级提示符是当shell发现用户的命令不全,告诉用户还需要更多输入时的提示符。here文档,用到了第二级提示符,当时使用的是第二级提示符默认的“>”)。

改变命令提示符

如果要改变用户的提示符就是改变这两个变量的值。

如:1:#PS1=”HELLO” 2:#PS2=”CONTINUE” 3:#PS1=”\t”(当前时间为提示符)(在命令行输入后马上生效,如要永久生效可修改“$HOME/.bashrc”文件并加入export PS1=”你的提示符”一行内容)

可以在命令提示符中显示系统制定好的特殊字符,这些特殊的字符可以再提示符中显示诸如

有关作业控制

作业控制的概念

作业控制是指bash控制正在运行的进程的能力。bash可以挂起某个进程,以后再恢复该进程的执行。

作业控制

Bash保存了当前执行的作业清单。

1:jobs命令显示作业清单。

2:为了挂起一个正在运行的进程,可以用Ctrl+z。

3:使用bg命令可以恢复一个被挂起的后台进程,而fg命令可以恢复一个被挂起的前台进程。当命令在前台执行时,在该进程结束以前用户都无法从键盘输入任何命令。通常大多数命令的执行只需要几秒钟,如果命令执行时间过长,就最好使它进入后台作业以便能在前台继续向bash输入指令。例如,想运行命令find / -name "test" > find.out ,如果用户正在执行这条命令,并想让它转入后台以便能在前台继续输入命令,可以用Ctrl+z将进程挂起,再在提示符下输入:$ bg这时该命令将在后台执行,用户就可以继续使用bash输入其他命令了。如何定制bash

如何让bash的设置永久生效

前面用户所做的这些改变只在当前有效,如果退出系统,所做的努力都会丢失。

为了使设置永久有效,可以在bash的一个初始文件中存储这些每次进入bash都要执行的命令使系统启动时就生效。这个初始文件通常是进行命令别名和初始变量的设置。Bash的这个初始文件名为profile。每一个用户在其宿主目录下都有一个.profile文件,每次起动bash 时,bash都要从中读取信息,文件中所有的命令都将被执行。位于目录/etc下的profile文件,是对所有用户都起作用的,若对某个用户定制可以修改其主目录下的并名为.profile的文件(如无此文件创建之)。大家可以自己打开profile文件查看并修改之。

Bash常用内部命令

常用的bash的环境变量

Bash编程:

编程概述

上面我们看到的都是有户用户操作一步系统执行一步,这种方式对于经常的重复性的工作很不合适。那么,一些例行的重覆性工作我们可以使用bash编程实现。同传统的编程语言一样,shell提供了很多特性,这些特性可以使你的shell script编程更为有用,如:数据变量、参数传递、判断、流程控制、数据输入和输出,子程序及中断处理等。下面我们就来详细讲解使用bash编写shell script(一种解释型的程序设计语言)程序。

编写并运行一个最简单的bash程序

1.编写程序(所有的文本编辑器都可以使用)

$ cat > test.sh

>#!/bin/bash

>cp /etc/passwd /tmp

>ls /tmp

>^D

2.改变源程序的权限(加上可执行权限)

$chmod a+x test.sh

3.执行shell程序

$./test.sh

注意:在编写程序时对自己的程序采用统一的缩进格式,以增强自己程序的可读性。

bash编程基础知识

1:在shell编程中的变量。

shell变量(转换shell后就失效),环境变量(改变shell后仍有效)。Bash和pdksh

中给变量赋值得方法一样(变量名后面跟上等号和变量值,如:var1=1,等号两边不能有空格),tcsh中使用:set var1 = 5(等号两边可以有空格也可没有) 。

对shell变量进行数字运算,使用expr命令:如,expr $a + $b (注意+两边的空格);expr 2 \* \( 3 + 4 \)

特殊变量

$#:存储shell程序中命令行参数的个数

$?:存储shell中上一个程序执行的返回值(0表示命令执行成功,非0有问题)

$0:存储shell程序自己的名称

$[1-n]:存储第[1-n]个命令行参数

$*:存储shell脚本的所有参数(不包含$0)

$@:存储shell脚本的所有命令行参数

$$:存储shell脚本的进程号(pid)

$!:存储上一个后台执行命令的进程号(pid)

2:使用哪一种命令外壳执行shell程序

第一:命令解释器 shell文件名。如:bash file1.sh

第二:在shell脚本中的的首行指明由谁执行。如:#!/bin/bash

如果第一行非空字符为#!则使用后面指名的shell,如果第一行非空字符为#则使用C外壳,如果第一行非空字符不为#则使用B外壳。

第三:在pdksh和bash下使用“. 文件名”(点后有空格),在tcsh下使用“source 文件名”

第四:命令替换:略。

3:从标准输入读取变量的值

可通过命令行参数以及交互式输入变量(read),如:read a 。

bash的流程控制语句

1)条件判断

. if-then语句,格式如下:

if command_1

then

command_2

command_3

fi

command_4

在if-then语句中使用了命令返回值$?,即当command_1执行成功时才执行command_2 和command_3,而command_4总是执行.

. if-then-else语句

if command_1

then

command_2

else

command_3

fi

.if嵌套及elif结构

if command

then

command

else

if command

then

command

else

if command

then

command

fi

fi

fi

改进:使用elif结构

if command

then

command

elif command

then

command

elif command

then

command

fi

elif结构同if结构类似,但结构更清淅,其执行结果完全相同.

.bash和pdksh中的case语句规则如下:case string1 in

linux学习笔记

Linux 一、Linux文件及文件夹命名规则 1)除了/之外,所有的字符都合法。因为/是系统的根目录名 2)有些字符最好不要用,如空格、制表符、退格符和@#$&-等字符。因为Linux命令以空格、-进行分开的;而#表示管理员命令行,$表示用户命令行等 3)避免使用.作为普通文件名的第一个字符。因为Linux系统以.开头的文件是隐藏文件4)Linux系统对英文字符大小写敏感 建议:不要把windows使用习惯带到Linux系统使用上 二、Linux操作命令 2.1、命令格式 命令格式:命令-选项参数 示例:ls –la /etc,参数是命令操作的对象 说明:1)当有多个选项时,可以写在一起。 2)两个特殊的目录.和..,分别代表当前目录和当前目录的父目录 2.2、命令种类及用法 Linux系统里命令按权限分为:1、只有管理员即root才能使用的命令,这些命令位置在/sbin 和/usr/sbin目录;2、管理员和所有用户都能使用的命令,这些命令的位置在/bin和/usr/bin 目录。bin是二进制文件夹binary缩写,usr是user的缩写,sbin是super binary缩写;3、Linux系统里内核处理任务文件都需要一个数字标识(inode-i节点),因为Linux只认i节点不认字符的,一个i节点可以对应多个文件 2.2.1、文件处理命令 2.2.1.1、ls命令-查看 1)命令名称:ls 2)命令英文原意:list 3)命令所在路径:/bin/ls 4)执行权限:所有用户

5)命令作用:查看目录下的文件和文件夹 6)命令语法:ls 选项[-ald] [文件或目录] 7)用法示例:#ls –ald /etc 选项说明:-a all缩写,显示所有文件,包括隐藏文件 -l long缩写,显示文件和文件夹详细信息显示 -d 查看目录属性 -i 查看文件的inode(i节点:一个数字标识) 文件和文件夹详细信息说明: 1、第一部分如:drwxr-xr-x、-rwxr-xr-x、lrwxr-xr-x这部分分成4个部分, 其各个字符说明: d 第一个字符d表示目录directory - 如果是第一个字符表示二进制文件,其它表示无权限 l 第一个字符l表示软链接文件link r 读权限read w 写权限write x 执行权限execute 第一部分:即第一个字符,表示文件类型 第二部分:第2-10个字符,表示三种用户对该文件的权限 第2-4个字符,表示所有者u-user对该文件的权限 第5-7个字符,表示所属组g-group对该文件的权限 第8-10个字符,表示其它人o-others对该文件的权限 2、第二部分如:2,表示该文件硬链接数 3、第三部分如:root,表示该文件所有者权限 4、第四部分如:root,表示该文件所属组权限 5、第五部分如:4096,表示该文件大小;以数据块block表示最小存储数 据单位,每个数据块为512字节 6、第六部分如:12-01 20:52,表示该文件创建时间或最后修改时间 7、第七部分如:bin,表示该文件的名 2.2.1.2、cd命令-切换 1)命令名称:cd 2)命令英文原意:change directory 3)命令所在路径:shell内置命令 4)执行权限:所有用户 5)命令作用:切换目录 6)命令语法:cd [目录] 7)用法示例:#cd / 切换到根目录 注:这个命令一般配合pwd命令使用

一篇非常好的linux学习笔记分享(Linux入门绝佳)

作者:佚名字体:[增加减小] 来源:互联网时间:03-06 21:54:44我要评论 一篇非常好的linux学习笔记分享,对于常用命令整理的比较详细,推荐使用。 linux目录架构 / 根目录 /bin 常用的命令binary file 的目錄 /boot 存放系统启动时必须读取的档案,包括核心(kernel) 在内 /boot/grub/menu.lst GRUB设置 /boot/vmlinuz 内核 /boot/initrd 核心解壓縮所需RAM Disk /dev 系统周边设备 /etc 系统相关设定文件 /etc/DIR_COLORS 设定颜色 /etc/HOSTNAME 设定用户的节点名 /etc/NETWORKING 只有YES标明网络存在 /etc/host.conf 文件说明用户的系统如何查询节点名 /etc/hosts 设定用户自已的IP与名字的对应表 /etc/hosts.allow 设置允许使用inetd的机器使用 /etc/hosts.deny 设置不允许使用inetd的机器使用 /etc/hosts.equiv 设置远端机不用密码 /etc/inetd.conf 设定系统网络守护进程inetd的配置 /etc/gateways 设定路由器 /etc/protocols 设定系统支持的协议 /etc/named.boot 设定本机为名字服务器的配置文件 /etc/sysconfig/network-scripts/ifcfg-eth0 设置IP /etc/resolv.conf 设置DNS /etc/X11 X Window的配置文件,xorg.conf 或XF86Config 這兩個X Server 的設定檔/etc/fstab 记录开机要mount的文件系统 /etc/inittab 设定系统启动时init进程将把系统设置成什么样的runlevel /etc/issue 记录用户登录前显示的信息 /etc/group 设定用户的组名与相关信息 /etc/passwd 帐号信息 /etc/shadow 密码信息 /etc/sudoers 可以sudo命令的配置文件 /etc/securetty 设定哪些终端可以让root登录 /etc/login.defs 所有用户登录时的缺省配置

linux基本命令学习笔记

一、常用系统工作命令 1.echo 用于在终端输出字符串或者变量提取后的值 2.date 用于显示系统的时间或者日期 date "+%Y-%m-%d %H:%M:%S" 指定格式查看当前系统时间 date -s "20180901 8:53:00" 设置系统当前时间 date "+%j" 3.reboot 4.poweroff 5.wget(暂时了解即可) 6.ps 查看系统中的进程状态ps aux -a 显示所有进程 -u 用户以及其他详细信息 -x 显示没有控制终端的进程 //linux系统中有长短格式之分长长不能合并,长短不能合并,短短可以合并; 合并后保留一个- 号、ps命令允许参数不加减号(-),因此直接写成ps aux ·五种常见进程状态: R (运行)S(中断)D(不可中断)Z(僵死)T(停止) 7.top 动态的监视进程活动与系统负载等信息“Linux中的强化班的Windows任务管理器” 8.pidof 用于查询某个指定服务进程的PID值,格式为“pidof[参数][服务名称]” 9.kill 终止某个指定的PID的服务进程。 10.killall 用于终止某个指定名称的服务所对应的全部进程、killall[参数][进程名称] 如果我们在系统终端中执行一个命令后想立即停止它,可同时按下Ctrl+C组合键,这样将立即终止该命令的进程。或者有些命令在执行时不断的在屏幕上输出信息,影响后续命令的输入,则可以在执行命令时在末尾加上一个&符号,这样命令将进入系统后台来执行。 二、系统状态检测命令 1.ifconfig 查看本机当前网卡配置与网络状态的信息 主要查看网卡名称inet参数后面的ip地址ether参数后面的网卡物理地址(MAC 地址)以及RX TX的接受数据包和发送数据包的个数及累计流量 2.uname 用于查看系统内核与系统版本等信息 uname -a 若要查看当前系统版本的详细信息,则需要查看redhat-release文件 cat /etc/redhat-release 3.uptime 用于查系统的负载信息 显示当前系统时间系统已运行时间启用终端数量以及平均负载值 平均负载值:系统在最近一分钟五分钟十五分钟内的压力情况 4.free用于显示当前系统的内存使用量信息free -h 5.who 用于查看当前登入主机的用户终端信息 https://www.wendangku.net/doc/ab1528160.html,st 用于查看所有系统的登录记录。(日志文件形式保存在系统中,因此黑客很容易对其进行篡改,不要用该命令的输出信息判断系统有无被恶意入侵) 7.history 显示历史执行过的命令(1000条)如果不够,可自定义/etc/profile文件中的HISTSIZE变量值。使用-c参数会清除所有命令历史记录。还可以使用“!编码数字”的方式重复执行某一次命令。

Kali linux学习笔记

H\gd gdips 。 m _?p.. +f\gd .+ ” ” /+ dn j dnj j apuudib jk iq\n 0+ 1+ 2+ + %bjjg c\ f m& .+ n \m c_in+i o m\ao+ jh AKP ncj_\idib+ jh cook7,,rrr+ skgjdo*_]+ jh,bjjbg *_jmfn, . oc E\mq mno m oc c\mq no m *_ hd mjnjao+ jh *g 2-- *] bjjbg

oc c\mq no m *_ hd mjnjao+ jh *] kbk oc c\mq no m *_ hd mjnjao *g /-- *] gdif _di oc c\mq no m *_ hd mjnjao+ jh *g 2-- *] \gg / h o\bjjg adg Rn\b 7 h o\bjjadg jkodjin *_7 _jh\di oj n \m c *o7 adg otk oj _jrigj\_ %k_a)_j )sgn)kko)j_k)j_n)_j s)sgns)kkos& *g7 gdhdo ja m npgon oj n \m c %_ a\pgo /--& *c7 rjmf rdoc _j ph ion di _dm ojmt %pn t n ajm gj \g \i\gtndn& *i7 gdhdo ja adg n oj _jrigj\_ *j7 rjmfdib _dm ojmt %gj \odji oj n\q _jrigj\_ _ adg n& *a7 jpokpo adg Bs\hkg n7 h o\bjjadg+kt *_ \kkg + jh *o _j )k_a *g /-- *i 2- *j \kkg adg n *a m npgon+cohg h o\bjjadg+kt *c t n *j \kkg adg n *a m npgon+cohg %gj \g _dm \i\gtndn& ” ” FM ” ” é ~ _inh\k _in iph ad m _in_d o3

linux系统学习笔记

==============================智能娱乐系统=================== 硬件:中控:UI,音视频数据处理能力 操作:显卡,声卡、LED、游戏机、触控屏 ARM :cortex - A 软件:开发环境:vmware + linux(ubuntu) 程序开发:linux C 程序移植:交叉开发 效果:自动处理程序 一、Linux 命令 linux : 图形简陋---> 追求效率高 移植性强,开源性 linux :命令行形式进行交互 ls: 查看全部文件名/ --->根目录 pwd: 打印当前的路径/home/gec 等于~ ---> 家目录 cd : 直接回到/home/gec cd / : 回到根目录/ cd ..: 回到上一级的目录 ls -l 类型权限链接数创建者工作组大小日期目录名d rwxrwxr-x 2 gec gec 4096 Jul 2 2013 Desktop d:目录(第一个字母:-:普通文件d:目录) rwxrwxr-x:文件的权限r:读权限w:写权限x:执行权限 用户权限:rwx(创建者的权限)rwx(同组人)r-x(其他人) clear: 清除屏幕信息 touch 创建文件 touch xxxx ----> 因为身份是gec,所以必须在/home/gec中创建 rm 删除文件/目录 rm xxxx(文件名) ----> 因为身份是gec,所以必须在/home/gec中删除rm xxxx(目录名) -rf

gedit 编辑文件 gedit xxxx cat 查看文件内容 cat xxxx mkdir 创建目录 mkdir xxxx ----> 因为身份是gec,所以必须在/home/gec中创建 cp 拷贝命令 cp 文件名目录名---> cp abc.c 123/ chmod 修改文件的权限 -rw-rw-r-- 1 gec gec 20 Apr 14 19:43 abc.c 421421421 6 6 4 希望三个人都是可读可写可执行7 7 7 chmod 777 xxxx chmod 777 abc.c -rwxrwxrwx 1 gec gec 20 Apr 14 19:43 abc.c 二、linux与windows间的共享目录 1,在windows系统中的D:\创建一个名字为share的目录 2, "虚拟机" --- "设置" ---- "选项" --- "共享文件夹" --- "总是启用" ---"确定" 3,在linux系统输入以下命令来进入共享目录 cd /mnt/hgfs/share/ 4,在linux与windows分别创建目录和文件,观察两个系统的变化 =====================开发板的使用========================= 一、核心板

Linux学习笔记一

Linux学习笔记一 默认情况下,所有系统帐号与一般身份用户,以及root的相关信息,都记录在/etc/passwd 文件内;密码记录在/etc/shadow 文件中;Linux所有的用户组名称都记录在/etc/group内。不可随意删除这3个文件。 了解Linux文件属性,以root身份登录后输入|s -al查看具体属性设置。 文件前面第一个字符为.表示隐藏文件。 各字段依次的含义:文件属性,连接数,文件拥有者,文件所属用户组,文件大小,文件最 先修改时间,文件名 文件属性10字段: Linux文件类型: -普通文件。根据文件内容分:纯文本文件(ASCLL ),二进制文件(binary ),数据格式文件(data) ----last 命令 d目录, l连接文件link file ,b设备文件中可供存储的接口设备, c设备文件中串行端口设备如键盘鼠标 拥有者权限,同用户组权限,其他非本用户组权限

r read 读,w write 写,x excute 可执行 9个属性,3个一组,其中可用数字来表示各个属性:r--4 , w--2 , x--1,将同一组的3个属性相加:owner=rwx=4+2+1 Windows中,一个文件是否具有执行能力是通过扩展名"来决定,但在Linux中是通过是否具有x属性来决定的。 Linux文件扩展名: .sh :批处理文件(script,脚本),shell写成 .pl :程序语言Perl的文件 更改文件权限 charp改变文件所属用户组 chown改变文件拥有者 chmod改变文件的属性,suid等特性 chown还可以直接修改用户组的名称。什么时候用到chown和chgrp,比如将一个文件copy 给其他人时,复制后的文件拥有者仍然是原来的拥有者,所以得到文件复制分的用户仍然没有修改的权限,此时就需要修改文件的拥有者与用户组。 当我们以vi编辑shell的文字文件后,其属性通常都是-rw-rw-rw- , 666属性,如果要将它变成可执行文件,并且不能让其他人修改此文件,那么就需要修改文件的属性成 -rwxr-xr-x,755 属性

linux 学习心得

linux 学习心得.txt喜欢我这是革命需要,知道不?!你不会叠衣服一边呆着去!以后我来叠!我一定要给你幸福,谁也别想拦着。linux,sh脚本编程 在Linux系统中,虽然有各种各样的图形化接口工具,但是sell仍然是一个非常灵活的工具。Shell不仅仅是命令的收集,而且是一门非常棒的编程语言。您可以通过使用shell使大量的任务自动化,shell特别擅长系统管理任务,尤其适合那些易用性、可维护性和便携性比效率更重要的任务。 下面,让我们一起来看看shell是如何工作的: 建立一个脚本 Linux中有好多中不同的shell,但是通常我们使用bash (bourne again shell) 进行shell编程,因为bash是免费的并且很容易使用。所以在本文中笔者所提供的脚本都是使用bash(但是在大多数情况下,这些脚本同样可以在bash的大姐,bourne shell 中运行)。 如同其他语言一样,通过我们使用任意一种文字编辑器,比如nedit、kedit、emacs、vi等来编写我们的shell程序。程序必须以下面的行开始(必须方在文件的第一行):#!/bin/sh 符号#!用来告诉系统它后面的参数是用来执行该文件的程序。在这个例子中我们使用/bin/sh来执行程序。 当编辑好脚本时,如果要执行该脚本,还必须使其可执行。 要使脚本可执行: chmod +x filename 然后,您可以通过输入: ./filename 来执行您的脚本。 注释 在进行shell编程时,以#开头的句子表示注释,直到这一行的结束。我们真诚地建议您在程序中使用注释。如果您使用了注释,那么即使相当长的时间内没有使用该脚本,您也能在很短的时间内明白该脚本的作用及工作原理。 变量 在其他编程语言中您必须使用变量。在shell编程中,所有的变量都由字符串组成,并且您不需要对变量进行声明。要赋值给一个变量,您可以这样写: 变量名=值 取出变量值可以加一个美元符号($)在变量前面: #!/bin/sh #对变量赋值: a="hello world" # 现在打印变量a的内容: echo "A is:" echo $a 在您的编辑器中输入以上内容,然后将其保存为一个文件first。之后执行chmod +x first 使其可执行,最后输入./first执行该脚本。 这个脚本将会输出: A is: hello world 有时候变量名很容易与其他文字混淆,比如: num=2 echo "this is the $numnd" 这并不会打印出"this is the 2nd",而仅仅打印"this is the ",因为shell会去搜索

linux读书笔记

第一次学shell编程,看的文章中说shell程序必须以"#!/bin/sh"开始,也就认为是这样了。 虽然知道在shell中以"#"开始的语句都是注释,但也从没认为"#!/bin/sh"也是注释,就像对C语言程序必须有main函数一样毫无怀疑。 但前些时候又听说"#!/bin/sh"也是注释,可有可无,当时觉得真是一个失败,连基本的语法都分不清。 前几天借了一本书,才真正认识了"#!/bin/sh"。 shell编程是以"#"为注释,但对"#!/bin/sh"却不是。 "#!/bin/sh"是对shell的声明,说明你所用的是那种类型的shell及其路径所在。 如果没有声明,则脚本将在默认的shell中执行,默认shell是由用户所在的系统定义为执行shell脚本的shell。 比如:如果脚本被编写为在Korn Linux中运行,而默认运行shell脚本的为C shell csh,则上述脚本在执行过程中很可能失败。 所以建议大家就把"#!/bin/sh"当成C 语言的main函数一样,写shell必须有,以使shell程序更严密。 即: #!/bin/sh 是指此脚本使用/bin/sh来解释执行,#!是特殊的表示符,其后面根的是此解释此脚本的shell的路径。 其实第一句的#!是对脚本的解释器程序路径,脚本的内容是由解释器解释的,我们可以用各种各样的解释器来写对应的脚本。 比如说/bin/csh脚本,/bin/perl脚本,/bin/awk脚本,/bin/sed脚本,甚至/bin/echo等等。 那我们真的能写一个/bin/echo的脚本文件吗?我们来试试,下面是一个例子:代码: #!/bin/echo –e 这只有一行的程序(实际上它也只能是一行,echo程序并不是被设计成像awk那样的编程语言,能写成源程序文件)命名为myecho,加上权限后执行它: 代码: $ ./myecho "hi\a" ./myecho hi 如果你的echo支持-e选项并且你工作的环境还算安静,你在得到上面的结果的时候也应该听到清脆的终端响铃。但这种程序是毫无作用的。 1、linux分区 --在linux里面所有的设备、任何东西,在linux看来都是文件。 --文件在它看来,有两种形式: 第一种是字符型(键盘输入、打印机); 第二种是二进制型(硬盘、光驱、U盘) --linux中所有硬件

兄弟连linux学习笔记

4.1.1 文件处理命令 命令格式 命令+选项+参数 ls -la /etc 命令ls 显示目录文件 语法:-a 显示所有文件-l详细信息显示-d查看目录属性 -rw-r--r-- - 文件类型(-文件d目录l软链接文件) rw -r-- r-- u g o u所有者g所属组o其他人 r读w写x执行 4.1.2 目录处理命令 mkdir创建新目录 语法:mkdir -p(目录名)递归创建

cd 切换目录 语法:cd (目录) pwd 显示当前目录 语法pwd 4.1.2.4 rmdir 删除空目录 语法:rmdir (目录) cp 复制文件或者目录 语法:cp -rp (源文件或目录)(目标目录)-r 复制目录 -p保留文件属性 mv 剪切文件、改名

语法:mv (原文件或目录)(目标目录) rm 删除文件 语法:rm -rf (文件或目录) -r 删除目录 -f 强制执行 4.1.3 文件处理命令 touch 创建空文件 语法:touch (文件名) cat 显示文件内容 语法:cat(文件名) -n 显示行号 tac 显示文件内容(反向)

语法:tac(文件名) more 分页显示文件内容 语法:more(文件名) (空格)翻页 (Enter)换行 q 退出 less 分页显示文件内容(可向上翻页)语法:less (文件名) head 显示文件前面几行 语法head (文件名) -n 指定行数 tail 显示文件后几行 语法tail (文件名) -n 指定行数 -f 动态显示文件末尾内容

4.1.4链接命令 ln 生成链接文件 语法:ln -s (源文件)(目标文件) -s创建软连接 软链接特征:类似Windows快捷方式 lrwxrwxrwx l 软链接 软链接文件权限都为rwxrwxrwx 文件大小- 只是符号链接 /tmp/issue.soft -> /etc/issue 箭头指向原文件 4.2.1权限管理命令 chmod 改变文件或目录权限 语法:chmod [{ugoa}{+-=}{rwx}] (文件或目录)[mode=421 ](文件或目录) -R 递归修改 权限的数字表示 r ---- 4 w ---- 2

Linux心得体会

《Linux操作系统》学习心得体会# @ 姓名:杜昕 学号:89 班级:计科普1004班

一、摘要 Linux操作系统这个名词记得在很早以前就听过,但当时并不知道具体是什么样的操作系统,只知道是一个与嵌入式密切相关的操作系统。因为我是学习嵌入式方向的,这学期就选修了这门专业任选课。为了更好的学习这门课程,我不仅课上认真听讲,课下也努力学习,为此还在自己的电脑上安装了Ubuntu系统。眼看这个学期的Linux课程已经告一段落了,我觉得有必要写一遍心得体会来总结一下这学期对着门课程的学习。 关键词:Linux、嵌入式、心得 【 《 ( 《

》 二、Linux简介 Linux是一种广泛使用的类UNIX操作系统,它不仅可以在Intel,AMD等系列个人计算机上运行,也可以运行在许多工作站上。它是真正多用户、多任务操作系统,他继承了UNIX系统的主要特征,具有强大的信息处理功能,特别在Internet和Intranet应用中占有明显优势。 1991年,芬兰赫尔辛基大学的学生Linux Torvalds在Inter386个人计算机上开发了Linux核心,并利用互联网发布了源代码,从而创建了Linux操作系统。之后,许多系统软件设计专家共同对它进行改进和提高。到现在为止,Linux 已成为具有全部UNIX特征、与POSIX兼容的操作系统。 ! Linux的功能强大而全面,与其他操作系统相比,具有一系列显著特点:(1)与UNIX系统兼容。 (2)自由软件和源码公开。 (3)性能高和安全性强。 (4)便于定制和再开发。 (5)互操作性高。 (6)全面的多任务和真正的32位操作系统。 ) 当今的Linux有两种版本:核心版本和发行版本。其中核心版本主要是Linux 的内核。其官方版本由Linux Torvalds本人维护着。发行版本是各个公司推出的版本,他们与核心版本是各自独立发展的。常见的发行版本有以下7种:(1)Red Hat Linux/ Fedora Core (2)Debian (3)Ubuntu

linux 红帽7学习笔记rh134

Redhat Enterprise Linux 7 RH134 Document 齐凯斌编著 北京没有出版社出版

目录 RH134-UNIT1 kickstart批量部署系统-------------------------------------------3 RH134-UNIT2 grep配合正则表达式----------------------------5 RH134-UNIT3计划任务---------------------------------------------------------------6 RH134-UNIT4进程优先级管理-----------------------------------------------------6 RH134-UNIT5 ugo权限补充----------------------------------------------------------8 RH134-UNIT6 SElinux ------------------------------------------------------------------9 RH134-UNIT7 ldap、自动挂载------------------------------------------------------10 RH134-UNIT8磁盘分区--------------------------------------------------------------12 RH134-UNIT9 LVM管理、RAID管理----------------------------------------------13

Linux学习笔记(CentOS)

Linux学习笔记 1 Linux 入门教程 Linux,在今天的广大电脑爱好者心中已经不再是那个遥不可及的新东西了,如果说几年前的 Linux 是星星之火的话,如今 Linux 不仅在服务器领域的应用取得较大进展,而且在桌面应用领域也有越来越多的人选择使用。Linux 的开放性和灵活性使它得以在实验室和其它研究机构中被用于创新性技术变革的前沿,现在 Linux 已经真正地向广大的电脑爱好者们敞开了大门。 只要你对 Linux 感兴趣,想要学习 Linux,那么本教程将带你走进 Linux 的世界。第一章初识 Linux 在学习使用之前我们还是先来了解一下 Linux 吧。 Linux 是什么?按照 Linux 开发者的说法,Linux 是一个遵循 POSIX(标准操作系统界面)标准的免费操作系统,具有BSD 和SYSV 的扩展特性(表明其在外表和性能上同常见的UNIX 非常相象,但是所有系统核心代码已经全部被重新编写了)。它的版权所有者是芬兰籍的 Linus B. Torvalds 先生。 1.熟练掌握基本命令。每个系统都有自己特定的语言环境,Linux 也不例外,只有熟悉并熟练掌握 Linux 的常用基础命令才可以深入学习。 2.系统管理及运用。系统的管理包括启动、用户、进程以及安全管理等等。大体上都是通过命令来进行配置文件及脚本文件的。 3.源码的学习和研究。由于内核的相似,Linux 同 UNIX 一样都是由 C 语言开发而成的,所以了解 UNIX 的朋友学习起来相对容易。 4.内核开发。现在的很多服务器系统,网络设备,安全防护软件以及手机系统和掌上PDA 的操作管理系统都是由Linux 编程开发而成的,所以内核的开发学习当然必不可少。 5.数据库及服务器领域。如今Linux 做的服务器在市场中占有率第一的位置无可动摇,其中包括:WWW 服务器,FTP 服务器,mail 服务器,数据库服务器等等多种服务器。 了解了学习的目的和方向后,下面以CentOS为例来介绍Linux使用,可以使用安装好的Linux虚拟机。 2 Linux 常用基本命令及常用技巧 新手刚刚接触Linux 的时候可能处处感到不便,不过没有关系,接触新的事物都有这样的一个过程,在你用过 Linux 一段时间后,你就会逐渐了解 Linux 其实和 Windows 一样容易掌握。 由于操作和使用环境的陌生,如果要完全熟悉Linux 的应用我们首先要解决的问题就

linux学习笔记分享

1 linux学习笔记分享 (Linux入门绝佳) 点击: 3,280回复: 9 linux目录架构 / 根目录 /bin 常用的命令 binary file 的目錄 /boot 存放系统启动时必须读取的档案,包括核心 (kernel) 在内 /boot/grub/menu.lst GRUB设置 /boot/vmlinuz 内核 /boot/initrd 核心解壓縮所需 RAM Disk /dev 系统周边设备 /etc 系统相关设定文件 /etc/DIR_COLORS 设定颜色 /etc/HOSTNAME 设定用户的节点名 /etc/NETWORKING 只有YES标明网络存在 /etc/host.conf 文件说明用户的系统如何查询节点名 /etc/hosts 设定用户自已的IP与名字的对应表 /etc/hosts.allow 设置允许使用inetd的机器使用 /etc/hosts.deny 设置不允许使用inetd的机器使用 /etc/hosts.equiv 设置远端机不用密码 /etc/inetd.conf 设定系统网络守护进程inetd的配置 /etc/gateways 设定路由器 /etc/protocols 设定系统支持的协议 /etc/named.boot 设定本机为名字服务器的配置文件 /etc/sysconfig/network-scripts/ifcfg-eth0 设置IP /etc/resolv.conf 设置DNS /etc/X11 X Window的配置文件,xorg.conf 或 XF86Config 這兩個 X Server 的設定檔 /etc/fstab 记录开机要mount的文件系统 /etc/inittab 设定系统启动时init进程将把系统设置成什么样的runlevel /etc/issue 记录用户登录前显示的信息 /etc/group 设定用户的组名与相关信息 /etc/passwd 帐号信息 /etc/shadow 密码信息 /etc/sudoers 可以sudo命令的配置文件 /etc/securetty 设定哪些终端可以让root登录 /etc/login.defs 所有用户登录时的缺省配置 /etc/exports 设定NFS系统用的 /etc/init.d/ 所有服務的預設啟動 script 都是放在這裡的,例如要啟動或者關閉 /etc/xinetd.d/ 這就是所謂的 super daemon 管理的各項服務的設定檔目錄

《鸟哥的linux私房菜(基础篇)》学习笔记

《鸟哥的linux私房菜(基础篇)》学习笔记----------李晶 目录 第一部分:linux的规划与安装 (2) 1.linux历史与简介: (2) 2.分区: (2) 3.多重引导: (2) 第二部分:linux文件,目录与文件系统格式 (3) 1.管理文件权限: (3) 2.管理文件以及目录: (4) 3.管理磁盘与文件系统: (4) 4.文件的打包压缩: (5) 第三部分:shell (5) 1.vim: (5) 2.shell: (5) 3.正则表达式: (6) 4.shell编程: (7) 第四部分:用户管理 (9) 1.用户账号及权限: (9) 2.磁盘管理: (9) 3.crontab: (9) 4.作业管理: (10) 第五部分:系统管理员 (11) 1.系统服务: (11) 2.软件安装: (12) 3.x-window: (12) 4.内核编译: (12)

第一部分:linux的规划与安装 这里个人相对来说比较熟悉,对于如何安装linux书上有详细介绍。不过我一般用的都是ubuntu,这个发行版的安装并不是很复杂。 1.linux历史与简介: 计算机是由一堆硬件所组成的,操作系统是为了更加有效地控制和使用这些硬件资源。我们最熟悉的windows就是一种操作系统。但是linux是完全不同于windows的一种操作系统。众所皀知癿,Linux癿核心是由Linus Torvalds在1991年癿时候给他开发出来的。linux沿袭了unix 的许多良好的特性,最重要的也是现今非常受欢迎的原因之一就是linux是开源的,并且在其之上的软件也是免费开源的,以此为基本最后发展出来了开源社区,对整个计算机科学的发展都有很重要的作用。 linux目前有着众多的发行版,Red Hat, SuSE,Ubuntu, Fedora, Debian。我个人使用的是ubuntu-10.10。 linux的发展路径: Unix癿前身是由贝尔实验室(Bell lab.)癿Ken Thompson利用汇编语言写成的,后来在1971-1973年间由Dennis Ritchie以C语言重新改写,才称为Unix。 1977年由Bill Joy开发出BSD (Berkeley Software Distribution),这些称为Unix-like的操作系统。 1984年由Andrew Tannenbaum制作出Minix操作系统,该系统可以提供原始码以及软件; 1984年由Richard Stallman提倡GNU计划,倡导自由软件(Free software),强调其软件可以自由获得,修改,再发行。 1991年由芬兰大学生Linus Torvalds开发出Linux操作系统。Linux成功主要在于:Minix(Unix), GNU, Internet, POSIX 及虚拟团队的产生。 Linux本身就是个操作系统,其开发网站在https://www.wendangku.net/doc/ab1528160.html,,我们亦称Linux操作系统最核心的数据为内核Kernel。 目前Linux核心的发展分为两种版本,分别是稳定版本偶数版,如2.6.X,适合商业和家用环境使用;一种是发展中版本如2.5.X 版,适合开发特殊功能的环境。 Linux distributions的组成有:『Linux Kernel + Free Software + Documentations(Tools) + 可完全安装的程序』所制成癿一套完整的系统。 2.分区: 目前各种机器安装linux都比较方便了,特别是像我使用ubuntu10.10,基本上全是自动安装的,不过经常困惑我们的一般都是分区。如何分区才合理呢,对于初学者,分区可以直接只分一个根分区和交换(SWAP)分区。这里值得说一下的是磁盘只能分四个主分区。不过可以通过扩展分区来扩充,这样的话就是三个主分区和多个逻辑分区。SWAP分区的大小一般建议2倍于你的物理内存。将/home等数据量会较大的目录单独分区是一个非常不错的做法,具体分配多少容量,看你最终的数据量,估算后尽量多分。 3.多重引导: 目前我们使用学习linux的最大的苦恼就是关于如何与windows共存的问题了。书中详细介绍了如何安装centOS,附带很多截图,并且也描述了在已经装了windows的情况下如何设置多重引导。这个我也有过很多关于引导的经历。现在绝大多数的引导程序都会选择使用GRUB,这是一个交互式的引导程序。当我们的引导程序如果出现故障,或者是重装了windows的时候,我们将无法正常进入linux,如果使用的系统是ubuntu这个时候可以使用如下方法:

Linux学习笔记

SHELL部分 1.Root用户, a)su然后键入密码 su用于让用户在登录期间变成另外一个用户。后边不带username 使用时,su默 认会变成超级用户。 b)sudo-s 然后键入密码 c)从root用户退回普通用户:exit 2.不同的cd a)cd .. 返回上一级目录 b)cd / 进入根目录 c)cd 或cd ~进入当前用户的主目录,即/home/hy d)当前目录cd . 3.命令行里的通配符 a)* 匹配任意长度的字符串,比如想显示当前目录下的所有的c++文件名,可以使 用如下命令 ls *cpp b)? 匹配单个字符。 显示当前目录下以text开头,后跟一个字符的文件 ls text? c)[] 匹配所有出现在[]内的字符 显示当前目录下以text开头,而仅以1或者A结束的文件名 ls text[1A] d)–指定字符集范围 显示当前目录下,以text开头,后接一个大写字母的文件名 ls text[A-Z] 4.ls命令 ls命令是list的简写,作用是列出目录下的文件名 -a, 列出所有文件,包括那些以”.”开头的隐藏文件

-l,用于查看文件的各种属性,包括所有者、大小、修改时间等 可以同时使用多个选项,比如: ls–al 5.查看文本文件内容,cat 或者more或者less cat 一次性显示所有文件内容 more 一次显示一页。对于大文件more比cat更好用 more file_name cat -n file_name可以显示行号 less的功能更加强大,可以支持空格翻页、B返回,输入“/”加关键词搜索 6.grep,搜索文件内容 grep [OPTIONS] PATTERN [FILE……] 搜索关键词PATTERN(可以是正则表达式)在[FILE……]列出的文件里出现的行数,可以是多个文件。 如果是-r选项,则搜索文件夹及其子文件夹,否则是搜索文件。 在-r选项下,如果不给出文件列表则表示搜索当前路径,否则搜索指定路径; 在非-r选项下,如果不给出文件列表,则表示搜索默认输入。 所以-r选项下要给路径名,非-r选项下要给文件名。 例如: grep -r O_RDONLY /usr/include 表示搜索/usr/include目录及其子目录下,所有包含有O_RDONLY的文件,查找的结果如下: 如果要查找的关键字本身是带空格的,好比“a b”,则必须用单引号扩起它们。 grep -r ‘a b’ 7.find,查找满足指定要求的文件或目录。 find [OPTION] [path] [express] 与grep的格式不同,grep是先说搜什么,再说在哪搜

LINUX学习笔记

LINUX学习笔记 一、linux目录结构 / 根目录,最高级别 /bin 系统基本命令存放目录(/usr/bin) /boot linux的内核及引导系统程序文件存放目录(如:vmlinuz、initrd.img) 一般情况下,GRUB或LILO系统引导管理也位于这个目录 /dev 设备文件存储目录,如声卡、光驱... /ect 存放系统设置文件(如用户账号密码、服务器配置文件等) /home 普通用户家目录,默认存放目录 /lib 库文件存放目录 /lost+found 在ext2或ext3文件系统中,当系统以外崩溃或机器意外关机,而产生一些文件碎片放在这里。 /media 即插即用型存储设备的挂载点自动在这个目录下创建。 如USB盘系统自动挂在后,会在这个目录下产生一个目录; 类似cdrom的目录 /mnt 存放挂载存储设备的挂载目录,如cdrom等目录 /opt 表示可选的意思,有些软件包也会被安装在此,也就是自定义软件包,

比如OpenOffice,或者一些我们自己编译的软件包,也可安装此处。 /proc 操作系统运行时,进程(正在运行的程序)信息及内核信息(比如CPU、硬盘分区、内存信息等)存放在此。 /proc目录是伪装的文件系统proc的挂载目录,proc并不是真正的文件系统 /root linux超级权限用户root的家目录 /sbin 大多是涉及系统管理的命令的存放,只有超级权限用户root才可执行命令存放,普通用户无权限执行此目录下的命令与/usr/sbin; /usr/X11R6/sbin; usr/local/sbin 目录相似(sbin,只有root权限才能执行) /tmp 临时文件目录,有时用户运行程序的时候,会产生临时文件。(/var/tmp目录和此目录相似) /usr 系统存放程序的目录,如命令、帮助文件等。这个目录下有很多的文件和目录。 大部分Linux发行版提供的软件包都安装在此,涉及服务器的配置文件就安装在/ect中。 /usr/share/fonts 字体目录 /usr/share/man 或/usr/share/doc 帮助目录 /usr/bin 或/usr/local/bin 或/usr/X11R6/bin 普通用户可执行文件目录 /usr/sbin 或/usr/local/sbin 或/usr/X11R6/sbin 超级权限用户root可执行命令存放目录 /usr/include 程序头文件存放目录

linux学习笔记-AREA

AREA AREA 段名属性,…… 说明:AREA用于定义一个代码段、数据段或者特定属性的段。如 果段名以数字开头,那么该段名需用“|”字符括起来,如|7wolf|, 用C的编译器产生的代码一般也用“|”括起来。属性部分表示该代码 段/数据段的相关属性,多个属性可以用逗号“,”分隔。 常见属性如下: ? DATA:定义数据段,默认为READWRITE。 ? CODE:定义代码段,默认为READONLY。 ? ? READONLY:表示本段为只读。 ? READWRITE:表示本段可读写。 ? ALIGN=表达式:对齐方式为2表达式次方,例如:表达式=3,则对 齐方式为8字节对齐。表达式的取值范围为0-31。 ?

ARM汇编器所支持的伪指令 一个汇编语言程序至少要包含一个段,当程序太长时 ,也可以将程序分为多个代码段和数据段。 使用示例: AREA Init, CODE,READONLY 该伪指令定义一个代码段,段名为Init,属性为只读。 3-4-3 ARM汇编器所支持的伪指令 4. CODE16/CODE32 CODE16/CODE32 说明:CODE16伪操作指示编译器后面的代码为16位的Thumb指令 。CODE32伪操作指示编译器后面的代码为32位的ARM指令。 在使用ARM指令和Thumb指令混合编程的代码里,可用这两条 伪指令进行切换,但注意它们只通知编译器其后指令的类型,并 不能对处理器进行状态的切换(涉及ARM状态的切换需使用BX指令 。) 3-4-3 ARM汇编器所支持的伪指令 5. ENTRY ENTRY 说明:ENTRY用于指定汇编程序的入口。在一个完整的汇编程序 中至少要有一个ENTRY,程序中也可以有多个,此时,程序的真正 入口点可在链接时指定,但在一个源文件里最多只能有一个ENTRY 或者没有ENTRY。 使用示例:

相关文档