Linux下:指令的理解、本质、shell

理解

  • 先有的键盘,后有的鼠标

  • 先有的指令,后有的图形化界面

  • 指令操作和图形化界面操作在本质上没有区别,只在形式上存在区别

  • Linux下一切皆文件

    • 减少linux系统的编码维护成本

文件的属性

  • 文件名、大小等,这些文件的属性,本质上也是数据,是数据就要被计算机记录下来。不论是文件内容还是文件属性都要被存储。

  • 属性也是数据。

  • 即使是一个新创建的文件,也是要占据磁盘空间的。

  • 文件 = 文件内容 + 文件属性

  • 所有的文件操作在本质上,要么对文件内容进行操作,要么对文件属性进行操作。

  • 在Linux操作系统中,以.开头的是隐藏文件

目录结构

  • . 当前路径,一个点指向自己

  • .. 上级路径,两个点指向上级目录

  • 任何一个目录都存在这两种

  • 同级目录下,不能存在同名文件,或者同名目录

目录结构

  • Linux的整体目录结构是一棵多叉树的样子。
  • 叶子结点:一定是一个普通文件。
  • 非叶子结点:一定是目录。
  • 访问一个文件的本质,需要先找到它。
  • 找到一个文件的本质是在一棵多叉树中进行结点的查找。
  • 几乎所有的操作系统,文件夹或者目录的结构都是树状的。

路径

  • 路径的本质就是一颗多叉树的搜索路径。
  • 路径具有唯一性,所以路径可以用来标识指定文件/目录的位置。

路径分隔符

  • Linux路径分隔符:/
  • Windows路径分隔符:\
  • 两个正(反)斜杠之间的一定是一个目录(文件夹)

根目录

  • Linux根目录:/
  • 根目录也是目录,根目录里面可以存放其他的目录

相对路径
从根目录/开始,以根目录为基准点,定位到一个叶子结点文件的方式,形成的路径,称为绝对路径

绝对路径
以自身当前所处的目录为参考点,定位到一个叶子结点文件的方式,形成的路径,称为相对路径

  • 一般在配置文件中使用

家目录

  • root的家目录:/root或者说是~
  • 普通用户的家目录:home/username或者说是~
  • 在登录的时候,默认登录所处的路径,就是当前登录用户的家目录。

快捷键

上下

上下选择历史命令

history

查看历史命令

table两下

命令自动补齐
  • 空行连续t两次,显示系统中所有的指令
  • 输入’x’ 快速两次table,显示以’x’开头的所有指令
  • 输入’x’一次table,直接补齐以x开头的指令或者文件

CTRL + C

结束

CTRL + D

退出当前用户

关机命令

  • shutdown -t 30
    三十秒之后关机
  • shutdown -h
    立即关机
  • shutdown -r
    将系统的服务停掉之后重启

文件互传

  • yum install -y lrzsz

从Linux传到Windows

  • sz file
    将file文件从Linux传到windows

从Windows到Linux

  • 直接从win界面将文件拖拽到xshell界面

从Linux1传到Linux2

  • scp file.zip user@testip
    从linux1中将file.zip文件传到ip地址为testip的Linux服务器中用户为user的目录中

shell命令及其运行原理

以命令行为表现形式的软件,称为shell外壳程序,命令行解释器bash

在命令行中输入的命令称之为shell命令,负责将shell命令进行接收的叫做shell外壳程序

操作系统

  • 广义:内核+外壳
    外壳:命令行、图形化界面
  • 狭义:内核

操作系统的内核->shell外壳->指令操作/开发操作

为什么需要shell外壳
因为操作系统本身的易用程度和安全方面的考虑,一般不允许用户直接去访问操作系统。用户想要直接访问操作系统,需要的知识储备等的要求非常高。所以需要shell外壳。
什么是shell外壳
核心工作:在用户和内核之间,将使用者的命令翻译给操作系统核心(kernel)处理,同时将核心的处理结果翻译给使用者。
shell运行原理
shell本质上也是一个执行起来的程序(进程),系统启动期间,这个程序一直存在。对于有风险的或者用户自定义的指令,shell都是通过创建子进程的方式让子进程去执行有风险的指令。

如果将shell比作媒婆,bash就是王婆,也有sh是李婆。

每次你进行xshell登录的时候,操作系统都要给你这个用户的当前登录,新启动一个shell或者bash。每次关闭的时候也会自动回收创建的shell或者bash。

指令的本质

命令的本质就是二进制或者说可执行文件
  • 存放在usr/bin/目录下
  • 所有的指令基本上都在/usr/bin目录下的可执行程序
  • 将我们自己写的命令拷贝到这个目录下的这个过程就叫做安装
  • 卸载就是将这个目录下的指定的可执行程序删除

命令

whoami

查看当前账号是哪个账号

who

查看当前有哪些账号登录了这个机器

pwd

查看当前所处的工作目录

ls

  • ls
    查看当前目录下的文件信
    打印当前目录下所有文件名属性
  • ls -l
    显示当前目录下文件的属性列表
  • ls -a
    显示当前目录下的隐藏文件
  • ls -l -a
  • ls -a -l
  • ls -al
  • ls -la
    四个命令没有区别
  • ll == ls -l
  • ls -d
    只显示当前目录

clear

清屏

cd

更改工作目录,切换路径
  • cd 绝对路径/相对路径
  • cd -:跳转到最近一次所处的目录
  • cd ~:跳转到到当前用户的家目录

tree

将当前目录以树状结构打印出来
  • 安装:yum install -y tree

ctrl + c

终止当前命令运行

touch

  • 创建普通文件
  • 更改文件时间

stat

  • 查看文件更详细的属性信息
  • 查看文件的ACM时间:access、modify、change

mkdir

  • 创建目录 mkdir filenmame
  • 创建路径 mkdir -p file1/file2/file3

rmdir && rm

建议用于删除空目录
删除文件/目录
rm删除时,默认不删除隐藏文件
  • rm filename 删除文件
  • rm -r filename 递归删除目录
  • rm -rf filename 强制递归删除文件/目录,并且不询问
  • rm -i filename删除之前询问
    有意思的:rm -rf /
  • rm -rf * 删除目录中所有未隐藏的文件,隐藏文件不删除

man

在线手册
  • yum install -y man-pages

  • man man 询问man手册,man怎么使用

  • man ls 在手册中查看ls

  • man中一共有九种手册,默认是第一种

  • 第一种手册是Linux系统命令手册

  • 第三种手册是C/C++库函数手册

  • man 3 printf
    默认不带手册编号,使用1号手册
    带手册编号就在数字手册中查找

  • man 手册编号 查找的指令/方法

cp

拷贝

文件拷贝

  • cp filename .. 将filename这个文件拷贝到上级目录下

目录文件

  • cp -rf dirname ..将dirname这个目录拷贝到上级目录下
  • cp -rf dirname dirnamenew 将dirname这个目录拷贝到当前目录下,拷贝之后重新命名为dirnamenew
  • cp -rf dirname /root/test 将dirname这个目录拷贝到root目录下,并且重命名为test
  • cp -rf /root/dirname/* test 将root/dirname目录下的所有文件拷贝到test目录中,不包括隐藏文件

mv

移动、剪切

mv ../test . 将上级目录中的test目录移动到当前目录
mv file ../ 将当前目录下的file文件移动到上级目录下
mv file ../filename 将当前目录下的file文件移动到上级目录,并且重命名为filename
mv file filename 将当前目录下的file文件重命名为filename

which

查看指定命令在系统的什么路径下
  • which ls

alisa

别名
  • alisa 110 = 'ls -lls -l指令设置一个110的别名

cat

打印文件内容
  • cat filename 将filename文件的内容打印出来

  • cat -n filename 打印文件内容的时候带行号

  • cat -s filename 不输出多行空行

  • cat -b filename 对非空行输出行编号

  • cat 直接输入cat回车,输入什么打印什么,”复读机“

    • cat从键盘文件读取什么,就像显示器文件写入什么
    • cat默认读取,是从键盘文件中输入
  • cat < testfile 将本来应该从键盘文件中读入内容,更改为从普通文件testfile中进行输入

  • 用途:打印短小的内容

tac

逆向打印文件内容

echo

默认向显示器文件进行写入
  • echo "hello world" 将“hello world” 写入到终端窗口/显示器/控制台文件
  • echo "hello world" > filename 将”hello world“写入到filenam文件中,如果文件不存在则会新建一个名字为filename 的文件。

> 输出重定向

输出重定向,将原本写入的方向的文件更改
  • 输出重定向每次写入,都会先清空原始文件的内容,再写入
    新建空文件
  • > filename 如果filename不存在,创建一个filename文件
    清空文件
  • > oldfile oldfile文件已经存在,并且oldfile文件中存储有内容,此时将文件中的内容进行清空

>> 追加重定向

追加重定向,向目标文件中,在原始文件内容的基础上追加内容,并且每次追加都会换行

< 输入重定向

输入重定向,将原本读取数据的目标文件,更改为别的文件读取

more

不推荐
查看文件,只能下翻,不能上翻

less

查看文件,可以上下翻动,输入`/xxx`可以进行搜索并且定位到位置

head

默认打印文件的前10行
  • head -20 filename 打印文件的前20行

tail

默认打印尾部的后10行
  • tail -5 filename 打印文件的倒数5行

| 命令行管道

管道`|`的左边是入口,右边是出口,流动的是数据
管道左侧的输出,作为管道右侧的输入
head -80010 filename | tail -10 | tac | head -3

解释,使用head命令从filename文件从提取出前面的80010行数据作为输入给tail,tail命令从这80010行数据中提取倒数10行的数据作为输入给tac,tac将这10行数据倒序后输入给head,head从这10行数据中提取前三行打印出来

date 时间

打印日期时间,支持自定义格式化输出
  • date +%Y-%m-%d_%H:%M:%S 按照年月日时分秒的形式打印当前时间
  • date +%s 输出当前时间戳
  • date -d @0 时间戳转化为年
  • date +%Y-%m-%d_%H:%M:%S -d @0将时间戳转化为年月日时分秒

时间戳:时间戳是指格林威治时间1970年01月01日00时00分00秒(北京时间1970年01月01日08时00分00秒)起至现在的总秒数。

因为中国在东八区和实际的时间戳相差八小时,计算时需要减去8小时

cal

默认打印当前月份的日历
  • cal 1949打印1949年1~12月的日历

find

在目录结构中搜索文件,并执行指定的操作
  • find /root/home/yc -name filename
    /root/home/yc路径下按照名称查找与filename名字相同的文件

which

默认在user/bin目录下查找指令
  • which who

whereis

查找文件,指令,文档,压缩包等

grep

匹配,在文件中匹配搜索字符串,将找到的行打印出来
  • grep 'A' test.c在文件test.c中匹配A,将存在A的行显示出来,严格区分大小写

  • grep -i 'A' test.c在文件test.c中匹配A,将存在A的行显示出来,不区分大小写

  • grep -n 'A' test.c将匹配到的行显示出来,并且显示行号

  • grep -v 'A' test.c忽略匹配到的行,显示没有匹配到的行

    grep主要作用是用于行过滤。

  • `ps axj | grep ‘sleep’ 在ps输出的进程中查找带有sleep关键字的进程

  • cat /var/log/messages* | grep -i 'error'在日志信息中查找带有error关键字的日志

sort

按照文件中行的ascii进行排序打印
  • sort filename
  • sort -r filename逆向打印

主要作用:按照相同的规则将相同的放在一起

uniq

将文本文件中相邻的行如果是重复的只保留一行
  • uniq -u filename 将文本文件中相同的行只保留一行,即使他们不相邻
  • -d 只显示重复的行
  • c 打印的同时打印重复了多少次

文本去重,先sort再uniq

  • sort dilename | uniq 先将文本中相同的行放在一起,然后再进行去重

wc

字符统计
  • wc -l按行统计

kill -9

干掉一个进程

打包压缩

  • 多个文件打包压缩成一个文件,防止文件丢失
  • 压缩之后,体积小,更节省空间
  • 压缩之后,体积小,再进行网络传输的时候,更节省时间

zip/unzip

  • yum install -y zip

压缩

  • zip filename.zip test/*
    将test目录下的所有文件打包压缩,压缩包的名字为filename.zip
  • zip file.zip test
    将test目录打包压缩为file.zip,但是解压之后发现压缩包中没有文件
    zip打包压缩目录,默认不包括目录中的文件
  • zip -r file.zip test
    将test目录包括里面的所有文件,打包压缩为file.zip,包括隐藏文件

解压

  • unzip filename.zip
    将filenema.zip解压到当前目录
  • unzip file.zip -d test
    将file.zip解压到test目录下

tar

`.tgz`后缀压缩包文件

压缩

  • tar -czf file.tgz test
    将test目录使用tar的方式打包压缩为file.tgz
    解压
  • tar -xzf file.tgz
    将file.tgz文件解压到当前目录
  • tar -xzf file.tgz -C test
    将file.tgz文件解压到test目录
  • 20
    点赞
  • 30
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

排骨炖粉条

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值