Unix、Linux命令行与Shell脚本编程大全

命令行提示符

在这里插入图片描述

  • hzh: 这是当前用户的名字
  • @:表示英语里的at,是“在…里”的意思。@前面是用户名,后面是所在的域
  • huangzhanghuandeMacBook-pro:这是当前电脑/主机的名字
  • ~:这是当前目录所在目录的名字,会随着用户进入不同目录而改变。~表示当前用户的家目录
  • 冒号:分隔符,没什么特别的含义
  • $:表示普通用户,有权限的限制
  • #:表示超级用户,也就是root(Ctrl+D退出root)

命令和命令参数

date
显示当前时间和日期

在这里插入图片描述

ls
ls是list的缩写,表示列出当前目录下的文件和目录

在这里插入图片描述

命令参数

短参数(一个字母)

最常用的参数形式就是一个短横线后接一个字母,要一次加好几个短参数,可以用空格隔开,多个短参数也可以合并在一起
如:ls -a 列出当前目录下的所有文件,包括隐藏文件
赋值:command -p 10 表示把10赋值给p参数

在这里插入图片描述

长参数(多个字母)
短参数是以一个短横线开始,而长参数是以两个短横线开始的,如果有多个长参数,是不能像多个短参数那样合并写的,而是只能以空格隔开
如:ls -all
赋值:command --parameter=10

如何找到一个命令

Tab键不仅可以补全命令,还可以补全文件名、路径名(按Tab键两次)
查找:例如输入c,按两次Tab,那么终端将会提示所有以字母c开头的命令
在这里插入图片描述

  • 空格键:跳到下一页
  • 回车键:跳到下一行
  • q:退出列表

命令的历史记录

  • 向上键:按时间顺序向前查找用过的命令,每按一次就前进一个命令
  • 向下键:按时间顺序向后查找用过的命令,每按一次就前进一个命令

history

history这个命令,用于列出之前使用过的所有命令, 前面有编号,如果要重新运行对应编号的命令,可以用!编号

在这里插入图片描述

实用快捷键

  • Ctrl + L 清屏,相当于clear
  • Ctrl + D 文件结束符,如退出root身份或关闭当前终端
  • Shift + PgUp 用于向上滚屏,与鼠标的滚轮向上滚屏是一个效果
  • Shift + PgDn用于向下滚屏,与鼠标的滚轮向下滚屏是一个效果
  • Ctrl + A 光标跳到一行命令的开头,相当于Home
  • Ctrl + E 光标跳到一行命令的结尾,相当于End
  • Ctrl + U 删除所有在光标左侧的命令字符
  • Ctrl + K 删除所有在光标右侧的命令字符
  • Ctrl + W 删除光标左侧的一个 “用空格隔开的一个字符串”
  • Ctrl + Y 粘贴上面三个删除的字符串

文件的组织

根目录
Linux中有且只有一个根目录,就是/,根目录就是Linux最顶层的目录

目录的结构
Linux中,用斜杠/来表示目录的层级与包含关系,如/user/bin,表示bin这个目录是user这个目录的一个子目录

根目录的直属子目录

  • bin:binary的缩写,表示“二进制文件”,包含了被所有用户使用的可执行程序
  • boot:与Linux启动密切相关的文件
  • dev:device的缩写,表示“设备”,它里面的子目录,每一个对应一个外设
  • etc:包含系统的配置文件
  • home:用户的私人目录
  • lib:library的缩写,表示库,包含程序所调用的库文件
  • media:媒体,外设如(USB、SD卡、DVD、光盘)插入
  • mnt:mount的缩写,用于临时挂载一些装置
  • opt:可选的应用软件包,用于安装多数第三方软件和插件
  • root:超级用户的主目录
  • sbin:system binary,系统级的重要可执行程序
  • srv:service,包含一些网络服务启动之后需要取用的数据
  • tmp:temporary,存放临时文件的文件
  • user:安装了大部分用户要调用的程序
  • var:variable的缩写,包含一些log文件

在这里插入图片描述

pwd命令和which命令

pwd:显示当前目录的命令

在这里插入图片描述

which:获取命令的可执行文件的位置

每一条命令对应一个可执行程序,在终端输入命令,再按回车,其实就是执行了对应的程序
which命令接受一个参数,返回其可执行程序位于哪里

在这里插入图片描述

cd:切换目录

在这里插入图片描述
回到上一级目录:cd ..
连续后退两个层级:cd ../..
回到用户的家目录:cd

相对路径
不加 / ,相对当前目录而言

绝对路径
加 / 开头,表示根目录

do:显示目录包含的文件大小

在这里插入图片描述

  • du -h:以Ko,Mo,Go的形式显示文件大小
  • du -a:显示文件和目录的大小
  • du -s:只显示总计大小

cat 和 less:显示文件内容

cat
cat 文件路径:显示文件的所有内容,适合处理小文件
cat -n 再显示的文件内容上加上行号
cat命令后面可以接不止一个文件

在这里插入图片描述
less
less 文件路径:分一页一页地显示文件内容

  • 空格键:下一页
  • 回车:下一行
  • b:上一页
  • y:上一行
  • q:停止

head和tail:显示文件开头和结尾

head
head:默认显示文件的头10行
指定显示的行数,用 -n
在这里插入图片描述

tail
tail:默认显示文件的尾10行
指定显示的行数,用 -n
实时追踪文件的更新 -f

touch和mkdir:创建文件和目录

touch
如果touch命令后面跟着的文件名是不存在的,那么它就会新建一个空白文件
如果存在,就可以修改文件的创建时间或修改时间
touch也可以同时创建多个文件
文件名字有空格就加上双引号

在这里插入图片描述

mkdir
mkdir可以创建一个dir,可以同时创建好几个
在这里插入图片描述
还可以使用 -p 参数递归创建目录结构,如下命令会先创建one这个目录,再在里面创建two这个目录,在two里面再创建three这个目录

mkdir - p one/two/three

cp和mv:拷贝和移动文件

cp
可以拷贝单个文件,可以拷贝多个文件,可以拷贝目录

cp file newFile

复制文件到另一个目录,如下命令就是把file文件拷贝到了one这个目录中

cp file one/

复制文件到另一个目录,取新名字

cp file one/newFile

拷贝目录,在cp命令后加上-r或-R,目录中的所有内容都会被拷贝

cp -r dic newDic

*号通配符可以替代任何字符串,如下就是把目录下所有txt文件拷贝到folder目录下

cp *.txt folder

mv
mv是单纯的移动,相当于windows中的“剪切+粘贴”,如下命令就是把newFile文件移动到one这个目录

mv newFile one

移动文件夹,如下把folder下的所有移动到one这个目录中

mv folder one

通配符* ,如下把当前目录下所有txt文件移动到one目录下

mv *.txt one

mv可以用于重命名,如下命令将file重命名为renamed_file

mv file renamed_file

rm:删除文件和目录

rm可以删除一个文件、多个文件、目录,甚至整个Linux系统

rm file

加上 -i 参数,终端会向用户确认是否删除

rm -i file

加上 -f 参数,不会询问是否删除,强制删除

rm -f file

加上 -r 参数,递归删除其包含的子目录和文件

rm -r file

rm -rf 危险指令,用之前先搞清楚自己所在的目录,以及后面所加的路径。以免铸成大错!

ln:创建链接

ln命令用于在文件之间创建链接(快捷方式)
硬🔗

ln file1 file2

软🔗

ln -s file1 file2

sudo:以root身份运行命令

sudo 是 Substitute User DO 的缩写,就是“替换用户来执行…”的意思
sudo su 可以一直成为 root,exit回到个人用户

  • adduser:添加新用户
  • passwd:修改密码
  • deluser:删除用户
  • addgroup:创建群组
  • usermod:修改用户账户
  • delgroup:删除群组
  • chown:改变文件的所有者
  • chmod:修改访问权限

Nano文本编辑器

文本编辑器:编辑和查看文本文件,但不能对文字做格式处理

nano 
#打开Nano文本编辑器

在这里插入图片描述
此时可以在此输入了
底部的^符号表示Ctrl键

Ctrl+G:显示帮助文档Ctrl+O:保存文件Ctrl+R:打开其他文件Ctrl+Y:上一个屏幕Ctrl+K:剪切当前一行Ctrl+C:显示光标所在的位置
Ctrl+X:退出Ctrl+J:把多行内容合并到第一行Ctrl+W:查找Ctrl+V:下一个屏幕Ctrl+U:粘贴刚剪切的内容Ctrl+T:拼写检查

nano的参数

nano file.txt
#打开某文件名,如果没有则创建个空文件打开
  • -m:激活鼠标
  • -i:激活自动缩进
  • -A:激活智能Home键:按下键盘的Home键,光标就回跳到一行的最开始或缩进处
nano -miA file.txt
#同时激活三个属性

通过.nanorc来配置nano

一般Linux中的配置文件大多以点开头,并且多以rc结尾。比如vim的配置文件 .vimrc; Bash Shell 的配置文件 .bashrc。这些前面有个点的表示隐藏文件。这些配置文件用 ls -l 列不出来,需要用 ls -a 来列出

在家目录中,可能有或没有.nanorc文件,如果没有则创建一个

nano .nanorc

每一行一行配置语句,以set(激活)或unset(关闭)开头

set mouse
# 设置激活鼠标,之后每次启动nano不用再用-m参数了
set autoindent
# 激活自动缩进,相当于-i参数
set smarthome
# 激活智能home键,相当于-A参数

/etc/nanorc :全局的配置文件,是为系统上所有用户所共用的,只能被root修改,用sudo命令修改

Linux下载软件

Ubuntu下的软件包是软件所有文件的压缩包,后缀名 .deb ,不需要搜索下载,都放在软件仓库中(开源自由),全球有很多软件仓库服务器,里面的软件是一样的
在这里插入图片描述

当软件有依赖关系时,比如Eclipse依赖Java环境,Linux中,包管理系统会自动寻找安装缺失的依赖程序

#软件包缓存的更新
sudo apt update
#搜索软件包
sudo apt search xxx
#安装软件包
sudo apt install xxx
#删除软件包
sudo apt autoremove xxx
#升级所有已安装的软件包
sudo apt upgrade

阅读手册

man 这个词在英语中是“男人的”意思,所以Linux和Unix中流行着一句有趣的话:不懂就问一问“男人”

man xxx

man ls,显示ls命令的使用手册
在这里插入图片描述

  • NAME:手册页对应的命令和函数名字,后接简单描述
  • SYNOPSIS:概要。使用该命令的所有方法
  • DESCRIPTION:更深入的描述,包括所有参数和用法
  • AUTHOR:作者
  • REPORTING BUGS:bug汇报方式
  • COPYRIGHT:版权
  • SEE ALSO:扩展

apropos:查找命令

apropos xxx
# 根据关键字在手册中查找相关的命令

whatis:精简版

whatis ls
#手册的精简版

查找文件

locate:快速查找

locate filename
#查找文件
  • 优点:方便快捷,易于使用
  • 缺点:1.列出所有找到的内容 2.不能找到刚创建的文件(不在硬盘中查找而是在数据库里查找)

find:深入查找

find “何处” “何物” “做什么”
#查找文件(遍历实际硬盘)
  • 何处:目录,默认当前目录及其子目录
  • 何物:必传
  • 做什么:后续处理,默认只找到文件不做处理
find -name filename
#根据文件名查找
find path -name filename
#在path路径下查找
#根据文件大小查找
find path -size +10M #查找path路径下大小超过10MB的文件
find path -size -50K #查找path路径下大小小于50KB的文件
#根据文件的最近访问时间查找
find -name "*.jpg" -atime -7 #七天内在家目录中访问的JPG格式的图片
#仅查找目录或文件
find -name filename -type d #仅查找目录类型
find -name filename -type f #仅查找文件类型
#删除查到的文件
find -name filename -delete

数据处理

grep:筛选数据
grep:在文件中查找关键字,并且显示关键字所在的行
不仅可以实现简单的查找,而且可以配合正则表达式来实现比较复杂的查找

#text 代表要搜索的文本,file代表供搜索的文件
grep text file
#忽略大小写
grep -i text file
#显示行号
grep -n text file
#只显示文本不在的行
grep -v text file
#在所有子目录和子文件中查找
grep -r text file

正则查找

grep -E 正则 file

sort:为文件排序

# 排序(不区分大小写)后只显示在终端上
sort filename
# 排序后写入新文件
sort -o filename
# 倒序排列
sort -r filename
# 随机排序
sort -R filename
# 对数字排序
sort -n filename

wc:文件统计

# 返回 行数 单词数 字节数
wc filename
# 统计行数
wc -l filename
# 统计单词数
wc -w filename
# 统计字节数
wc -c filename
# 统计字符数
wc -m filename

uniq:删除文件中的重复内容

# 去重后显示在终端
uniq filename
# 去重后保存为新文件
uniq newFilename filename
# 去重后保存为新文件
uniq -c newFilename filename
# 只显示重复行的值
uniq -d filename

cut:剪切文件的一部分内容

# 只保留第二至第四个字符
cut -c 2-4 filename

<和<<:从文件和键盘读取

#将键盘输入的数值从小到大进行排列(回车键换行,END结束)
sort -n << END

监视系统活动和查看进程

w:快速了解系统中有哪些用户登录着,他们在干什么
在这里插入图片描述
uptime
up 4:49 表示开机到现在经过了四小时49分钟
load averages:表示负载(系统活动的一个指标),2.79表示一分钟以内的平均负载,3.06表示五分钟以内的平均负载,2.89表示15分钟之内的平均负载
在这里插入图片描述
ps:进程的静态列表
在这里插入图片描述
top:进程的动态列表
交互性的,并且实时更新

Ctrl+c:停止终端中正在运行的进程
Ctrl+c在终端中可以终止正在运行的程序,而在终端中拷贝,需要用“Ctrl+shift+C”和“Ctrl+shift+V”

halt:关闭系统

sudo halt

halt:关闭系统

sudo halt

reboot:重启系统

sudo reboot

vim

在Linux文本编辑器中,Vim和Emacs比较出名
在大部分linux系统中vim是默认安装的,如果没有则输入sodu apt install vim就可以安装,然后输入vim就可以启动vim了
vim工作模式

  • 交互模式:vim的默认模式,不能输入文本。但可以在文本间移动,删除一行文本,复制粘贴文本,跳转到指定行,撤销操作等等
  • 插入模式:按键盘 i 进入插入模式,按esc退出。可以在光标处输入文本
  • 命令模式:在交互模式下 按下冒号,输入命令后再按回车,可以执行命令,然后又回到交互模式。命令模式主要是运行一些命令

vim的好处就是只需要键盘就可以操作,完全不需要鼠标
vimtutor:vim的教程

输入vimtutor就可以进入教程
在这里插入图片描述
打开vim

vim 文件名

h i j k 上下左右移动
用方向键也可以(插入模式只能用方向键)

0和$ 移动到行首和行末
将光标移到一行的开始位置,按下0
将光标移到一行的末尾,按下 $

w 一个单词一个单词地移动
在交互模式下,w可以一个单词一个单词地移动

:w 保存文件

:q 退出
:q! 强制退出,不保存修改

:wq 保存后退出

x 删除字符
交互模式下 按x可以删除字符,4x可以删除光标后4个字符,nx可以删除光标后n个字符

dw 删除单词
如果光标在单词首字母,删除整个单词
如果光标在单词中间,删除光标到下一个空格前的字符
3dw 删除三个单词,ndw 删除n个单词

dd 删除行
2dd可以删除光标后两行,ndd可以删除光标后n行(剪切,后面可以粘贴)

d0 删除行首
删除从光标处到行首所有字符

d$ 删除行末
删除从光标处到行末所有字符

yy 复制
yy复制一行,yw复制一个单词,y$复制当前光标到行末的所有字符,y0复制当前光标到行首所有字符

p 粘贴

r 替换某个字符
r(replace)后写入字符,则把当前光标的字符替换为写入的字符 R 可以替换多个字符

u 撤销

g 跳转到指定行
7gg 跳转到第7行
G 跳转到最后一行
gg 跳转到第一行

/ 查找
按下/可以进入查找,输入要查找的字符串,即可查找
,n是跳转下一个匹配项

😒 查找并替换

# 只替换当前行的第一个匹配的
:s/旧字符串/新字符串
# 替换当前行所有匹配的
:s/旧字符串/新字符串/g
# 替换第line1行到第line2行的所有匹配字符串
:line1,line2 s/旧字符串/新字符串/g
# 替换文本汇总所有匹配的
:%s/旧字符串/新字符串/g

:sp 横向分屏

vim配置
网上有很多.vimrc

  • 1
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值