Linux基础入门 第二章 Linux终端和shell
Linux终端
进入编辑IP地址命令:vi /etc/sysconfig/network-scripts/ifcfg-eth0
按键“i”:进行编辑
按键“ESC”:退出编辑
按键“:”:输入wq,退出
重启网络服务命令:/etc/init.d/network restart
虚拟终端 mingetty 程序产生
切换终端 ctrl+alt+FN N=1~6
输入tty显示当前的那个终端
模拟终端 使用ssh通过网络连接到Linux
/dev/pts/0
Secure shell SSH TCP22端口连接到Linux
Linux的shell
GUI
Gnome C语言开发
KDE C++开发
Xface 轻量级图形界面
CLI
Bsh Unix提供的shell 功能弱
sh 安全稳定
csh Bill joy 研发Csh语法接近C语言 功能比sh强
ksh 商业版的ksh改进了csh GNU组织开发了免费的ksh 比商业版的ksh功能少
bash GNU组织融合了Ksh Csh 和sh特性重新开发 能够操纵Liunx和Unix
zsh
tcsh
查看当前使用的shell
[root@WebServer ~]# echo $0
-bash
查看Linux可用的shell
[root@WebServer ~]# cat /etc/shells
/bin/sh
/bin/bash
bash功能
- 命令行编辑
- 内部命令和外部命令
- 命令补全 路径补全
- 命令历史
- 文件名通配符
- 命令别名
- 命令替换
- 命令行展开{} 多项式
- 管道和重定向
命令行编辑
光标快速移动
CTRL+a 快速跳转到行首
CTRL+e 快读跳转到行尾
删除命令行中的内容
CTRL+w 删除光标前一个单词
CTRL+u 删除光标到行首的字符
CTRL+k 删除光标到行尾的字符
清屏
CTRL+l Windows命令提示符 cls
取消不执行的命令
CTRL+c
内部命令和外部命令
内部命令 shell程序自带的命令
外部命令 在系统的某个路径下的可执行程序
外部命令查找 依赖于PATH变量
查看外部命令搜索路径 查看PATH变量
echo $PATH
[root@localhost ~]# echo $PATH
/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/root/bin
type pwd 查看是否是内部命令还是外部命令
[root@localhost ~]# type pwd
pwd is a shell builtin
命令补全和路径补全
命令补全 按tab键补全命令 连按tab键 列出所有可能的命令
hash表缓存命令所在位置
hash –d wc 删除wc命令缓存
hash –r 清空hash缓存表
路径补全 按tab键补全路径 连按tab键 列出所有可能的命令
命令历史
查看命令历史:history
缓存中的命令覆盖历史文件中:history –w
将缓存的新命令 追加到历史文件中:history –a
查看缓存大小命令:echo $HISTSIZE
[root@localhost ~]# echo $HISTSIZE
1000
查看历史文件大小命令:echo $HISTFILESIZE
[root@localhost ~]# echo $HISTFILESIZE
1000
查看历史文件命令:echo $HISTFILE
[root@localhost ~]# echo $HISTFILE
/root/.bash_history
查看$HISTCONTROL变量的值
echo $HISTCONTROL=ignoreups
[root@localhost ~]# echo $HISTCONTROL
Ignoredups 不记录后面重复的命令,只记录第一个
export HISTCONTROL=ignorespace
[root@localhost ~]# export HISTCONTROL=ignorespace
[root@localhost ~]# echo $HISTCONTROL
Ignorespace 不记录以空格开始的命令
export HISTCONTROL=ignoreboth
[root@localhost ~]# export HISTCONTROL=ignoreboth
[root@localhost ~]# echo $HISTCONTROL
Ignoreboth 不记录以空格开始的命令,也不记录后面重复的命令
执行之前的命令
History 查看命令历史
!10 可以执行命令历史中第10行命令
!-1 可以执行命令历史中倒数第1行命令
上下键可以翻命令历史
Ctrl+p 向上翻
Ctrl+n 向下翻
当前命令 调用上一条命令的最后一个参数
第一种方法:
ESC松开 再按“.”
第二种方法:
输入“!$”
清空命令历史:history -c
[root@localhost ~]# history -c
[root@localhost ~]# history
1 history
History 命令参数
-c 清空命令历史
-w 保存命令历史到历史文件
-a 附加命令历史到历史文件
-d 4 删除命令历史的第4条命令
文件名通配符
通配符 特殊的字符 不表示字符的表面意思 而是能够匹配符合指定特征的字符
“*” 代表任意长度的字符
“?” 代表任意单个字符
“[]”
“[^]”
“[‘ ‘]”
查看当前目录下所有的文件名字
[root@WebServer tmp]# ls
a1c a5b a b acb bac bca cab yum.log
a3d a7c abc b9c bba caa lost+found
通配符“*”
[root@WebServer tmp]# ls a*
a1c a3d a5b a7c a b abc acb
通配符“?”
[root@WebServer tmp]# ls a?b
a5b a b acb
通配符“[字母区间]”
[root@WebServer tmp]# ls a[a-z]b
Acb
通配符“[数字区间]”
[root@WebServer tmp]# ls a[1-9]c
a1c a7c
通配符“[‘ ‘]” 查找文件名中间有空格的文件
[root@WebServer tmp]# ls a[' ']b
a b
[:digit:] 代表数字 [0-9]
[root@WebServer tmp]# ls a[[:digit:]]c
a1c a7c
[:space:] 代表空格
[root@WebServer tmp]# ls a[[:space:]]b
a b
[:lower:] 代表[a-z]
[:upper:] 代表[A-Z]
[:alpha:] 代表[a-Z]
通配符“[^ ]”排除所选范围内的文件
[root@WebServer tmp]# ls a[^1-5]c
a7c abc
命令别名
alias cmdalias=’command [option][argument]’
查看alias命令为shell内部命令
[root@WebServer ~]# type alias
alias is a shell builtin
查看定义的别名
[root@WebServer ~]# alias
alias cp='cp -i'
alias l.='ls -d .* --color=auto'
alias ll='ls -l --color=auto'
alias ls='ls --color=auto'
alias mv='mv -i'
alias rm='rm -i'
alias which='alias | /usr/bin/which --tty-only --read-alias --show-dot --show-tilde'
定义命令别名
[root@WebServer ~]# alias if1='ifconfig eth0'
调用定义命令
[root@WebServer ~]# if1
eth0 Link encap:Ethernet HWaddr 00:0C:29:5B:9F:95
inet addr:192.168.80.222 Bcast:192.168.80.255 Mask:255.255.255.0
inet6 addr: fe80::20c:29ff:fe5b:9f95/64 Scope:Link
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:1413 errors:0 dropped:0 overruns:0 frame:0
TX packets:552 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:108205 (105.6 KiB) TX bytes:60165 (58.7 KiB)
调用命令本身
[root@WebServer ~]# \ifconfig
eth0 Link encap:Ethernet HWaddr 00:0C:29:5B:9F:95
inet addr:192.168.80.222 Bcast:192.168.80.255 Mask:255.255.255.0
inet6 addr: fe80::20c:29ff:fe5b:9f95/64 Scope:Link
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:1648 errors:0 dropped:0 overruns:0 frame:0
TX packets:667 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:127043 (124.0 KiB) TX bytes:74955 (73.1 KiB)
lo Link encap:Local Loopback
inet addr:127.0.0.1 Mask:255.0.0.0
inet6 addr: ::1/128 Scope:Host
UP LOOPBACK RUNNING MTU:16436 Metric:1
RX packets:5 errors:0 dropped:0 overruns:0 frame:0
TX packets:5 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:0
RX bytes:490 (490.0 b) TX bytes:490 (490.0 b)
查看当前目录下所有隐藏文件
[root@WebServer ~]# ls –a
将命令别名添加到用户环境配置文件
[root@WebServer ~]# vi .bashrc
# .bashrc
# User specific aliases and functions
alias rm='rm -i'
alias cp='cp -i'
alias mv='mv -i'
编辑/etc/bashrc 添加命令别名对所有用户生效
[root@WebServer ~]# vi /etc/bashrc
删除别名unalias cmdalias
命令替换
使用命令执行的结果替换该命令
使用“反引号”命令替换`命令`
[root@WebServer tmp]# touch file-`date +%Y-%m-%d-%H-%M-%S`
使用$(命令)替换命令
[root@WebServer tmp]# echo "The current directory is $(pwd)"
The current directory is /tmp
[root@WebServer ~]# date --help
[root@WebServer tmp]# touch file-$(date +%Y-%m-%d-%H-%M-%S)
在bash中反引号` `弱引用 能够实现命令替换,单引号‘ ‘强引用不能够实现命令替换
路径展开
mkdir /tmp/zz/a/b /tmp/yy/a/b等于mkdir /tmp/{zz,yy}/a/b
[root@WebServer ~]# mkdir /tmp/{a,b}{c,d} -v
mkdir: 已创建目录 "/tmp/ac"
mkdir: 已创建目录 "/tmp/ad"
mkdir: 已创建目录 "/tmp/bc"
mkdir: 已创建目录 "/tmp/bd"
[root@WebServer ~]# mkdir /tmp/{zz,yy}/a/b -pv
mkdir: 已创建目录 "/tmp/zz"
mkdir: 已创建目录 "/tmp/zz/a"
mkdir: 已创建目录 "/tmp/zz/a/b"
mkdir: 已创建目录 "/tmp/yy"
mkdir: 已创建目录 "/tmp/yy/a"
mkdir: 已创建目录 "/tmp/yy/a/b
mkdir /tmp/{etc/{init.d,sysconfig},usr/{lib,bin,include},var/{spool,run},proc,sys,bin,lib}
输入输出重定向
标准输入(stdin)
标准输出(stdout)
标准错误输出(stderr)
查看标准输入输出设备
ls –l /dev/std*
查看文件内容
tail –f /etc/passwd
ctrl+z 将进程转到后台
ps 查看运行的进程
ls –l /proc/进程号/fd 查看进程下的文件描述符
[root@WebServer ~]# ps
PID TTY TIME CMD
1235 pts/0 00:00:00 bash
1253 pts/0 00:00:00 tail
1274 pts/0 00:00:00 ps
[root@WebServer ~]# ls -l /proc/1253/fd
总用量 0
lrwx------. 1 root root 64 3月 11 04:47 0 -> /dev/pts/0
lrwx------. 1 root root 64 3月 11 04:47 1 -> /dev/pts/0
lrwx------. 1 root root 64 3月 11 04:47 2 -> /dev/pts/0
lr-x------. 1 root root 64 3月 11 04:47 3 -> /etc/passwd
lr-x------. 1 root root 64 3月 11 04:47 4 -> inotify
重定向:改变标准输入、标准输出的方向叫做重定向
重定向标准输出
操作符“>”将命令的执行结果输出到指定的文件中,而不是直接显示在屏幕上
将标准输出和标准错误输出重定向到同一个文件
[zzy@WebServer ~]$ find /etc/ -name "*.conf" &>ab
[zzy@WebServer ~]$ cat ab
将标准输出和标准错误输出重定向到不同文件
[zzy@WebServer ~]$ find /etc/ -name "*.conf" 1>a 2>b
[zzy@WebServer ~]$ cat a
操作符“>>”将命令执行的结果追加输出到指定文件
[zzy@WebServer ~]$ echo "12345">hn
[zzy@WebServer ~]$ cat hn
[zzy@WebServer ~]$ echo "abcde">>hn
[zzy@WebServer ~]$ cat hn
abcde
重定向标准输入
操作符“<”将命令中接受输入的途径由默认的键盘更改为指定的文件
Here document
操作符“<<”指定输入结束符
重定向 标准输出
Ifconfig eth0 1>123
[root@WebServer ~]# ifconfig eth0 1>123
[root@WebServer ~]# ifconfig eth0
eth0 Link encap:Ethernet HWaddr 00:0C:29:5B:9F:95
inet addr:192.168.80.222 Bcast:192.168.80.255 Mask:255.255.255.0
inet6 addr: fe80::20c:29ff:fe5b:9f95/64 Scope:Link
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:775 errors:0 dropped:0 overruns:0 frame:0
TX packets:309 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:59300 (57.9 KiB) TX bytes:37335 (36.4 KiB)
重定向 标准错误输出
Ifconfig eth1 2>234
[root@WebServer ~]# ifconfig eth1 2>234
[root@WebServer ~]# cat 234
eth1: error fetching interface information: Device not found
[zzy@WebServer ~]$ find /etc/ -name "*.conf"
/etc/security/group.conf
find: “/etc/audit”: 权限不够
管道技术
1、 在管道后面的命令,都不应该再加文件名
2、 再管道中只有标准输出才能传递给下一个命令 标准错误输出直接输出到终端
可以把标准错误输出给重定向
[worker@WebServer ~]$ find /etc –name “*.conf” 2>/dev/null | grep rc
3、 有些命令不支持管道技术
xargs 让ls支持管道技术
[root@WebServer ~]# which cat | xargs ls –l
谢谢韩立辉老师
Linux基础入门 第二章 Linux终端和shell的更多相关文章
- Linux 基础入门 第二周9.21~9.27
一.学习内容 本周主要学习内容主要贴合: 在进行<深入理解计算机系统>这门课的实验中没有遇到什么大问题,学习内容与上周实验<linux基础入门>有相似之处.本实验中的内容比较贴 ...
- Linux基础入门 第一章:Linux环境搭建——Redhat 6.4图文安装教程
1.创建新的虚拟机 2.选择自定义 3.选择Workstation 10.0 4.选择稍后安装操作系统 5.选择Red Hat 6 64位 6.对虚拟机命名和选择安装位置 7.选择处理器配置 8.选择 ...
- Linux 基础入门(新版)”实验报告一~十二
实验报告 日期: 2015年9月15日 一.实验的目的与要求 熟练地使用 Linux,本实验介绍 Linux 基本操作,shell 环境下的常用命令. 二.主要内容 1.Linux 基础入门& ...
- Linux基础入门学习笔记20135227黄晓妍
学习计时:共24小时 读书:1小时 代码:8小时 作业:3小时 博客:12小时 一.学习目标 1. 能够独立安装Linux操作系统 2. 能够熟练使用Linux系统的基本命令 3. 熟练使用L ...
- Linux基础入门教程
Linux基础入门教程 --------- Linux学习路径 Linux学习者,常常不知道自己改怎么学习linux:Linux初级,也就是入门linux前提是需要有一些计算机硬件相关的知识或是有一下 ...
- Linux基础入门 - 3
第四节 Linux 目录结构及文件基本操作 4-1.Linux目录结构 Linux 的目录与 Windows 的目录的实现机制是完全不同的.一种不同是体现在目录与存储介质(磁盘,内存,DVD 等)的关 ...
- Linux基础入门 - 2
第三节 用户及文件权限管理 3-1.Linux用户管理 Linux 是一个可以实现多用户登陆的操作系统,他们共享一些主机的资源,但他们也分别有自己的用户空间,用于存放各自的文件.但实际上他们的文件都是 ...
- Linux基础入门 - 1
第一节 Linux简介 Linux 就是一个操作系统,也就是系统调用和内核那两层,Linux 本身只是操作系统的内核(内核是使其他程序能够运行的基础.它实现了多任务和硬件管理,用户或者系统管理员交互运 ...
- 在学习linux基础入门时的一些问题总结(1)
本周在实验楼完成了<linux基础入门>的21个实验,虽然之前已经学习过linux的相关课程,对linux下的命令也有一些了解和实践,但完成这21个实验以及35个练习题仍然遇到了许多的问题 ...
随机推荐
- OpenGL学习--05--纹理立方体--BMP文件格式详解(转载)
http://blog.csdn.net/o_sun_o/article/details/8351037 BMP文件格式详解 BMP文件格式详解(BMP file format) BMP文件格式,又称 ...
- linux_kernel_uaf漏洞利用实战
前言 好像是国赛的一道题.一个 linux 的内核题目.漏洞比较简单,可以作为入门. 题目链接: 在这里 正文 题目给了3个文件 分配是 根文件系统 , 内核镜像, 启动脚本.解压运行 boot.sh ...
- mysql 客户端
MySQL是基于C/S模式的数据库管理系统.MySQL公司开发了众多的客户端软件来帮助用户管理MySQL软件,最著名的就是 MySQL Command Line Client 和 MySQL-Work ...
- Mysql中的delimiter详解
初学mysql时,可能不太明白delimiter的真正用途,delimiter在mysql很多地方出现,比如存储过程.触发器.函数等. 学过oracle的人,再来学mysql就会感到很奇怪,百思不得其 ...
- SQLSERVER数据库备份操作和还原操作做了什么
SQLSERVER数据库备份操作和还原操作做了什么 看了这篇文章:还原/备份时做了些什么 自己也测试了一下,下面说的错误日志指的是SQLSERVER ERRORLOG 一般在C:\Program Fi ...
- C# 运行 C#代码脚本文件
https://files.cnblogs.com/files/LittleJin/CSScriptRun.zip
- [C++] 用Xcode来写C++程序[6] Name visibility
用Xcode来写C++程序[6] Name visibility 此小结包括了命名空间的一些使用细节 命名空间 #include <iostream> using namespace st ...
- 屏蔽响应事件继续向父视图传递的category
屏蔽响应事件继续向父视图传递的category 这篇教程是上一篇教程的升级版,将复杂的代码封装成了category,更便于使用:) 效果: 源码: UIGestureRecognizer+EnvetI ...
- SQL server数据库的部署
一.实验目标 1.安装一台SQL SERVER(第一台),然后克隆再一台(第二台),一共两台,修改两台的主机和IP地址. 2.使用注册的方式,用第二台远程连接第一台 二.实验步骤 1)先打开一台Wi ...
- 缓存知识整理(包含Redis)
一.缓存知识 1.buffer和cache的区别 Buffer 缓冲 写操作 写缓冲 Cache 缓存 读操作 读缓存 磁盘-->内存-->CPU 2.PHP的缓存方案 官方文档:h ...