Linux
Linux 应该叫GNU/Linux
首先明白Linux入门不是学“Linux” 而是
1.体验:比较和其他系统的不同点和相同点
2.Linux GUI - > Shell
GUI可理解为桌面程序
Linux 是一个操作系统 其分为四个部分
1.Linux kernel(内核)
2.GNU工具
3.GUI Desktop环境
4.Application应用
GNU/Linux
Linux内核
1.硬件设备管理使用
2.软件程序(系统)------->操作软件
3.系统内存
4.文件管理(保存文件,删除文件,修改文件......)
文件系统
读,写的标准
不同文件系统有不同的读写标准
Windows常用文件系统类型:NTFS
Linux常用文件系统类型:ext,ext2,ext3,ext4(最常用),hpfs,iso9660,JFS,minix,msdos,ncpfs,nfs,ntfs,proc,Reiserfs,smb,sysv,umsdos,vfat(通常是引导使用),XFS,xiafs
(去企业面试可能会被问)
GNU组织
Unix上具有的一些软件,Linux内核本身没有,所以GNU他们模仿Unix,为Linux写了一些必要的软件
- GNU核心:
原本在Unix上的一些命令和工具,被模仿(移植)到了Linux上。
供Linux使用的这套工具:coreutils
coreutilities软件包:
1.用来处理文本的工具
2.用来操作文本的工具
3.用来管理进程的工具
- shell
shell提供给用户使用的软件:用户拿它来使用电脑,并且和电脑交互。
命令行壳层提供一个命令行界面(CLI);而图形壳层提供一个图形用户界面(GUI)。
即Shell分为两大类:
1.图形界面Shell (GUI Shell)
2.命令行界面Shell (GLI Shell)
linux shell--->CLI Command-Line-Interface
GLI shell
bash shell 基础shell
zsh(包含ash,korn,tcsh)
MacOS(苹果系统)----->Unix专业人选择
Linux GUI发展历史
1.X Windows
2.KDE(windows,MacOS使用系统)
3.GNOME
4.Unity
shell
输入一条命令后按回车
$ 表示当前要输入命令了
入门命令:
ls 显示当前目录所有文件夹(不包括隐藏文件夹)
ls -a 显示带点的隐藏文件
终端
zrq @ q :~ $ 的含义
用户名@机器名 当前所在目录 等待用户输入
-
@ 前是用户名
-
@ 后是机器命(计算机名)
-
~ 代表用户home目录
-
$ 表示等待用户输入
ls 系列命令
ls命令 就是list的缩写,用来显示目标列表,在Linux中是使用率较高的命令。ls命令的输出信息可以进行彩色加亮显示,以分区不同类型的文件
最常用的命令
$ ls # 仅列出当前目录可见文件
$ ls -l # 列出当前目录可见文件详细信息
$ ls -hl # 列出详细信息并以可读大小显示文件大小
$ ls -al # 列出所有文件(包括隐藏)的详细信息
$ ls --human-readable --size -1 -S --classify # 按文件大小排序
$ du -sh * | sort -h # 按文件大小排序(同上)
如何了解更多ls命令:
1.使用 man 了解更多(对英语要求比较高)
2.进入官方网站查询(非常靠谱)
http://wangchujiang.com/linux-command/
补充两个清屏办法:
1.Ctrl+L
2.输入clear命令
Linux一切皆文件
/ 根目录
/home 主目录,显示所有用户目录
/bin 二进制目录 GNU工具 ls等自带的命令
存放许多用户级
/cdrom 光盘
/etc 系提供配置文件目录
/lib 库目录
/lost+found 找回因突发事件而丢失的文件
/mnt 挂载目录
挂载-----外在的设备和电脑进行连接 U盘
/proc 伪文件系统
/tmp 临时目录
/var 可变目录 log
/boot 启动目录
/dev 设备目录
/media 媒体目录(mp3,mp4之类的。和mnt挂载目录很像,但是有区别)
/opt 可选目录
/root root用户的主目录 管理员
/sbin 系统二进制目录,GNU高级管理员使用的命令工具
/srv 服务目录 本地服务
/usr 用户二进制目录,GNU工具
FHS
文件系统层级标准
cd 系列命令
切换用户当前工作目录。
.表示当前目录
..表示当前目录的上一级目录(父级目录)
pwd输出当前在哪个目录(输出绝对路径)
cd # 进入用户主目录;
cd / # 进入根目录
cd ~ # 进入用户主目录;
cd .. # 返回上级目录(若当前目录为“/“,则执行完后还在“/";".."为上级目录的意思);
cd ../.. # 返回上两级目录;
在Linux 终端的特殊命令
-
ctrl+c 表示强制退出错误命令
-
ctrl+shift+c 表示复制
-
ctrl+shift+v 表示粘贴
-
在Linux 终端中不支持剪贴
绝对路径和相对路径
1.绝对路径
D:\Linux\2K版\000.Linux初步认识\系统的认识.ev4
盘符:\文件夹\ ...\文件名.文件后缀
特点:全,精确
2.相对路径
一定要有故事背景前提,即你在哪?
举个例子便于理解
假如朋友的地址在地球亚洲中国北京市海淀区双清路30号
而你要去朋友那里,朋友会告诉你他的地址,那么首先你要确定自己的位置
1.假如你在北京市
你的朋友会告诉你他的地址:海淀区双清路30号
2.假如你在上海市
你的朋友会告诉你他的地址:北京市海淀区双清路30号
3.假如你在菲律宾
你的朋友会告诉你他的地址:中国北京市海淀区双清路30号
4.假如你在美国
你的朋友会告诉你他的地址:亚洲中国北京市海淀区双清路30号
我所理解的就是层级关系不同,相对路径不同。
假如我要进入到 D:\Linux\2K版\000.Linux初步认识\系统的认识.ev4(绝对路径)
我现在在 D:\Linux\2K版 这个位置
那么我的相对路径为\000.Linux初步认识\系统的认识.ev4
touch 命令
touch命令 有两个功能:一是用于把已存在文件的时间标签更新为系统当前的时间(默认方式),它们的数据将原封不动地保留下来;二是用来创建新的空文件。
touch ex2
在当前目录下建立一个空文件ex2
touch file{1..5}.txt
批量创建文件
cp 命令
建议新手强制加上-i
cp用法:cp 源文件 目标文件(cp 你想复制的文件 你想复制到哪)
- 源文件:制定源文件列表。
- 目标文件:指定目标文件。
默认情况下,cp命令不能复制目录,如果要复制目录,则必须使用-R选项
-i:覆盖既有文件之前先询问用户;
-R/r:递归处理,将指定目录下的所有文件与子目录一并处理
如果把一个文件复制到一个目标文件中,而目标文件已经存在,那么,该目标文件的内容将被破坏。(覆盖性)
此命令中所有参数既可以是绝对路径名,也可以是相对路径名。通常会用到点.或点点..的形式。
所有目标文件指定的目录必须是己经存在的,cp命令不能创建目录。如果没有文件复制的权限,则系统会显示出错信息。
cp 既可以复制文件,也可以复制文件夹
终端光标移动技巧
- Tab键 偷懒神键 自动补全
- ctrl+左右键 跳动命令上的光标
- ctrl+左键 跳动光标到上一个命令单词词首
- ctrl+右键 跳动光标到下一个命令单词词首 ctrl+A 跳动光标到命令开头
- ctrl+E 跳动光标到命令结尾
- ctrl+H 删除光标所在字母
- ctrl+U 删除光标前的所有命令(通常用作删除一整行命令)
- ctrl+K 删除光标后的所有命令
链接文件
链接文件分为两种:符号链接(软连接)和硬链接 (面试的时候可能会被问)
- Windows 快捷方式(.lnk) .lnk 链接文件
- Linux里边 链接文件 1.符号链接(软链接)——类似于Windows里边的快捷方式 2.硬链接 类似于Windows里边创建副本
运用要求:原来的文件或文件夹必须是存在的
ln -s创建软连接
ln 创建硬链接(硬链接只能在一个介质里边,有多个硬盘时 不太好使)
如果用cp命令复制一个软链接会怎么样?
复制的不是一个文件,而是一个快捷方式(类似于发快捷方式给别人)
mv 命令
用来对文件或目录重新命名
重命名文件
mv file_1.txt file_2.txt # 将文件file_1.txt改名为file_2.txt
将文件从一个目录移到另一个目录中
如果将一个文件移到一个已经存在的目标文件中,则目标文件的内容将被覆盖。
注意事项:mv与cp的结果不同,mv好像文件“搬家”,文件个数并未增加。而cp对文件进行复制,文件个数增加了。
移动文件
mv file_1.txt /home/office/
!$
- 执行上一条命令最后一个路径
rm 命令
用于删除给定的文件和目录
注意:使用rm命令要格外小心。因为一旦删除了一个文件,就无法再恢复它。所以,在删除文件之前,最好再看一下文件的内容,确定是否真要删除。
建议加上-i,-i:删除已有文件或目录之前先询问用户
-d:直接把欲删除的目录的硬连接数据删除成0,删除该目录;
-f:强制删除文件或目录;
-i:删除已有文件或目录之前先询问用户;
-r或-R:递归处理,将指定目录下的所有文件与子目录一并处理;
- rm -rf /* 危险! #删除根目录下所有文件
- sudo rm -rf /* 非常危险! #以管理员身份删除根目录下所有文件(蹲大牢)
2023.12.3 故障
不小心把文件remove(永久删除)了怎么办?
下面以我的博客文件为例,来告诉大家该如何修复
首先在之前放置博客文件的文件夹下面新建一个博客文件夹,然后进去,进去之后打开终端执行两条命令(以我的为例)
git clone [git@github.com:](mailto:git@github.com:)zrqiq/zrqiq.git
git clone [git@github.com:](mailto:git@github.com:)zrqiq/zrq-blog.git
这样两个文件夹就都下载回来了(zrqiq和zrq-blog)
但是还得配置一下
在zrq-blog文件夹下:
- git remote add blog [git@github.com:](mailto:git@github.com:)zrqiq/zrq-blog.git
- git config --global user.email "这里写你的邮箱"
- git config --global user.name "这里写你github的用户名"
在zrqiq文件夹下:
- cp ../zrqiq-blog/auto-update-this-repo.sh ./
- git remote add zrqiq [git@github.com:](mailto:git@github.com:)zrqiq/zrqiq.git
- git config --global user.email "这里写你的邮箱"
- git config --global user.name "这里写你github的用户名"
- 最后打开文件夹内的auto-update-this-repo.sh文件,将最后一行的blog改为zrqiq
然后就ok了!感谢我学长!!!(大家别轻易尝试,对心脏不好)
mkdir 命令
make directories
mkdir命令 用来创建目录。
-p或--parents 若所要建立目录的上层目录目前尚未建立,则会一并建立上层目录;
查询文件命令
- file
用来探测给定文件的类型
- cat
显示文件内容
- more
显示文件内容,每次显示一屏
该命令一次显示一屏文本,满屏后停下来,并且在屏幕的底部出现一个提示信息,给出至今己显示的该文件的百分比:--More--(XX%)可以用下列不同的方法对提示做出回答
按 Space 键:显示文本的下一屏内容。
按 Enter 键:只显示文本的下一行内容。
按斜线符|:接着输入一个模式,可以在文本中寻找下一个相匹配的模式。
按H键:显示帮助屏,该屏上有相关的帮助信息。
按B键:显示上一屏内容。
按Q键:退出more命令。
- less
分屏上下翻页浏览文件内容
ess命令 的作用与more十分相似,都可以用来浏览文字档案的内容,不同的是less命令允许用户向前或向后浏览文件,而more命令只能向前浏览。用less命令显示文件时,用PageUp键向上翻页,用PageDown键向下翻页。要退出less程序,应按Q键。
/字符串:向下搜索"字符串"的功能
?字符串:向上搜索"字符串"的功能
n:继续向后搜索
N:向前搜索
b: 向后翻一页
d: 向后翻半页
u: 向前滚动半页
y: 向前滚动一行
Q: 退出less 命令
空格键: 滚动一页
回车键: 滚动一行
[pagedown]: 向下翻动一页
[pageup]: 向上翻动一页
G: 移动到最后一行
g: 移动到第一行
- tail
在屏幕上显示指定文件的末尾若干行
tail -n number #显示结尾后number行
- head
显示文件的开头部分,在未指定行数时默认显示前10行。
head -n number #显示开头前number行
先不按顺序补一点点笔记吧
环境变量
环境变量作用可以理解为预约 在任何地方都可以访问环境变量中的内容
环境变量分为两种 用户变量和系统变量
Linux当中一个叫全局变量一个叫局部变量
查看全局变量用printenv (env是环境变量的意思)
echo输出
想使用环境变量时,在其前面加上$
局部变量只能在一个shell里边用,局部变量可以使用set查看
在编程的时候,局部变量使用广泛
用户定义的变量,大多数都是局部变量
定义局部变量
- 变量名=“” 定义的局部变量,千万不能使用大写,全局变量的名是大写的,若有好几个单词就用下划线隔开
定义用户全局变量
- 用小写,只有系统变量才使用大写 export 变量名=“ ”
如何删除变量
使用unset 变量名
追加命令 PATH=$PATH:路径
用户的含义和作用
用户ID------>UID
使用“cat /etc/passwd”命令可查看所有用户(注意cat 后必须有一个空格)
zrq:x:1000:1000:zrq,,,:/home/zrq:/bin/zsh
"zrq"是用户名
"x"是密码
第一个"1000"是用户ID
第二个"1000"是组ID
······
UID小于500的都是系统账户(系统账户UID<500)
使用“sudo cat /etc/shadow”命令可以查看用户密码,但是是加密的
任务管理器
在Linux中主要有三个命令可以查看进程:ps可以静态查看系统正在运行的进程,top则是动态查看进程和服务器的健康状况,而pstree命令主要用于查看进程树。
在Linux中,可以使用命令行工具来管理进程和杀死进程。常用的命令有:
1.ps命令:用于查看当前运行的进程。可以使用ps命令的不同选项来显示不同的信息,例如ps aux可以显示所有进程的详细信息。
2.top命令;用于动态地查看系统的进程和资源使用情况。top命令会实时更新进程的CPU使用率、内存使用率等信息。
3.kill命令:用于终止指定的进程。可以使用kill命令的不同选项来向进程发送不同的信号,例如kill-9可以强制终止进程。
4.pkill命令:用于根据进程名杀死进程。可以使用pkill命令的不同选项来指定匹配的进程名。
5.killall命令:用于根据进程名杀死进程。与pkill不同的是kilall命令会杀死所有匹配的进程。
相关问题
挂载
linux操作系统将所有的设备都看作文件,它将整个计算机的资源都整合成一个大的文件目录。我们要访问存储设备中的文件,必须将文件所在的分区挂载到一个已存在的目录上,然后通过访问这个目录来访问存储设备。挂载就是把设备放在一个目录下,让系统知道怎么管理这个设备里的文件,了解这个存储设备的可读写特性之类的过程