相信大部分人的PC端都是用Windows系统的,那我们为什么要学习Linux这个操作系统呢???Windows图形化界面做得这么好,日常基本使用的话,学习成本几乎为零。
日常用的话Windows是比较顺手的,但是我们要知道的是:我们开发出来的程序一般都是放在Linux下运行的。
我总结了Linux的几个优点:
- 免费
- 很多软件原生是在Linux下运行的,庞大的社区支持,生态环境好。
- 开源,可被定制,开放,多用户的网络操作系统。
- 相对安全稳定
所以开发者选择了Linux来跑我们自己写出来的程序。
二、Linux的基础知识
除了Shell、其他的都应该挺好懂的,那么Shell是什么东西呢???
Shell可以执行:
- 内部命令
- 应用程序
- shell脚本
nerror="javascript:errorimg.call(this);">
于是乎,我们利用Shell就可以干下面这些事了:
- 命令行解释(这是用得最多的!)
- 命令的多种执行顺序
- 通配符( wild-card characters )
- 命令补全、别名机制、命令历史
- I/O重定向( Input/output redirection )
- 管道( pipes )
- 命令替换( 或$( ) )
- Shell编程语言( Shell script )
使用ps命令观察正在执行的shell
nerror="javascript:errorimg.call(this);">
2.2Linux基本目录结构
Linux下也不例外了,也是有基本的目录结构的:
nerror="javascript:errorimg.call(this);">
cmd [options] [arguments],options称为选项,arguments称为参数
一般来说,后面跟的选项如果单字符选项前使用一个减号-。单词选项前使用两个减号--
- 这是一般的情况,有些命令还是不归属这种规律的(相对较少)~~~
- 例子:ls -a和ls -all,a 单个字符使用一个-,一个单词all 使用两个--
学过一些正则表达式的或者有点基础的同学对通配符应该就不陌生的了,在Linux也有通配符(在搜索的时候挺有用的)
- *:匹配任何字符和任何数目的字符
- ?:匹配单一数目的任何字符
- [ ]:匹配[ ]之内的任意一个字符
- [! ]:匹配除了[! ]之外的任意一个字符,!表示非的意思
2.5文件的类型
我们常见的就是普通文件,目录和符号链接。其他的了解一下即可~
可能在网上查阅资料的时候会出现用户主目录这么一个名词,那他是什么呢???
用户对自己主目录的文件拥有所有权,可以在自己的主目录下进行相关操作。
三、常用的命令
这是我们使用得最多的命令了,Linux最基础的命令!
- 可用 pwd 命令查看用户的当前目录
- 可用 cd 命令来切换目录
- . 表示当前目录
- .. 表示当前目录的上一级目录(父目录)
- -表示用 cd 命令切换目录前所在的目录
- ~ 表示用户主目录的绝对路径名
相对路径 :
- 不以斜线(/)开头 ,指定相对于你的当前工作目录而言的位置 ,可以被用作指定文件名的简捷方式
学了这些命令我们能干嘛?其实就是在Windows下复制文件、粘贴文件、创建文件、查看文件这几种~~~
3.1.1常用的文件、目录操作练习题
进入/tmp目录,建立一个文件,goldXX(XX为学号的末两位),查看文件的时间
nerror="javascript:errorimg.call(this);">
复制/etc/passwd文件到账户主目录,修改账户主目录下passwd为passwdXX(XX为学号的末两位)
nerror="javascript:errorimg.call(this);">
复制/etc/hosts文件到账户主目录下;在账户主目录中建立一个硬链接文件(文件名为hostsYYY(YYY为学生姓名拼音缩写)),链接到主目录下的hosts文件;分别查看hosts和hostsYYY的文件的inode信息
nerror="javascript:errorimg.call(this);">
用长格式列出目录/usr/bin目录下的所有文件,输出重新定向到文件outXX(XX为学生学号末两位),检查结果;用长格式列出目录/etc目录下的所有文件,输出结果补充到文件outXX末尾
nerror="javascript:errorimg.call(this);">
>和>>有何区别?
通过管道和more命令,浏览文件列表方便在哪里?
在Windows操作系统下,我们会使用WinRAR或者快压等等的压缩软件来进行压缩或者解压。
压缩的方式也是有好几种,我们常用的有下面这三种:
- gzip
- bzip2
- tar
常用的解压命令有:
- gzip -d filename.gz
- bzip2 -d filename.bz2
- tar -xzvf filename.tar.gz
3.3正则表达式+grep
在Windows下就比较简单的,几乎所有的文本编辑器(记事本)都支持CTRL+F,往里面输入关键字就可查找出来:
首先我们就来说说正则表达式,如果接触过的同学就知道:这玩意并不好记。一旦不用就很容易就忘记了,所以只能在用的时候查查了~~~所以下面我就直接给出一些规则了,不多说啦。
3.3.2grep命令
格式:grep [options] PATTERN [FILE...]
- PATTERN 是查找条件:可以是普通字符串、可以是正则表达式,通常用单引号将RE括起来。
- FILE 是要查找的文件,可以是用空格间隔的多个文件,也可是使用Shell的通配符在多个文件中查找PATTERN,省略时表示在标准输入中查找。
- grep命令不会对输入文件进行任何修改或影响,可以使用输出重定向将结果存为文件
用grep查找/etc/passwd文件中以a开头的行,要求显示行号;查找/etc/passwd文件中以login结束的行;
3.4几种提高工作效率的方法
- 自动补全命令TAB键
- 历史命令上下箭头键
- 别名alias
显示shell当前已经定义的别名;执行其中的两个定义别名的命令;定义一个别名grep,要求其采用彩色方式显示结果
3.5Shell变量 和 Shell环境
Shell 变量大致可以分为三类:
- 内部变量:由系统提供,用户只能使用不能修改。?GROUPS
- 环境变量:这些变量决定了用户工作的环境,它们不需要用户去定义,可以直接在 shell 中使用,其中某些变量用户可以修改。
- 用户变量:由用户建立和修改,在 shell 脚本编写中会经常用到。变量赋值(定义变量)varName=Valueexport varName=Value引用变量$varName
export命令:
- 显示当前Shell可见的全局变量export [-p]
- 定义变量值的同时声明为全局变量。export <变量名1=值1> [<变量名2=值2> ...]
- 声明已经赋值的某个(些)局部变量为全局变量。export <变量名1> [<变量名2> ...]
- 声明已经赋值的某个(些)全局变量为局部变量。export -n <变量名1> [<变量名2> ...]
Shell变量:查询、显示和取消:
- 显示当前已经定义的所有变量所有环境变量:env所有变量和函数(包括环境变量) :set
- 显示某(些)个变量的值echo $NAME1 [$NAME2 ……]
- 取消变量的声明或赋值unset <NAME>
3.5.1Shell变量 和 Shell环境练习题
Shell环境变量的值是否可以修改?为什么?
相信没有用过Linux的同学在看一些段子的时候都会看到过两个编辑器:
- vim
- emacs
使用Vi来编辑文件:
在 Normal 模式下输入插入命令 i、 a 、 o进入insert模式。用户输入的任何字符都被vim当做文件内容保存起来,并将其显示在屏幕上。
- 在文本输入过程中,若想回到Normal模式下,按 Esc 键即可。
4.3命令行模式
设置Vi环境:
- :set autoindent 缩进,常用于程序的编写
- :set noautoindent 取消缩进
- :set number 在编辑文件时显示行号
- :set nonumber 不显示行号
- :set tabstop=value 设置显示制表符的空格字符个数
- :set 显示设置的所有选项
- :set all 显示所有可以设置的选项
4.4Vi练习题
在用户主目录下,执行vi程序,编辑文件install.log;用/命令查找字符串sudo,复制包含字符串sudo的行
本文主要讲解了Linux的最基础的知识,可以简单地操作Linux了。命令可以说是学不完的,只能是记住Linux是有这个功能,到时候去网上查查也很方便。
主要是多练、多玩就可以记住一些常用的Linux命令了。
