(1)什么是shell?
Shell是Linux系统与用户的交互界面,用于解释执行用户键入的命令,是介于用户和系统内核之间的一层。
(2)常用的shell有哪些?如何查看系统默认使用的shell?
常用的Shell有Bourne shell,C shell,Korn shell,Bourne Again shell。
使用echo $SHELL命令查看默认使用shell
(3)内置shell命令vs. 外部shell命令
Shell命令可以分为内置命令和外部命令。
内置命令被构建在shell中,内部命令执行速度较快,因为没有其他的进程因为这条命令的执行而被创建。
外部命令并没有被构建在shell中。这些命令被存放在文件中,通常称shell脚本。当这类命令执行时,有新的进程会被创建。
可以通过type命令判断命令是内置还是外部的。
(4)shell命令的使用方法
1.直接输入命令行之后执行。
2.将需要执行的命令存放在文件中(shell脚本),之后在执行。
(5)什么是文件系统?它的作用是什么?
磁盘上有特殊格式的一片区域。
操作系统通过文件系统方便地查询和访问其中所包含的磁盘块。
文件系统管理文件,分配文件空间,管理空闲空间,控制对文件的访问,并为用户检索数据。
(6)linux支持的文件系统格式有哪些?
Linux系统因为使用VFS,所有其核心可以支持如ext、ext2、ext3、ext4、JFS2等的多种的文件系统
(7)linux的目录结构,主要子目录的用途?
Linux文件系统采用带链接的树形目录结构,只有一个根目录,一层一层延伸下去形成一棵倒置的树。
/bin/:存放系统命令的目录,普通用户和超级用户都可以执行里面的命令。该目录中的命令在单用户模式下也可以执行。
/boot/ 系统启动目录,存放与系统启动相关的文件,如内核文件、启动引导程序(grub)文件等。
/dev/ 存放硬件设备文件的目录。Linux中所有的内容都会以文件形式保存,包括硬件。这个目录就是用来保存所有的硬件设备文件的。
/etc/ 存放配置文件的目录。系统内所有采用默认安装方式(rpm包安装)的服务的配置文件都保存在这个目录中,如用户名和密码、服务的启动脚本、常用服务的配置文件等。
/root/ 超级用户root(也叫超级管理员)的家目录。家目录是用户的默认登录位置,当切换到其他目录后,想迅速返回家目录,可直接使用 cd 命令。
/home/ 普通用户的家目录。创建普通用户时,每个用户要有一个默认的登录位置,这个位置就是该用户的家目录。普通用户的家目录就是在 /home/ 下自动创建一个和用户名相同的子目录。如用户user01的家目录就是 /home/user01/ 。
/lib/ 存放系统函数库的目录。
/lost+found/ 当系统意外崩溃或机器意外关机时,产生的一些文件碎片会保存在这个目录。系统再次启动时,fsck工具会检测这里,并修复已经损坏的文件系统。这个目录只在每个分区中出现,如 /lost+found 就是根分区的备份恢复目录, /boot/lost+found 就是 /boot 分区的备份恢复目录。
/media/ 挂载目录。系统默认推荐的用于挂载媒体设备的,如光盘和软盘。
/mnt/ 挂载目录。早期的Linux中只有这一个挂载目录,现在这个目录一般用来挂载额外的设备,如U盘、移动硬盘等。
/misc/ 挂载目录。系统推荐用来挂载NFS服务的共享目录。系统给我们准备了三个默认的挂载目录 /media、/mnt、/misc,但具体在哪个目录中挂载什么设备,均可以由管理员自己决定。如:可以在 /mnt 目录中创建两个空目录 /mnt/cdrom 和 /mnt/usb,分别用来挂载光盘和U盘。当然,也可以自己创建一级空目录 /usb 来挂载U盘。
/opt/ 第三方软件的安装目录。如:手工安装的源码包软件就可以安装到这个目录当中。不过,现在更多的用户和厂家倾向于把软件安装到 /usr/local/ 目录当中。
/proc/ 虚拟文件系统。该目录中的数据并不是保存在硬盘中,而是保存在内存当中。主要用来保存进程、外部设备等信息。如 /proc/cpuinfo 保存的是CPU信息,/proc/devices 保存的是设备驱动信息列表。
/sys/ 虚拟文件系统。和 /proc 目录相似,里面的数据也是保存在内存中的,它主要用来保存内核的相关信息。
/srv/ 存放系统服务相关数据的目录。
/tmp/ 临时目录。系统存放临时文件的目录,所有用户对于该目录都有读和写的权限。不要在该目录保存重要数据,最好每次开机都把该目录清空。
/usr/ 存放系统软件资源的目录。它是“Unix Software Resource”的缩写,而不是user的缩写。
/var/ 存放动态数据的目录。主要保存日志、邮件、缓存等
第二章课件常用命令:
1.命令、选项、参数之间可用空格或Tab间隔;
一行可以写多个命令,命令之间用 ; 分隔
如果命令太长,可用 \ 续行
ls 显示当前下面的文件及文件夹
ls -l显示不隐藏的文件与文件夹的详细信息
ls -a 显示当前目录下的所有文件及文件夹包括隐藏的.和..等
ls -al 显示当前目录下的所有文件及文件夹包括隐藏的.和..等并显示详细信息,详细信息包括大小,属组,创建时间
2.简单命令演示
exit命令和clear命令太过简单,一个用来退出终端,一个用来清屏,这里就不作演示了。
echo命令:用于显示字符串
date命令:可以有格式的显示时间
date -u:显示UTC(即零时区)当前日期、时间
date +%c : 直接显示日期与时间
date +%e:给出第几号
date +%u:周几
date +%j给出今天是本年度的第几天.
cal命令:显示日历。
cal -hj:以本年度第多少天显示日历。
cal -3 显示系统前一个月,当前月,下一个月的月历.
who命令:
who命令是显示目前登录系统的用户信息。
who -a命令打印出系统启动时间,当前用户,用户运行级别。
w命令用于显示登录到系统的用户情况,w命令功能强大,它不但可以显示有谁登录到系统,还可以显示出这些用户当前正在进行的工作,并且统计数据相对who命令来说更加详细和科学.
whoamii命令whoami命令用于打印当前有效的用户名称
tty命令用于打印标准输入的文件名称。
实验二
(1)运行 pwd 命令,确定当前工作目录。
pwd命令:显示当前工作目录的绝对命令
(2)运行 ls -l 命令,理解各个字段的含义。
ls-l命令:以长格式的形式查看当前目录下所有可见文件的详细属性。
关于每个字节显示内容在网上找到一张很好的图片。
(3)运行 ls -ai 命令,理解各字段含义。
ls-ai:查到ls-i是输出对应每个文件的inode number,所以-ai应该是输出这个目录下所有文件的inode number。
(4)使用 cd 命令,将工作目录改到根(/)上。
运行 ls -l 命令,结合书中图2.2,了解各目录的作用。
将当前工作路径改为根目录之后在使用ls-l命令显示了根目录下各个子目录,这里显示的目录和之前的倒置的树显示目录一样。
(5)直接使用 cd,回到哪里了?用pwd验证。
回到了默认工作目录。
(6)用mkdir建立一个子目录subdir。
(7)将工作目录改到subdir,并且验证当前工作目录就是subdir。
文件操作。
(2)运行 date > file1 ,然后运行 cat file1,看到什么信息?
一直出现权限不足问题,决定直接换成管理员身份运行。
看到了当前的系统时间。cat filename命令用于一次显示整个文件,由此可以知道file1中存存储了当前系统时间。
(3)运行cat subdir,会有什么结果?为什么?
显示没有文件。因为当前目录是subdir目录,而subdir目录下无subdir文件或目录,因此无法显示。
(4)利用 man 命令显示date命令的使用说明。
(5)运行man date >>file1,看到什么? 运行cat file1,看到了什么?
空。
看到了date的使用说明,说明man date >>file1将date的使用说明写入到文件file1中。
(6)利用ls -l file1,了解链接计数是多少?
1.
运行ln file1 ../fa,再运行ls -l file1,看链接计数有无变化?用cat命令显示fa文件内容。
2.原因在于ln file1 ../fa指令将file1链接到当前工作目录的父目录的fa文件下,因此链接数+1.
(7)显示file1的前十行、后十行
(8)运行cp file1 file2,然后 ls -l,看到什么?
cp命令:将源文件或目录复制到目标文件或目录中
在当前目录下新建了一个与file1中内容相同的filee2文件。
运行mv file2 file3,然后 ls -l,看到什么?
mv命令:对文件或目录重命名,或将文件从一个目录转移到另一个目录中。
在这里应该是对filee2文件重命名为file3,因此ls-l 显示file 1 和file 3。
运行 cat f*,结果怎样?
该命令用来显示当前目录下所有以f开头的文件内容,也就是file1和file 3的内容,也就是两个date说明的内容。
(9)运行rm file3,然后ls -l,结果如何?
rm-file3表示将file3文件删除,因此当前目录下只有file1。
(10)在/etc/passwd 文件中查找适合你的注册名的行。
这里使用了暴力解法,直接显示了这个目录下所有内容,然后肉眼去查找哪一行。
(11)运行ls -l,理解各文件的权限是什么?
这里还是使用了之前网上找到的一张图,很清楚了解释了每个参数的含义。
各个字段的含义:文件类型与权限 链接数 文件主 文件组 文件大小 建立或最近修改时间 文件名
(12)用两种方式改变file1的权限。
可以用符号和数字两种方法改变权限。
数字:
Linux档案的基本权限就有九个,分别是owner/group/others三种身份各有自己的read/write/execute权限。
举例:档案的权限字符为 -rwxrwxrwx 这九个权限是三个三个一组的!其中,我们可以使用数字来代表各个权限,各权限的分数对照表如下:
r:4 w:2 x:1
每种身份(owner/group/others)各自的三个权限(r/w/x)分数是需要累加的,例如当权限为: [-rwxrwx---] 分数则是:
owner = rwx = 4+2+1 = 7
group = rwx = 4+2+1 = 7
others= --- = 0+0+0 = 0
对应的命令是:chmod 三位数字 文件名。
经过修改以后,我们将file1的全部权限都打开。
符号:
我们用rwx分别代表读写执行三种权限,ugo代表user,group,owner三种身份。
可以直接用命令chomd u=rwx,g=r,o=r file1命令代表将file1的权限改成-rw-r--r--。
(13)统计file1文件的行数、字数。
wc -lcw:统计行数、字节数、字数
(14)运行man ls|more,显示结果是什么?
显示ls命令的帮助解释。并且展示时以一页一页的方式展示(more命令)
运行cat file1|head -20|tee file5,结果如何?
显示了file1中的前20行,并将这20行保存到file5中。
tee指令会从标准输入设备读取数据,将其内容输出到标准输出设备,同时保存成文件。
运行cat file5|wc,结果如何?
显示出file5中有20行的内容,也就是上面操作向file5写入的20行内容。
实验总结
经过这次实验对于Linux一些概念有了更深刻的理解。对于一些指令也通过练习更加熟悉了,对于Linux和windows有了更深刻的理解,linux它本身并不是面向大众,因此系统构造也更加纯粹,不用去考虑实现复杂的图形界面。对于系统的控制也是用各种命令的方式去实现,深刻的理解了之前看别人说很多windows问题下没法解决的问题在Linux系统下都可以得到很好的解决,但这也造成了它比较难以上手的困境。对于指令,感觉都是自己课后去花时间网上搜索指令对应的意思,而不是上课能够很好的记下来。感觉指令实在有点太多了,上课跟着敲一遍(有时候还来不及敲)也留不下很深印象,常常下课了原来敲的指令没有了也就对这节课毫无印象。因此我大多数时候都是拿纸笔记下一些指令的用法,但还是难免出现一些来不及跟不上的情况。因此平时的实验报告都做的相对细致,担心当时看懂的一些指令,之后在看就看不懂为什么是这样。