Linux学习笔记3

Linux学习笔记3
Linux学习笔记3

Linux学习笔记3--理解Linux文件权限

2013-10-14 17:05:24| 分类:Linux|举报|字号订阅

每个登陆Linux系统的用户都有一个唯一的用户账户。用户的权限也取决于这个账户。用户权限是通过UID来追踪的。

1、/etc/passwd文件:将用户名匹配到UID值。root账户是Linux系统的管理员,通常它的UID是0.Linux会为各种各样的功能创建不同的用户账户,但这些账户不是真的用户。这些账户称为系统账户,是系统上运行的各种服务进程访问资源用的特殊账户。所有运行在后台的服务都需要用一个系统用户账户登陆到Linux系统上。

Linux为系统账户预留了500以下的UID值。有些服务甚至需要用特定的UID才能正常工作。为普通用户创建账户时,大多数Linux系统会将500起始的第一个可用UID分配给这个账户。/etc/passwd提供了如下字段:

登陆用户名、用户密码、UID、GID(组ID)、用户账户的文本描述、HOME目录的位置、默认的shell

用户密码都是*,这是为了安全,因为很多程序都需要访问/etc/passwd,如果他们拿到加密后的密码,也许会被破解。所以,现在Linux将用户密码保存在另一个单独的文件(/etc/shadow)。

虽然/etc/passwd是文本文件,但是不建议手动修改该文件,以免造成系统无法登陆。

2、/etc/shadow文件:只有root用户才能访问该文件。该文件有9个字段:

登录名;加密密码;自1970年1月1日(上次修改密码的日期)到当天的天数;多少天后才能更改密码;多少天后必须更改密码;密码过期提前多少天提醒用户更改密码;密码过期后多少天禁用用户账户;用户账户被禁用的日期(用自1970年1月1日到当天的天数表示);预留字段

3、添加新用户:useradd。该命令使用系统的默认值以及命令行参数来设置用户账户。可以用useradd -D参数来查看你的Linux系统的系统默认值。例如:

GROUP=100 (新用户默认添加到GID=100的公共组)HOME=/home (新用户的默认目录为/home/loginname) INACTIVE=-1 (新用户在密码过期后不会被禁用)EXPIRE= (新用户未被设置过期日期)

SHELL=/bin/bash (新用户的默认shell为bash)

SKEL=/etc/skel(系统会将/etc/skel目录下的内容复制到用户的HOME目录下)

CREATE_MAIL_SPOOL=yes(系统会为该用户在mail目录下创建一个用于接收邮件的文件)

SKEL=/etc/skel(系统会将/etc/skel目录下的内容复制到用户的HOME目录下)这个很有意思,useradd命令允许管

理员创建一份默认的HOME目录配置,然后把它作为出新用户HOME目录的模版。在Ubuntu Linux系统上,

/etc/skel目录下有下列文件:

.bash_logout .bashrc examples.desktop .profile

你可以用默认参数创建一个新账户来测试一下,useradd -m test (默认useradd命令不会创建HOME目录,但是-m参数会叫他创建HOME目录,你可以看到useradd创建了新的HOME目录,并将/etc/skel目录中的文件复制了过来)

要想创建用户时改变默认值或默认行为,可以使用命令行参数。如下所示:

-c comment:给新用户添加备注

-d home_dir:为主目录指定一个名字(默认为$HOME/登录名)

-e expire_date:用YYYY-MM-DD格式指定一个过期日期-f inactive_days:指定过期后多少天被禁用,0表示一过期就禁用,-1表示永远不禁用

-g initial_group:指定所属GID或组名

-G group ...:指定用户除登陆组之外所属的一个或多个附加组

-k :必须和-m一起使用,将/etc/skel目录的内容复制到用户的HOME目录

-m:创建用户的HOME目录

-M:不创建用户的HOME目录(当默认设置里指定创建

时,才用到)

-n:创建一个和用户登录名同名的新组

-r:创建系统账户

-p passwd:指定密码

-s shell:指定默认shell

-u uid:指定UID

-D :查看默认参数,若后面跟其他参数则表示要修改默认参数。

-D -b default_home:更改默认的创建用户HOME目录的位置

-D -e expiration_date:更改默认的新用户的过期日期

-D -f inactive:更改默认的过期后多少天被禁用

-g group:更改默认的组名称或GID

-s shell:更改默认的shell

例如:useradd -D -s /bin/tsch

4、删除用户:userdel命令。默认情况下,userdel命令只会删除/etc/passwd文件中的用户信息,而不会删除系统中属于该账户的任何文件。userdel -r参数会删除用户的HOME目录以及mail目录。然而,系统上仍可能存有归已删除用户所有的其他文件。这在有些环境中会造成问题。使用-r参数时一定要特别小心。确认HOME目录中没有其他用户或其他程序要使用的重要文件。

5、修改用户:

(1)usermod:最强大的一个。他能用来修改

/etc/passwd文件中的大部分字段,其参数跟useradd的参数大部分都一样,但还有一些实用的额外参数:(a)-l:用来修改登录名

(b)-L:锁定用户。用户将无法登陆

(c)-p:修改密码。

(d)-U:解除锁定。

(2)passwd和chpasswd:passwd 用户名:修改用户的密码。passwd:修改自己的密码。

passwd -e参数能强制用户下次登陆时修改密码。你可以先给用户设置一个简单的密码,然后强制其登陆时修改。

如果要修改大量用户的密码,chpasswd目录会简化事情,chpasswd能从标准输入自动读取用户名和密码对(使用:分割)列表,给密码加密,然后为用户账户设置。例如使用重定向:

chpasswd < users.txt

(3)chsh、chfn和chage:chsh用于快速修改用户的默认登陆shell。使用时必须用shell的全路径作为参数。例如:

chsh -s /bin/csh test :为用户test修改默认shell。 chfn命令提供了在/etc/passwd文件的备注字段中存储信息的标准方法。cfn命令会将Unix的finger命令用到

的信息存进备注字段,而不是简单地存入一些随机文本(比如昵称之类的),或是将备注字段留空。finger命令可以用来简单地查看Linux系统上的用户信息:例如finger rich(出于安全性的考虑,很多Linux管理员会在系统上禁用finger命令)。如果使用chfn命令时不加参数,他会向你询问要存进备注字段的恰当值:例如chfn test,按要求输入后,finger test,grep test /etc/passwd

chage命令用来帮助管理用户帐号的有效期。他有一些参数可以用来设置每个值。例如:

chage -d:设置上次修改密码到现在的天数。 -E : 设置密码过期的天数 -I:设置密码过期后多少天锁定用户 -m:设置修改密码间隔最少多少天 -W:设置密码过期前多少天开始提醒用户修改密码

chage命令的日期值可以使用2种格式:YYYY-MM-DD 格式的日期;或自1970年1月1日起到该日期天数的数值。

chage命令中有一个好用的功能是设置帐号的过期日期。通过它,你就能创建临时用户了。设定的日期一过,临时账户就会自动过期,而不需要记住在那天去删除这些账户。

6、使用Linux组:组有唯一的组名和GID。

7、/etc/group文件:该文件包含组名、组密码、GID、属于该组的用户列表

组密码允许非组内成员通过它临时性地成为该组成员。

不要直接修改该文件来添加用户到一个组,而要用usermod命令。

说明:该文件的最后一列有些误导人。你会发现有些组并没有列出用户。这并不是说这些组没有成员。当一个用户在/etc/passwd中指定某个组作为默认组时,用户账户不会作为该组成员再出现在/etc/group中!!

8、创建新组:groupadd,例如groupadd shared,tail /etc/group

该命令没有提供将用户添加到组的选项。你应该用usermod命令来添加用户到该组。

usermod -G shared rich; usermod -G shared test; tail /etc/group

说明:如果更改了已登录用户所属的用户组,该用户必须登出后再登陆,才会生效。

警告:千万注意使用-G和-g的区别,-g是修改默认组。

9、修改组:groupmod可以更改GID(-g 参数)或组名(-n参数)。例如:

groupmod -n sharing shared; tail /etc/group

由于权限都是基于GID的,所以随意改组名

10、理解文件权限

ls -l输出的第一列的第一个字符代表对象的类型:-表示文件 d表示目录 l表示链接 c表示字符型设备、b表示块设备、n表示网络设备,之后的3组3字符的码为访问权限。rwx,3组分别为UID、GID、OTHER

11、默认文件权限:umask,umask命令输出4位数。例如0022,第一位为粘着位(sticky bit)。后3位表示文件或目录的umask的八进制值。要立即诶umask是如何工作的,先得理解八进制模式的安全性设置。

八进制模式的安全性设置先获取这3组权限的值,然后将其转换为3位二进制值表示这个八进制值。例如

rwx=111=7,r--=100=4 。

umask值是从全权限值中要减去的值,对文件来说,全权限是666,目录是777。所以如果umask=0022的话touch file1;全权限666-022=644

ls -l file1;会看到 rw-r--r--

umask 026

touch file2;全权限666-026=640

ls -l file2;会看到rw-r-----

12、改变权限:chmod options mode file,mode可以是8进制模式或符号模式

例如 chmod 760 newfile

符号模式比较麻烦:ugoa分别代表uid、gid、other、

all; +-=分别表示增加、减去、设置; rwxXstugo介绍:X表示如果对象是命令或它已有执行权限,则赋予执行权限,s表示运行时重新设置UID或GID,t表示保留文件或目录,ugo分别表示将权限设置为UID、GID、OTHER一样。例如:

chmod o+r newfile 为other用户增加读权限

chmod u-x newfile 为uid用户减去执行权限

chmod -R参数:可以让权限的改变递归地作用到文件和子目录。可以使用通配符一次作用多个文件。

例子:

$ chmod u=rwx,g=rx,o=x file 上例的另一种形式$ chmod =r file 为所有用户分配读权限

$ chmod 444 file 同上例

$ chmod a-wx,a+r file 同上例

$ chmod -R u+r directory 递归地给directory目录下所有文件和子目录的属主分配读的权限

$ chmod 4755

13、改变所属关系:chown更改属主 chgrp更改默认属组chown options owner[.group] file

例如chown dan newfile //将newfile的属主更改为dan chown dan.shared newfile //将newfile的属主和属组同时更改为dan和shared

chown .rich newfile //只更改属组

chown test. newfile //如果用户名和组名相同,则同时修改属主和属组为test

chown -R参数加通配符可以递归地改变子目录和文件的所属关系。

chown -h参数可以改变该文件的所有符号链接文件的所属关系。

chgrp命令用于更改文件或目录的默认属组:例如chgrp shared newfile //更改newfile的属组为shared

14、共享文件:创建组是Linux系统上共享文件访问权限的方法。如果要在大的环境中创建文档并共享,这会很繁琐。所以Linux为每个文件和目录存储了3个额外的信息位:

(1)设置用户ID(SUID):当文件被用户使用时,程序会以文件属主的权限运行。(

由于SUID是在执行程序(程序的可执行位被设置)时起作用,而可执行位只对普通文件和目录文件有意义,所以设置其他种类文件的SUID位是没有多大意义的。

我们知道内核主要是根据euid来确定进程对资源的访问权限。一个进程如果没有SUID位,则euid=uid分别是运行这个程序的用户的uid。例如kevin用户的uid为204,foo用户的uid 200,kevin运行foo用户的my.exe(假定kevin也有x权限)程序形成的进程的euid=uid=204

内核根据这些值来判断进程对资源访问的限制,其实就是kevin用户对资源访问的权限,和foo没关系。

如果一个程序设置了SUID,则euid变成被运行的程序的所有者的uid,例如kevin用户运行myfile,

euid=200,uid=204,则这个进程具有它的属主foo的资源访问权限。

SUID的作用就是这样:让本来没有相应权限的用户运行这个程序时,可以访问他没有权限访问的资源,获得程序属主的资源访问权限。)

SUID虽然很好了解决了一些问题,但是同时也会带来一些安全隐患。

因为设置了 SUID 位的程序如果被攻击(通过缓冲区溢出等方面),那么hacker就可以拿到root权限。

因此在安全方面特别要注意那些设置了SUID的程序。

通过以下的命令可以找到系统上所有的设置了suid的文件:

[root@sgrid5 /]# find / -perm -04000 -type f -ls

对于这里为什么是4000,大家可以看一下前面的st_mode的各bit的意义就明白了。

在这些设置了suid的程序里,如果用不上的,就最好取消该程序的suid位。

(2)设置组ID(SGID):对文件来说,程序会以文件属组的权限运行;对目录来说,目录中创建的新文件会以目

录的默认属组作为默认属组。

(3)粘着位:进程结束后文件还会在内存中。(在一个目录上设了sticky位后,(如/home,权限为1777)所有的用户都可以在这个目录下创建文件,但只能删除自己创建的文件(root除外),这就对所有用户能写的目录下的用户文件启到了保护的作用。)

SGID位对文件共享非常重要。使能了SGID位,你能让在一个共享目录下创建的新文件都属于该目录的属组,也就是每个用户的组。

SGID可通过chmod命令设置。他会加到标准3位8进制值之前(组成4位八进制值),或者在符号模式下用符号s。

例如111=SUID置位、SGID置位、粘着位置位,000=都不置位。

因此要创建一个共享目录,你只需将该目录的SGID位置位:

mkdir testdir

ls -l //输出testdir的权限为rwxrwxr-x

chgrp shared testdir

chmod g+s testdir

ls -l //输出testdir的权限为rwxrwsr-x

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 课程笔记1(吐血整理)

Linux视频教程(韩顺平)听课笔记1 (RedHat) 1、老师联系方式:hanshunping@https://www.360docs.net/doc/ea5211322.html, 2、linux for工作 (1)linux系统管理员——linux系统的维护、配置等 (2)linux程序员——需c/c++、java,php、jsp等 ①linux软件工程师(pc) ②linux嵌入式开发(单片机、芯片) 3、学习linux的步骤 (1)第一阶段:linux平台上的开发,包括vi,gcc,gdb,make,jdk,tomcat,mysql...和linux基本操作 (2)第二阶段:加厚c语言功底《c专家编程》或是java语言 (3)第三阶段:学习unix环境高级编程《unix环境高级编程》 (4)第四阶段:linux应用系统开发/linux嵌入式开发 4、计算机学习的正确道路 5、推荐书籍 -《鸟哥的Linux的私房菜基础学习篇》鸟哥、许伟、林彩娥等编著 -《Linux编程从入门到精通》宫虎波编著 -《Linux内核完全剖析》赵炯编著 6、关机命令 shutdown -h now立即进行关机 shutdown -r now现在重新启动计算机 -t sec : -t后面加秒数,即”过几秒后关机” -k: 不是要真的关机,只是发送警告信息

-r: 在将系统的服务停掉之后就重新启动 -h: 将系统服务停掉后,立即关机 -n: 不经过init程序,直接以shutdown关机 -f: 关机并启动之后,强制略过fsck的磁盘检查 -F: 系统重新启动之后,强制进行fsck的磁盘检查 -c: 取消已经在进行的shutdown命令内容 reboot 现在重新启动计算机 7、用户登录 登录时尽量少用root账户登录,因为它是系统管理员,最大的权限,难免操作失误。可以利用普通用户登录,登录后再用“su -”命令来切换成系统管理员身份。 8、进入桌面(命令行界面进入图形界面) startx 9、用户注销 在提示符下输入logout即可。 10、vi进行开发java和c/c++程序 -java程序 -vi Hello.java -输入i,进入到插入模式,写好代码 -输入Esc键,进入命令模式 -输入冒号:[wq 表示退出保存,q!表示退出不保存] -编译javac Hello.java -运行java Hello -c程序 -gcc o自定义文件名Hello.cpp[参数o表示可自定义生成的out文件名,否则默认为a. out]

Linux操作系统学习心得

Linux操作系统学习心得 这学期有幸学习了《嵌入式系统设计》这门课,在胡佳文老师的教导下深入了解了有关于嵌入式系统,ARM9,Linux系统等很多方面的知识,获益良多,在学习过程中自己也遇到了很多问题,同时受到了很大的启发,现在就本学期的学习谈谈自己的学习心得体会。 Linux操作系统这个名词记得在很早以前就听过,知道这是一个开放性很大的系统,源代码是直接公布在互联网上,很多计算机高手可以根据自己的需求来修改这个程序,同时它比较不易死机,在自己的印象中一直是一种高大上的系统,但是更深入的了解确是零,对于这个学期选这门公共选修课,很大一部分原因是怀着一颗要了解一种早就想知道的东西的心选的.当然我平时也喜欢玩点电脑什么的,只是停留在用别人设计好的现成的东西。 经过一个学期linux操作系统的学习,在老师在课堂对linux系统的介绍及通过网络的了解下,知道了linux原来是一种和windows差不多的电脑操作系统,windows是图形界面的,linux类似以前的DOS,是文本界面的,如果你运行了图形界面程序X-WINDOWS后,linux也能显示图形界面,也有开始菜单、桌面、图标等。Windows有MS-DOS方式,在该方式下通过输入DOS命令来操作电脑;而linux与windows类似,也有命令方式,linux 启动后如果不执行X-WINDOWS,就会处于命令方式下,必须发命令才能操作电脑。另外linux上也有很多的应用软件,安装运行了这些软件后,你就可以在linux上编辑文档、图片,玩游戏、上网、播放多媒体文件等。 当然我们对linux的学习首先是通过对它的产生,发展,到今天仍然在不断完善开始的。它的产生和需要花钱买得windows系统形成了对比,因为 linux 的核心是免费的,自由使用的,核心源代码是开放的.任何人都可以根据自己的喜好来编辑创作适合自己的操作系统,linux是抢占式多任务多用户操作系统,Linux最大的优点在于其作为服务器的强大功能,同时支持多种应用程序及开发工具,所以linux操作系统有着广泛的应用空间。 而且在课上随着老师的讲解和自己动手查资料,慢慢的学习到了更深入的知识,知道了linux的安装:硬盘安装及光盘安装,清楚了解安装Linux应注意的有关问题。学习了linux系统的进入,关闭和重启。掌握了linux系统的硬件配置,如显卡,声卡,网卡等,并且通过对linux系统基本命令的学习,尤其是shell命令语言(亦称命令解释器),熟悉了系统的基本操作。当然在学习中发现英文学得好也是学好linux的关键。同时还了解了linux对应下的一些常用软件及这些软件的安装。因为linux在服务器中广泛的应用,于是我们进一步学习了linux下接入internet的WEB服务器的安装与配置方法。之后还了解了linux的网络安全,系统的安全,用户的安全等。 眼看这个学期Linux的课程已经告一段落了,在这段时间的学习如果要问我在这门课中学到了什么,我觉得是一种为学的方法,使我受益非浅。 首先每学一部分内容前必定有很多疑问,想要独立解开疑问,从网络上找资

一篇非常好的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.360docs.net/doc/ea5211322.html,st 用于查看所有系统的登录记录。(日志文件形式保存在系统中,因此黑客很容易对其进行篡改,不要用该命令的输出信息判断系统有无被恶意入侵) 7.history 显示历史执行过的命令(1000条)如果不够,可自定义/etc/profile文件中的HISTSIZE变量值。使用-c参数会清除所有命令历史记录。还可以使用“!编码数字”的方式重复执行某一次命令。

Linux读书笔记

Linux读书笔记 Linux读书笔记 /.bashrc 就可以看到文件的内容 二进制文件: linux中的可执行文件就是这种格式的,命令cat就是一个二进制文件 数据格式文件: 这些程序在运行过程中,会读取某些特格式的文件,那些特定格式的文件可以称数据文件。如linux在用户登录时,都会将登录数据记录在/var/log/wtmp文件内,该文件是一个数据文件,它能通过 last 命令读出来。但使用cat 时,会读出乱码,因为它属于一种特殊格式的文件。 2.目录: 就是目录,第一个属性为,例如。 3.连接文件: 类似windows下面的快捷方式。第一个属性为,例如 4.设备与设备文件: 与系统外设及存储相关的一些文件,通常都集中在/dev目录下。该文件又分为两种: 块设备文件: 就是存储数据以供系统访问的接口设备,简单而言就是硬盘。例如一号硬盘的代码是/dev/hdal等文件,第一个属性为。 字符设备文件:

即串行端口的接口设备,例如键盘、鼠标等。第一个属性为。 5.套接字: 这类文件通常用在网络数据连接。第一个属性为 6.管道: FIFO也是一种特殊的文件类型,其主要目的是,解决多个程序同时访问一个文件所造成的错误,第一个属性为。 二、文件扩展名 *.sh:批处理文件,因为批处理文件使用shell写成,所以扩展名就是.sh。 *.z *.tar *.tar.gz *.zip *.tgz : 经过打包的压缩文件。 *.html *.php: 网页相关文件,分别表示HTML语法与PHP语法的网页文件。 三、如果当前在\home目录下,如果想进入/var/log目录时,怎么写呢? 1.cd /var/log 一定由根目录/写起 2.cd ../var/log回为在\home中,要回到上一层之后,才能继续向/var移动,不是由/写起,例如由/usr/share/doc到 /usr/share/man,可以写成 cd ../man ,相对路径是指相对于当前工作目录的路径。 四、常用的命令 ls:例文件 mv rm 删除文件

Linux 操作系统shell学习笔记 (linux系统)

Linux 操作系统shell学习笔记(linux系统) linux软件开发 No.001 文件安全与权限 1. umask 决定了新建文件的权限 2. 软链接(符号链接) ln -s source_path target_path No.002 find和xargs 1. find pathname -options [-print -exec -ok] 其中exec参数的命令格式:'command-' {} \; 注意必须包含【{} \;】 -perm 按权限来查找ex. find . -perm 755 -print -mtime 按修改时间来查找ex. find / -mtime -5 -print 更改时间5天以内 find / -mtime +5 -print 更改时间5天以前 2. xargs与-exec和-ok类似,但是限制更少,也更快 3种参数的命令:find . -name "*.c" -exec wc -l {} \; find . -name "*.c" -ok wc -l {} \; 每次执行命令前有提示 find . -name "*.c" | xargs wc -l No.003 后台执行命令 1. [crontab] [at] [&] [nohup]四种

No.004 文件名置换 1. 列出隐藏文件ex. ls .* No.005 shell输入与输出 1. echo输出时加上-n 参数不换行,ex. echo -n "aaaa" 2. tee 命令可以同时输出到屏幕和文件中ex. ls | tee file.out 3. 标准输入0 标准输出1 标准错误2 4. 将标准输出和标准错误输入到一个文件ex. command >file.out 2>&1 No.006 命令执行顺序 1. 命令1 && 命令2 命令1执行成功后才会执行命令2 2. 命令1 || 命令2 命令1执行失败后才会执行命令2 No.007 正则表达式 1. 正则表达式元字符及含义 ^ 只匹配行首 $ 只匹配行尾

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学习笔记之第二章文本编辑器

修改主机名: 修改静态ip: vi /etc/hostname 1vi /etc/sysconfig/network-scripts/ifcfg-ens32 BOOTPROTO=static 静态IPADDR=地址NETMASK=子网掩码:255.255.255.0GATEWAY= 网关DNS1=域名服务器1 2 3 4 5 6 7

–color=auto:将找到的关键字部分加上颜色显示学习目标 1、vi/vim文本编辑器 2、用户管理 3、文件基本属性 4、常用命令 学习内容 1、vi/vim文本编辑器 常用操作: dd:删除光标所在的整行 ndd:删除光标之后的的n行 yy:复制整行 nyy:复制n行 p: 光标位置向下粘贴 P:光标占位置向上粘贴 u:撤销 ctrl+r:重做上一个动作(还原撤销的操作) :set nu 显示行号 :set nonu 取消行号 查找替换: /word :查找,n:向下查找,N:向上查找

重要文件: 保存用户信息的文件:/etc/passwd 保存密码的文件:/etc/shadow 保存用户组的文件:/etc/group 保存用户组密码的文件:/etc/gshadow 用户配置文件:/etc/default/useradd 配置文件分析: /etc/passwd 用户名:密码:用户ID:用户组ID:用户描述:用户的主目录:shell 命令root:x:0:0:root:/root:/bin/bash bin:x:1:1:bin:/bin:/sbin/nologin daemon:x:2:2:daemon:/sbin:/sbin/nologin adm:x:3:4:adm:/var/adm:/sbin/nologin lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin sync:x:5:0:sync:/sbin:/bin/sync 1 2 3 4 5 6 7 登录名:加密口令:最后一次修改时间:最小时间间隔:最大时间间隔:警告时间:不活动时间:失效时间:标 志 1

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学习笔记

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 x ---- 1 rwx rw- r-- 7 6 4

Linux操作系统学习心得

Linux操作系统学习心得 Linux操作系统这个名词记得在很早以前就听过,但具体是什么样的系统却真的不知道,甚至都不知道它是手机系统还是电脑系统,知道的只是它好像比较不易死机,。对于这个学期选这门公共选修课,很大一部分原因是怀着一颗要了解一种早就想知道的东西的心选的.当然我平时也喜欢玩点电脑什么的,只是停留在用别人设计好的现成的东西。 经过一个学期linux操作系统的学习,在老师在课堂对linux系统的介绍及通过网络的了解下,知道了linux原来是一种和windows差不多的电脑操作系统,windows是图形界面的,linux类似以前的DOS,是文本界面的,如果你运行了图形界面程序X-WINDOWS后,linux 也能显示图形界面,也有开始菜单、桌面、图标等。Windows有MS-DOS 方式,在该方式下通过输入DOS命令来操作电脑;而linux与windows 类似,也有命令方式,linux 启动后如果不执行X-WINDOWS,就会处于命令方式下,必须发命令才能操作电脑。另外linux上也有很多的应用软件,安装运行了这些软件后,你就可以在linux上编辑文档、图片,玩游戏、上网、播放多媒体文件等。 当然我们对linux的学习首先是通过对它的产生,发展,到今天仍然在不断完善开始的。它的产生和需要花钱买得windows系统形成了对比,因为linux的核心是免费的,自由使用的,核心源代码是开放的.任何人都可以根据自己的喜好来编辑创作适合自己的操作系统,linux是抢占式多任务多用户操作系统,Linux最大的优点在于其作为服务器的强大功能,同时支持多种应用程序及开发工具,所以linux 操作系统有着广泛的应用空间。 而且在课上随着老师的讲解和自己动手查资料,慢慢的学习到了更深入的知识,知道了linux的安装:硬盘安装及光盘安装,清楚了解安装Linux应注意的有关问题。学习了linux系统的进入,关闭和重启。掌握了linux系统的硬件配置,如显卡,声卡,网卡等,并且通过对linux 系统基本命令的学习,尤其是shell命令语言(亦称命令解释器),熟悉了系统的基本操作。当然在学习中发现英文学得好也是学好linux 的关键。同时还了解了linux对应下的一些常用软件及这些软件的安装。因为linux在服务器中广泛的应用,于是我们进一步学习了linux 下接入internet的WEB服务器的安装与配置方法。之后还了解了linux 的网络安全,系统的安全,用户的安全等。 眼看这个学期Linux的课程已经告一段落了,在这段时间的学习如

linux复习笔记

Linux复习笔记 1.Linux发展史 1991年开发了Linux内核 1994年发布了Linux1.0版本 1996年发布了Linux2.0版本 2.Linux内核 (1)任何版本的linux都使用相同的内核—https://www.360docs.net/doc/ea5211322.html,/ (2)版本号4.13.6--主版本.次版本.修改版本 主版本或次版本有一个为奇数:发展中版本 主版本和次版本均为偶数:稳定版本 (3)Linux完整系统包括: Linux kernel(内核)、free software(软件)、documentation(文档) (4)Linux常见的发行版本 Redhat:收费、企业用的正式版本 CentOS:学生学习使用的免费版本 Fedora:红帽的测试版(软件) Debian:点点 ubuntu:图形化 3.Linux的应用 ①网络服务器(WWW,FTP,Mail)、②关键任务的应用(金融大数据库,大型企业网管环境)、③学术机构、④桌面计算机、⑤手机系统、⑥嵌入式系统 4.虚拟机安装 Virtual Box:搜官网->选择windows版本->下载安装 5.用户的操作 whoami:可以查看当前的用户 su:用来进行用户的切换(#:管理员用户,$:普通用户) 用法:①su 用户名②su 回车(切换到root) (root账户切换到其他账户不需要输入密码,其他账户之间的切换或切换到root账户需要输入密码) sudo:重置密码 sudo passwd root useradd 用户名:添加一个账户 截图:

6.shell的快捷键 Ctrl+a:调到命令行开头 Ctrl+e:调到命令行末尾 Ctrl+u:将光标处到命令行开头的内容清除 Ctrl+k:将光标处到命令行末尾的内容清除 Ctrl+r:在历史命令列表中搜索某一命令 Ctrl+l:清屏 history:显示历史命令 ! [number] :执行曾经执行过的命令,number为行数截图: 7.查看文件和目录 pwd:查看当前所在路径 命令格式:命令 -选项 -参数(目录) (文件类型见10) ls:查看当前目录下的文件 -d:只看当前目录的信息 -l:看详细信息

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学习笔记:用户及用户组 来自:标点符的《Linux学习笔记:用户及用户组》链接:https://www.360docs.net/doc/ea5211322.html,/linux-user-group.html(点击尾部阅读原文前往) Linux用户只有两个等级:root及非root。Linux中还有一部分用户,如:apache、mysql、nobody、ftp等,这些也都是非root用户,即普通用户。Linux的权限实际是上不同用户所能访问的文件的不同产生的假象。而这些假象的造成,还要涉及到另外一个概念:用户组一个用户至少要属于一个用户组一个用户可以属于多个用户组 用户组存在的原因主要还是方便分配权限。而用户本身和权限的差别不是很大,各个用户之间主要的不同是:是否拥有密码home目录(普通用户可以有一个以自己用户名命名的home目录,存放的地址是/home/username,root用户的home目录是:/root)shell 像nobody这样用来执行Nginx的工作进程的用户,一般不分配密码和shell,甚至连home目录都没有。 为什么不分配密码?如果设置了密码,程序无法自动使用。由于不会有人使用这个用户登录系统,所以就没有必要分配shell。(备注:其实严格上说是有分配shell,只是分配的shell 是/sbin/nologin这个特殊的shell,没有任何其他功能,主要

功能是防止你登陆。) 所有用户都可以通过查看/etc/passwd查看。以下为我的系统中的用户信息:root:x:0:0:root:/root:/bin/bash bin:x:1:1:bin:/bin:/sbin/nologin daemon:x:2:2:daemon:/sbin:/sbin/nologin adm:x:3:4:adm:/var/adm:/sbin/nologin lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin sync:x:5:0:sync:/sbin:/bin/sync shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown halt:x:7:0:halt:/sbin:/sbin/halt mail:x:8:12:mail:/var/spool/mail:/sbin/nologin operator:x:11:0:operator:/root:/sbin/nologin games:x:12:100:games:/usr/games:/sbin/nologin ftp:x:14:50:FTP User:/var/ftp:/sbin/nologin nobody:x:99:99:Nobody:/:/sbin/nologin avahi-autoipd:x:170:170:Avahi IPv4LL Stack:/var/lib/avahi-autoipd:/sbin/nologin systemd-bus-proxy:x:999:997:systemd Bus Proxy:/:/sbin/nologin systemd-network:x:998:996:systemd Network Management:/:/sbin/nologin dbus:x:81:81:System message bus:/:/sbin/nologin

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中所有硬件

相关文档
最新文档