Linux知识点笔记二

Shell基本命令

shell简介

在这里插入图片描述

shell工作原理

命令: 是用户向系统内核发出控制请求,与之交互的文本流
命令行: 指的是供用户输入命令的界面,其本身只是接受输入,然后把命令传递给命令解释器。
shell:命令行解释器,将用户命令解析为操作系统所能理解的指令,实现用户与操作系统的交互。当需要重复执行若干命令,可以将这些命令集合起来,加入一定的控制语句,编辑成为shell脚本文件,交给shell批量执行

shell命令提示符格式

username@hostname:direction$

username:用户名,显示当前登录用户的账号
hostname:主机名,显示登录的主机名
direction:目录名,显示当前所处的路径,当在根目录下显示为/,当在用户主目录下显示为~

shell命令格式

command [options] argument1 argument2 ...

command:命令名称,shell命令或程序,严格区分大小写
options:命令选项,用户改变命令执行动作的类型,由-引导,可以同时带有多个选项
argument:命令参数,指出命令作用的对象或目标,由的命令允许带多个参数注意事项:
1.一条命令的三要素之间要用空格隔开
2.若将多个命令在一行书写,用分号;将各命令隔开
3.如果一条命令不能再一行写完,在行尾使用反斜杠\标明该条命令未结束
4.如果命令不带选项和参数,通常使用默认的
约定:命令提示符简写:$-普通用户,#-root用户,表示用户可以输入命令了。##注释

命令行补全

command或filename + <TAB>
  1. 按下Tab健,补全文件名
  2. 连续按下两次Tab健
    如果存在多个文件和命令相同前缀,shell列出所有相同前缀的文件和命令

查询命令历史

Bash将用户曾经键入的命令序号保存在一个命令历史表中。
按上下健,可以查询命令历史 history命令

history [n]

罗列命令历史表,默认保留500条命令。
n:罗列 近的n条环境变量HISTSIZE
echo $HISTSIZE:显示历史命令的容量
HISTSIZE=1000:修改历史命令容量为1000(中间不能加空格)

通配符、管道和重定向

通配符

shell命令的通配符
通配符含义实例
*匹配任意长度的字符串file_*.txt匹配:file_1.txt、file_thy.txt
?匹配一个长度的字符file_?.txt匹配:file_1.txt、file_2.txt、file_3.txt
[…]匹配其中指定的一个字符file_[otr]匹配:file_o.txt、file_r.txt、file_t.txt
[-]匹配指定的一个字符范围file_[a-z]匹配:file_a.txt、file_b.txt、直到file_z.txt
[^…]除了其中指定的字符均可匹配file_[^otr].txt:file_o.txt、file_r.txt、file_t.txt其他文件

管道

|:命令通过该符号连成了一个管道
命令1 | 命令2 |命令3:命令1的输出 是 命令2的输入;命令2 的输出 是 命令3的输入。
和 ; 区分
命令1 ; 命令2 :分开执行各自的操作,是没有任何关系的 cd day31 ; ls :先进目录,然后列出当前目录的文件

eg:
ls | wc -w
ls列出当前目录的文件名,作为输出给wc指令,wc -w统计有多少个单词 == 文件数量
wc:统计文档信息
-w:统计多少单词
-l:统计多少行
-m:统计多少字符

重定向

1. 重定向输入

文件名 :将该文件作为重定向的输入源。

改变了输入目标。键盘->文件 实现文件a.txt输入内容,终显示在屏幕上。

2. 重定向输出

文件名 :将该文件作为重定向的输出源,即将输出结果显示在该文件内。(采用w(新建)模 式)
文件名 :将该文件作为重定向的输出源,即将输出结果显示在该文件内。(采用a(追加)模 式)

$./test >b.txt 
$./test >>b.txt

改变了输出目标。屏幕->文件
第一条:
如果文件不存在,新建文件,并且将输出内容写入到新建的文件内
如果文件存在,清除文件内容,重写新的数据内容
第二条:
如果文件不存在,新建文件,并且将输出内容写入到新建的文件内
如果文件存在,追加写入(接着后面写)

3. 组合重定向

文件 -> 文件

$./test <a.txt >b.txt   ##拷贝新建 
$./test <a.txt >>b.txt  ##拷贝追加

改变输入目标,键盘->文件
改变输出目标,屏幕->文件
运行程序时,实现文件->文件。(复制拷贝)

$vim test.c
#include <stdio.h> 
int main(int argc, const char *argv[]) {      
while((ch = getchar()) != EOF ){   
     putchar(ch); 
        }      
         return 0; 
        } 
$gcc test.c -o test
 $./test <a.txt 
 $./test >b.txt 
 $./test >>b.txt 
 $./test <a.txt >b.txt   ##拷贝新建 
 $./test <a.txt >>b.txt  ##拷贝追加

注意事项
test – 可执行程序 a.txt – 数据文件
a.txt > b.txt 这写法是错误的!!!!!!!
./test > ./a.out 这样也是错的!!!
1、重定向运算符链接一个可执行程序和一个数据文件,不能用于链接一个数据文件和另一个数据 文件,也不能用于链接一个程序和另一个程序。
2、使用重定向运算符不能读取多个文件的输入,也不能把输出定向至多个文件。
3、运算符与文件名之间的空格不是必须的。
ls >b.txt

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值