Linux shell 1-初步认识
1.什么是linux
linux是一种操作系统,它可划分为以下四部分
1.linux内核(Linux系统的核心,负责管理系统内存,硬件驱动,文件系统等)
2.GNU工具(一组软件工具,提供一些类UNIX系统命令)
3.图形化桌面环境
4.应用软件
2.linux shell
shell是GNU工具包下的一个交互式工具。它为用户提供了启动程序、管理文件系统中的文 件以及运行在Linux系统上的进程的途径。shell的核心是命令行提示符。命令行提示符是shell负责 交互的部分。它允许你输入文本命令,然后解释命令,并在内核中执行。shell作为一种程序,反应在linux中就是一个进程。shell顾名思义就是壳,有区别于内核,用于人机交互。GUI桌面也是一种shell,shell不一定是命令行。
3.linux 文件系统
文件系统是用户最直观最平凡接触的部分,因此有必要先了解一下Linux的文件系统,特别是长期使用windows操作系统的人。
Linux的目录与windows最直观的区别在于-没有盘符,Linux的目录结构是单目录结构以‘/’为根目录节点。

linux其实是靠‘挂载点’来实现分区的功能。如上图的例子,/根目录挂载到disk1分区上,/home挂载到disk2分区上(简单理解就是/home这个目录的所有文件都存储在disk2分区上)。按windows的逻辑来理解就是‘c’这个盘符挂载到disk1分区,‘d’这个盘符挂载到disk2分区。
4.一些常用的文件操作命令
cd 切换目录
ls 显示当前目录下的文件或子目录list
pwd 显示当前所在的目录路径
touch 创建空文件
mkdir 创建目录
cp 复制文件 例子:cp test_one.txt test_two.txt cp -R Scripts/ Cpoy/(-R参数拷贝目录)
mv 重命名或移动文件或目录 移动到同一目录下就相当于重命名
rm 删除文件 rm -f 强制删除(不会有任何提示信息)
5.linux命令
从用户的角度来看linux命令,这些命令不过是一些字符,如上面提到的cd,ls,如果用户想要切换目录,那么必须在shell终端敲入cd这两个字符。但从操作系统的角度来看,这些命令其实就是一些程序,cd就是名字为cd,功能是切换目录的一个程序。上文提到shell也是一个程序,用来进行人机交互,当用户敲下cd命令时,shell作为父进程会创建一个子进程来执行cd这个程序。在windows中用鼠标双击打开某个程序的过程也是类似的,也需要创建一个子进程。区别不过在于linux是在键盘上敲命令,windows是用鼠标双击,只不过命令的方式对用户不太友好,需要记住一大堆的命令(程序的名称)和相应命令的参数。

linux命令分为外建命令和内建命令。外建命令就像上文所说的是存在于bash shell之外的程序。它们并不是shell 程序的一部分。外部命令程序通常位于/bin、/usr/bin、/sbin或/usr/sbin中。而内建命令其实就是shell程序的一部分,被编译在一个程序之中。所以使用内建命令不需要创建子进程,内建命令的使用要比外部命令的开销要小。
6.linux环境变量
无论是在linux还是windows中安装一些软件(如JAVA,Maven)都需要配置环境变量。特别是在GUI的windows中配置,使得环境变量特别难于理解是个什么东西。其实环境变量说白了就是key=value形式的一组变量而已,就像java编程中的properties文件一样。Linux环境变量会存储在一个配置文件之中,shell程序启动的时候会去读取这个文件(/etc/profile),然后作为shell进程中的变量。环境变量分为局部变量和全局变量,/etc/profile这个配置文件中的变量一般作为全局变量,也可以在shell中自己定义局部变量,但是局部变量只是存在于内存中,是没有保存到/etc/profile文件中的,所以重启shell之后局部变量就没有了。抓住本质,其实环境变量就是配置文件中的数据而已,最常见的用途就是让shell知道去哪个目录下去查找外部命令程序,例如吧java/bin这个路径配置到PATH变量中,shell在执行的时候才能找到java这个外部命令。就像java编程时要配置数据库的datasoure.properties文件一样。
7.重定向和管道
命令执行的结果往往输出在控制台上,但是我们可以通过重定向的方式将结果输出到另一个位置(如文件)。重定向可以用于输出也可以用于输入。例子:ls > file.list 这样就把ls命令执行的结果输出到了file.list文件中。
我们还可以通过管道将一个命令的输出作为另一个命令的输入。当然这个操作我们也可以通过重定向的方式来实现,只是重定向的方式略显复杂
重定向:rpm -qa > rpm.list sort < rpm.list
管 道:rpm -qa | sort
查询日志时我们常常可以使用管道来达到‘并且’的效果。
grep '关键字1' info.log | grep '关键字2' info.log 这样可以达到搜索同时包含关键字1和关键字2的日志信息。
Linux shell 1-初步认识的更多相关文章
- [拾 得] 一枚迷人的贝壳 SHELL / Linux | shell 脚本初步入门
坚持知识分享,该文章由Alopex编著, 转载请注明源地址: http://www.cnblogs.com/alopex/ 索引: 什么是shell shell的分类 shell脚本的执行方式 ...
- Linux服务器的初步配置流程
作者: 阮一峰 日期: 2014年3月14日 开发网站的时候,常常需要自己配置Linux服务器. 本文记录配置Linux服务器的初步流程,也就是系统安装完成后,下一步要做的事情.这主要是我自己的总结和 ...
- 第5天(半天)【shell编程初步、grep及正则表达式】
第5天(半天)[shell编程初步.grep及正则表达式] shell编程初步(01)_recv shell脚本:文本文件 #!:/bin/bash #!:/usr/bin/python #!:/us ...
- linux shell 中的sleep命令
开始还以为是这样的语法: sleep(1), 后面发现是: linux shell 中的sleep命令 分类: LINUX 在有的shell(比如linux中的bash)中sleep还支持睡眠(分,小 ...
- Linux shell脚本编程(三)
Linux shell脚本编程 流程控制: 循环语句:for,while,until while循环: while CONDITION; do 循环体 done 进入条件:当CONDITION为“真” ...
- Linux shell脚本编程(二)
Linux shell脚本编程(二) 练习:求100以内所有偶数之和; 使用至少三种方法实现; 示例1: #!/bin/bash # declare -i sum=0 #声明一个变量求和,初始值为0 ...
- Linux shell脚本编程(一)
Linux shell脚本编程: 守护进程,服务进程:启动?开机时自动启动: 交互式进程:shell应用程序 广义:GUI,CLI GUI: CLI: 词法分析:命令,选项,参数 内建命令: 外部命令 ...
- Linux Shell 流程控制语句
* 本文主要介绍一些Linux Shell 常用的流程控制语句* 1. if 条件语句:if-then/if-elif-fi/if- else-fi if [条件判断逻辑1];then command ...
- Linux Shell 截取字符串
Linux Shell 截取字符串 shell中截取字符串的方法很多 ${var#*/} ${var##*/} ${var%/*} ${var%%/*} ${var:start:len} ${var: ...
- Linux Shell 重定向与管道【转帖】
by 程默 在了解重定向之前,我们先来看看linux 的文件描述符. linux文件描述符:可以理解为linux跟踪打开文件,而分配的一个数字,这个数字有点类似c语言操作文件时候的句柄,通过句柄就可以 ...
随机推荐
- Customize User Interfaces and Pass User Input to Installer Classes
In this article I am going to demonstrate how to customize your MSI install to prompt the user for s ...
- 使用 dbdeploy.net 管理数据库变更
使用 dbdeploy.net 管理数据库变更 没有包含数据库的持续集成都是假的.这可不是我说的.一直以来都没能找到一个理想的数据库变更管理工具.直到转了 java 再回来,才发现 dbdeploy ...
- Public Private Protect Inheritance and access specifiers
In the previous lessons on inheritance, we've been making all of our data members public in order to ...
- Python 入门demo第二篇
循环执行逻辑 #-*- coding: UTF-8 -*- import time import urllib2 def task(i): urlstr='http://baidu.com' html ...
- 04-hibernate注解-一对一双向外键关联
一对一双向外键 1,主控方的配置同一对一单向外键关联. 2,@OneToOne(mappedBy="card") //被控方 @OneToOne(mappedBy="ca ...
- 默认权限umask
什么是umask? 当我们登录系统之后创建一个文件总是有一个默认权限的,那么这个权限是怎么来的呢?这就是umask干的事情.umask设置了用户创建文件的默认 权限,它与chmod的效果刚好相反,um ...
- 乐鑫esp8266基于freeRtos实现私有服务器本地远程OTA升级
目录 一.前言: 二.回顾下OTA的流程: 三.lwip网络框架的知识的使用: 四.如何处理服务器返回的数据? 五.扇区的擦除和烧写? 六.如何调用? 七.好好享用吧! 八.下载: 九.工程截图: 代 ...
- 使用typescript开发js代码提升代码维护性
function test() { var gs = new Greeter('ss'); alert( gs.greet()); } window.onload = test; class Gree ...
- jquery cookie操作方法
1. 设置cookie的值,把name变量的值设为value $.cookie(’name’, ‘value’); 2.新建一个cookie 包括有效期 路径 域名等 $.cookie(’n ...
- Atitit.php nginx页面空白 并返回500的解决
Atitit.php nginx页面空白 并返回500的解决 1.1. 空白问题起源1 1.2. Php.ini 开启display_err1 1.3. 修改www.conf ,并重启动.重启php ...