实验四 Linux输入输出管理
Linux编程 第4章 输入输出与文件系统
讨论: mode_t是什么类型?
二、参数flags和mode的说明
1. flgas:指明了进程打算如何访问这个文件,它必须包括以 下标志之一 它必须指明三种打开方式之一,各对应一个二进制位:
只读。文件应该存在,(bit 0) O_WRONLY: 只写,写入内容替换指针出数据(bit 1) O_RDWR: 可读可写(bit 2)
缓冲区地址 buf 主存 缓冲区长度为 n个字节 1101...01010110
缓冲区地址 buf 主存 缓冲区长度为 n个字节 1101...01010110
read(fd,buf,n)
文件内容 10110... 1101...01010110 ...11010
write(fd,buf,n)
文件内容 10110... 1101...01010110 ...11010
件”file.out”,若file.out原来有 数据,则覆盖之,原来不存在 ,则创建之 (1)某个编辑程序要打开一个C语 言程序p1.c进行编辑,p1.c不 存在则创建之
4.3 文件读写编程方法
4.4.1文件读写编程 一、函数声明及功能
#include <unistd.h> ssize_t read(int fd , void *buf , size_t n); 返回:若成功则为读出的字节数,若遇EOF 则为0. 若出错为-1. ssize_t write(int fd , const void *buf, size_t n); 返回:若成功则为写入的字节数,若出错则为-1
mode=S_IRUSR|S_IWUSR|S_IRGRP| S_IWGRP|S_IROTH|S_IWOTH = 0666 110 110 110 新文件权限为:
linux 基本操作 实验报告
linux 基本操作实验报告《Linux基本操作实验报告》Linux操作系统是一款开源的操作系统,具有稳定性高、安全性强等特点,因此在服务器领域得到了广泛的应用。
对于初学者来说,熟悉Linux的基本操作是非常重要的,下面我将分享一份Linux基本操作的实验报告。
实验一:登录和退出Linux系统首先,我们需要了解如何登录和退出Linux系统。
在登录界面输入用户名和密码后,我们就可以进入系统。
在系统中,我们可以使用命令“exit”来退出系统。
实验二:文件和目录操作在Linux系统中,文件和目录的操作是非常重要的。
我们可以使用命令“ls”来查看当前目录下的文件和目录,使用命令“cd”来切换目录,使用命令“mkdir”来创建新的目录,使用命令“rm”来删除文件或目录。
实验三:文件编辑在Linux系统中,我们可以使用命令行工具来编辑文件。
比较常用的编辑器有vi和nano。
我们可以使用命令“vi”或“nano”来打开文件进行编辑,然后保存并退出。
实验四:用户和权限管理Linux系统中的用户和权限管理也是非常重要的。
我们可以使用命令“useradd”来添加新用户,使用命令“passwd”来修改用户密码,使用命令“chmod”来修改文件或目录的权限。
实验五:系统管理最后,我们还可以使用一些命令来管理系统。
比如使用命令“ps”来查看当前系统进程,使用命令“top”来查看系统资源占用情况,使用命令“shutdown”来关闭系统。
通过以上实验,我们可以初步了解Linux系统的基本操作。
当然,Linux系统还有很多其他的功能和命令,需要我们不断学习和实践。
希望大家能够通过实践不断提升自己的Linux操作技能,为今后的工作和学习打下坚实的基础。
操作系统中的输入输出管理
操作系统中的输入输出管理在计算机系统中,操作系统对于输入输出(Input/Output,简称I/O)的管理起着至关重要的作用。
输入输出管理是操作系统的一个重要组成部分,负责管理计算机系统与外部设备之间的数据传输和通信。
本文将从输入输出的概念、输入输出的分类、输入输出的特点和输入输出的管理策略等方面进行探讨。
1. 输入输出的概念输入是指从外部设备向计算机系统传送数据或控制信息的过程,包括键盘输入、鼠标输入、外部设备输入等。
输出是指计算机系统将数据或者处理结果传送到外部设备,供人类用户观察或作为其他处理的依据。
输入输出是计算机系统与外部世界进行信息交互的接口,是计算机系统完成各种任务的重要途径。
2. 输入输出的分类输入输出可以按照数据单位的不同进行分类。
根据数据单位的不同,可以将输入输出分为字符设备I/O和块设备I/O。
字符设备I/O是以字符为单位进行输入输出,常见的字符设备有键盘、鼠标、打印机等。
块设备I/O是以固定大小的数据块为单位进行输入输出,常见的块设备有硬盘、U盘等。
3. 输入输出的特点输入输出具有以下几个特点:(1)低速性:相对于计算机内部操作来说,外部设备的传输速度较慢,所以输入输出速度的提高一直是操作系统设计的挑战之一。
(2)大容量性:外部设备通常具有较大的容量,例如硬盘的容量可以达到TB级别,所以输入输出往往需要大量的数据传输。
(3)异步性:计算机与外部设备交互的过程中,计算机的处理速度与外部设备的输入输出速度不一致,需要通过中断机制来处理这种异步性。
(4)设备独立性:操作系统需要提供统一的接口,使得应用程序可以方便地进行输入输出操作,而不需要关心具体的外部设备的细节。
4. 输入输出的管理策略输入输出的管理策略涉及到许多方面,包括缓冲管理、设备分配、设备调度等。
下面简要介绍几种常见的输入输出管理策略:(1)缓冲管理:为了提高输入输出的效率,操作系统通常采用缓冲技术,将输入输出的数据先放入缓冲区中,再进行实际的传输。
linux输入输出重定向及案例
linux输⼊输出重定向及案例重定向什么是重定向?将原本要输出在屏幕中的内容,重新定向输出到指定的⽂件或设备中。
** 为什么要使⽤重定向?**1.备份时,我们需要知道备份的结果2.屏幕上输出信息,⽐较重要的时候,我们想要保存下来3.定时任务,我们需要知道结果4.执⾏命令时,明知道会报错,我们会使⽤重定向,将结果放⼊ /dev/null5.执⾏命令时,正确结果和错误结果会同时输出,将正确结果输出到常规⽇志,将错误结果输出到错误⽇志重定向的分类标准输⼊标准输出名称⽂件描述符作⽤标准输⼊(stdin)0通常键盘(其他输⼊命令的终端设备)标准输出(stdout)1默认输出到屏幕错误输出(stderr)2默认输出到屏幕⽂件名(filename)3+-[root@localhost ~]# ll /dev/std*lrwxrwxrwx 1 root root 15 3⽉ 25 10:36 /dev/stderr -> /proc/self/fd/2lrwxrwxrwx 1 root root 15 3⽉ 25 10:36 /dev/stdin -> /proc/self/fd/0lrwxrwxrwx 1 root root 15 3⽉ 25 10:36 /dev/stdout -> /proc/self/fd/1[root@localhost ~]# ll /proc/121169/fd/总⽤量 0lrwx------ 1 root root 64 4⽉ 7 11:28 0 -> /dev/pts/3lrwx------ 1 root root 64 4⽉ 7 11:28 1 -> /dev/pts/3lrwx------ 1 root root 64 4⽉ 7 11:27 2 -> /dev/pts/3lr-x------ 1 root root 64 4⽉ 7 11:28 3 -> /var/log/messages输出重定向/dev/null/dev/pts/0/dev/pts/1/tmp/zls.txt/root/1.txt类型符号⽤途备注标准覆盖输出重定向1>将命令执⾏的正确结果默认输出的位置,修改为指定的⽂件或者终端(覆盖原有内容)通常'>'即可,1可以不写,默认就是1标准追加输出重定向>>将命令执⾏的正确结果,输出到指定⽂件的末尾(不覆盖原有内容)-错误覆盖输出重定向2>将命令执⾏的错误结果默认输出的位置,修改为指定的⽂件或者终端(覆盖原有内容)-错误追加输出重定向2>>将命令执⾏的错误结果,输出到指定⽂件的末尾(不覆盖原有内容)-标准输⼊重定向0<将命令中接收输⼊内容由默认的键盘,改为命令或者⽂件通常'<'即可0可以写也可以不写,默认0标准输⼊追加重定向0<<将命令中接收输⼊内容由默认的键盘,改为命令或者⽂件-# 标准覆盖输出重定向[root@localhost ~]# echo wxx>/tmp/1.txt[root@localhost ~]# cat /tmp/1.txtwxx[root@localhost ~]# echo 321>/tmp/2.txt[root@localhost ~]# cat /tmp/2.txt[root@localhost ~]# echo wxx1>/tmp/3.txt[root@localhost ~]# cat /tmp/3.txtwxx1**标准追加输出重定向**标准追加输出重定向[root@localhost ~]# echo 456 >> /var/log/messages[root@localhost ~]# echo 123 >> /var/log/messages**错误输出重定向**错误输出重定向[cdx@localhost ~]$ find /etc/ -type d**将标准输出和错误输出都输出到相同的⽂件中**将标准输出和错误输出都输出到相同的⽂件中[cdx@localhost ~]$ find /etc/ -type d > /tmp/100.txt 2>&1[cdx@localhost ~]$ find /etc/ -type d &> /tmp/101.txt**将错误输出,重定向到⿊洞**将错误输出,重定向到⿊洞[root@localhost ~]# ls / /ooo 2>/dev/null**脚本中使⽤重定向**脚本中使⽤重定向!/bin/bash. /etc/init.d/functionsread -p "请输⼊要检测的IP:" IPping -c1 -W1 $IP &>/dev/nullif [ ? -eq 0 ];then action "IP" /bin/true >> /tmp/IP_OK.txtelseaction "$IP" /bin/false >> /tmp/IP_FAILD.txtfi输⼊重定向[root@localhost ~]# mail -s "$(date +%F-%T)_test" 11111@ < /etc/passwd[root@localhost opt]# echo -e "111\n222\n333" > file1.txt[root@localhost opt]# cat file1.txt111222333[root@localhost opt]# echo '1111222233334444' > file2.txt[root@localhost opt]# cat >> 1.txt <<EOF> aaa> bbb> ccc> ddd> EOF[root@localhost opt]# cat >> 2.txt111222333444Ctrl + d 结束cat <<EOF+--------------------------+| vmware manager |+--------------------------+| by wxx |+--------------------------+| 1. Install KVM || 2. Install or Reset C6.5 || 3. Install or Reset C7.4 || 5. Instqll or Reset W7 || 6. Remove all || q. quit |+--------------------------+EOF[root@localhost opt]# cat <<EOF> 1.install mysql> 2.install nginx> 3.intsall php> 4.install tomcat> 5.install redis> EOF1.install mysql2.install nginx3.intsall php4.install tomcat5.install redis# 两条命令同时重定向[root@localhost opt]# (ls ; date) > 1.txt(while :; do date; sleep 2; done) &>date.txt &#如果不希望某些命令的执⾏对当前 shell 环境产⽣影响,请在subshell中执⾏[root@localhost ~]# (cd /boot; ls)管道技术管道操作符号:|,叫做管道符作⽤:将管道符左边命令的标准输出,交给管道符右边命令的标准输⼊来处理⽤法:cmd1|cmd2|cmd3| cmd4...# 取出passwd⽂件中,uid最⼤的前五个[root@localhost ~]# sort -nr -k 3 -t ':' /etc/passwd|head -5# 统计出passwd⽂件中,所有⽤户的shell种类[root@localhost ~]# awk -F: '{print $7}' /etc/passwd|sort |uniq|wc -l6[root@localhost ~]# hostname -I10.0.0.200[root@localhost ~]# ifconfig |awk 'NR==2{print $2}'10.0.0.200sedawkgrep组合:sed awkgrep awk10种⽅法,取IP# 取出磁盘已使⽤百分⽐[root@localhost ~]# df -h|awk '{print $5}'|awk -F '%' '{print $1}'已⽤912451# tee 和重定向的区别tee会将输出结果显⽰在屏幕上[root@zls ~]# date > date.txt[root@zls ~]# date |tee date.txt#xargs:将管道前⾯的结果当成管道后⾯命令的参数[root@localhost opt]# find /etc/ -name '*.conf'|xargs cp -t /tmp/⼗种⽅式取ip⼗种⽅法取ip[root@wzh ~]# ifconfig|awk 'NR==2 {print $2}'10.0.0.200[root@wzh ~]# ifconfig|sed -nr '2s#.*et (.*) ne.*#\1#gp'10.0.0.200[root@wzh ~]# ifconfig|grep -w 'broadcast'|cut -d ' ' -f1010.0.0.200[root@wzh ~]# ifconfig|sed -n '2p'|awk '{print $2}'10.0.0.200[root@wzh ~]# ifconfig|grep -w 'broadcast'|sed -r 's#.*et (.*) ne.*#\1#g'10.0.0.200[root@wzh ~]# ifconfig |head -2|tail -1|cut -d ' ' -f1010.0.0.200[root@wzh ~]# ifconfig|grep -w 'broadcast'|cut -c 14-2410.0.0.200[root@wzh ~]# ifconfig|awk 'NR==2'|cut -d 't' -f2|cut -d 'n' -f110.0.0.200[root@wzh ~]# ifconfig|sed -n '2p'|grep -o '[0.-9]*'|head -110.0.0.200[root@wzh ~]# ifconfig|sed -n '2p'|cut -d ' ' -f1010.0.0.200练习题01.复制/etc/passwd⽂件到当前⽬录下,把⽂件中的:替换成#,不能使⽤sed和vim命令。
实验四 Linux输入输出管理
实验四、Linux输入输出管理一、实验目的通过实验理解Linux的标准输入输出设备,了解Linux的窗口管理器,体验Linux系统下的USB 存储设备管理,掌握Linux的输入输出重定向和管道操作。
二、实验内容与步骤预习背景知识,理清相关概念。
1、熟悉GNOME开机启动,登录Red Hat Linux系统;GNOME桌面最强大的功能就是能够自由配置,并且执行任务有多种方式。
GNOME桌面的组件可共同使用。
通常,可以用几种不同的方式执行相同的操作。
例如,既可以从面板启动应用程序,也可以从菜单或桌面启动应用程序。
GNOME桌面包含专用的首选项工具。
每一个工具控制GNOME桌面行为的一个特定部分。
要启动首选项工具,请从“主菜单”中选择“首选项”。
从子菜单中选择要配置的项目。
在GNOME环境中执行下面的步骤。
(1)练习使用GNOME面板GNOME面板左下方有若干个图标。
移动鼠标光标停留在这些图标上一到两秒钟,可看到关于它们的操作提示。
请将观察结果记录在表4-1中。
(2)显示面板主菜单GNOME面板左端有一个带箭头的主菜单按钮。
单击并记录主菜单标题,填入表4-2。
(3)打开和最小化/最大化一个视窗单击面板上的文字处理器图标,打开一个文字处理视窗。
在打开文字处理视窗之后,可以单击右上角的按钮选择最小化、最大化或者还原。
(4)改变视窗的大小把鼠标光标移动到视窗的任何一边,可以看到一个箭头标志。
当该标志出现的时候按下鼠标左键不放,然后拖动视窗的边界可以迸行缩放。
(5)移动视窗单击视窗的标题栏保持不放。
拖动视窗到一个新的位置。
(6)处理重叠视窗在文字处理视窗打开的情况下,打开新的视窗会重叠或者覆盖住文字处理视窗。
新打开的视窗现在成为前端视窗或者说是当前进程。
为了把文字处理视窗从底层带到顶层来,可单击能够看见的视窗的任何部分。
如果看不到,则可单击前面视窗的左上角符号,打开“窗口菜单”,从中选择需要的视窗。
(7)关闭视窗单击视窗右上角“关闭窗口”按钮,可关闭当前视窗。
Linux输入输出重定向以及 管道(精)
Linux输入输出重定向以及管道2010-08-05 09:211. 标准输入与输出我们知道,执行一个shell命令行时通常会自动打开三个标准文件,即标准输入文件(stdin),通常对应终端的键盘;标准输出文件(stdout)和标准错误输出文件(stderr),这两个文件都对应终端的屏幕。
进程将从标准输入文件中得到输入数据,将正常输出数据输出到标准输出文件,而将错误信息送到标准错误文件中。
我们以cat命令为例,cat命令的功能是从命令行给出的文件中读取数据,并将这些数据直接送到标准输出。
若使用如下命令:$ cat config将会把文件config的内容依次显示到屏幕上。
但是,如果cat的命令行中没有参数,它就会从标准输入中读取数据,并将其送到标准输出。
例如:$ catHello worldHello worldByeBye$用户输入的每一行都立刻被cat命令输出到屏幕上。
另一个例子,命令sort按行读入文件正文(当命令行中没有给出文件名时,表示从标准输入读入),将其排序,并将结果送到标准输出。
下面的例子是从标准输入读入一个采购单,并将其排序。
$ sortbananascarrotsapplesapplesbananascarrots$这时我们在屏幕上得到了已排序的采购单。
直接使用标准输入/输出文件存在以下问题:输入数据从终端输入时,用户费了半天劲输入的数据只能用一次。
下次再想用这些数据时就得重新输入。
而且在终端上输入时,若输入有误修改起来不是很方便。
输出到终端屏幕上的信息只能看不能动。
我们无法对此输出作更多处理,如将输出作为另一命令的输入进行进一步的处理等。
为了解决上述问题,Linux系统为输入、输出的传送引入了另外两种机制,即输入/输出重定向和管道。
输入重定向输入重定向是指把命令(或可执行程序)的标准输入重定向到指定的文件中。
也就是说,输入可以不来自键盘,而来自一个指定的文件。
所以说,输入重定向主要用于改变一个命令的输入源,特别是改变那些需要大量输入的输入源。
linux实验4
实验4 重定向和管道1、实验目的:1、熟悉Linux操作系统环境2、掌握Linux的输入重定向、输出重定向和管道机制3、为后续课程及实验做准备2、实验步骤1,打开终端2,在shell提示符下输入:cat回车Hello worldBye(ctrl + d 结束)观察显示结果cat命令会读取指定文件的内容,并输出到标准输出设备上(如显示器)。
若不指定任何文件名称,或指定的文件名为"-",则cat命令从标准输入设备读取数据(如键盘),然后再把所得到的数据输出到输出设备。
3,用vi编辑器,编辑名为inputfile的文件,内容如下:Hi,This is a inputfile保存并退出文件⑴输入命令.⑵按A a I i O o(其中一个)进入编辑模式,输入文本.文本输入完毕后,按Esc 退出编辑模式,进入命令模式,按: 进入末行模式.输入wq 进行保存.⑶最终结果如下图所示.4,在shell提示符下输入:cat < inputfile理解输入重定向输入重定向主要用于改变一个命令的输入源.如图可以看出,命令的输入来源文本文件,而不是键盘.5,在shell提示符下输入:ls观察显示信息ls指令可列出目录的内容,包括文件和子目录的名称。
6,在shell提示符下输入:ls > ls.Out7,查看文件ls.out内容,理解输出重定向输出重定向主要用于改变一个命令的输出源,将命令的“输出”送到文件而不是显示器. 如上图可以看出ls的命令输出的方式是文本,而不再是显示器.8,用vi编辑器,编辑文件名为students的文件,内容如下:zhangsanlisiwangwutomjackylisizhangsanmaliujim保存并退出文件⑴输入命令.⑵按A a I i O o(其中一个)进入编辑模式,输入文本.文本输入完毕后,按Esc 退出编辑模式,进入命令模式,按: 进入末行模式.输入wq 进行保存.⑶最终结果如下图所示.9,在shell提示符下输入:sort students > students_sort 使用排序命令sort对文件students排序,并使用输出重定向符合,将排序后的内容重定向到文件students_sort⑴输入命令.使用了输出重定向,所以不在显示器显示.⑵结果如下图所示,学生的姓名都按顺序排列了.10,在shell提示符下输入:cat students_sort观察并分析显示结果第9题重定向了student_sort 的输出.把“输出”送到文件而不是显示器.而cat命令会读取指定文件的内容,并输出到标准输出设备上(如显示器)。
Linux编程输入输出与文件系统
4.2 文件打开和关闭函数
一、函数原型 #include <sys/types.h> #include<sys/stat.h> #include <fcntl.h> int fd=open(char* filename, int flags, mode_t mode);
一个UNIX文件就是一个m个字节的序列:B0, B1 , …, Bk,…, Bm-1
所有的I/O设备,如键盘、网络、磁盘和终端,都被模型化 为文件,可称为设备文件,所有的输入和输出都用对相应 文件的读和写来执行。
这种将设备优雅地映射为文件的方式,允许UNIX内核引出 一个简单、低级的应用接口,用于文件操作,称为UNIX I/O,又称系统I/O
二、学习UNIX I/O的意义 学习UNIX I/O有助于理解其他系统概念,如管道、I/O重定
向、守护进程实现 I/O是系统操作不可或缺的组成部分,是理解/O编程(如网络编程、管道、读取文件元
数据)必须使用UNIX I/O
三、UNIX文件和UNIX I/O概念
4.1 什么叫UNIX I/O
一、输入输出的概念 输入/输出(I/O)是在主存和外部设备(如磁盘驱动器、终端
和网络)之间传递数据的过程 所有语言的运行时系统(函数库)都提供执行I/O的执行I/O
的函数库,比如C/C++提供:scanf、printf、cout<<、 cin>>等 Linux提系统级UNIX I/O系统调用库,来实现这些I/O库函 数 大多数应用开发仅需使用上层I/O函数,毋须直接使用 UNIX I/O
学习目标
了解文件系统层次结构和文件I/O库之间关系、应用场合、 性能比较
linux 输入输出重定向
一下为我个人的理解:
当执行一个命令时,就会创建一个进程(对应可执行文件),该进程执行相应的操作。这个执行相应的操作应该怎么理解呢:
shell命令可以写在命令行下,如果你的工作需要利用很多的shell命令才能完成,并且具有重复性,这个时候,用shell脚本会很方便。shell脚本就是把你在命令行下输入的命令都集中在一个文件中,这个文件就成为shell脚本。
在脚本的开头必须以#!来告诉系统它后面的参数时用来执行该文件的程序。当编写好该文件后,修改文件的权限,让文件具有可执行的权限,然后你就可以执行了。执行文件的程序有很多种,例如/bin/sh。
>>filename 追加重定向 ,和>唯一不同的是,>>将结果追加到文件尾部,而将文件中原内容替换掉。
2>filename 在重定向符号前加一个2,表示将只将执行命令时的错误信息写入文件,命令的执行结果仍然显示到标准输出中。
&>filename 将命令的执行结果以及错误信息都写入文件中。
************************************************************************
linux shell命令的执行过程
任何发明都具有供用户使用的界面,UNIX供用户使用的界面就是shell。shell为用户提供了输入命令和参数并可得到命令执行结果的环境。
4、命令替换:
linux操作系统实验报告
linux操作系统实验报告Linux操作系统实验报告一、引言在计算机科学领域,操作系统是一种非常重要的软件,它负责管理计算机硬件和软件资源,提供用户与计算机之间的接口。
Linux操作系统是一种开源的、免费的操作系统,它具有高度的可定制性和稳定性,因此在科研、教育和商业领域都得到广泛应用。
本实验报告将介绍我们在课程中对Linux操作系统的实验内容和实验结果。
二、实验目的本次实验的目的是让我们学生通过亲自操作和实践,深入了解Linux操作系统的特点、功能和使用方法。
通过实验,我们将学会如何安装Linux操作系统、使用Linux命令行界面、管理文件和目录、配置网络和安全等。
三、实验环境我们使用的实验环境是一台配置较高的个人计算机,该计算机上安装了虚拟机软件。
我们选择了一款常用的虚拟机软件VirtualBox,并在其上安装了Ubuntu Linux操作系统。
四、实验内容1. Linux操作系统安装我们首先学习了如何在虚拟机上安装Linux操作系统。
通过下载Ubuntu的镜像文件,并创建虚拟机实例,我们成功地完成了Linux操作系统的安装。
在安装过程中,我们需要设置用户名、密码和网络配置等信息。
2. Linux命令行界面Linux操作系统的命令行界面是其最基本的用户接口。
我们学习了一些常用的Linux命令,如cd、ls、mkdir、rm等,用于管理文件和目录。
我们还学习了如何使用管道和重定向符号来处理命令的输入和输出。
3. 文件和目录管理Linux操作系统以文件和目录的形式来组织和管理数据。
我们学习了如何创建、复制、移动和删除文件和目录。
我们还学习了如何修改文件和目录的权限和所有权。
4. 网络配置在现代计算机网络中,网络配置是非常重要的一部分。
我们学习了如何配置Linux操作系统的网络设置,包括IP地址、子网掩码、网关等。
我们还学习了如何使用ping命令测试网络连通性。
5. 安全配置在网络环境中,安全性是一个重要的考虑因素。
Linux实验4-Linux文件系统-目录和文件管理
实验报告课程名称: Linux操作系统实验名称:实验4、Linux文件系统-目录和文件管理学生姓名:班级学号学院(系):指导教师:实验时间:年月日实验成绩:实验四、Linux文件系统-目录和文件管理一、实验要求(1)掌握目录和文件管理的操作命令;(2)掌握文件权限的修改方法。
(3)掌握文件链接的方法。
二、实验内容和实验步骤【操作要求1】查看Linux系统常见的目录。
【操作步骤】输入命令:ls,查看Linux系统常见的目录,截图如下:【操作要求2】显示当前目录下文件类型。
【操作步骤】输入命令:ls –l|more,截图如下:说明:●“-”:表示普通文件●“d”:表示目录文件●“c”:表示字符设备文件●“b”:表示块设备文件●“l”:表示符号链接文件【操作要求3】查看当前目录下所有文件类型【操作步骤】输入命令:file *,截图如下:【操作要求4】先创建两个新目录dir1和dir2,然后将dir2目录移到dir1目录中,最后删除dir2目录。
【操作步骤】(1)以普通用户user登陆字符界面,输入命令:pwd,当前目录为用户的主目录:/home/user。
(2)输入命令:ls –l,查看当前目录中的所有文件。
(3)创建两个目录,输入命令:mkdir dir{1,2}。
(4)输入命令:ls –l,确认两个目录创建成功。
以上4个步骤截图如下:(5)输入命令:mv dir2 dir1,将dir2目录移动到dir1目录。
(6)输入命令:cd dir1,切换dir1目录,再输入:ls命令,查看到dir2目录。
截图如下:(7)删除dir2目录,输入命令:rm –rf dir2。
【操作要求5】查找profile文件。
【操作步骤】(1)切换用户为超级用户,输入命令:su -,并输入密码。
(2)输入命令:find /etc -name profile, 截图如下:(3) 使用exit命令,退出超级用户身份。
【操作要求6】将/etc/profile文件中所有包含“HOSTNAME”的行存入f4文件,并修改f4文件的权限,让所有用户都可以读写。
linux 标准输入输出
linux 标准输入输出Linux 标准输入输出。
在Linux系统中,标准输入、标准输出和标准错误是非常重要的概念,它们是命令行操作中的基础。
本文将介绍Linux系统中标准输入输出的相关知识,包括其概念、重要性以及如何在实际应用中使用。
首先,我们来了解一下标准输入、标准输出和标准错误的概念。
在Linux系统中,每个程序都会有三个标准文件流,分别是标准输入(stdin)、标准输出(stdout)和标准错误(stderr)。
标准输入用来接收输入数据,通常是键盘输入;标准输出用来输出结果,通常是显示在屏幕上;标准错误用来输出错误信息,也通常显示在屏幕上。
这三个标准文件流在Linux系统中是非常重要的,它们为命令行操作提供了基础支持。
其次,标准输入输出在Linux系统中的重要性不言而喻。
它们为用户提供了与系统进行交互的途径,使得用户可以输入命令、获取结果并查看错误信息。
标准输入输出也为不同的程序之间提供了通信的方式,使得它们可以相互协作,并且能够将结果输出到文件或者其他程序中进行处理。
因此,标准输入输出是Linux系统中不可或缺的一部分,它们为系统的稳定运行和用户的便利操作提供了基础支持。
接下来,我们将介绍如何在实际应用中使用标准输入输出。
在命令行操作中,可以使用一些特定的符号来进行标准输入输出的操作。
例如,可以使用">"符号将程序的标准输出重定向到一个文件中,这样可以将程序的输出结果保存到文件中而不是显示在屏幕上;还可以使用"<"符号将文件中的内容作为程序的标准输入,这样可以从文件中读取数据而不是从键盘输入。
此外,还可以使用"|"符号将一个程序的标准输出作为另一个程序的标准输入,这样可以将两个程序进行组合,实现更复杂的操作。
总结一下,标准输入输出是Linux系统中非常重要的概念,它们为命令行操作提供了基础支持,使得用户可以进行交互操作并获取结果。
linux 标准输入输出
linux 标准输入输出Linux标准输入输出。
Linux操作系统是一种开源的操作系统,具有高度的灵活性和可定制性,广泛应用于服务器、嵌入式设备和个人电脑等领域。
在Linux系统中,输入输出是非常重要的概念,它涉及到用户与系统之间的数据交互和通信。
本文将介绍Linux系统中的标准输入输出,以及如何在命令行环境下进行输入输出操作。
标准输入。
在Linux系统中,标准输入通常用于从键盘接收用户输入。
当一个程序需要接收用户输入时,它会从标准输入中读取数据。
在命令行环境下,用户可以通过键盘输入数据,并按下回车键来将数据发送到标准输入。
在编写Shell脚本或其他类型的程序时,可以通过标准输入来接收用户输入的数据,从而实现交互式的操作。
标准输出。
标准输出通常用于向屏幕输出数据。
当一个程序需要向用户显示信息时,它会将数据发送到标准输出,然后这些数据会显示在屏幕上。
在命令行环境下,用户可以通过执行命令来观察程序的输出结果。
在编写Shell脚本或其他类型的程序时,可以通过标准输出来向用户展示程序的运行结果或其他信息。
重定向。
在Linux系统中,可以使用重定向操作符来改变标准输入输出的默认行为。
例如,可以使用">"符号将程序的输出结果重定向到一个文件中,而不是显示在屏幕上。
类似地,可以使用"<"符号将一个文件的内容作为程序的输入,而不是从键盘输入数据。
重定向操作符的使用可以帮助用户更灵活地处理输入输出,将程序的输出结果保存到文件中,或者从文件中读取数据进行处理。
管道。
在Linux系统中,管道操作符"|"可以将一个程序的输出结果作为另一个程序的输入。
这种方式可以实现多个程序之间的数据传递和处理,非常适合用于构建复杂的数据处理流程。
通过管道操作符,可以将多个简单的程序组合起来,实现更复杂的功能,提高工作效率。
示例。
下面是一个简单的示例,演示了如何在Linux系统中使用标准输入输出进行数据处理:```bash。
linux标准输入输出
linux标准输⼊输出#include <stdio.h>extern FILE *stdin;extern FILE *stdout;extern FILE *stderr;通常linux程序启动后都会有这3个打开的输⼊输出流,叫标准I/O流。
对应的⽂件描述符为STDIN_FILENO(0),STDOUT_FILENO(1),STDERR_FILENO(2)。
⽂件描述符是内核的,⽂件句柄FILE是库对⽂件描述符的封装,⼦进程可以继承⽂件描述符,但不继承⽂件句柄。
通常stdin,stdout,stderr⽤宏来实现的,对它们直接赋值不具有可移植性,标准做法是通过freopen(3)来重新打开。
stderr⽆缓冲,stdout是⾏缓冲控制终端 controlling terminal/dev/tty 是⼀个进程的控制终端nohup让程序不受 hangups 信号影响,输出到non-tty如果标准输⼊是终端,就重定向到 /dev/null。
如果标准输出是终端,就重定向到 nohup.out ⽂件。
标准错误重定向到标准输出。
要将输出保存到⽂件,⽤ "nohup COMAND > FILE"shell重定向命令执⾏前,输⼊和输出可以⽤shell特定的符号重定向。
从左到右按顺序执⾏重定向,ls > dirlist 2>&1会将标准输出和标准错误都重定向到⽂件 "dirlist" 中,ls 2>&1 > dirlist只会将标准输出重定向到⽂件中。
如果重定向符号前不是⽂件描述符,⽽是⼀个变量名,shell会申请⼀个⼤于10的⽂件描述符给这个变量名。
如果是>&- 或 <&-之前有变量,表⽰的是要关闭的⽂件描述符如果忽略⽂件描述符,<符号之前表⽰省略标准输⼊,>符号之前表⽰省略标准输出。
Linux之输入、输出重定向
Linux之输⼊、输出重定向linux中三种标准输⼊输出设备硬件设备和⽂件描述符:计算机的硬件设备有很多,常见的输⼊设备有键盘、⿏标、麦克风、⼿写板等,输出设备有显⽰器、投影仪、打印机等。
不过,在 Linux 中,标准输⼊设备指的是键盘,标准输出设备指的是显⽰器。
Linux 中⼀切皆⽂件,包括标准输⼊设备(键盘)和标准输出设备(显⽰器)在内的所有计算机硬件都是⽂件。
为了表⽰和区分已经打开的⽂件,Linux 会给每个⽂件分配⼀个 ID,这个 ID 就是⼀个整数,被称为⽂件描述符(File Descriptor)。
Linux 程序在执⾏任何形式的 I/O 操作时,都是在读取或者写⼊⼀个⽂件描述符。
⼀个⽂件描述符只是⼀个和打开的⽂件相关联的整数,它的背后可能是⼀个硬盘上的普通⽂件、FIFO、管道、终端、键盘、显⽰器,甚⾄是⼀个⽹络连接。
stdin、stdout、stderr 默认都是打开的,在重定向的过程中,0、1、2 这三个⽂件描述符可以直接使⽤。
设备⽂件类型全拼设备⽂件描述符默认位置标准输⼊STDIN standard input0键盘标准输出STDOUT standard output1终端(屏幕)标准错误STDERR standard error2终端(屏幕)STDIN是标准输⼊,默认从键盘读取信息;STDOUT是标准输出,默认将输出结果输出⾄终端;STDERR是标准错误,默认将输出结果输出⾄终端。
由于STDOUT与STDERR都会默认显⽰在终端上,为了区分,就有了编号的0,1,2的定义,⽤1表⽰STDOUT,2表⽰STDERR。
可以使⽤IO重定向(redirection),改变输⼊、输出的发送位置。
实例:[root@localhost home]# ll /home/demo/config.properties #⽂件存在,标准输出显⽰在终端。
-rwxr-xr-x. 1 root root 568 May 24 01:03 /home/demo/config.properties[root@localhost home]# ll /home/demo/xxx.properties #⽂件不存在,标准错误显⽰在终端。
Linux重定向(输入输出重定向)详解
Linux重定向(输⼊输出重定向)详解我们知道,中标准的输⼊设备默认指的是键盘,标准的输出设备默认指的是显⽰器。
⽽本节所要介绍的输⼊、输出重定向,完全可以从字⾯意思去理解,也就是:输⼊重定向:指的是重新指定设备来代替键盘作为新的输⼊设备;输出重定向:指的是重新指定设备来代替显⽰器作为新的输出设备。
通常是⽤⽂件或命令的执⾏结果来代替键盘作为新的输⼊设备,⽽新的输出设备通常指的就是⽂件Linux输⼊重定向对于输⼊重定向来说,其需要⽤到的符号以及作⽤如表1 所⽰。
表 1 输⼊重定向中⽤到的符号及作⽤命令符号格式作⽤命令 < ⽂件将指定⽂件作为命令的输⼊设备命令 << 分界符表⽰从标准输⼊设备(键盘)中读⼊,直到遇到分界符才停⽌(读⼊的数据不包括分界符),这⾥的分界符其实就是⾃定义的字符串命令 < ⽂件 1 > ⽂件 2将⽂件 1 作为命令的输⼊设备,该命令的执⾏结果输出到⽂件 2 中。
【例 1】默认情况下,cat 命令会接受标准输⼊设备(键盘)的输⼊,并显⽰到控制台,但如果⽤⽂件代替键盘作为输⼊设备,那么该命令会以指定的⽂件作为输⼊设备,并将⽂件中的内容读取并显⽰到控制台。
以 /etc/passwd ⽂件(存储了系统中所有⽤户的基本信息)为例,执⾏如下命令:[root@localhost ~]# cat /etc/passwd#这⾥省略输出信息,读者可⾃⾏查看[root@localhost ~]# cat < /etc/passwd#输出结果同上⾯命令相同注意,虽然执⾏结果相同,但第⼀⾏代表是以键盘作为输⼊设备,⽽第⼆⾏代码是以 /etc/passwd ⽂件作为输⼊设备。
【例 2】[root@localhost ~]# cat << 0>>Linux>0Linux可以看到,当指定了 0 作为分界符之后,只要不输⼊ 0,就可以⼀直输⼊数据。
linux之文件目录,输入及输出
linux之⽂件⽬录,输⼊及输出⽂件⽬录结构ls 查看⽂件ll 查看详细⽂件⽂件和⽬录被组织成⼀颗倒置的树状结构⽂件系统从根开始,'/'⽂件名严格区分⼤⼩写隐藏⽂件以.开头⽂件的分隔符为'/'⽂件命名规范⽂件字符最长的字符为255包括路径在内⽂件名称最长为4095个颜⾊蓝⾊ --> ⽂件夹绿⾊ --> 可执⾏⽂件红⾊ --> 压缩⽂件晴朗蓝 --> 链接⽂件(windows中快捷⽅式)灰⾊ --> 其他⽂件⽩⾊ --> ⽂件除了 '/'和NULL.其他所有字符都可以使⽤对⼤⼩写敏感⽂件系统结构/boot # 引导⽂件的存放位置,内核⽂件,引导加载器都在此⽬录/bin # 所有⽤户都可以使⽤的命令./sbin # 管理类命令,即root⽤户可以使⽤的命令. system 管理/lib # 启动时程序使⽤的基本库⽂件,windows库⽂件以.dll结尾,linux库⽂件以.so结尾/lib64 # 存放x86-64系统上的辅助库⽂件,windows系统中 program files/program files(x86)/etc # 存放配置⽂件的⽬录/home # 普通⽤户家⽬录/root # 管理员家⽬录/media # 便携式移动设备的挂载点/mnt # 临时⽂件的挂载点/dev # 设备⽂件(硬件设备)和特殊⽂件存放位置/opt # 第三⽅的应⽤安装位置/tmp # 重启之后清空此⽂件夹下⽂件,临时⽂件的放置点,类似于windows回收站/usr # 存放安装程序/var # 存放经常变化的⽂件,⽐如⽬录. /var/log/proc # 存放内核启动和进程相关的虚拟⽂件,(进程被表⽰⽂件)/sys # 输出当前系统上的硬件相关⽂件/srv # 系统上允许永达ode数据linux应⽤程序的组成⼆进制⽂件/bin/sbin/usr/bin/usr/sbin/usr/local/bin/usr/loacl/sbin库⽂件/lib/lib64/usr/lib/usr/lib64/usr/local/lib/usr/local/lib64配置⽂件/etc/etc/name/usr/local/etc帮助⽂件/usr/share/man/usr/share/doc/usr/local/share/man/usr/local/share/doc绝对路径与相对路径绝对路径以根开始完整的⽂件的存放位置可以读取到任何⼀个⽂件或者⽂件夹相对路径不以根开始相对于当前的位置来决定的可以简单的表⽰⼀个⽂件或⽂件夹. 当前⽬录 ..⽗级⽬录⽬录名和基名# 基名[root@localhost log]#basename /etc/sysconfig/network-scripts/ifcfg-ens33ifcfg-ens33[root@localhost log]#basename /etc/sysconfig/network-scripts# ⽬录名[root@localhost log]#dirname /etc/sysconfig/network-scripts/etc/sysconfig[root@localhost log]#dirname /etc/sysconfig/network-scripts/ifcfg-ens33/etc/sysconfig/network-scripts切换⽬录cd 切换⽬录 change directory可以使⽤相对路径可以使⽤绝对路径切换家⽬录cd # 切换家⽬录cd - # 回到上⼀次⽬录显⽰当前的⼯作⽬录pwd # 显⽰当前⼯作⽬录 print working directory[root@localhost network-scripts]#pwd/etc/sysconfig/network-scriptspwd -p # 查看链接的真正⽬录[root@localhost /]# cd lib[root@localhost lib]# pwd -p/usr/lib列出⽬录或者⽂件-rw-r--r--.1root root0Aug 22 17:2110权限硬盘引⽤次数属主属组⼤⼩访问时间⽂件名称ls listls -a # 显⽰所有⽂件ls -l # 以长格式显⽰⽂件列表-rw-r--r--. 1 root root 0 Aug 22 17:21 10权限硬盘引⽤次数属主属组⼤⼩访问时间⽂件名称ls -R # 递归显⽰⽬录ls -d # 显⽰⽬录本⾝ls -1 # ⽂件分⾏显⽰ls -S # 按照⽂件⼤⼩排序ls -r # 倒序显⽰ls -t # 按照时间排序ls -lh # 显⽰⼈类易读⽅式ls -d */ # 显⽰当前⽬录下⽂件夹ls l. # 只显⽰隐藏⽂件ls -lut # 时间倒叙排列# 这⾥全是段命令可以⾃由组合linux下的⽬录类型- ⽤来表⽰⽂件d ⽤来表⽰⽬录b 块设备c 字符设备| 表⽰符号链接⽂件s socket套接字⽂件stat查看⽂件状态File: ‘anaconda-ks.cfg’Size: 1747 Blocks: 8 IO Block: 4096 regular fileDevice: fd00h/64768d Inode: 33574992 Links: 1Access: (0600/-rw-------) Uid: ( 0/ root) Gid: ( 0/ root)Context: system_u:object_r:admin_home_t:s0# Size 磁盘⼤⼩ Blocks 块⼤⼩ IO Block Io块⼤⼩# Access 权限 Uid ⽤户Access: 2019-08-22 12:09:03.288000381 +0900 # 访问时间Modify: 2019-08-22 11:47:12.262947345 +0900 # 修改时间Change: 2019-08-22 11:47:12.262947345 +0900 # 改动时间Access # 最近访问时间 atime 查看cat⽂件内容就会改变Modify # 最近修改时间 mtime 改变内容时发⽣变化Change # 最近改动时间 ctime 元数据发⽣变化就会改变touch创建空⽂件和刷新时间,如果⽂件存在,则刷新时间,不存在则创建⽂件touch -a 修改atime和ctimetouch -m 修改mtime和ctime# ⽆论是-a 还是-m ctime都会改变⽂件通配符* # 表⽰0-多个字符# 匹配任意单个字符~ # 表⽰家⽬录[123] # 表⽰其中⼀个# 根据ascii码file[a-z] # 字母(有坑) 缺少Zfile[A-Z] # 字母(有空) 缺少a[^] # 取反[:lower:] # ⼩写字母[:upper:] # ⼤写字母[:alpha:] # 所有字母[:alpha:] # 所有字母[:alnum:] # 表⽰字母和数字[:digit:] # 表⽰数字创建⽬录mkdir # 创建⽬录-p a/b/c # 递归创建-v # 显⽰创建详细过程显⽰⽬录树yum install-y tree # 安装⽬录树tree # 显⽰⽬录树tree -d # 仅显⽰⽂件夹-L num # 仅显⽰num层,排除当前⽬录删除⽬录rmdir # 只能删除⾮空⽬录-p # 递归删除空⽗⽬录-v # 显⽰删除过程rm -rf # 删除⾮空⽬录复制⽂件和⽂件夹cp copy默认情况下是别名,原来本⾝命令(\cp)是不提⽰覆盖使⽤⽅法:Usage: cp [OPTION]... [-T] SOURCE DESTor: cp [OPTION]... SOURCE... DIRECTORYor: cp [OPTION]... -t DIRECTORY SOURCEcp # copy-i # 显⽰覆盖提⽰信息-n # 不覆盖-f # ⾮强制的-R -r # 递归复制,如果复制⽂件夹,不加递归复制会报错-s # 拷贝⼀个链接⽂件-d # 只复制链接⽂件不复制原⽂件-a # 归档-v # 显⽰复制过程-b # 覆盖之前,备份原来的⽂件--backup=number # 备份-p # 复制时保留原来的属性如果源⽂件是⽂件⽬标⽂件是⽂件⽬标⽂件如果不存在,则新建⽬标⽂件,并把内容写到⽬标⽂件中如果⽬标⽂件存在,本来的命令是直接覆盖.建议使⽤-i提⽰⽤户.⽬标是⽂件夹在⽂件夹中新建⼀个同名的⽂件,并把⽂件内容写到新⽂件中如果原⽂件为多个⽂件⽬标必须是⽂件夹,⽽且⽂件夹必须存在.其他情况都会报错如果原⽂件是⽂件夹⽬标⽂件是⽂件:不可以⽬标⽂件必须是⽂件夹,必须使⽤-r选项如果⽬标⽂件不存在:则直接创建⽬标⽂件夹,并把原⽂件夹的数据都复制到⽬标⽂件夹如果⽬标⽂件存在:如果是⽂件,则报错如果是⽂件夹:则在⽬标⽂件夹中创建同名⽂件夹,并把⽬标放在新的⽂件夹中.移动,重命名mv movemv # moveUsage: mv [OPTION]... [-T] SOURCE DESTor: mv [OPTION]... SOURCE... DIRECTORYor: mv [OPTION]... -t DIRECTORY SOURCE...-i # 提⽰-f # 强制-b # 备份--backup=number # 备份后⾯加数字-v # 显⽰过程删除Usage: rm [OPTION]... FILE...-i # 提⽰-r -R # 递归删除-f # 强制rm -rf # 慎⽤rm -rf /* # 慎⽤cd /rm -rf *# 这⾥需要提前⽤VMware 提前快照,然后恢复快照# 右击⾥⾯点击拍摄快照链接# 软链接ln -s 源⽂件⽬标⽂件 # 创建命令1.相当于windows快捷⽅式2.可以对⽬录做软链接,执⾏另外的⼀个⽂件或者⽬录的路径,⼤⼩是路径的长度的字符3.对磁盘引⽤次数没有影响4.可以跨分区5.源⽂件发⽣改变,软链接会跟着发⽣变化6.源⽂件删除,软链接不能访问,再添加相同名字时,即可引⽤# 硬链接ln 原⽂件⽬标⽂件 # 创建硬链接1.磁盘引⽤次数发⽣变化2.指向的是硬盘上的同⼀块区域3.硬盘的引⽤数会随着硬链接的次数⽽增加4.不能对⽬录做硬链接5.不能跨越分区6.源⽂件发⽣改变,硬链接会发⽣改变7.源⽂件删除,硬链接可以访问,磁盘引⽤数减少# CP查看⽂件类型file输⼊和输出1.标准输⼊默认是来⾃键盘的输⼊ stdin 02.标准输出默认输出到终端窗⼝ stdput 13.标准错误输出默认输出到终端窗⼝ stderr 2I/O重定向> 覆盖1. > 将>标准输出重定向到⽂件中2. 2> 将错误输出重定向到⽂件中3. &> 将所有的输出都重定向到⽂件中禁⽌,允许覆盖1. 禁⽌覆盖set -C2. 允许覆盖set +C>> 追加1. >> 将标准输出追加到⽂件中2. 2>> 将错误输出追加到⽂件中3. &>> 将所有的输出都重定向到⽂件中标准输⼊和错误输⼊分开保存[root@localhost ~]# ls f 45yu > log.log 2>error.log[root@localhost ~]# cat log.logf[root@localhost ~]# cat error.logls: cannot access 45yuio: No such file or directory合并所有输出&> 覆盖重定向&>> 追加重定向command>file 2>&1command>>file 2>&1():合并多个⽂件的输出 (错误1;错误2) 2> file&> /dev/null(类似于⿊洞,⽆限制接收)/dev/zero从⽂件导⼊stdin\tr 字符替换# 参数-t 截断-d 删除-s 压缩,去重-c 取反tr字符替换tr 'a-z' 'A-Z' < /etc/issue# 按字符顺序替换tr ab 12ab12abb122# 分赃不均则默认取最后tr abc 12abc122# 解决分赃不均问题(截断)tr -t abc 12abc12c# 删除tr -d abca1b1c11# 去重tr -s aaaaaabcabc# 取反tr -sc aaasdaaaa# tr -d a 默认会把回车删掉,要ctrl+d删除# 解决办法 tr -dc 'a\n'读⼊⽂件和输出⽂件不能是同⼀⽂件,要写到新的⽂件中tr -d <issue>issue多⾏发送给stdin1. cat > f1# ctrl c可以结束2. cat > f2 <<EOF# <<后⾯的值随便写,但是必须以它结束,约定俗成EOF> EOF# 结束,结束之后,才能显⽰.管道管道使⽤ "|" 来表⽰命令1|命令2|命令3把命令1的输出结果当做命令2的输出结果,把命令2的输出结果当做命令3的输⼊结果默认情况下,管道只能传送标准输出如果需要把错误输出也传递,则需要|&⼀般⽤来组合多个命令有⼀些命令是不接受管道的# 如touch,cat等。
linux中的输入重定向和输出重定向
linux中的输⼊重定向和输出重定向
输出重定向:
>>和>都属于输出重定向,<属于输⼊重定向。
>会覆盖⽬标的原有内容。
当⽂件存在时会先删除原⽂件,再重新创建⽂件,然后把内容写⼊该⽂件;否则直接创建⽂件。
>>会在⽬标原有内容后追加内容。
当⽂件存在时直接在⽂件末尾进⾏内容追加,不会删除原⽂件;否则直接创建⽂件。
输⼊重定向:
就是不使⽤标准输⼊端⼝输⼊⽂件,⽽是使⽤指定的⽂件作为标准输⼊设备。
(重定向简单理解就是使⽤ “<”符来修改标准输⼊设备)例如:cat < 1.txt ,cat << EOF[将EOF之前的内容打印出来]。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
实验四、Linux输入输出管理一、实验目的通过实验理解Linux的标准输入输出设备,了解Linux的窗口管理器,体验Linux系统下的USB 存储设备管理,掌握Linux的输入输出重定向和管道操作。
二、实验内容与步骤预习背景知识,理清相关概念。
1、熟悉GNOME开机启动,登录Red Hat Linux系统;GNOME桌面最强大的功能就是能够自由配置,并且执行任务有多种方式。
GNOME桌面的组件可共同使用。
通常,可以用几种不同的方式执行相同的操作。
例如,既可以从面板启动应用程序,也可以从菜单或桌面启动应用程序。
GNOME桌面包含专用的首选项工具。
每一个工具控制GNOME桌面行为的一个特定部分。
要启动首选项工具,请从“主菜单”中选择“首选项”。
从子菜单中选择要配置的项目。
在GNOME环境中执行下面的步骤。
(1)练习使用GNOME面板GNOME面板左下方有若干个图标。
移动鼠标光标停留在这些图标上一到两秒钟,可看到关于它们的操作提示。
请将观察结果记录在表4-1中。
(2)显示面板主菜单GNOME面板左端有一个带箭头的主菜单按钮。
单击并记录主菜单标题,填入表4-2。
(3)打开和最小化/最大化一个视窗单击面板上的文字处理器图标,打开一个文字处理视窗。
在打开文字处理视窗之后,可以单击右上角的按钮选择最小化、最大化或者还原。
(4)改变视窗的大小把鼠标光标移动到视窗的任何一边,可以看到一个箭头标志。
当该标志出现的时候按下鼠标左键不放,然后拖动视窗的边界可以迸行缩放。
(5)移动视窗单击视窗的标题栏保持不放。
拖动视窗到一个新的位置。
(6)处理重叠视窗在文字处理视窗打开的情况下,打开新的视窗会重叠或者覆盖住文字处理视窗。
新打开的视窗现在成为前端视窗或者说是当前进程。
为了把文字处理视窗从底层带到顶层来,可单击能够看见的视窗的任何部分。
如果看不到,则可单击前面视窗的左上角符号,打开“窗口菜单”,从中选择需要的视窗。
(7)关闭视窗单击视窗右上角“关闭窗口”按钮,可关闭当前视窗。
(8)处理工作区按钮●在工作空间1~4中分别打开不同的任务视窗。
●单击各个工作区按钮,在4个视窗中切换。
●关闭每一个视窗中正在运行的应用程序。
2、加载USB存储设备USB存储设备可以通过终端命令加载。
(1)插人USB存储设备,稍过片刻,打开终端,输入:[root@localhost ~] # fdisk -1窗口将显示类似下面的内容(根据硬件情况会有不同)Disk /dev/sda:16 MB,16220160 bytes4 heads,16 sectors/track,495 cylindersUnits = cylinders of 64 * 512 = 32768 bytesDevice Boot Start End Blocks Id System/dev/sda1 * 1 494 15795+ 1 FAT12————————————————————————————————Disk /dev/sdb:131 MB,131072000 bytes9 heads,32 sectors/track,888 cylindersUnits = cylinders of 288 * 512 = 147456 bytesDevice Boot Start End Blocks Id System/dev/sdbl * 1 889 127983+ 6 FAT16Partition 1 has different physical/logical endings:phys=(1000,8,32) logical=(888,7,31)(2)在/mnt目录下建立一个挂装USB存储器的目录[root@localhost ~ ] # mkdir /mnt/usb(3)运行装载设备命令,将USB设备挂装到/mnt/usb目录下[root@localhost ~ ]# mount -t msdos /dev/sdbl /mnt/usb(4)运行如下命令即可查看USB存储器中的文件信息[root@localhost ~ ]# ls /mnt/usb(5)运行如下命令即可卸载USB存储器:[root@localhost ~ ]# umount /mnt/usb3、重定向标准输出(1)访问命令行。
(2)重定向标准输出,创建一个文件。
重定向标准输出命令的格式是:command > file当指定文件名file不存在的时候,将创建一个新文件;如果文件名存在,它将被覆盖1)使用正确的命令核实当前所在目录位置;如果当前位置不在用户的主目录中,使用恰当的命令改变到主目录中。
2)如果希望把文件和目录列表截获,存储为用户主目录中的一个文件,这样可以追踪目录中有什么文件。
选择恰当的命令,把目录/bin下的文件用长列表的格式输出重定向到dir.list的文件。
3)使用1s命令核实新文件dir.list存在。
4)使用命令,以一次一屏的方式,来查看刚才创建的文件dir.list的内容。
5)使用head命令截获dir.list文件的前10行,通过重定向,创建一个叫做dir.list-top10的新文件。
使用more命令查看该文件的内容。
6)使用tail命令,截获dir.list文件的最后10行,通过重定向,创建一个叫做dir.list-taill0的新文件。
使用more命令查看该文件的内容。
7)截获cal -y命令的输出,把它存到名为calendar的文件中,查看文件的内容,截获了什么?请写出操作步骤及结果。
8)截获cal 2012命令的输出,把它存到名为calendar的文件中。
查看文件的内容。
其中有什么内容?观察calendar文件有什么变化?(3)向现有的文件追加输出。
如果想向一个现有的文件追加(添加到末尾)文本而不是覆盖它,可以使用双右尖括号“>>”。
当文件不存在的时候,这个操作会创建一个新文件,否则追加到已有文件末尾。
追加命令的格式是:command >> file1)输入命令,显示“Happy Birthday!”一行字,使用重定向符号截获输出,把它存到叫做bdayme 的文件中.2)输入命令,显示“YOURNAME!”一行字,使用双重定向符号,把输出追加到bdayme文件中。
查看bday4me文件的内容,其中有什么?3)输入命令,显示你出生年月的日历(如果在1991年的9月出生,输入Cal 9 1991),使用双重定向符号,把输出追加到bdayme文件中。
4)查看bdayme文件的内容。
注意这三个命令的输出在bdayme文件中已经被组合起来了。
4、使用管道符号“|”把一个命令的输出导入到另一个命令中。
1)使用管道元字符“|”,使1s –l /etc命令的输出成为more命令的输入。
观察得到的结果2)查看使用1s-l /etc | more命令列出来的文件,注意创建或修改的日期。
如果想查看在同一个月被创建或修改的文件或目录的列表,则可以使用grep命令对那个月进行搜索。
当月显示在列表中的时候,指定它(例如:Oct)。
输入命令ls –l /etc | grep Oct,观察输出结果。
3)目录的大小通常是4096字节。
输入命令1s -l | grep 4096,观察产生的列表4)可以使用多个管道连接多个命令。
ps命令用于查看Linux系统中运行什么进程,-e选项将给出每一个在系统中运行的进程。
把ps -e命令的输出输入给more命令。
记录命令行并观察结果。
5)把管道和重定向组合起来使用,达到特殊的效果。
输入命令创建一个名为top5.list的文件,内容为主目录中的头5行记录,记录使用各命令。
5、注销GNOME单击RedHat,在“GNOME帮助”菜单中选择“注销”命令,单击“确定”按钮确定注销,将会从当前的GNOME会话中退出,返回到Linux登录界面。
三、背景知识1、Linux的窗口管理器GNOME在Red Hat Linux 9中包括了一个功能强大的图形化界面——X Windows。
X Windows与MS Windows有相似之处,但具有本质区别。
X Windows只是操作系统的一个窗口环境,窗口管理器提供了X服务器所缺乏的图形化用户界面,包括窗口装饰的方法和启动应用程序的机制。
Red Hat Linux 9默认的窗口管理器是GNOME,通过它可以简易地使用应用程序和文件系统资源。
GNOME 是GNU网络对象模块化环境(Network Object Model Enviroment)的英文缩写。
GNOME是一个整合式的桌面环境。
图形化的桌面环境能够进入计算机上的应用程序和系统设置,它的桌面提供了三种主要工具来使用系统上的应用程序:面板图标、桌面图标、以及菜单系统。
横贯桌面底部的长条叫做“面板”(Panel)。
面板上包含应用程序启动器、用于显示警告图标的通知区域、以及叫做“小程序”(applet)的小型应用程序。
它们允许你控制音量、切换工作区、显示系统状态,允许你运行指定任务或者监控你的系统及服务。
面板上默认运行几个小程序。
这些小程序比较重要,主要有“工作区切换器”和“任务条”。
(1)工作区切换器工作区又称虚拟控制台,是Linux操作系统的一大特色,可使用户同时在多个控制台上工作,由此感受Linux操作系统的多用户、多任务的能力。
Linux的虚拟控制台访问方式允许一个用户在同一时间从控制台(与系统直接相连的监视器和键盘)进行多次登录;工作区切换器把每个工作区(或桌面)都显示为一个小方块按纽,“工作区”按钮让用户可以在一个工作空间中打开一系列应用程序,而在另一个工作空间中打开另一系列应用程序。
每一个工作区可以有不同的背景(墙纸)。
工作区从1到4命名。
能够通过右键单击其中任意一个按钮重新命名。
默认情况下,工作区1是打开的。
可以单击每一个区按钮从一个工作区切换到另一个工作区。
也可以使用键盘快捷方式Ctrl+“↑/↓/←/→”在各工作区桌面间进行切换。
(2)任务条工作区切换器旁边的小程序是任务条。
任务条是用来显示任意虚拟桌面上运行的应用程序名称的小程序。
它在最小化应用程序的时候很有用,该程序似乎会从桌面消失,一旦它在桌面上消失,可以点击它在任务条上的名称使其重现。
(3)应用程序启动器根据需要,还可以在面板上添加更多小程序和启动器图标。
右击面板上的未用区域,选择“添加到面板”,然后从“附件”菜单中选择。
选定了小程序后,它就会出现在面板上。
要在面板上添加一个启动器,可右击面板上的未用区域,选择“添加到面板”→“启动器”。
这会启动一个对话框。
在该对话框中输入应用程序的名称、位置和启动它的命令,甚至为这个应用程序选择一个图标。