linux命令行大全

文章目录

  • 前言
  • LINUX命令行大全
  • 学习shell
    • 基本的
    • 操作文件与目录
    • 命令
    • 重定向
    • echo
    • 高级键盘技巧
    • 权限
    • 进程
  • 配置与环境
    • 环境
    • vi
    • 定制提示符
  • 常见任务和主要工具
    • 软件包管理
    • 存储介质
    • 网络
      • 检查和检测网络
      • 通过网络传输文件
      • 与远程主机的安全通信
    • 文件搜索
    • 归档和备份
      • 压缩
      • 文件归档
      • 同步文件和目录
    • 正则表达式
    • 编译程序
  • 编写shell脚本
    • 编写一个shell脚本
    • 启动一个项目
    • 自顶向下的设计
    • 流控制:IF分支语句
    • 读取键盘输入
    • while和until循环
    • 故障诊断方法
    • case分支
    • 位置参数
    • for循环
  • 总结

前言

本文是我阅读了《linux命令行大全》之后做的读书笔记,目的在于方便自己的复习回顾,如果有朋友想复习一下linux的内容,也可以按照我博客的内容过一遍,此外,我认为没写过linux的朋友也可以看这篇博客作为入门

linux命令行大全

举例来说:

可以实现对foo.txt的权限更改

符号表示法中,u,g,o分别表示用户,群组和其他用户

# 为文件所有者添加可执行权限,同时设置群组和其他用户具有读权限和可执行权限

一般可以用来设置默认权限,默认掩码值一般为0022

除了常用的rwx权限之外,还存在setuid,setgid,sticky位;setuid可以将一个实际用户id设置为程序所有者id,setgid可以把有效组id从该用户的实际组id更改为该文件所有者的组id,sticky可以阻止用户删除或者重命名文件(除非用户为程序所有者或root)

-l表示指定用户,后面输入user即可以其他用户和组id的身份来运行shell,不输入名称默认为root

这种格式下单个命令行command会被传递到一个新的shell环境下执行

sudo可以实现让一个用户拥有不同的用户身份执行命令,但是被限制为智能执行一条或者几条特定的命令;除此之外,sudo不用输入密码。

更改文件所有者和所属群组;把文件的所有者更改为tony chown的参数可以设置为

Bob 将文件所有者改为bob

Bob:users 所有者改为bob,所属群组改为users

:adnin 将所属群组改为adnin

bob: 将所有者改为bob,把文件所属群组改为bob登录时的群组

可以更改文件所在的组,功能和chown类似

可以更改当前用户的密码

进程

查看进程信息

显示所有进程,STAT列表示进程的状态

输出更详细的信息,包括虚拟耗用内存大小,CPU使用百分比等等

动态查看进程信息,按q退出

中断一个程序

暂停一个程序

在后台运行xlogo程序

查看从该终端启动的所有任务

fg命令后面加上%符号和作业编号,可以使进程回到前台运行;当程序被ctrl+z暂停的时候,也可以通过这个命令来恢复运行,作业编号可以从jobs命令中查看

该命令为通过kill来发送信号,其中PID信息可以通过ps命令来查看而signal包含很多

[signal]: 挂起信号,进程接收到之后将重启并重新读取它的配置文件

? 中断信号,等同于“Ctrl+c”

? 暂停信号

? 继续运行信号

配置与环境

环境

在bash中,存在两种数据类型:环境变量,shell变量。

shell变量是由bash存在的少量数据,而环境变量就是其他变量。

除去变量,shell还存储了一些编程数据(别名和shell函数)

printenv命令可以打印所有的环境变量,通过less管道打印可以实现;举例来说,我想查看名为USER的环境变量,输入就可以查看了

使用set命令可以打印shell变量,环境变量,任何已定义的shell函数;使用可以实现打印查看某单个变量的值

用户登录系统后,bash会读取启动文件的配置脚本,这些脚本定义了所有用户共享的默认环境

shell会话包含两种:login shell 和non-login shell;启动文件来自于:login shell中的启动文件,non-login shell中的启动文件。

修改环境:

我们想要修改环境,加入一条命令实现显示所有以.开头的文件

备份文件,防止出现错误

启动文本编译器

在文件中写入这句话

保存 退出编辑

激活修改,强制重新读取.bashrc文件,一般来说,重启shell才可以修改生效

vi

为了不被其他linux和unix用户鄙视,我们开始学习vi

进入vi之后, 表示退出vi, 表示强制退出vi, 表示保存

进入vi编辑模式,进入编辑模式之后,使用A命令可以快速到达行尾

可与复制当前行, 复制当前行到结尾, 可以剪切当前行, 裁剪当前行到结尾 可以粘贴我们复制的内容, 可以取消我们的操作

可以实现整个文件中o的位置,按n显示下一个n的位置

可以实现编辑多个文件

切换到下一个文件

切换到上一个文件

查看正在编辑的文件列表

切换到1文件中

保存工作时的:w操作并不是保存当前文件,而是另存为,下次打开当前文件,仍然是之前的版本

定制提示符

提示符的设计:

可以实现重新设置输入的提示符,A表示当前的时间,h表示当前机器的主机名,不包括域名,还有很多转义字符可以设置,这里不展开细说

文本的颜色,光标,保存提示符都可以进行设置,详细可以参考官方文档

常见任务和主要工具

软件包管理

多数linux发行版都使用了两种软件包技术阵容debian和red hat;ubuntu属于debian,centOS属于red hat

因为学习过程中我使用的是centOS7,所以下面仅记录red hat系统的操作方式,ubuntu的操作方式可以参考网上的其他教程

在库中查找软件包

安装库中的软件包

删除软件包

更新库中的软件包

列出所有已经安装的软件

判断软件包是否安装

显示已经安装的软件包的信息

查看某个文件是由哪个软件包安装得到的

?

存储介质

(这章的内容貌似有些过时和小众,我仅仅作为了解略读了一遍,毕竟这个年代,谁还会想着自己刻录一张光盘呢?)

挂载:管理存储设备首先要做的就是将该设备添加到文件系统树中,从而允许操作系统可以操作该设备,这个过程称之为挂载;卸载设备可以保证缓存中的所有剩余数据全部写入设备,从而设备可以安全移除

查看已挂载的文件系统列表

可以卸载设备,这个命令必须在挂载目录以外的地方执行才可以,否则会出现设备繁忙的错误警告

创建新的文件系统:1)创建一个新的分区布局 2)在驱动器上创建一个新的空文件系统

用fdisk命令进行磁盘分区

创建新的文件系统

检查,测试修复文件系统,类unix系统中,fsck修复的文件会存放在系统根目录下的lost+found文件中

格式化软盘:

首先执行格式化操作

用mkfs命令为软盘创建一个FAT文件系统

网络

warning: 学习一些大数据组件过程中总是会遇到网络相关的命令行,这一章需要仔细看!

检查和检测网络

在centOS7系统中,需要通过安装netstat

向网络主机发送IMCP命令,网络收到该数据包后会回应,以此验证网络连接是否正常

显示文件通过网络从本地系统传输到指定主机过程中所有停靠点的列表

检查系统中网络接口信息,这个命令结果的第二行显示有效的ip字段

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-nLbLvIaM-1620825058666)(/Users/lizhihan/Library/Application Support/typora-user-images/image-20210512210235802.png)]

?

通过网络传输文件

FTP(文件传输协议),用这种方式传输并不安全,因为他用的是明文传输,但是我使用的centos版本好像不支持书上的例子了,就跳过吧,在编译程序章节中我写了例子可以参考。

lftp是ftp的一种改进版,增加了很多功能。

wget是一种用于文件下载的命令行程序,举例 可以下载这个网页第一页的内容

这行代码实现了将本地文件Users/lizhihan_sx/Desktop/环球音乐片单.txt传入mbd_backend@mp-qube-worker-online008-hbaz1的/home/mbd_backend文件夹

与远程主机的安全通信

ssh(secure shell):它解决了两个问题 1. 验证主机的身分是否真实 2. 协议本身将本机和远程主机之间的通信内容全部加密

scp和sftp都可以实现安全的传输文件,简单示例:

文件搜索

warning: locate命令需要使用方式进行安装

? locate命令无法使用的时候,尝试使用进行数据库手动更新,默认每天更新一次

简单的文件查找方式

管道方式过滤含有bin的文件

列出系统主目录的文件列表清单

使用管道方法计算,主目录文件列表清单中文件的总量

只对普通文件进行搜索

只对目录文件进行搜索

查找大于1m的jpg普通文件,+表示大于,-表示小于

其他更多的test 项参数,可以通过 查看

在find找到文件之后,可以直接执行动作:

找到bak结尾的文件,找到就删除

按照顺寻运行,只有符合前两项的文件才会被print,如果print放在最前面,限定条件就无效了,因为print总是可以被满足的;可以直接理解为每个判定之间是一个连接符

除去上述option命令外,还可以加入其他option选项实现find程序陷入目录数的最大级别数,最小级别数等等

归档和备份

压缩

压缩文件,加上-c表示将输出内容写到标准输出端口

解压缩

只查看某个压缩文本文件的内容

bzip2也是一种压缩的方式,牺牲速度换取高质量,用法和gzip相似

文件归档

tar命令用于归档文件,tap archive的缩写

创建文件

从归档文件中提取文件

在归档文件末尾追加指定路径名

列出归档文件的内容

为playground文件创建一个归档文件playground.tar

列出归档文件的内容,查看已经备份了哪些文件

创建一个playground的zip归档文件,如果不加r进行递归的话,只会保留playground目录而不包括目录中的内容

提取zip文件夹中的内容

同步文件和目录

options表示-a这种命令,source和destination一般是一个本地文件或目录,一个远程文件或目录,或者一个远程rsync服务器

同步playground目录和它在foo目录中的副本,-a表示递归归档并保留文件属性,-v表示详细输出

正则表达式

利用grep搜索固定的字符串,列出/usr/bin目录下文件名包含zip字符串的所有文件

常用选项:

忽略大小写

输出不匹配的

输出匹配的数目

输出匹配项文件名而不是匹配项本身

多文件搜索时,抑制文件名输出

搜索所有文件,查找字符串bzip,且名称要匹配dirlist*.txt(当然,dirlist*.txt文件要存在)

.可以代表任何字符

^表示只与行开头进行比较,$表示只与行末尾进行比较

匹配包含bzip和pzip的文件;中括号的第一个字符为^表示不包含中括号中的内容的匹配项

匹配开头为数字或字母的文件名

引入|,表示或者,注意这里加不加()影响很大

限定符包含* + {},分别有不同的作用

加入–regx才可以支持正则表达式

可以利用less展示文件,并使用vi按下/,输入正则表达式

文本化处理,格式化输出,打印三个章节暂时跳过,对目前的后续学习没有帮助

其中包含了命令:

链接文件并打印到标准输出

对文本排序

报告并省略重复行

从每一行中移除目标文本

合并文件文本行

基于某个共享字段来联合两个文件的文本行

逐行比较两个已经排序好的文件

逐行比较文件

对原文件打补丁

转换或删除字符

用于过滤和转换文本的流编辑器

交互式拼写检查器


对行进行标号

设定文本行长度

文本格式化工具

格式化打印文本

格式化并打印输出数据

文档格式化系统


打印文件

打印文件

格式化文件,以在postScript上打印

显示打印状态信息

显示打印机队列状态

取消打印任务

取消打印任务

编译程序

为了进行练习,从一个叫做diction的GNU项目中选择一个程序进行练习

新建存储文件的文件夹

进入文件夹

使用ftp文本传输协议

匿名登录,无需输入密码

找所需要的文件位置

在ftp中使用get命令,将文件从ftp服务器复制到本地主机

退出ftp

configure程序是个源代码树下的一个shell脚本,任务在于分析生成环境。

生成程序,运行make时,会使用Makefile文件中的内容指导其操作。make有一个原则:目标文件比依赖文件新,make能够确保所有需要基于刚更新的代码而生成的程序都会生成。

在系统目录下安装最后生成的可执行程序,安装完成之后就可以使用该程序了

编写shell脚本

可以使用将命令行组合成程序的方式,编写shell脚本,使shell可以独立完成一系列复杂任务。

shell脚本就是包含一系列命令的文件,shell读取这个文件,然后执行这些命令,就好像把这些命令直接输入到命令行一样。

编写一个shell脚本

首先创建一个程序并使用vi编辑它

第一行称之为shebang,用来告知操作系统,执行后面的脚本应该使用的解释器的名字

使xxxx脚本可执行,权限755表示所有人可执行,700表示仅脚本所有人可执行。

需要指明脚本的路径才可以运行,因为我们的path变量中没有当前文件的路径,所以需要指明。通过 可以显示目录列表。

如果想像其他命令一样直接使用,可以将文件移动到path目录中:

除此之外,还可以直接更改PATH环境变量:

更改完成后重新读取.bashrc文件, 命令

建议:系统管理员使用的脚本放置在 中,普通脚本放置在 ;大多数情况下,本地支持的软件,脚本或编译好的程序,都应该放在 目录下。

更改virc文件可以为编写脚本提供方便,一般来说进入etc/ 目录,使用vi命令修改virc文件,输入:

启动一个项目

编写一个简单的shell脚本方式就像上一节提到的方式一样,下面举一个shell的实例,目的是制作一个HTML文件:

说明:HTML中, 表示的是标题文本,H1到H6可以理解为Markdown格式中的一个#到6个#; 表示的是一个段落。 元素的内容会显示在浏览器中。 元素的内容会显示在浏览器的标题栏中。 是一个必备属性。

除去上述使用echo的方法,我们还可以使用cat和here文档。

here文档会使shell将引号当作普通字符,这样就可以在here文档中随意嵌入引号了。

除此之外,如果不写HTML文件,输入普通的shell命令的话需要将所有的语句放在没一句的开头,将 改为 ,shell就会忽略tab字符,这样就可以不同把语句顶头写了,增加了可读性。

自顶向下的设计

先确定上层的步骤,然后逐步细化这些操作步骤的过程,成为自顶向下的设计。

函数的两种写法

function name{	commands	return}

来源:Foools

声明:本站部分文章及图片转载于互联网,内容版权归原作者所有,如本站任何资料有侵权请您尽早请联系jinwei@zod.com.cn进行处理,非常感谢!

上一篇 2021年4月11日
下一篇 2021年4月11日

相关推荐