杨振伟 清华大学 第一讲:Linux操作系统与Linux环境下编程

Slides:



Advertisements
Similar presentations
Linux 环境及 Shell 程序 操作系统实验 1. 二、 Shell 编程与进程通信 常用 shell 命令 文件及文件属性操作 ls 、 cp 、 mv 、 rm ln 、 ln –s 、 chmod 、 groupadd 、 useradd 输入输出操作 echo 、 cat >> 、
Advertisements

LSF系统介绍 张焕杰 中国科学技术大学网络信息中心
上課教材 Database Slide Windows筆電 (32 bit)
Linux 的檔案管理.
資訊安全與系統管理 2013/3/13 Chien wei lin.
UNIX系統與資料庫安裝 Why UNIX 常用的工具程式介紹 資料庫的安裝.
第一讲:Linux基础培训.
在PHP和MYSQL中实现完美的中文显示
Linux 的進階檔案處理.
Confidential Property
Linux.
Vi 編輯器的練習的說明 因為本課程的實習課是Unix 的工作環境。過去的經驗告訴我,如果你完全未用過Unix 的指令及其 vi 編輯器,你將很難跟上進度,希望學員一定要預先作練習。我們提供了Unix 指令的簡介,以及 vi 編輯器的介紹 ( 請参閱網站中的13&14-unix.pdf 為其講義;13-unix.exe、14-fortran.exe則為其課程錄影.
第三讲 shell 程序设计.
第 2 章 上機使用 Unix/Linux 內容: 操作介面 主機連線 登入主機 認識系統環境 使用者常用命令.
LSF系统介绍 张焕杰 中国科学技术大学网络信息中心
台灣大學計算機及資訊網路中心 教學研究組 張傑生
Linux 切换、 创建和删除目录 系统管理 宁波市高校慕课联盟课程
第7章:文件共享 与远程控制——回顾 第8章:bash脚本编程 本章教学目标: 了解shell程序的基本结构 网络文件系统NFS的概念
Shell Script 程式設計.
Shell程序设计 曙光信息产业股份有限公司.
第五章 shell 编程 shell 编程的基本过程分为三步: 1. 建立 shell 文件 包含任意多行操作系统命令或shell命令的文本
Linux 基础与常用命令简介 生物信息学培训班 杭州,2018年1月18日 周银聪.
第三章 文本编辑器vi.
第二讲 搭建Java Web开发环境 主讲人:孙娜
第二天 计算机基础技能培训 (一)linux基础知识
曙光集群简明使用手册 技术支持中心.
SVN服务器的搭建(Windows) 柳峰
Linux基本操作 程設實習課 ( 2/25 ).
伺服器探索營 Day 1 指導老師: 張啟中 (JohnAxer) 教學助理:
第11章:一些著名开源软件介绍 第12章:服务安装和配置 本章教学目标: 了解当前一些应用最广泛的开源软件项目 搭建一个网站服务器
PostgreSQL 8.3 安装要点 四川大学计算机学院 段 磊
第一单元 初识C程序与C程序开发平台搭建 ---观其大略
Linux 基 本 命 令 man–命令帮助信息。 ls –看目录里文件的信息。 cd–换目录 mkdir–创建目录 rmdir–删除目录
第 5 章 文字編輯工具 內容: Vi Vim.
第12章 shell编程基础 本章主要介绍shell编程的基础知识。shell脚本的执行类似于Linux下的任何其他命令,脚本可以包含复杂的逻辑,也可以包含一系列Linux命令行指令。在一个shell程序内可以运行其他shell脚本。通过本章的学习,读者可以学到如何使用bash(最流行的Linux.
第四章 附件 (应用程序软件包).
第 22 章 架設 WWW 伺服器.
中国科学技术大学计算机系 陈香兰(0551- ) Spring 2009
Linux, C++, ROOT 朱相雷 清华大学 威海暑期学校 2014年7月21日 杨振伟,《粒子物理与核物理实验中的数据分析》
系统管理员培训(I期) 浙江省基层人民法院 -V8版介绍及系统管理培训 二OO八年四月二十三日 法院事业部经理:周春宏
檔案類型介紹 Linux 的檔案類型 目錄: 用ls –F時檔名後面有/,螢幕列出目錄時為藍色 可執行檔: 壓縮檔: 連結檔:
第二章 UNIX系统安装与常用命令.
第六章 shell 程序调试 一. 程序执行状态跟踪 程序: -n 读取命令, 但不执行. 主要用于跟踪程序流程是
第二章 登录UNIX操作系统.
C语言程序设计 主讲教师:陆幼利.
如何有效率的學習Linux 培養組合能力 多用程式, 少寫程式 從錯誤訊息中學習 養成略讀 “各種文件” 加強英文基本閱讀能力 勤作筆記
Confidential Property
第三章 UNIX的文件与目录.
UNIX指令-檔案與目錄操作.
姚金宇 MIT SCHEME 使用说明 姚金宇
杨振伟 清华大学 第一讲:Linux环境下编程(1)
计算机网络与网页制作 Chapter 07:Dreamweaver CS5入门
iSIGHT 基本培训 使用 Excel的栅栏问题
实验一:编译运行Linux内核并使用gdb进行调试
Lab01 工作站&Linux操作 日期:2011/03/07.
本节内容 文件系统 视频提供:昆山爱达人信息技术有限公司 官网地址: 联系QQ: QQ交流群 : 联系电话:
雷锦江 Edwin Guide 雷锦江
台灣大學計算機及資訊網路中心 教學研究組 張傑生
基本指令.
如何連上工作站 WorkStations: 1. Solaris 2. Linux Use X-Win32 (for Solaris)
Python 环境搭建 基于Anaconda和VSCode.
程序管理 蘇偉順助教.
粒子物理与核物理实验中的数据分析 杨振伟 清华大学 第1讲:Linux环境下的编程.
杨振伟 清华大学 第一讲:Linux环境下编程(1)
使用说明书 网址: 贵阳学院智慧实验室管理平台 用户中心 使用说明书 网址:
第四章 UNIX文件系统.
Unix指令2.
劉庠宏、林合治編著 國立高雄大學應用數學系 2005年3月1日
第六章 文件系统与文件管理 6.4 Linux文件管理 1、比较MS DOS 与 Linux的目录结构 一、Linux文件系统的树形结构
Presentation transcript:

杨振伟 清华大学 第一讲:Linux操作系统与Linux环境下编程 粒子物理与核物理实验中的数据分析 杨振伟 清华大学 第一讲:Linux操作系统与Linux环境下编程

本讲摘要 介绍Linux操作系统 登陆和使用Linux服务器 Linux终端的常用命令 Linux终端的常用编辑器(vi, emacs, pico, etc) Linux 环境变量与Shell 脚本 Linux下编译运行c/c++, fortran程序 如何获取更多关于Linux以及Linux下编程的信息 (不得不说的一句:搜索引擎是个好东西) 2019/6/3

Linux简介 为什么选择Linux: 源代码开放,自由软件/代码 大量的科学计算、数据分析处理的程序包 包括了大量简短的隐含指令: cd, ls, grep, … Linux有很多不同的发行版: redhat, fedora, suse, debian, ubuntu,红旗,… 粒子与核物理界普遍使用的是 Scientific Linux CERN(SLC) CERN与FermiLab联合发行Scientific Linux(SL), 基于redhat企业版的内核 CERN在SL的基础上发行SLC,主要定制了CERNLIB包。 本课程服务器采用的是Scientific Linux CERN3(SLC3)版本 http://linux.web.cern.ch/linux/ 2019/6/3

UNIX/Linux 基础 UNIX/Linux 的任务可以简单地分为两部分: 承担操作系统与计算机之间的互动工作--内核(kernel), 承担操作系统与用户之间的互动工作--shell. 目前广泛应用的几大类shell (即指令集) : sh, csh, tcsh, bash, … 目前一般系统默认的是bash,高能物理里常用的为tcsh。 语法稍微有些区别,大同小异。 用自己习惯的就可以,无所谓优劣。 2019/6/3

登录Linux 前提:拥有帐号(包括密码),知道服务器的域名或ip 课程服务器的域名/ip是:training.hep.tsinghua.edu.cn 166.111.32.64 某用户的用户名为: yangzw 登录远程服务器一般用ssh方式: 1)从Linux终端登录 ssh yangzw@training.hep.tsinghua.edu.cn 2)Windows下用ssh客户端软件登录 putty, SecureCRT, Xmanager,… 登录之后就进入服务器的term终端, 然后可以在提示行中键入shell 指令 输入服务器域名,用户名,密码 选择ssh方式登录 目录名 2019/6/3 提示行和提示符

UNIX/Linux 的文件结构 / ← 根(root)目录 ← 操作系统设定 ← 系统管理员设定 ← 用户自己设定 UNIX/Linux 对文件与目录的管理,整体呈树状(tree)结构: / ← 根(root)目录 ← 操作系统设定 usr/ bin/ home/ sys/ tmp/ ... ← 系统管理员设定 chensm/ zhanghb/ yangzw/ ... ← 用户自己设定 WWW/ code/ thesis/ ... Linux: public_html/ 2019/6/3

UNIX/Linux文件的所有者和权限 所有者与权限: Linux文件都有特定的所有者和所有组。 文件具有3类权限:可读(r)、可写(w)、可执行(x) 所有者有权规定3类用户对该文件的权限: 所有者自己(owner)、所有者同组成员(group)、其它用户(other) 最前面的字母”d”表示这是个目录 ”-”表明没有该位置对应的权限 2019/6/3

几个LINUX的文件技巧 一个完整文件名应指定出其所处在的路径 (path),路径有相对路径和绝对路径 绝对路径: /home/chensm/geom/geom.dat (都是以”/”开始) 一个‘~’符号可以用来简单表示home: (相对路径的例子) ~/geom/geom.dat ← 所登录的用户 (e.g. chensm) ~zhanghb/geom/result.dat ← 不同的用户 单个点‘.’ 表示当前目录, 两个点“. .”表示上一层目录 /home/chensm/geom ← 当前目录 ../geom ← 表示 /home/chensm/geom 这种文件技巧对以后编写通用的 shell 脚本文件很有用。 2019/6/3

一些常用的LINUX指令(1) pwd 显示当前目录(print working dir) Passwd 修改当前用户的密码 ls [-lahrt] 列出当前目录中的文件(list) cd [dir] 进入指定目录或从当前目录回到用户的home目录 cd,cd foo,cd ../ cd /home/zhanghb/ mkdir dfoo 生成名为 dfoo 的子目录 rm [-rf]foo 删除文件 foo(参数rf表示强制删除文件夹,慎用) rmdir foo 删除名为 foo的子目录(foo 应已经为空目录) cp foo bar 拷贝文件 foo 到另一文件 bar mv foo bar 更改文件 foo 的名称为 bar man <command> 显示 command指令说明 man -k <keyword> 寻找 “keyword”指令说明页 history 列出最近使用过的指令很有用 du 显示当前目录所用空间大小 注意指令中的字母大小写。实际上Linux区分一切大小写,指令,文件名,目录名 2019/6/3

一些有用的UNIX指令(2) more foo 显示名为foo 的文件(按空格键换页) less foo 与 more foo类似,但可以往回翻页(按q 退出) emacs foo & 用emacs 编辑名为 foo 的文件(& 为提交后台进程) vi, pico, nano, … 这些命令都以可编辑方式打开文件 ps 显示正在运行的进程 kill 345 删除进程 345 (如果不行可尝试使用kill -9) ./foo 在当前目录运行可执行文件 foo ctrl-c 中断目前在前台执行的进程 ln –s source linkname 为source建立一个符号链接linkname locate foo 在所有目录中寻找有文件名 foo 的路径 find . –name file1在当前目录中寻找文件名为file1的路径 grep TH1F foo 显示文件 foo 中含 “TH1F” 的每一行 sed –e “s/str1/str2/g” foo > bar 将文件foo中字符串 “str1”改为“str2”并将修改后的文件写到新文件bar上,foo保持不变。 2019/6/3

一些有用的UNIX指令(3) chmod 755 <file> 更改文件file的属性,1:x 2:w 4:r 5:rx 7:rwx chmod ug+x foo 使文件 foo对用户与同小组成员增加执行权限 diff file1 file2 比较文件file1和file2的不同 tar –zcvf 1.tgz file1 file2 压缩file1,file2为1.tgz tar –zxvf 1.tgz 解压缩1.tgz gcc test.c –o try1 用C编译器编译test.c,生成可执行文件try g++ test.cpp –o try2 用C++编译器编译程序 date 显示系统当前时间 sleep 10 暂停10秒钟 wc [–lw] file 显示file的行数/字数等信息 echo “Welcome to Linux World!” 屏幕显示指定字符串 file file1 显示文件file1的属性 注:Linux有些特殊字符,比如 >, |, &等符号 ls > hehe.txt 将ls的结果写入hehe.txt,即重定向 ps aux | grep yangzw 显示跟用户yangzw有关的进程,即通道 2019/6/3

Emacs、Vi编辑器的基本指令 nano(pico): 简单文本编辑 emacs:很好很强大 打开文件 nano [filename] 推出文件 ^x emacs:很好很强大 打开文件 emacs [filename] 保存文件 ^x ^s 退出文件 ^x ^c vi(vim):古老,不过也很强大 打开文件 vi [filename] 保存文件 :w 退出文件 :q 不存退出 :q! 注:vi有两种模式,命令模式和输入模式 按小写字母”i”进入输入模式,按”esc”键进入命令模式 在命令模式中可以输入命令很方便的进行编辑修改 熟练使用任何一种编辑器都可以极大提高工作效率,建议多多练习。 2019/6/3

Shell、环境变量和脚本(1) 承担操作系统与用户之间的互动工作--shell. 常用的shell (即指令集) : tcsh, bash, … chsh 该命令改变shell,输入密码后输入/bin/tcsh或/bin/bash shell中有很多环境变量,有的是系统的环境变量,有的是用户自己定义的环境变量,为系统和用户程序服务。 环境变量一般用大些字母定义(有些类似于C语言的宏定义) 比如PATH,PWD,USER,GROUP等都是系统环境变量。 查看所有环境变量: env或者printenv 查看环境变量PATH的值:echo $PATH或printenv PATH 定义环境变量 export YANGDIR=/home/yangzw (bash) setenv YANGDIR /home/yangzw (tcsh) 取消环境变量 unset YANGDIR 2019/6/3

Shell、环境变量和脚本(2) 什么是脚本(script): 脚本就是用于实现某种目的的命令集合。 为什么需要用脚本: 很多工作是重复性的,脚本可以让你更高效。 目 标: 1)知道什么是shell脚本(script),如何写自己的脚本 2)可以看懂别人的脚本 执行shell脚本,比如有脚本test.sh: ./test.sh 注:运行前确保用户对test.sh有可执行权限,否则, chmod u+x test.sh 2019/6/3

Shell、环境变量和脚本 例:最简单的一个脚本 编写一个shell脚本test.sh: #!/bin/bash # This is a simple test shell script echo “Hello everyone!” echo “`ls /projects/$USER`” date echo $PWD 注:1) 标准的脚本都以“#!”开头,后面跟随bash/tcsh或其它脚本程序的路径(用which bash指令可以查看bash的路径) 2)注释行以“#”开头(第一行的#!除外) 3)需要执行的指令(一般每行一个指令) 2019/6/3

Shell、环境变量和脚本 脚本中变量和循环的例子: bash vs tcsh #!/bin/bash #!/bin/tcsh # Another test shell script ####for循环#### for i in `ls /home/yangzw` do echo $i done ####while循环### num=1 DIR=“testDir” while (( $num < 5 )) if [ -d $DIR$num ]; then echo “$DIR$num exist!!“ else mkdir $DIR$num fi let num+=1 #!/bin/tcsh # Another test shell script ####for循环#### foreach i `ls /home/yangzw` echo $i end ####while循环### num=1 DIR=“testDir” while ( $num < 5 ) if ( -d $DIR$num ) then echo “$DIR$num exist!!“ else mkdir $DIR$num endif set num=`expr $num +1` 2019/6/3 脚本中变量和循环的例子: bash vs tcsh

练习 到/projects目录下建立自己的用户$USER,在$HOME目录下建立一个符号链接“workdir”,链接到/projects/$USER 然后到$USER目录下建立目录dir1,dir2, dir3, 以及文件file1,file2,index1.htm,index2.htm,test1.txt 设定环境变量名WORKDIR=/projects/$USER MYNAME=${USER}_${GROUP} 2. 编写脚本myscript1.sh, 要求: 1)显示开始运行的时间; 2)显示出当前目录,当前用户名以及SHELL类型 3)显示WORKDIR与MYNAME的值 4)显示当前$WORKDIR目录所用磁盘空间 5)间隔5秒钟之后再显示出当前时间 3. 编写脚本looptest.sh, 要求: 1)将练习1中所有文件属性改成只有自己可以读/写/执行, 其他人只能读 2)将$WORKDIR目录中*.htm文件改成*.html 2019/6/3

练习 4. 将/projects/yangzw/Lec_materials/test1.txt拷贝到自己的工作目录,再把test1.txt备份成test1.txt.bak。 练习用sed修改其中的字符串,用grep查找其中的字符串, 比如:1)查找其中包含”Vim”的行,并将结果写入final1.txt 2)不区分大小写查找包含”vim”的行,显示查找出多少行 3)用sed将其中的”vim”修改成”Vim” 4)比较test1.txt与test1.txt.bak的差别 5)删除final1.txt …… 5. 练习使用其它常用的Linux命令 2019/6/3

总结 介绍Linux操作系统以及常用命令 Linux终端的常用编辑器(vi, emacs, pico, etc) 介绍shell、环境变量和脚本 介绍Linux下c/c++程序的编译 目的:熟练掌握Linux操作系统的常用命令的使用和脚本编程 2019/6/3

参考资料 Linux从入门到精通,‪‬Phil Cornes著; 童寿彬等译 RedHat Linux 9系统管理,李蔚泽编著 精通Shell编程,Sriranga Veeraraghavan著; 卢涛译 Linux命令、编辑器与Shell编程,Mark Sobell著,杨明军等译 http://hep.tsinghua.edu.cn/~yangzw/CourseDataAna/(一些Shell脚本编程的资料) Google and/or Baidu !!!! 2019/6/3

备用 vi 的常用技巧 1. 显示行号 :se nu 2. 移动光标到第5行 :5 3. 移动光标到行首 ^ 4. 移动光标到行尾 $ 5. 移动光标到文件头 gg 6. 移动光标到文件尾 G 7. 向后移动3个字 3w 8. 向前移动4个字 4b 9. 删除光标所在字 dw 10. 删除光标所在字符 x 11. 删除行 dd 12. 删除光标后3行 3dd 13. 删除光标至行尾 D 14. 用某字母(如”k”)替换光标所在字符 r k 15. 向下新增一行 o 16. 向上新增一行 O 17. 复制光标所在行 yy 18. 将复制的行粘贴到光标所在行下方 p 19. 将复制的行粘贴到光标所在行上方 P 20. 查找字符串”Abc” /Abc 21. 全局替换”Abc”为”ABC“ :%s/Abc/ABC/g 22. 将3-9行的”Abc”替换为”ABC” :3,9s/Abc/ABC/g 23. 将3-6行复制到第9行 :3,6 co 9 24. 将3-6行移动到第9行 :3,6 m 9 25. 删除3-6行 :3,6 d 26. 3-6行行首加上”ABC” :3,6s/^/ABC/g 27. 3-6行行首加上”//”,即C++注释 :3,6s/^/\/\//g 28. 3-6行行尾添加”ABC” :3,6s/$/ABC/g 29. 将光标的下一行连接到光标所在行 J 30. 将光标所在处字母变更大小写 ~ 31. 取消操作(undo) u 32. 重复操作(redo) . 33. 全文加亮光标当前变量 gd 34. 保存文件 :w 35. 保存退出 :wq 36. 不保存退出 :q! 37. 进入输入模式 i 38. 进入命令模式 ESC 39. 在行首进入输入模式 I 40. 在行尾进入输入模式 A 2019/6/3