Linux命令行与Shell脚本编程大全——慕课网

01
计算机启动顺序:启动页面,启动操作系统,启动其他软件
02
操作系统的核心:内核。内核并不等于操作系统。内核提供系统副武,比如文件管理,虚拟内存,设备I/O。除内核以外,在应用软件和内核之间通常还有些作为中间件的API,可以供应程序调用;还包含一些基本的程序,例如文本编辑器,编译器,外壳程序(Shell,如常用的Bash)
03
1.Linux是免费的,相比Windows和MacOS的最大优势之一
2.Linux有2种不同的使用方式:命令行界面和图形界面
3.命令行界面功能强大,有一定难度,新手一般从图形界面入手
4.图形界面有不同的变体,称之为桌面管理器,常用的有Gnome,KED,Unity,XFCE等
5.获得Ubuntu系统比较简答,只需要下载.iso文件(磁盘镜像)。
(1)用硬盘安装,需要把文件烧写/刻录到光盘或者U盘。
(2)采用虚拟机的方式来安装Ubuntu,则不用刻录
04
安装Ubuntu必要步骤:磁盘分区

  • 硬盘(Hard Disk)分类: HDD(传统的磁碟型机械硬盘),SSD(固态硬盘)
  • 磁盘的逻辑结构:操作系统对硬盘进行读写时需要用到文件系统把硬盘的扇区组合成簇,并创建文件和树形目录制度,使操作系统对其访问和查找变得容易
  • 文件系统:是一套实现了数据的存储、分级组织、访问和获取等操作的抽象数据类型,是操作系统提供的一种抽象,介于应用程序软件和磁盘硬件之间的界面
  • 每个分区只能有一种文件系统。
  • Microsoft的文件系统:FAT16(在有些操作系统中只能管理2G大小的分区),FAT32(可管理不大于2T的分区),NTFS(New Technology File System,可以管理16Eo的分区)
  • Linux的文件系统:ext2(Second Extended FileSystem),ext3(T hird Extended FileSystem),ext4(Fourth Extended FileSystem)。

05 虚拟机安装Ubuntu
虚拟机软件:VirtualBox
建议安装增强功能
设置共享文件夹,共享剪贴板

07终端及其两种模式
1.控制台:只能通过键盘输入,没有图形界面
2.图形界面的终端:可以配置外观,使用鼠标
08命令行命令参数
1.命令行提示符

Linux命令行与Shell脚本编程大全——慕课网_第1张图片

shiyanlou:~/$

~:当前所在目录的名字,/ 是linux的根目录
$:表示普通用户,有权限设置
#:超级用户,root

sudo su

sudo su :切换用户身份为root
退出root:快捷键:Ctrl+D,或使用EXIT命令

whoami
hostname

whoami:获取用户名
hostname:获取主机名

2.命令及命令参数

date:获取当前日期
ls:list的缩写,列出当前目录下的文件和目录
ls -a:a是all的缩写,列出当前目录下所有文件,包括隐藏文件

短参数(一个字母)
command -p
command -p -a -T -c
command -paTc
长参数(多个字母)
command --parameter1 --parameter1

  • 如果有多个长参数,是不能像多个短参数那样合并写,只能用空格隔开
  • 长参和短参可以组合使用

参数的值
有一些参数需要赋值才可以,短参和长参赋值方式不同
eg:p参数赋值为10

command -p 10
command --parameter=10

09查找命令及历史记录

Tab的妙用
命令或路径名不完整输入时,按下Tab可补全命令。如果或选项太多,终端将会提示是否显示所有候选项。如果按下Tab键没有反映,则不存在当前命令或路径。
空格键:用于跳到下一页
回车键:用于跳到下一行
q:用于退出列表
命令的历史记录
向上键:按时间顺序向前查找用过的命令
向下键:按时间顺序向后查找用过的命令
Ctrl+R:用于查找使用过的命令
history:用于列出之前使用过的所用命令
!+序号 :则会再次运行序号所对应的命令
快捷键
Ctrl+L:清楚终端的内容,清屏。clear命令也可实现此效果
Ctrl+D:给终端传递EOF文件结束符(END Of File)
shift+PgUp:向上滚屏
shift+PgDn:向下滚屏

Ctrl+A:光标跳到一行命令的开头。home键具有相同效果
Ctrl+E:光标跳到一行命令的结尾。End键具有相同效果
Ctrl+U:删除所有在光标左侧的命令字符
Ctrl+K:删除所有在光标右侧的命令字符
Ctrl+W:删除所有在光标左侧的一个"单词"。单词是指用空格隔开的一个字符串。
Ctrl+Y:用于粘贴Ctrl+U,Ctrl+K,Ctrl+W删除的字符串。有点像“剪切-粘贴”

10文件组织,pwd和which命令

Windows根目录:C:
Linux根目录:/
Windows目录j结构:C:\Program Files\Baidu
Linux根目录:/usr/bin

目录介绍

bin:英语 binary 的缩写,表示“二进制文件”(我们知道可执行文件是二进制的)。包含了会被所有用户使用的可执行程序;
boot:英语 boot 表示“启动”,包含与 Linux 启动密切相关的文件;
dev:英语 device 的缩写,表示“设备”,包含外设。它里面的子目录,每一个对应一个外设。比如代表我们的光盘驱动器的文件就会出现在这个目录下面;
etc:etc 有点不能顾名思义了。因为 etc 是法语 et cetera 的缩写,翻成英语就是“and so on”,表示“…等等”,包含系统的配置文件。至于为什么在 /etc 下面存放配置文件, 按照原始的 Unix 说法(Linux 文件结构参考 Unix 的教学实现 MINIX),这下面放的都是一堆零零碎碎的东西, 就叫 etc 好了。哈哈 ,这其实是个历史遗留;
home:英语 home 表示“”,用户的私人目录。之前我们提过一些,在这个目录中,我们放置私人的文件,有点类似 Windows 中的 Documents 这个文件夹,也叫“我的文档”。Linux 中的每个用户(除了大管家用户,也就是超级用户 root 外。root 因为太厉害,拥有所有权限,所以比较“任性”,跟普通用户不住在一起)都在 home 目录下有自己的一个私人目录。比如我的用户名是 oscar,那么我的私人目录就是 /home/oscar;如果另一个用户叫 john,那么他的私人目录就是 /home/john;
lib:英语 library 的缩写,表示“”,包含被程序所调用的库文件。例如 .so 结尾的文件,在 Windows 下这样的库文件是以 .dll 结尾的;
media:英语 media 表示“媒体”。当一个可移动的外设(比如 USB 盘、SD 卡、DVD、光盘等等)插入电脑时,Linux 就可以让我们通过 media 的子目录来访问这些外设中的内容。
mnt:英语 mount 的缩写,表示“挂载”。有点类似 media,但一般用于临时挂载一些装置;
opt:英语 optional application software package 的缩写,表示“可选的应用软件包”,用于安装多数第三方软件和插件;
root:英语“”的意思。超级用户 root 的家目录/主目录。一般用户的家目录是位于 /home 下,不过 root 用户是个例外。之前的课程我们也提到过,root 是整个系统的超级用户,拥有一切权限,初学者请慎用此用户模式;
sbin:英语 system binary 的缩写,表示“系统二进制文件”。比起 bin 目录多了一个前缀 system,所以包含的是系统级的重要可执行程序;
srv:英语 service的缩写,表示“服务”。包含一些网络服务启动之后所需要取用的数据
tmp:英语 temporary 的缩写,表示“临时的”。普通用户和程序存放临时文件的地方
usr:英语 Unix Software Resource 的缩写,表示“Unix 操作系统软件资源”(也是个历史遗留的命名)。这个目录是最庞大的目录之一。有点类似 Windows 中的 C:\Windows 和 C:\Program Files 这两个文件夹的集合。在这里面安装了大部分用户要调用的程序;
var:英语 variable 的缩写,表示“动态的,可变的”。通常包含程序的数据,比如一些 log(日志)文件,记录电脑中发生了什么事。

pwd:显示当前目录的路径(Print Working Directory)
在这里插入图片描述
which:获取命令的可执行文件的位置
在这里插入图片描述

11:目录相关的命令

ls:列出文件和目录
cd:切换目录
du:显示目录包含的文件大小

Linux的终端是有颜色标注的
蓝色:目录
绿色:可执行文件
红色:压缩文件
浅蓝色:链接文件
灰色:其他文件
若没有文件颜色标注,可加上参数 --color =auto 来开启颜色标注
关闭颜色标注: 可加上参数 --color =none
ls:列出文件和目录

  • .(一个点)表示当前目录
  • …(两个点)表示上一级目录
参数 说明
ls -a 显示所有文件的目录,包括隐藏的
ls -A 不列出.和…这两个文件
ls-l 详细参数
ls-lh 以Ko,Mo,Go的形式显示文件大小。h:human-readable;Ko:千字节。
ls -lt 按文件最近一次修改时间排序

注:使用ls -l时,列出的文件详细信息中,文件的大小是以字节为单位的。 ls -lh 可变更形式
ls常用参数可一起使用
-a
Linux命令行与Shell脚本编程大全——慕课网_第2张图片
-lLinux命令行与Shell脚本编程大全——慕课网_第3张图片
参数详解:
1,文件权限:第一列的 drwxr-xr-x 之类的。暂时不需要理解,我们之后会用单独的一课来学习 Linux 下的文件权限;
2,链接的数目:第二列的 1,2 之类的。暂时不需要理解,之后的课也会解释;
3.文件所有者的名称:第三列的 oscar 或 root,表示这个文件或目录的所有者是哪个用户。如果此文件是属于另一个用户,比如说 john,那么文件所有者就会显示 john 了;
4.文件所在的群组:第四列的 oscar 或 root,表示这个文件或目录的是属于哪个群组。关于群组,我们暂时不需要理解,之后在文件权限的那一课会讲解;
5.文件大小:第五列的 4096 或 640 等等。单位是 octet,也就是 byte,是英语“字节”的意思。比如 share 那个目录的大小是 640 个字节。这里列出的文件都是目录,因此这些大小并没有显示目录中所有文件的总大小;
6.最近一次修改的时间:第六列。比如 share 那个目录的最近一次修改时间是 Jul 12 2018,也就是 2018 年 7 月 12 日。因为 share 目录是宿主机(我的情况是我的 macOS)上的共享文件夹;
7.文件或目录的名称:第七列。
-lh
Linux命令行与Shell脚本编程大全——慕课网_第4张图片
cd命令:切换目录
cd(change directoty)
cd+目录路径

命令 含义
cd…(两个点) 返回上一级目录
cd…/… 连续后退2个层级
cd~,cd,cd/home/用户名 返回根目录

Tab:可用于补全路径名(文件名)
Linux命令行与Shell脚本编程大全——慕课网_第5张图片
du命令:显示目录包含的文件大小
du:disk usage 的缩写
其实du命令,如果不用参数来运行,会显示当前目录的磁盘占用,以block(块)为单位。如果没有设置BLOCKSIZE(块的大小)这个环境变量,并且也没有用-k参数(以块大小为1024字节,也就是每块大小1KB来显示),那么就会以块大小512byte(即0.5KB)来显示

参数 说明
du -h 以Ko,Mo,Go的形式显示文件大小
du -ah 显示文件的目录大小,a:all
de -sh 只显示总计大小,s:summarize

注:Ko,Mo,Go即KB,MB,GB。o是法语中字节octet的缩写

12:浏览和创建文件

文件操作:显示文件内容,拷贝文件,移动文件,删除文件等。
cat命令和less命令:显示文件内容(不能对文件内容进行修改 )
cat:一次性显示文件的所有内容(concatenate files and print on the standard output)
用法:
cat + 想要显示的文件路径
cat -n +想要显示的文件路径 :用来在显示内容上加上行号
cat命令后面可以接不止一个文件,可以将其一并输出
在这里插入图片描述
less命令:分页显示文件内容
用法:less+想要显示的文件路径
好处:会先读入文件开始的若干行,然后暂停。读取行数取决于终端屏幕的大小。我们可以渐进读文件的内容

less命令中常用的快捷键

快捷键 说明
空格键 下一页,=PageDown
b键 上一页,=PageUp
d键 前进半页
u键 后退半页
回车键 读取下一行
y键 后退一行
q键 停止读取文件,终止less命令

注:Linux 区分大小写

less中略微高级一些的快捷键

快捷键 说明
= 显示你在文件的什么位置(显示当前页面的内容是文件的第几行到第几行,整个文件所含行数,所含字符数,整个文件所含字符)
h键 显示帮助文档,q键可退出
/ 进入搜索模式只要在斜杠后输入要搜索的文字,按下回车即可显示。可用正则表达式来匹配
n键 跳到下一个符合的搜索结果
N键 跳到下一个符合的搜索结果

head命令和tail命令:显示文件的开头和结尾
head +想要显示的文件路径
head默认显示文件的前10行
可用 -n +数字 :指定显示的行数

tail命令:显示文件的开头和结尾
tail+想要显示的文件路径
tail默认显示文件的最后10行
可用 -n +数字 :指定显示的行数

tail -f 文件路径   #可用来实时追踪文件的跟新,如果有跟新,就显示新增内容
Ctrl c 用来终止tail -f命令
-s 参数 可用来指定间隔检查的秒数
tail -f -s 4 文件路径 #每隔4秒检查一次

touch命令和mkdir命令:创建文件和目录
touch:创建文件
用法:touch +文件名/文件路径。可一次创建多个
Linux命令行与Shell脚本编程大全——慕课网_第6张图片
mkdir:创建一个目录。(make directory)
用法:mkdir+目录地址。可同时创建多个

mkdir -p one/two/three #-p参数用来递归地创建目录结构
#先创建one目录,在one中创建two目录,再在two目录中创建three目录

13:文件的复制、移动,删除

cp命令和mv命令:拷贝文件和移动文件
rm命令:删除文件和目录
ln命令:创建链接

cp命令:拷贝文件或目录,copy的缩写,可拷贝多个文件

cp new_file new file1 
new_file :需要拷贝的文件
new_file1:拷贝后的新文件
cp new_file one/
把new_file文件拷贝到one目录下
cp new_file one/new_file1
把new_file 文件拷贝到one目录下 同时命名为new_file1

Linux命令行与Shell脚本编程大全——慕课网_第7张图片
Linux命令行与Shell脚本编程大全——慕课网_第8张图片
拷贝目录

cp -r或-R:拷贝的时候,目录下的所有内容都会被拷贝
r:recursive递归地
 cp -r 预拷贝目录  拷贝目标目录名
 即可将 预拷贝目录 全部 拷贝 目标目录

使用通配符
*:替换任意字符串

cp *.txt folder
会把当前目录下的所有txt文件拷贝到folder这个目录下

cp ha* folder
会把当前目录下的所有以ha开头文件拷贝到folder这个目录下

mv命令:移动文件
mv:move 移动 。可移动文件或目录;重命名文件或目录
mv:单纯的移动,相当于 剪贴+粘贴

mv new_file two
即把new_file文件移到two目录中
也可以使用通配符*

重命名
经过移动 原始文件变成了新的名字的文件,文件内容不变,相当于重命名

mv new_file renew_file

rm命令:删除文件和目录
rm:remove 终端没有回收站或垃圾箱,删除文件难以恢复
可以删除一个文件,多个文件,甚至于整理Linux系统

rm new_file   #删除new_file文件
rm file1 file2 #删除多个文件

-i 参数:询问是否删除
i:inform,两种回答
y:是
n:否

rm -i renamed_file

Linux命令行与Shell脚本编程大全——慕课网_第9张图片
-f参数:慎用 不会询问删除,强制删除
f:force

rm -f file

-r 参数:递归删除

 rm -f filename

**

极其危险的命令

**

rm -rf   会删除整个Linux系统,连同挂载的系统
rm -rf/*   需要root权限
rm -rf/
#分解
-r:递归删除
-f:强制删除
/:系统的根目录
*
连起来可以删除根目录下所有文件

破除Ubuntu系统的保护删除命令

sudo rm -rf --no -preserve-root
也可以
cd/
sudo rm -rf

ln命令:创建链接
ln:link,用于在文件中创建链接(快捷方式)

Linux的2种链接类型

  • Physical link:物理链接或硬链接
  • Symbolic link:符号链接或软链接

文件3部分:文件名,权限,文件内容

创建硬链接:使链接的两个文件共享同样的文件内容
一旦文件1,文件2之间有了硬链接,修改文件或文件2都是一块内容
硬链接缺陷:
只能创建指向文件的硬链接,不能创建指向目录的硬链接。但软链接可以指向文件或目录

cd 
mkdir test #创建一个名为test的目录
touch file1
ln file1 file2 #创建一个文件file2使之称为file1的硬链接
ls -l #详细参数
ls -i #显示文件的inode

Linux命令行与Shell脚本编程大全——慕课网_第10张图片
硬链接的删除:
删除任意一方,共同指向的文件内容并不会从硬盘上删除
只有都删除,文件才消失

创建软链接:类似于快捷方式

ln -s file1 file2

file3 蓝色字体 是链接文件,文件内容不同于file1Linux命令行与Shell脚本编程大全——慕课网_第11张图片
软链接的删除:一旦删除file1 ,file3就会变成死链接

14:用户和权限

sudo命令:以root身份运行命令
sudo:substitute user do (替代用户做)
要运行只有root才可以运行的命令时,可以在此命令前加上 sudo。终端会提醒输入密码,输入之后即可执行

sudo command 

sudo su 命令:一直成为root

sudo su
exit/Ctrl+d:可以退出root模式

在Ubuntu以外的其他Linux发行版的命令格式

sudo su-  /  sudo -i
不仅可以切换root,还可以直接定位到root的家目录

adduser命令:添加新用户

adduser 新用户名  #需要root用户才可以添加
passwd 用户名   #修改当前密码

deluser :删除用户

deluser 用户名  #删除用户 ,系统不会询问是否删除,而直接删除了
只是用deluser命令,只会删除用户,不会删除在/home目录中的用户家目录
deluser --remove-home 用户名 连通此用户的家目录一并删除
rm -rf/home/用户名 #手动删除用户的家目录

15:群组的管理和文件权限管理

群组:Linux中的每一个用户都属于一个特定的群组
如果不设置群组,默认创建一个和它的用户名一样的群组,并把用户划归到这个群组。

你可能感兴趣的:(Linux命令行与Shell脚本编程大全——慕课网)