文档库 最新最全的文档下载
当前位置:文档库 › 实验一 命令解释程序

实验一 命令解释程序

实验一 命令解释程序
实验一 命令解释程序

浙江万里学院《操作系统》实验报告

实验名称:命令解释程序

实验时间:2018.9.26 指导教师:詹卫华

组号:9

学号:2016011147 姓名:林文辉班级:计算机164 学号:2016011133 姓名:王旭升班级:计算机164

一、实验目的

(1)掌握命令解释程序的设计方法。

(2)学习Windows系统调用的方法,了解目录操作、进程控制等相关知识

二、实验内容

实现一个简单的命令解释程序,具有如下特征:

(1)能够执行cd,dir, tasklist, taskkill,history, exit等内部命令

(2)能够创建前台进程和后台进程。

1. 功能设计

(1)重要的数据结构设计

1.历史命令循环数组

在history命令中,用数组来存放输入过的历史命令。假设一个能够记录12条历史记录的数组,数组的定义如下:

typedef struct ENV_HISTORY {

int start=0; // 队列的头指针

int end=0; // 队列的尾指针

char his_cmd[12][100]; // 队列数组(顺序结构的队列)

} ENV_HISTORY;

ENV_HISTORY envhis; // 定义队列变量(为队列分配内存空间)

2.文件信息链表

在实验中中,我们需要把dir命令取得的文件信息用链表保存,输出这些信息时对链表遍历。

链表结点的定义如下:

struct files_Content

{

FILETIME time; // 文件创建时间

char name[200]; // 文件名

int type; //普通文件, 目录标识,其中1为普通文件,0为目录int size; // 文件大小

files_Content *next; // 构成链表的链接指针

}files_Conten; ;

(2)主要函数或接口设计

主要函数

cd命令处理函数

void cd_cmd(char *dir)

dir命令处理函数

void dir_cmd(char *dir)

时间处理函数

void ftime(FILETIME filetime)

获得系统当前进程列表

void GetProcessList()

获得最近输入的命令

void history_cmd()

将输入命令行添加到命令历史中

void add_history(char *)

创建进程

HANDLE process(int,char[])

kill进程

BOOL killProcess(char *)

回调函数

OOL WINAPI ConsoleHandler(DWORD CEvent)

显示帮助信息

void help()

接口设计

1.GetCurrentDirectory函数

功能:查找当前进程的当前目录,调用成功返回装载到lpBuffer的字节数。格式:

DWORD GetCurrentDirectory (

DWORD nBufferLength,

LPTSTR lpBuffer

)

2.WaitForSingleObject函数

功能:等待一个事件信号直至信号出现或者超时。若等到信号则返回

WAIT_OBJECT_0,若等待超过dwMiliseconds时间还是无信号,则返回

WAIT_TIMEOUT

格式:

DWORD WaitForSingleObject (

HANDLE hHandle,

DWORD dwMilliseconds

)

3.SetCurrentDirectory函数

功能:设置当前目录。返回非0表示成功,返回0表示失败。

格式:

BOOL SetCurrentDirectory (

LPCTSTR lpPathName

)

4.FindFirstFile函数

功能:用于从一个文件夹(包括子文件夹)中搜索指定文件。

格式:

HANDLE FindFirstFile (

LPCTSTR lpFileName,

LPWIN32_FIND_DATA lpFindFileData

)

5.FindNextFile函数

功能:继续查找FindFirstFile函数搜索后的文件。格式:

HANDLE FindNextFile (

HANDLE hFindFile,

LPWIN32_FIND_DATA lpFindFileData

)

6.GetVolumeInformation函数

功能:用于获取磁盘相关信息。

格式:

BOOL GetVolumeInformation (

LPCTSTR lpRootPathName,

LPCTSTR lpVolumeNameBuffer,

DWORD nVolumeNameSize,

LPWORD lpVolumeSerialNumber,

LPWORD lpMaximunComponentLength,

LPWORD lpFileSystemFlags,

LPCTSTR lpFileSystemNameBuffer,

DWORD nFileSystemNameSize

)

7.GetDiskFreeSppaceEx函数

功能:获取与一个磁盘的组织以及剩余容量有关的信息

格式:

HANDLE GetDiskFreeSppaceEx (

LPCTSTR lpRootPathName,

PULARGE_INTEGER lpFreeBytesAvailableToCaller,

PULARGE_INTEGER lpTotalNumberOfBytes,

PULARGE_INTEGER lpTotalNumberOfFreeBytes

)

8.FileTimeToLocalFileTime函数

功能:将一个FILETIME结构转换成本地时间。

格式:

BOOL FileTimeToLocalFileTime (

const FILETIME* lpFileTime,

LPFILETIME lpLocalFileTime

)

9.FileTimeToSystemTime函数

功能:根据一个FILETIME结构的内容,装载一个SYSTENTIME结构。

格式:

BOOL FileTimeToSystemTime (

const FILETIME* lpFileTime,

LPFILETIME lpSystemTime

)

10.CreateToolhelp32Snapshot函数

功能:为指定的进程、进程使用的堆(heap)、模块(module)、线程(thread)建立一个快照(snapshot)。快照建立成功则返回快照的句柄,失败则返回

INVALID_HANDL_VALUE。

格式:

HANDLE WINAPI CreateToolhelp32Snapshot (

DWORD dwFlags,

DWORD th32ProcessID

)

11.Process32First函数

功能:是一个进程获取函数,当使用CreateToolhelp32Snapshot()函数获得当前运行进程的快照后,可以使用Process32First ( )函数获得第一个进程的句柄。

格式:

BOOL WINAPI Process32First (

HANDLE hSnapshot,

LPPROCESSENTRY32 lppe

)

12.Process32Next函数

功能:获取快照中下一个进程信息。

格式:

BOOL WINAPI Process32Next (

HANDLE hSnapshot,

LPPROCESSENTRY32 lppe

)

13.OpenProcess函数

功能:该函数打开一个已经存在的进程对象,若成功,返回值是指定进程的打开句柄。若失败,则返回空。

格式:

HANDLE OpenProcesst (

DWORD dwDesiredAccess,

BOOL bInheritHandle,

DWORD dwProcessID

)

14.SetConsoleCtrlHandler函数

功能:添加或删除一个事件钩子(Handler)。

格式:

BOOL SetConsoleCtrlHandler (

PHANDLER_ROUTINE HandlerRoutine,

BOOL Add

)

15.CreateProcess函数

功能:创建一个新进程和它的主线程,这个新进程运行指定的可执行文件。格式:

BOOL CreateProcess (

LPCTSTR lpApplicationName,

LPCTSTR lpCommandLine,

LPSECURITY_ATTRIBUTES lpProcessAttributes,

LPSECURITY_ATTRIBUTES lpThreadAttributes,

BOOL bInheritHandles,

DWORD dwCreationFalgs,

LPVOID lpEnvironment,

LPCTSTR lpCurrentDirectory,

LPSTARTUPINFO lpStartupInfo,

LPPROCESS_INFORMATION lpProcessInformation

)

16.GetExitCodeProcess函数

功能:获取一个已中断进程的退出代码。

格式:

BOOL GetExitCodeProcess (

HANDLE hProcess,

LPDWORD lpExitCode

)

17.TerminateProcess函数

功能:以给定的退出码终止进程。

格式:

BOOL TerminateProcee (

HANDLE hProcess,

UINT uExitCode

)

2. 源程序

WinShell.c

//WinShell.cpp : 定义控制台应用程序的入口点。

//

#define_WIN32_WINNT0x0501/*Windows API*/

#include

#include

#include

#include

#include

#include

#include

#include

#include

#include"WinShell.h"

/**************************时间处理函数**************************/

void ftime(FILETIME filetime)

{

SYSTEMTIME systemtime;

if (filetime.dwLowDateTime == -1)

wprintf(L"Never Expires");

else

{

if (FileTimeToLocalFileTime(&filetime, &filetime) != 0)

{

if (FileTimeToSystemTime(&filetime, &systemtime) != 0)

{

char str[50];

wsprintf(str, "%d-%02d-%02d %02d:%02d",

systemtime.wYear, systemtime.wMonth, systemtime.wDay, systemtime.wHour, systemtime.wMinute);

printf("%s", str);

}

else

{

wprintf(L"FileTimeToSystemTime failed");

}

}

else

{

wprintf(L"FileTimeToLocalFileTime failed");

}

}

}

/**************************回调函数**************************/

BOOL WINAPI ConsoleHandler(DWORD CEvent)

{

switch (CEvent)

{

case CTRL_C_EVENT:

break;

case CTRL_BREAK_EVENT:

break;

case CTRL_CLOSE_EVENT:

break;

case CTRL_LOGOFF_EVENT:

break;

case CTRL_SHUTDOWN_EVENT:

break;

}

return TRUE;

}

int main()

{

/**************************函数声明**************************/

void cd_cmd(char *dir);

void dir_cmd(char *dir);

// void ftime(FILETIME filetime);

void GetProcessList();

void history_cmd();

void add_history(char *inputcmd);

HANDLE process(int bg,char appName[]);

BOOL killProcess(char *pid);

// BOOL WINAPI ConsoleHandler(DWORD CEvent);

void help();

char c, *input, *arg[2], path[BUFSIZE];

int input_len=0,is_bg=0,i,j,k;

HANDLE hprocess;

DWORD dwRet;

while(1)

{

/*指针数组初始化*/

for(i=0;i<2;i++)

arg[i]=NULL;

/*获得当前目录,返回地址存入path BUFSIZE为最多能够保存的地址长度*/

dwRet=GetCurrentDirectory(BUFSIZE,path);

if(dwRet==0)

{

/*返回当前目录失败*/

printf("GetCurrentDirectory failed (%d)\n",GetLastError()); }

else if(dwRet>BUFSIZE)

{

/*长度小于返回地址长度,输出需要多少长度*/

printf("GetCurrentDirectory failed (buffer too

small;need %d chars)\n",dwRet);

}

else

{

/*输出当前目录*/

printf("%s>",path);

}

/**************************输入**************************/

input_len=0;

/*过滤无用字符*/

while((c=getchar()) == ' '|| c == '/t' || c == EOF)

if(c == '\n')

continue;

while(c != '\n')

{

buf[input_len++]=c;

c=getchar();

}

buf[input_len++]= '\0';

/*分配动态存储空间,将命令从缓存复制到input*/

input=(char*)malloc(sizeof(char) * (input_len));

strcpy(input,buf);

/**************************解析指令**************************/

for(i=0,j=0,k=0;i

{

if(input[i] == ' '|| input[i] == '\0')

{

if(j==0)

continue;

else

{

buf[j++]='\0';

arg[k]=(char*)malloc(sizeof(char)*j);

strcpy(arg[k++],buf);

j=0;

}

}

else

{

buf[j++]=input[i];

}

}

/**************************内部命令处理

**************************/

/*cd*/

if (strcmp(arg[0],"cd") == 0){

add_history(input);

for(i=3,j=0; i<= input_len; i++)

buf[j++]=input[i];

buf[j]='\0';

arg[1]=(char*) malloc(sizeof(char) *j);

cd_cmd(arg[1]);

free(input);

continue;

}

/*dir*/

if(strcmp(arg[0], "dir") == 0){

char *route;

add_history(input);

if (arg[1] == NULL)

{

route=path;

dir_cmd(route);

}

else

dir_cmd(arg[1]);

free(input);

continue;

}

/*tasklst*/

if(strcmp(arg[0], "tasklist") == 0){

add_history(input);

GetProcessList();

free(input);

continue;

}

/*前台进程*/

if(strcmp(arg[0], "fp") == 0){

add_history(input);

if (arg[1] == NULL)

{

printf("没有指定可执行文件\n");

free(input);

continue;

}

is_bg=0;

hprocess=process(is_bg,arg[1]);

if(WaitForSingleObject(hprocess,INFINITE)==WAIT_OBJECT_0) free(input);

continue;

}

/*后台进程*/

if(strcmp(arg[0], "bg&") == 0){

if (arg[1] == NULL)

{

printf("没有指定可执行文件\n");

free(input);

continue;

}

is_bg=1;

process(is_bg,arg[1]);

free(input);

continue;

}

/*kill进程*/

if(strcmp(arg[0], "taskkill") == 0){

BOOL success;

add_history(input);

success=killProcess(arg[1]);

if(!success)

printf("kill process failed!\n");

free(input);

continue;

}

/*显示历史*/

if(strcmp(arg[0], "history") == 0){

add_history(input);

history_cmd();

free(input);

continue;

}

/*exi*/

if(strcmp(arg[0], "exit") == 0){

add_history(input);

printf("Bye bye!\n");

free(input);

break;

}

/*help*/

if(strcmp(arg[0], "help") == 0){

add_history(input);

help();

free(input);

continue;

}

else

{

printf("please type in correct command!\n");

}

}

return0;

}

/**************************相关命令处理函数**************************/ /*cd*/

void cd_cmd(char *route)

{

if(!SetCurrentDirectory(route))

{

printf(TEXT("SetCurrentDirectory failed

(%d)\n"),GetLastError());

}

}

/*dir*/

void dir_cmd(char *route)

{

WIN32_FIND_DATA FindFileData;

files_Content head, *p, *q;

HANDLE hFind=INVALID_HANDLE_VALUE;

DWORD dwError;

char volume_name[256];

int file=0, dir=0;

__int64 sum_file=0;

__int64 l_user, l_sum, l_idle;

unsigned long volume_number;

char *DirSpec[3];

DirSpec[0]=(char*)malloc(sizeof(char) * 2);

strncpy(DirSpec[0], route ,1);

*(DirSpec[0] +1)='\0';

DirSpec[1]=(char*)malloc(sizeof(char) * 4);

strcpy(DirSpec[1],DirSpec[0]);

strncat(DirSpec[1], ":\\", 3);

DirSpec[2]=(char*)malloc(sizeof(char) * (strlen(route) +2));

DirSpec[3]=(char*)malloc(sizeof(char) * (strlen(route) +5));

strcpy(DirSpec[2],route);

strcpy(DirSpec[3],route);

strncat(DirSpec[2], "\\", 2);

strncat(DirSpec[3], "\\*.*", 5);

hFind = FindFirstFile(DirSpec[3], &FindFileData);

if (hFind == INVALID_HANDLE_VALUE)

{

printf("Invalid file handle. Error is %u\n", GetLastError()); }

else

{ /*获取卷的相关信息*/

GetVolumeInformation(DirSpec[1], volume_name, 50,

&volume_number, NULL, NULL, NULL, 10);

if (strlen(volume_name) == 0)

printf("驱动器 %s 中的卷没有标签。\n", DirSpec[0]);

else

printf("驱动器 %s 中的卷是 %s \n", DirSpec[0], volume_name);

printf(" 卷的序列号是 %X \n\n", DirSpec[2]);

head.time = FindFileData.ftCreationTime;

strcpy(https://www.wendangku.net/doc/cc9762146.html,, FindFileData.cFileName);

if (FindFileData.dwFileAttributes == FILE_ATTRIBUTE_DIRECTORY) {

head.type = 0;

dir++;

}

else

{

head.type = 1;

head.size = FindFileData.nFileSizeLow;

file++;

sum_file += FindFileData.nFileSizeLow;

}

p = &head;

while (FindNextFile(hFind, &FindFileData) != 0)

{

q = (files_Content*)malloc(sizeof(files_Content));

q->time = FindFileData.ftCreationTime;

strcpy(q->name, FindFileData.cFileName);

if(FindFileData.dwFileAttributes ==

FILE_ATTRIBUTE_DIRECTORY)

{

q->type = 0;

dir++;

}

else

{

q->type = 1;

q->size = FindFileData.nFileSizeLow;

file++;

sum_file += FindFileData.nFileSizeLow;

}

p->next = q;

p = q;

}

p->next = NULL;

p = &head;

while (p != NULL)

{

ftime(p->time);

if (p->type == 0)

printf("\t

\t\t");

else

printf("\t\t%9lu", p->size);

printf("\t%s\n", p->name);

p = p->next;

}

free(p);

/*显示文件和目录总数以及磁盘空间相关信息*/

printf("%d15 个文件\t\t\t%I64d 字节\n", file, sum_file);

GetDiskFreeSpaceEx(DirSpec[1], (PULARGE_INTEGER)&l_user, (PULARGE_INTEGER)&l_sum, (PULARGE_INTEGER)&l_idle);

printf("%d15 目录\t\t\t%I64d 可用字节\n", dir, l_idle);

dwError = GetLastError();

FindClose(hFind);

if (dwError!= ERROR_NO_MORE_FILES)

{

printf("FindNextFile error. Error is %u\n", dwError);

}

}

}

/**************************获取系统进程命令**************************/

void GetProcessList()

{

HANDLE hProcessSnap = NULL;

PROCESSENTRY32 pe32 = { 0 };

hProcessSnap = CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS, 0);

if (hProcessSnap == INVALID_HANDLE_VALUE)

printf("\n CreateToolhelp32Snapshot()failed:%d", GetLastError()); pe32.dwSize = sizeof(PROCESSENTRY32);

if (Process32First(hProcessSnap, &pe32))

{

DWORD dwPriorityClass;

printf("\n优先级\t\t进程ID\t\t线程\t\t进程名\n");

do {

HANDLE hProcess;

hProcess = OpenProcess(PROCESS_ALL_ACCESS, FALSE,

pe32.th32ProcessID);

dwPriorityClass = GetPriorityClass(hProcess);

CloseHandle(hProcess);

printf("%d\t", pe32.pcPriClassBase);

printf("\t%d\t", pe32.th32ProcessID);

printf("\t%d\t", https://www.wendangku.net/doc/cc9762146.html,tThreads);

printf("\t%s\n", pe32.szExeFile);

} while (Process32Next(hProcessSnap, &pe32));

}

else

printf("\n Process32finst() failed:%d", GetLastError());

CloseHandle(hProcessSnap);

}

/**************************history命令**************************/ void add_history(char *inputcmd)

{

envhis.end = (envhis.end + 1) % HISNUM;

if (envhis.end == envhis.start)

{

envhis.start = (envhis.start + 1) % HISNUM;

}

strcpy(envhis.his_cmd[envhis.end], inputcmd);

}

/**************************显示history命令**************************/ void history_cmd()

{

int i, j = 1;

if (envhis.start == envhis.end);

else if(envhis.start

{

for (i = envhis.start + 1; i <= envhis.end; i++)

{

printf("%d\t%s\n", j, envhis.his_cmd[i]);

j++;

}

}

else

{

for (i = envhis.start + 1; i < HISNUM; i++)

{

printf("%d\t%s\n", j, envhis.his_cmd[i]);

j++;

}

for (i = 0; i <= envhis.end + 1; i++)

{

printf("%d\t%s\n", j, envhis.his_cmd[i]);

j++;

}

}

}

/**************************创建进程命令**************************/ HANDLE process(int bg, char appName[])

{

STARTUPINFO si;

PROCESS_INFORMATION pi;

si.cb == sizeof(si);

GetStartupInfo(&si);

ZeroMemory(&pi, sizeof(pi));

if (bg == 0)

{

if (SetConsoleCtrlHandler((PHANDLER_ROUTINE)ConsoleHandler, TRUE) == FALSE)

{

printf("Unable to install handler!\n");

return NULL;

}

CreateProcess(NULL, appName, NULL, NULL, FALSE, 0, NULL, NULL, &si, &pi);

return pi.hProcess;

}

else

{

si.dwFlags = STARTF_USESHOWWINDOW;

si.wShowWindow = SW_HIDE;

CreateProcess(NULL, appName, NULL, NULL, FALSE,

CREATE_NEW_CONSOLE, NULL, NULL, &si, &pi);

return NULL;

}

}

/**************************kill进程命令**************************/ BOOL killProcess(char *pid)

{

int id, i;

DWORD dwExitStatus;

HANDLE hprocess;

id = atoi(pid);

hprocess = OpenProcess(PROCESS_TERMINATE, FALSE, id);

GetExitCodeProcess(hprocess, &dwExitStatus);

if (i = TerminateProcess(hprocess, dwExitStatus))

return TRUE;

else

return FALSE;

}

/**************************显示帮助**************************/

void help()

{

printf("cd:切换当前目录。\n输入形式:cd..\n\t cd[drive:][path](cd

c:\\temp) \n注:cd命令以空格为分隔符,区分命令和参数。\n\n");

printf("dir:显示目录中的文件和子文件列表。\n输入形式:dir \n\t

dir[drive:][path](dir c:\\temp) \n注:cd命令cd命令以空格为分隔符,区分命令和参数。\n\n");

printf("tasklist:显示系统中当前的进程信息。\n输入形式:tasklist\n\n");

printf("fp:创建进程并在前台执行。\n输入形式:fp\n\n");

printf("bg&:创建进程并在后台执行。\n输入形式:bg&\n\n");

printf("taskkill:终止进程。\n输入形式:taskkill [pid]\n注:taskkill 命令以空格为分隔符,pid为进程id。\n\n");

printf("history:显示历史命令。\n输入形式:history\n\n");

printf("exit:退出。\n输入形式:exit\n\n");

}

WinShell.h

#define BUFSIZE MAX_PATH

#define HISNUM12/*12个历史命令*/

char buf[BUFSIZE];

/*保存历史命令的结构体*/

typedef struct ENV_HISTROY{

int start;

int end;

char his_cmd[HISNUM][100];

}ENV_HISTORY;

ENV_HISTORY envhis;

/*保存文件或目录相关信息*/

typedef struct files_Content

{

FILETIME time;

char name[200];

int type;

int size;

struct files_Content *next;

}files_Content;

3. 运行结果

Dir与CD指令的相关测试

Help指令

Tasklisit

常用网络测试命令实验报告

西安郵電學院 计算机网络技术及应用实验 报告书 院部名称:管理工程学院 学生姓名:XXX 专业名称:信息管理与信息系统班级:10XX 学号:0210XXXX 时间:2012年 5 月 4 日

一、实验目的 1.掌握基本的网络知识。 2.掌握CMD一些基本命令,并学会运用这些命令排除一些基本问题。 二、具体实验内容及步骤 1.Ping命令的使用 点击―开始‖—〉―运行‖,在―运行‖对话框―打开‖后键入cmd,按―确定‖,到命令行方式下。 实验步骤: 1)回环测试。这个ping命令被送到本地计算机IP软件。这一命令可以用来检测TCP/IP的安装或运行存在的某些最基本的问题。 C:\>ping 127.0.0.1 2)Localhost是127.0.0.1的别名,我们也可以利用localhost来进行回环测试,每台计算机都能够将名称localhost转换成地址127.0.0.1。如果做不到这一点,则表示主机文件(host)中存在问题。 C:\>ping localhost

3)Ping本机IP。若无回复,说明本地计算机的TCP/IP安装或配置存在问题。 C:\>ping –t 192.168.2.37 在命令中加入参数-t,本地计算机应该始终对该ping命令做出应答,使用ctrl+C终止操作。 4)Ping局域网内其它主机IP。该命令对局域网内的其它主机发送回送请求信息。

如果能够收到对方主机的回送应答信息,表明本地网络中的网卡和传输媒体运行正常。 C:\>ping 192.168.2.55 5)Ping网关:如果能够收到应答信息,则表明网络中的网关路由器运行正常。 C:\>ping 192.168.2.1 6)Ping域名服务器:如果能够收到应答信息,则表明网络中的域名服务器运行正常。 C:\>ping 202.117.128.2

CAD常用命令汇总及详解

CAD中有哪些命令?我们可以把它们分为几类。一类是绘图类,二类是编辑类,三类是设置类,四类是其它类,包括标注、视图等。我们依次分析。 第一类,绘图类。常用的命令有: Line 直线 Xline 构造线 mline 双线 pline 多义线 rectang 矩形 arc 圆弧 circle 圆 hatch 填充 boundary 边界 block 定义块 insert 插入快 第二类,编辑类。常用的命令有: Matchprop 特性匹配 Hatchedit 填充图案编辑 Pedit 多义线编辑 Erase 擦除 Copy 拷贝 Mirror 镜像 Offset 平移 Array 阵列 Move 移动 Rotate 旋转 Scale 缩放 Stretch 拉伸 Lengthen 拉长 Trim 裁减 Extend 延伸 Break 打断 Fillet 倒圆角 Explode 炸裂 Align 对齐 Properties 属性

绘图工具栏: 直线(L):全称(line) 在屏幕上指定两点可画出一条直线。也可用相对坐标 或者在正交模式打开的情况下,直接给实际距离鼠标拖动来控制方向 构造线(XL):全称(xline) H为水平V为垂直O为偏移A为角度B为等分一个角度。 多段线(PL):全称(pline) 首先在屏幕上指定一点,然后有相应提示: 指定下一个点或[圆弧(A)/半宽(H)/长度(L)/放弃(U)/宽度(W)]。可根据需要来设置。 其中“圆弧”指定宽度可画任意角度圆弧;“半宽”指多段线的一半宽度,即如要高线宽为10,则5;“长度”给相应的值,则画出相应长度的多段线;“放弃”指放弃一次操作;“宽度”指多段线的宽度 多边形(pol):全称(polygon) 所绘制多边形为正多边形,边数可以自己设 E:根据边绘制多边形也可根据圆的半径利用外切和内接来画正多边形 矩形(REC):全称(rectang) 点击矩形工具后出现下列提示: 指定第一个角点或[倒角(C)/标高(E)/圆角(F)/厚度(T)/宽度(W)] 其中“倒角”是将90度直角的两条边割去一点。变成一个斜角。“标高”是空间上的意义可以在三视图当中展现出来,标高是相对的;“圆角”:即是将四个直角边倒成半径为X的圆角;“厚度”:空间上的意义,可在Z轴上表现出来“宽度”:平面空间的概念,指矩形四边的宽度。 圆弧(ARC或A):默认为3点画圆弧,成弧方向为逆时针,画优弧半径给负值。绘图菜单中有如下选项: 起点、圆心、端点; 起点、圆心、角度; 起点、圆心、长度; 起点、端点、角度; 起点、端点、方向; 起点、端点、半径; 圆心、起点、端点; 圆心、起点、角度; 圆心、起点、长度;

ORACLE SQLPLUS 常用命令及解释

Oracle SQLPlus常用命令及解释 1.@ 执行位于指定脚本中的SQLPlus语句。可以从本地文件系统或Web服务器中调用脚本。可以为脚本中的变量传递值。在iSQL*Plus中只能从Web服务器中调用脚本。 2.@@ 执行位于指定脚本中的SQL*Plus语句。这个命令和@(“at”符号)命令功能差不多。在执行嵌套的命令文件时它很有用,因为它会在与调用它的命令文件相同的路径或url中查找指定的命令文件。在iSQL*Plus中只支持url形式。 3./ 执行保存在SQL缓冲区中的最近执行的SQL命令或PL/SQL块。在SQL*Plus命令行中,可在命令提示符或行号提示符使用斜线(/)。也可在iSQL*Plus的输入区中使用斜线(/)。斜线不会列出要执行的命令。 4.ACCEPT 可以修改既有变量,也可定义一个新变量并等待用户输入初始值,读取一行输入并保存到给出的用户变量中。ACCEPT在iSQL*Plus中不可用。 5.APPEND 把指定文本添加到SQL缓冲区中当前行的后面。如果text的最前面包含一个空格可在APPEND和text间输入两个空格。如果text的最后是一个分号,可在命令结尾输入两个分号(SQL*Plus会把单个的分号解释为一个命令结束符)。APPEND 在iSQL*Plus中不可用。 6.ARCHIVE LOG 查看和管理归档信息。启动或停止自动归档联机重做日志,手工(显示地)归档指定的重做日志,或者显示重做日志文件的信息。 7.ATTRIBUTE 为对象类型列的给定属性指定其显示特性,或者列出单个属性或所有属性的当前显示特性。 8.BREAK 分开重复列。指定报表中格式发生更改的位置和要执行的格式化动作(例如,在列值每次发生变化时跳过一行)。只输入BREAK而不包含任何子句可列出当前的BREAK定义。 9.BTITLE 在每个报表页的底部放置一个标题并对其格式化,或者列出当前BTITLE定义。

实验二 Tutorial 2 Linux 基本命令操作2

Tutorial 2 Linux 基本命令操作2 1 实验简介 虽然目前linux 图像界面的使用已相当的方便,但是有些操作还是在字符界面下使用比较灵活。除此之外,使用字符界面登陆linux 系统,系统资源的消耗也比较少,从而可以提高系统性能。 本次实验内容主要包括:linxu 下文件和目录操作命令的使用方法。 2 实验目的 (1)掌握远程登录Linux 系统的软件putty 的基本用法。 (2)掌握文件和目录的区别 (3)熟悉文件和目录的相关操作:建立、复制、移动、删除、重命名、查找、统计等 (4)掌握输入、输出重定向的用法 (5)掌握find 的常见查找模式 (6)理解文件的类型及查看 3 实验准备 (1)了解远程登录的概念,以及远程登录软件putty。 (2)了解linux 命令行的基本概念,掌握通配符的使用方法。 (3)了解绝对路径和相对路径的概念及表达方法。 4 远程登录软件putty的基本用法实验步骤 基本做法同实验1. 5 Linux 文件和目录操作命令 说明:在下面的文档中的$为系统提示符。 (1) 使用cd 和pwd 命令,掌握相对路径和绝对路径。 对照右图,假如从目录user3 开始,键完以下命令后,你的位置会在哪里。 请将结果填在横线上。 $pwd /home/user3 $cd .. $pwd $cd.. $cd usr $pwd $cd /usr $pwd $cd.. /tmp $pwd $cd.

$pwd (2)检查当前的子目录pwd。 $ pwd (3) 在你的注册目录下创建(mkdir)子目录:dir1、dir2。 $ mkdir dir1 dir2 (4) 在你的主目录中创建一个叫junk 的目录。将这个目录变为工作目录,应当使用什么命令?这个新目录的绝对路径名是什么? (5) 在主目录创建以下目录,要求只能用一个命令行: junk/dira/dirl junk/dira junk/dira/dir2 junk/dira/dirl/dirc 你碰到什么问题了吗?如果碰到问题,在重试之前,将刚才创建的所有目录删除,这个删除应该使用哪一个命令?mkdir –p junk/dira/dir1/dirc junk/dira/dir2 (-p创建父目录) (6) 在主目录仅使用rmdir 命令,删除在junk 目录下的所有子目录。仅用一个rmdir 命令如何实现这一操作? rmdir {junk/dira/dir2,junk/dira/dir1/dirc,junk/dira/dir1,junk/dira} (7) 使用“touch 文件名”方法在你的注册目录下建立文件file1 和file2 $touch file1 file2 (8) 将file1 file2 复制到dir1 中,并察看注册目录与dir1 目录下有何变化? $ cp file1 file2 dir1 (9) 将文件file1,file2 从注册目录移动至dir2 中,再察看注册目录与dir2目录有何变化? $mv file1 file2 dir2 (10) 将dir2 中的文件file1 改名为myfile1 $ mv /dir2/file1 /dir2/myfile1 (11) 请使用绝对路径删除文件myfile1 $ rm /root/dir2/myfile1 (12)分屏显示/bin 目录下文件的详细信息。 $cd /bin $list –l | more (13)回到根目录,利用cp 命令复制系统文件/etc/profile 到当前目录下。 $ cd ~ $ cp /etc/profile . (14)复制文件profile 到一个新文件profile.bak,作为备份。 (15)用less 命令分屏查看文件profile 的内容,注意练习less 命令的各个子命令,如b、空格键、q 、/字符串(查找)等,并对then 关键字查找。 (16)用grep 命令在profile 文件中对关键字then 进行查询。 (17) 在家目录下创建目录test,并复制/etc 目录下的最后四个字符为.ini的文件到test 目录下。 (18)使用gzip 命令对test 下的文件进行压缩。 (19)使用tar 命令对test 下的文件打包。 (20)把用tar 命令打包的文件解包,并用gzip 命令对文件进行解压缩。 (21)利用tar 命令把test 中的文件压缩打包。 (22) 在/var/lib 目录下查找所有文件其所有者是games 用户的文件。

习题10解答

习题10 10.1何谓操作系统与用户的接口?有哪几种类型?其主要的功能是什么? 操作系统与用户接口的目标就是提供一个友好的用户访问操作系统的接口,使得用户能将自己的要求告诉操作系统,同时也要构造一个反向接口使系统能够利用该接口告知用户目前的工作情况。 一般,操作系统为用户提供两种接口:一类用于程序一级的编程接口,供用户程序和系统程序调用操作系统的服务和功能,由一组系统调用(system call)和高级语言库函数组成。另一类是用于作业(或功能)控制一级,供用户组织和控制自己的作业运行,其中又分为脱机用户和联机用户两种不同的接口。前者对应命令或脚本(脱机);后者体现为交互式联机命令行、菜单式或GUI图形用户接口(联机)。 10.2命令文件是什么?它完成什么功能?如何组织命令文件? 把所需执行的一系列命令组装成文件,然后用文件名作为命令名执行所需命令序列,从而自动控制作业的运行,例如,MS-DOS操作系统中的批处理(扩展名为BA T),用户可预先把一系列命令组织在BA T文件中,一次建立,多次执行。 例如: echo on file 25 buffers 20 remark 设置有关文件与缓冲区 copy a:\data\*.exe d:\fox\data > null edit main.prg foxplus echo off 有的操作系统还支持在命令文件使用循环、分支、转移、判别等语法结构,可以写出带形式参数的批命令文件,甚至允许嵌套形式调用其他命令文件。当带形式参数的批命令文件执行时,可用不同的实际参数去替换,因而,此类批命令文件便可以执行不同的命令序列,大大增强了命令接口的处理能力。例如,UNIX和Linux的Shell不但是一种交互型命令解释程序,也是一种命令级程序设计语言解释系统,它允许用户使用Shell简单命令、位置参数和控制流语句编制带形式参数的批命令文件,称作Shell文件或Shell过程,Shell可以自动解释和执行该文件或过程中的命令。 命令文件方式实现了联机状态下的批处理操作,对一些重复运行的作业非常有用。 10.3试说明命令解释程序的主要功能。 命令解释程序是操作系统最重要的系统程序,其主要功能是读人作业控制卡或接收用户输入的命令行,作出相应的解释并执行该命令提出的对作业的处理要求。命令解释程序通常会保存一张命令名字(动词)表,其中记录着所有操作命令及其处理程序的人口地址或相关信息。当一个新的批作业被启动,或新的联机用户登录进系统时,系统就自动地执行命令解释程序(详见第2章有关作业控制部分的讨论)。 10.4什么是系统调用?它的主要功能是什么?请举例说明Linux系统调用的使用。 系统调用是操作系统提供给用户编程的惟一接口,即用户在程序中调用操作系统所提供的相关功能,动态请求和释放系统资源,完成与计算机硬件部分相关的工作以及控制程序的

实验报告2 常用网络命令的使用

计算机网络实验报告 班级信工(2)班日期 2016-5-12 学号 20130702047 姓名李格 实验名称常用网络命令的使用 一、实验目的 1. 掌握几种常用的网络命令,通过使用这些命令能检测常见网络故障。 2. 理解各命令的含义,并能解释其显示内容的意义。 二、实验步骤 (一)ping 命令的使用 1、单击开始按钮,输入cmd 并按回车键,进入windows DOS环境。 2、输入ping/? 回车,了解ping命令的基本用法。结果如下: 最常用的ping命令是在ping后面直接跟域名或IP地址。测试内网或外网的联通情况。 3、依次输入以下命令并查看分析结果。 (1)输入ping https://www.wendangku.net/doc/cc9762146.html,并回车查看分析结果。 结果如下:

分析: (2)输入ping 218.197.176.10并回车查看分析结果。结果如下: 分析: (3)输入ping https://www.wendangku.net/doc/cc9762146.html, 并回车查看分析结果。结果如下: 分析: (3)输入pi ng 121.14.1.189 并回车查看分析结果。

结果如下: 分析: 4、使用不同的参数测试ping命令。 结果如下: 分析: (二)ipconfig 命令的使用 1、单击开始按钮,输入cmd 并按回车键,进入windows DOS环境。 2、输入ipconfig/? 回车,了解ipconfig 命令的基本用法。结果如下:

3、依次输入以下命令并查看分析结果。 (1)输入ipconfig 并回车查看并分析结果。结果如下:

分析: (2)输入ipconfig/all 并回车查看分析结果。结果:

实验二 Linux常用命令的使用(一)

实验二 Linux 常用命令的使用(一) 一、实验目的 1. 掌握Linux 系统开机启动和退出的方法 2. 掌握Linux 系统中获取命令帮助的方法 3. 掌握Linux 系统命令格式 4. 掌握Linux 系统中常用命令的作用和命令中各选项的作用 二、实验环境 安装了Red Hat Linux9.0/Fedora 系统的计算机一台 三、实验内容及步骤 (一)Linux 操作系统的登录和退出 【操作任务1】登录Linux 操作系统 【操作步骤】 (1)在开始---程序---Vmware 菜单中启动虚拟机,在打开的虚拟机界面中选择要启动的操作系统选项卡,点击启动图标。如下图所示。 (2)等待一段时间后,将出现登陆对话框,选择其中一个用户,输入用户名和密码后,即可登陆Linux 操作系统。如下图所示。(如果要登陆root 用户,请选择‖其他…‖,然后输入用户名:root 和相应的密码,点击“登陆”按钮)

输入用户名 root

(3)点击登陆按钮后,即可成功登陆。如下图。(注意,如果以root 超级管理员用户身份登陆,系统会弹出对话框询问,如上图所示,点击“继续”按钮即可) 【操作任务2】退出Linux 操作系统 【操作步骤】 (1)在顶部面板上依次单击―系统→关机‖命令,如下图 (2)在打开的对话框,选择―关机‖或―重新启动‖选项,然后点击―确定‖按钮,即可完成关机或重新启动操作。 如果使用超级管理员root 用户身份登陆,操作系统 会询问“是否真的要以特权用户身份登陆”,这里点击继续按钮,即可以root 身份登陆

【操作任务3】图形界面和字符界面的切换 【操作步骤】 (1)开机使用root用户进入图形界面,请打根目录下的etc文件夹,找到inittab文件, (文件路径:/etc/inittab),双击打开之。 (2)找到该文件中的“id:5:initdefault:”这一行,将该行中的“id:5:initdefault:”行的“5” 修改为“3”,然后按Ctrl+S保存。

UNIX命令

入门介绍和常用命令 如果文件系统磁盘空间不足,则可能出现停止服务等反常现象。 建议各现场系统环境维护人员要定期检查一下Domain所在文件系统的磁盘空间是否足够。命令: df -k df -m df -g等。 历史: BSD,SYSTEM V 主流商业版本 SUN SOLORIS IBM AIX HP-UX Tru64 UNIX LINUX 登录和用户管理 进入系统 login: passwd: 字符方式: 字符终端(console,tty) telnet,term-tools 图形方式(x-window protocal): 从主机登录; 图形终端工具(reflection,hummingbird,cygwin,etc.) Change passwd: $ passwd old password: new password: reenter new password: chsh $ chsh /bin /sh /bin /csh User informaiton defined in /etc/passwd,readonly for ordinary users.

$ man cmd $ docsearch $ wheris cmd $ which cmd Command Search Path $ echo $PATH 查看自己的用户名 $ whoami who ,w 查看当前谁在系统上 users, u 查看当前系统的用户 id 看登录用户 finger user 查看user 的信息 ps 显示当前进程状况 ps –u user 显示用户名为user 的进程状况 进程调度 后台运行 $ cmd & $ cmd1;cmd2;cmd3 $ cmd1&&cmd2&&cmd3 $ cmd1||cmd2||cmd3 从后台转到前台 $ jobs #查找 $ fg %n 定时任务 at,cron $ at time cmd $ crontab –l $ crontab –e $ crontab user # root can edit other users? crontab 重定向和管道 stdin,stdout,stderr $ cmd >file $ cmd

实验一 熟悉常用的网络命令实验报告

实验一熟悉常用的网络命令 序号:姓名:李哲旭学号:20141120117成绩指导教师: 1.实验目的: 学会使用常用ping ,ipconfig, nslookup, arp ,tracert等常用网络测试命令检测网络连通、了解网络的配置状态,跟踪路由诊断域名系统等相关网络问题。 2实验环境: (1)运行windows 8.1操作系统的PC一台 (2)每台PC机具有一块网卡,通过双绞线与局域网网相连。 (3)局域网能连接Internet 3.实验步骤: 参见实验指导手册内容。 4.实验分析,回答下列问题 (1)查看本机TCP/IP协议配置,看你的计算机是通过自动获取IP还是通过手动方式设置IP地址的?写出你判断的理由。 自动获取IP地址 (2)如果是通过手动方式获取IP地址,可以直接读出IP地址,子网掩码,默认网关,首选DNS服务器地址,备用DNS服务器地址。填写下表。 如果是采用动态获取IP地址,如何获取完整的TCP/IP配置信息,请写出解决步骤。并填写下表。 点击运行,输入cmd,使用ipconfig/all命令 IP地址113.55.91.78

子网络掩码255.255.255.255 默认网关fe80::21e:73ff:fe9a:c820%1450. 0.0.0 首选DNS服务器地址202.203.208.33 备用DNS服务器地址222.203.208.33 (3)显示完整的TCP/IP的配置信息。 (4)在获取本机IP地址之后,在MS-DOS方式下运行下列Ping命令,填写实验运行结果(可附截图)。 (a)ping本机IP地址 (b)ping 本机IP地址–t

Linux常用命令实验报告

实验二 姓名:陈辉龙学号:201407010201 班级:14计科(1)一.实验目的: ?掌握Linux常见命令,为今后的实验打下良好的基础。 二.实验内容 1.新建用户为chenhuilong,配置密码为passwd: 2.切换到chenhuilong用户,并在/home/chenhuilong目录下新建文件夹dir: 3.在文件夹dir下新建文件hello(内容为"printf hello world!"),并将其拷贝至/home/user目录: 4.统计/home/user目录下文件的个数,包括子目录里的首字符为-的普通文件:

5.统计/home下目录的个数,包括子目录里的目录: 6.显示/home/user目录下名为hello的文件的行数、字数以及字符数(使用输入重定向): 7.将上步的结果输出重定向到名为cnt_hello的文件: 8.删除/home/user目录下的hello文件: 9.进入/home/user/dir文件夹,将hello文件属性变为-rwxrw-r--(使用符号标记方式),并为hello文件在/home/user目录下建立软链接,链接文件名为link_hello:

10.查看/home/user/dir/hello文件的详细信息: 11.切换至根目录下查找hello文件: 12.打包home/user/dir/hello文件,并进行压缩,然后再进行解压缩解包: 13.退出user用户,删除/home/user文件夹:

14.将文件夹/home的所有者改为user用户,并删除user用户: 三.实验总结: 本实验旨在熟悉Unix的常用命令,实验较简单,操作起来还算顺利,做了一遍感觉还不是很熟悉,因此做了两遍,第二遍就很得心顺手。通过这次实验,熟悉了一些常用的命令操作,为以后的学习打下坚实的基础,提高自己的动手能力。

命令解释程序

命令解释程序 命令解释程序的作用 命令解释程序的组成 常驻部分 这部分包括一些中断服务子程序。例如,正常退出中断INT 20,它用于在用户程序执行完毕后,退回操作系统;驻留退出中断INT 27,用这种方式,退出程序可驻留在内存中;还有用于处理和显示标准错误信息的INT 24等。常驻部分还包括这样的程序:当用户程序终止后,它检查暂存部分是否已被用户程序覆盖,若已被覆盖,便重新将暂存部分调入内存。 初始化部分 它跟随在常驻内存部分之后,在启动时获得控制权。这部分还包括对AUTOEXEC.BAT 文件的处理程序,并决定应用程序装入的基地址。每当系统接电或重新启动后,由处理程序找到并执行AUTOEXEC.BAT文件。由于该文件在用完后不再被需要,因而它将被第一个由https://www.wendangku.net/doc/cc9762146.html,装入的文件所覆盖。 暂存部分 这部分主要是命令解释程序,并包含了所有的内部命令处理程序、批文件处理程序,以及装入和执行外部命令的程序。它们都驻留在内存中,但用户程序可以使用并覆盖这部分内存,在用户程序结束时,常驻程序又会将它们重新从磁盘。 命令解释程序的工作流程 系统在接通电源或复位后,初始化部分获得控制权,对整个系统完成初始化工作,并自动执行AUTOEXEC.BAT文件,之后便把控制权交给暂存部分。暂存部分首先读入键盘缓冲区中的命令,判别其文件名、扩展名及驱动器名是否正确。若发现有错,在给出出错信息后返回;若无错,再识别该命令。一种简单的识别命令的方法是基于一张表格,其中的每一表

目都是由命令名及其处理程序的入口地址两项所组成。如果暂存部分在该表中能找到键入的命令,且是内部命令,便可以直接从对应表项中获得该命令处理程序的入口地址,然后把控制权交给该处理程序去执行该命令。 https://www.wendangku.net/doc/cc9762146.html, 的工作流程

实验一 常用网络命令的使用 实验报告

实验一、常用网络命令的使用 课程计算机网络班级2013167 姓名郑棋元 完成日期15年4月2 日课(内、外)总计本实验用时间四个小时【实验目的】 1.掌握常用网络命令的使用方法; 2.熟悉和掌握网络管理、网络维护的基本内容和方法 【实验内容】 1.阅读实验指导书提供的资料,结合本地环境对WINDOWS 常用网络命 令进行测试和练习。 2.分析总结实验场地的网络环境、拓扑结构、上网方式等。 【实验步骤和结果】 ⑴ARP:

⑵ftp

⑶Ipconfig ⑷Nbtstat

⑸net: ⑹Netstat ⑺Ping

⑻Route ⑼Telnet 没能调试出来⑽Tracert

【实验思考题】 1.说明如何了解本机及其所处网络的网络配置信息? 输入Ipconfig/all(该诊断命令显示所有当前的 TCP/IP 网络配置值) 2.若网络出现故障,说明使用网络命令进行故障检测的常用步骤? 运用Ping(验证与远程计算机的连接) ping 任一IP地址,如果能ping通,说明你的电脑的TCP/IP没有错误。 ping 自己的IP地址,如果能ping通,说明你的网卡都正常。 ping 路由。如果能通,说明你的主机到路由的物理连接还都正常。 ping 网址。如果能通却还是打不开网页,说明dns有错误。 【实验总结】 常用的网络命令虽然看起来简单,可能觉得没什么用处,但是对于网络问题的诊断却非常有用。用windows系统自带的命令行中的常用网络命令来诊断网络故障,不仅快捷,而且信息反映直观。 【实验心得与体会】 掌握了很多常用却不知道或知道却不熟悉的网络命令的使用方法,知道了两台PC机之间传输文件的多种方式。

Linux常用命令实验报告

实验二 姓名:陈辉龙学号:201407010201 班级:14计科(1)一.实验目的: 掌握Linux常见命令,为今后的实验打下良好的基础。 二.实验内容 1.新建用户为chenhuilong,配置密码为passwd: 2.切换到chenhuilong用户,并在/home/chenhuilong目录下新建文件夹dir: 3.在文件夹dir下新建文件hello(内容为"printf hello world!"),并将其拷贝至/home/user目录: 4.统计/home/user目录下文件的个数,包括子目录里的首字符为-的普通文件:

5.统计/home下目录的个数,包括子目录里的目录: 6.显示/home/user目录下名为hello的文件的行数、字数以及字符数(使用输入重定向): 7.将上步的结果输出重定向到名为cnt_hello的文件: 8.删除/home/user目录下的hello文件: 9.进入/home/user/dir文件夹,将hello文件属性变为-rwxrw-r--(使用符号标记方式),并为hello文件在/home/user目录下建立软链接,链接文件名为link_hello:

10.查看/home/user/dir/hello文件的详细信息: 11.切换至根目录下查找hello文件: 12.打包home/user/dir/hello文件,并进行压缩,然后再进行解压缩解包: 13.退出user用户,删除/home/user文件夹:

14.将文件夹/home的所有者改为user用户,并删除user用户: 三.实验总结: 本实验旨在熟悉Unix的常用命令,实验较简单,操作起来还算顺利,做了一遍感觉还不是很熟悉,因此做了两遍,第二遍就很得心顺手。通过这次实验,熟悉了一些常用的命令操作,为以后的学习打下坚实的基础,提高自己的动手能力。

操作系统第三版实验指导

实验一命令解释程序 1.1 实验目的 ?掌握命令解释程序的设计方法。 ?学习Windows系统调用的使用,了解目录操作、进程控制等相关知识。 ?理解并发程序中的同步问题。 ?培养C/C++语言程序设计技能,提高程序设计和文档编写能力。 ?锻炼团队成员的交流与合作能力。 1.2 实验要求 1.2.1基本要求 本实验要求实现一个简单的命令解释程序,其设计类似于MS-DOS的Command程序,程序应当具有如下一些重要特征: ?能够执行cd、dir、tasklist、taskkill、history、exit等内部命令。 ?能够创建前台进程和后台进程。 此外,还应做到: ?使用VC建立工程。 ?提供清晰、详细的设计文档和解决方案。 本实验的具体要求如下: (1)参考Command命令解释程序,采用控制台命令行输入,命令提示行是当前目录与提示符“>”,在提示符后输入命令,执行结果在控制台中显示,如图1-1所示。 (2)实现以下内部命令。 ?cd <路径> 切换目录。 ?dir 显示指定目录下的文件、目录及磁盘空间等相关信息。 ?tasklist 显示系统当前进程信息,包括进程标识符pid、线程数、进程名等。 ?taskkill 结束系统中正在运行的进程,须提供进程标识pid。

?history 显示控制台中曾经输入过的命令。 ?exit 退出控制台。 (3)对前台进程和后台进程的操作。 本实验设计的命令解释程序可以将进程放在前台执行或者后台执行。 图1-1 命令解释器界面 启动前台进程,即在提示符下输入: fp <可执行文件> 启动后台进程的命令格式为: bg <可执行文件> 解释程序在前台进程运行期间需要一直等待,直到前台进程运行结束才打印命令提示符,而在后台进程运行期间不必等待,会立刻打印出命令提示符,允许用户输入下一条命令。命令解释程序中还需要捕获Ctrl+C组合键的信号来结束前台正在运行的进程,并返回用户输入界面,等待新命令输入。 (4)其他要求。 该命令解释程序应该具有相应的出错提示功能。程序每次接收用户输入的一行命令,在用户按下回车键(Enter)后开始执行命令。空命令只打印一个新的提示行,不做其他处理。定义空格为分隔符,程序应能处理命令行中出现的重复空格符。提供帮助命令help,供使用者查询每个命令的用法。

常用网络命令实验教案

课题:常用网络命令 教学目标:熟悉Ping、Netstat等命令 教学重点:熟悉Ping、Netstat等命令 教学难点:Netstat命令 教具、教学素材准备:网络环境 教学方法:讲授,演示,实作 教学时数:2 教学过程:(教师授课思路、设问及讲解要点) Windows网络命令行程序 这部分包括: 使用 ipconfig /all 查看配置 使用 ipconfig /renew 刷新配置 使用 ipconfig 管理 DNS 和 DHCP 类别 ID 使用 Ping 测试连接 使用 Arp 解决硬件地址问题 使用 nbtstat 解决 NetBIOS 名称问题 使用 netstat 显示连接统计 使用 tracert 跟踪网络连接 使用 pathping 测试路由器 使用 ipconfig /all 查看配置 发现和解决 TCP/IP 网络问题时,先检查出现问题的计算机上的 TCP/IP 配置。可以使用 ipconfig 命令获得主机配置信息,包括 IP 地址、子网掩码和默认网关。 注意 : 对于 Windows 95 和 Windows 98 的客户机,请使用 winipcfg 命令而不是ipconfig 命令。 使用带 /all 选项的 ipconfig 命令时,将给出所有接口的详细配置报告,包括任何已配置的串行端口。使用 ipconfig /all,可以将命令输出重定向到某个文件,并将输出粘贴到其他文档中。也可以用该输出确认网络上每台计算机的 TCP/IP 配置,或者进一步调查TCP/IP 网络问题。 例如,如果计算机配置的 IP 地址与现有的 IP 地址重复,则子网掩码显示为 0.0.0.0。

Cad常用命令及使用方法

Cad常用命令及使用方法 一、绘图命令 直线:L 用法:输入命令L/回车/鼠标指定第一点/输入数值(也就是指定第二点)/回车(这时直线就画出来了)/回车(结束命令) 射线:RAY 用法:输入命令RAY/回车/鼠标指定射线起点/指定通过点/回车(结束命令) 构造线:XL 用法:输入命令XL/回车/鼠标指定构造线起点/指定通过点/回车(结束命令) 多段线:PL 用法1:同直线命令 用法2:输入命令PL/回车/指定起点/输入W(绘制带有宽度的线)/回车/指定线起点宽度/回车/指定线结束点宽度/回车/输入数值(线的长度值)/回车(结束命令) 正多边形:POL 用法:输入命令POL/回车/指定边数/回车/鼠标指定正多边形的中心点/输入选项(C外切于圆;I内接于圆)/回车/输入半径/回车(结束命令) 矩形:REC 用法1:输入命令REC/回车/鼠标指定第一角点/指定第二角点 用法2:输入命令REC/回车/输入C(绘制带有倒角的矩形)/回车/输入第一倒角值/回车/输入第二倒角值/回车/鼠标指定第一角点/指定第二角点 用法3:输入命令REC/回车/输入F(绘制带有圆角的矩形)/回车/输入圆角半径/回车/指定第一角点/指定第二角点 圆弧:A 用法:输入命令A/回车/指定圆弧起点/指定圆弧中点/指定圆弧结束点 (绘制圆弧的方法有11种,可参考绘图菜单---圆弧选项) 圆:C 用法:输入命令C/回车/鼠标指定圆心/输入半径值/回车(命令结束) (绘制圆的方法有6种,可参考绘图菜单---圆选项) 样条曲线:SPL 用法:输入命令SPL/回车/鼠标指定要绘制的范围即可/需要三下回车结束命令 椭圆:EL

实验一 Linux常用命令

淮海工学院计算工程学院实验报告书 课程名:《Linux程序设计》 题目:实验一Linux常用命令 班级:D软件091、092 学号: 姓名:

实验一Linux常用命令 一、实验目的 1、熟悉VMware Workstation 虚拟机的使用; 2、熟悉Ubuntu操作系统; 3、掌握常用的Linux 命令。 二、实验设备 1、硬件:PC; 2、软件:VMware Workstation 虚拟机和Ubuntu操作系统。 三、实验预习要求 1、关于Ubuntu操作系统的安装和使用; 2、Linux 常用操作命令。 四、实验内容 1、基于虚拟机的Ubuntu操作系统的使用; 2、文件与目录相关命令的使用; 3、压缩备份命令的使用; 4、磁盘管理与维护命令的使用; 5、系统管理与设置命令的使用; 6、网络相关命令的使用。 五、实验步骤 1、基于虚拟机的Linux操作系统的使用 (1)启动Windows以后,选择“开始”—“程序”—“VMware”—“VMware Workstation”,启动VMware Workstation应用程序; (2)选择File—Open选择安装好的Linux虚拟机文件启动Linux操作系统; (3)启动系统后输入用户名和密码,进入X window界面; (4)选择“应用程序”—“附件”—“终端”,进入终端界面; (5)在终端中执行Linux 常用命令。 2、文件与目录相关命令的使用(要求在每一个操作命令后写出命令显示效果) (1)查询/bin目录,看一看有哪些常用的命令文件在该目录下: ll /bin

(2)进入/tmp目录下,新建目录myshare:cd /tmp mkdir myshare ls –ld myshare/

计科13-2 第五组 实验2 网络常用命令使用(学习类别)

宁波工程学院电子与信息工程学院 计算机网络实验实验报告 实验名称实验2 网络常用命令使用 班级计科13-2 组别 5 实验地点逸夫楼511 日期 3.24 一、实验目的: ●使用ipconfig命令查看本机地址、网关地址、DNS服务器地址 ●使用ping命令测试网络(如网关)的连通性 ●使用arp命令查看、修改ARP高速缓存内容 ●使用route命令查看路由表,并解释路由表的主要内容 二、实验内容、要求和环境: (1)任务1:使用ping 命令验证简单TCP/IP 网络的连通性。 ping命令用于验证本地主机计算机或其它网络设备上的TCP/IP 网络层连通性。 使用该命令时,可以用目的IP 地址或限定域名(如https://www.wendangku.net/doc/cc9762146.html,)来测试域名服务(DNS) 功能。本实验只使用IP 地址。 ping操作很简单。源计算机向目的设备发送ICMP 回应请求。目的设备用应答消息做出响应。如果源设备和目的设备之间连接断开,路由器可能会用ICMP 消息做出响应,表示主机未知或目的网络未知。 步骤1:验证本地主机计算机上的TCP/IP 网络层连通性。 C:\> ipconfig Windows IP Configuration Ethernet adapter Local Area Connection: Connection-specific DNS Suffix . : IP Address : 172.16.1.2 Subnet Mask : 255.255.0.0 Default Gateway : 172.16.255.254 C:\> 1. 打开Windows 终端,用ipconfig命令确定该主机计算机的IP 地址。 除IP 地址外,输出的其它内容应该与图示相同。如果缺少信息或显示其它子网掩码和默认网关,请重新配置与此主机计算机设置相符的TCP/IP 设置。 2. 记录本地TCP/IP 网络信息的相关信息。

CISCO 常用命令解释

视图模式介绍: 普通视图 router> 特权视图 router# /在普通模式下输入enable 全局视图 router(config)# /在特权模式下输入config t 接口视图 router(config-if)# /在全局模式下输入int 接口名称例如int s0或int e0 路由协议视图 router(config-route)# /在全局模式下输入router 动态路由协议名称 1、基本配置: router>enable /进入特权模式 router#conf t /进入全局配置模式 router(config)# hostname xxx /设置设备名称就好像给我们的计算机起个名字 router(config)#enable password /设置特权口令 router(config)#no ip domain lookup /不允许路由器缺省使用DNS解析命令 router(config)# Service password-encrypt /对所有在路由器上输入的口令进行暗文加密router(config)#line vty 0 4 /进入设置telnet服务模式 router(config-line)#password xxx /设置telnet的密码 router(config-line)#login /使能可以登陆 router(config)#line con 0 /进入控制口的服务模式 router(config-line)#password xxx /要设置console的密码 router(config-line)#login /使能可以登陆 2、接口配置: router(config)#int s0 /进入接口配置模式 serial 0 端口配置(如果是模块化的路由器前面加上槽位编号,例如serial0/0 代表这个路由器的0槽位上的第一个接口) router(config-if)#ip add xxx.xxx.xxx.xxx xxx.xxx.xxx.xxx /添加ip 地址和掩码router(config-if)#enca hdlc/ppp 捆绑链路协议 hdlc 或者 ppp 思科缺省串口封装的链路层协议是HDLC所以在show run配置的时候接口上的配置没有,如果要封装为别的链路层协议例如PPP/FR/X25就是看到接口下的enca ppp或者enca fr router(config)#int loopback /建立环回口(逻辑接口)模拟不同的本机网段 router(config-if)#ip add xxx.xxx.xxx.xxx xxx.xxx.xxx.xxx /添加ip 地址和掩码给环回口 在物理接口上配置了ip地址后用no shut启用这个物理接口反之可以用shutdown管理性的关闭接口 3、路由配置: (1)静态路由 router(config)#ip route xxx.xxx.xxx.xxx xxx.xxx.xxx.xxx 下一条或自己的接口router(config)#ip route 0.0.0.0 0.0.0.0 s 0 添加缺省路由 (2)动态路由 rip协议 router(config)#router rip /启动rip协议 router(config-router)#network xxx.xxx.xxx.xxx /宣告自己的网段 router(config-router)#version 2 转换为rip 2版本 router(config-router)#no auto-summary /关闭自动汇总功能,rip V2才有作用 router(config-router)# passive-int 接口名 /启动本路由器的那个接口为被动接口

相关文档