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功能

 

  1. 命令行编辑
  2. 内部命令和外部命令
  3. 命令补全 路径补全
  4. 命令历史
  5. 文件名通配符
  6. 命令别名
  7. 命令替换
  8. 命令行展开{} 多项式
  9. 管道和重定向

 

 

 

命令行编辑

 

  光标快速移动

 

  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

 

12345

 

[zzy@WebServer ~]$ echo "abcde">>hn

 

[zzy@WebServer ~]$ cat hn

 

12345

 

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

 

谢谢韩立辉老师 

posted @ 2019-04-07 20:03  阮羊  阅读(851)  评论(0编辑  收藏  举报