Linux中基础知识(基本命令和操作)

目录

Linux中终端的基本操作

命令行提示符的拆解分析

基本命令

参数(跟在命令之后的补充选项)

命令的历史记录:

快捷键:

Linux下的文件操作

Linux中两种类型的文件

根目录

目录结构

/目录 、/home目录 、~目录的区别

Linux下根目录的直属子目录

如何知道自己当前目录的路径

ls命令

ls命令常用的参数:

cd命令

du命令

cat和less命令

less命令中最基本常用的快捷键:

head命令和tail命令

touch命令

mkdir命令

cp命令

使用通配符*

mv命令

rm命令

文件的存储

In命令

创建硬链接:

创建软链接:

Linux中用户权限管理

用户和权限的基本介绍

群组管理的命令

-R参数:

权限的原理:

chmod命令:修改访问权限


Linux中终端的基本操作

命令行提示符的拆解分析

Linux中基础知识(基本命令和操作)

第一个matthew是当前用户的名字(username)。Linux是多用户的操作系统

@ "在...的里面"的意思。一般@前面是用户名,后边是所在的域。即[email protected]如QQ号@qq.com

在此后一个matthew代表电脑/操作系统的名字,也就是主机名(hostname)

:分隔符,没特殊含义

~当前所在目录的名字,会随着用户进入不同目录而改变,进入其他目录可能就不是~了。~表示当前用户的家目录

$指示你所具有的权限。$表示普通用户,有限权限。#表示超级用户,也就是root,root拥有所有权限是系统大管家。

切换到超级用户命令 sudo su

Linux中基础知识(基本命令和操作)

可以用whoami来获知当前用户,hostname获知主机名

Linux中基础知识(基本命令和操作)

命令提示符可配置,之后更新如何配置。

基本命令

date 用于显示当前时间

ls 列出

参数(跟在命令之后的补充选项)

参数没有固定的格式,但一般来讲还是遵循一定的规范的

短参数(一个字母):

短横线后接一个字母,格式command -p。一次可加好几个短参数,用空格隔开,如command -p -a -T -c,多个短参数可以合并在一起,如command -paTc。一般来讲大小短参数的字母大小写含义是有区别的。

长参数(多个字母):

短参数是以一个短横线开始,而长参数是以两个短横线开始 格式command --parameter。多个长参数不能像短参数那样去合并,只能以空格隔开,command --parameter1 --parameter2

可以组合使用长短参数。如command -paTc --parameter1 --parameter2

有时候同一个意义的参数有短参数和长参数两种形式,如ls -a 和ls --all是一样的

短参数和长参数的赋值也是不同的。短参数通常:command -p 10 长参数通常:command -parameter=10

其他参数:参数的形式没有绝对的准则。如ls share列出share文件夹下的文件。

有时候想不起来一个命令到底是如何拼写的,可以用按两次Tab键来补全命令,也可以补全文件名,路径名。如下

Linux中基础知识(基本命令和操作)

命令的历史记录:

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

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

ctrl+r:用于查找使用过的命令

history:用于列出之前用过的所有命令

快捷键:

ctrl+L用于清理终端的内容,就是清屏的作用。同clear命令

ctrl+D给终端传递EOF(End Of File,文件结束符)(如退出python的终端就按这个,或者终端中什么命令都没,就直接关闭了)

shift+pgup用于向上滚屏,与鼠标的滚轮向上滚屏是一个效果

shift+pgdn用于向上滚屏,与鼠标的滚轮向下滚屏是一个效果

ctrl+A光标跳到一行命令的开头

ctrl+E光标跳到一行命令的结尾

ctrl+U删除所有在光标左侧的命令字符

ctrl+K删除所有在光标右侧的命令字符

ctrl+W删除光标左侧的一个单词。这里的单词指的是用空格隔开的一个字符串

ctrl+Y粘贴用ctrl+U,ctrl+K,ctrl+W删除的字符串,有点像剪切粘贴

Linux下的文件操作

linux把所有东西都放在一个地方

Linux中两种类型的文件

普通文件:文本类型的文件(.txt,.doc,.odt,等等),声音文件(.wav,.mp3,.ogg),还有程序等,这些文件在windows也有 。

特殊文件:其他一些文件是特殊的,因为它们表示一些东西。例如,你的光盘驱动器就是这类特殊的文件。

linux中一切都是文件: windows把电脑里的东西分为文件和非文件,但liunx不是这样。 对于linux来说,一切都是文件! 甚至目录也是文件。Linux的文件和目录都是由根目录向下呈树状分散的。普通用户存放自己的私人文件的地方在/home目录下,如果你的用户名matthew,则你用户的家目录就是/home/matthew

根目录

一个文件系统中,总有一个被称为根目录的东西。 这个根目录里包含了所有其他目录和文件 windows中,可以有好几个根目录。(c盘、d盘等) linux中有且只有一个根目录,就是 /(斜杠)

linux中没有比根目录更高一阶的目录了,没有目录包含根目录,根目录是linux最顶层的目录

目录结构

windows下,一个目录是这种形式:C:\Program Files\Baidu windows中用反斜杠\来标明目录的层级与包含关系的

Linux中用斜杠/来标明目录的层级与包含关系的:/usr/bin。bin是usr目录的子目录,usr是/这个根目录的子目录 

/目录 、/home目录 、~目录的区别

https://blog.csdn.net/baiyuwujia/article/details/80648554

Linux下根目录的直属子目录

bin:binary的缩写,表示二进制文件,包含了会被所有用户使用的可执行程序

boot:表示“启动”,包含与linux启动密切相关的文件。

etc:法语et cetera的缩写,翻译成英语就是and so on,表示"...等等"。包含系统的配置文件

home:用户的私人目录

在这个目录下,放置私人的文件,类似windows的我的文档

linux中的每个用户都在home目录下有一个私人目录(除了root),假如我的用户名是matthew,我的私人目录就是/home/matthew

lib:表示库。包含被程序中所调用的库文件,如:.so结尾的文件,windows下这样的库文件是以.dll结尾的

media:当一个可移动的外设(如USB盘,SD卡,DVD等等)插入电脑时,Linux就可以让我们通过media的子目录来访问这些外设中的内容 

mnt:英语mount的缩写,表示挂载,有点类似于media,一般用于临时挂载一些设置。

opt:optional application software package的缩写,表示可选的应用软件包。用于安装多数第三方软件和插件 

root:超级用户root的家目录/主目录 ,而一般用户的家目录是位于/home下(没太懂前半句,之后补充),root就是个例外

sbin:system binary的缩写,表示系统二进制文件。比起bin目录多了一个前缀system,包含的是系统级的重要可执行程序

srv:表示服务。包含一些网络服务启动之后所需要取用的数据

tmp:表示临时的。普通用户和程序存放临时文件的地方

usr:Unix Software Resource的缩写,而不是user的缩写(和etc一样也是个历史遗留下来的命名)。表示Unix操作系统软件资源。usr目录是最庞大的目录之一,有点类似于Windows中的C:\Windows和C:\Program Files这两个文件夹的集合。usr里面安装了大部分用户要调用的程序

var:表示动态的,可变的,var通常包含程序的数据,比如log文件,log文件记录电脑中发生了什么事

https://linuxtoy.org/archives/linux-file-structure.html  Linux文件系统结构图

如何知道自己当前目录的路径

刚打开一个终端Terminal,你将位于你的用户家目录~中

pwd命令:print working directory的缩写,显示当前目录的路径

which命令:获取命令的可执行文件的位置。linux,每一条命令其实对应了一个可执行程序 一个命令,其实只不过是一个我们随时可以调用的程序罢了。如which ls,which pwd

Linux中基础知识(基本命令和操作)

在windows中可执行程序一般以.exe结尾,而linux中一般是没有后缀名的

ls命令

Ubuntu的终端的文件默认是有颜色标注的。 (蓝色:目录;绿色:可执行文件;红色:压缩文件;浅蓝色:链接文件;灰色:其他文件) ls --color=auto开启颜色标注 ls --color=none关闭颜色标注

ls命令常用的参数:

-a:显示所有文件和目录,包括隐藏的 (.开头的是隐藏文件,不包括ls展现出文件的开头出现的.和..,开头的.表示当前目录,开头的..表示上一级目录)

Linux中基础知识(基本命令和操作)

-A:作用和小写的-a几乎一样 唯一不同的是-A不列出.和..这两个文件

-l:列出一个显示文件和目录的详细信息的列表(是小写的L不是大写的i)

每一个文件或目录都有对应的一行信息。信息的最前面,有一个total xxx,表示当前目录所有文件的总大小,total后面的那个数字单位为K。total后面的大小并不是统计了当前目录真正的所有文件的大小(包括逐层的文件大小相加) 只是统计了当前目录列出的这一层的文件和目录的大小,并没有深入统计总的大小,即并没有统计当前目录所逐层包含总的大小。

Linux中基础知识(基本命令和操作)

第一列:文件权限:drwxr-xr-x之类的

第二列:链接的数目:也就是2,1之类的数字。这些数字对于文件表示相同inode的个数,对于目录表示目录内所含文件数目

第三列:文件所有者的名称

第四列:文件所在群组的名称

第五列:文件大小,单位是octer,也就是byte

之后是最后一次修改时间和文件或目录的名称

-h:human redable适合人类阅读。文件信息更便于阅读了  

Linux中基础知识(基本命令和操作)

-t:按文件最近一次修改时间降序排序。几个短参数叠加使用ls -lath

cd命令

change directory。切换目录 cd后面的参数就是想去的目录。cd / 进入到根目录。cd .进入当前目录,即不改变。cd ..回到上级目录。连续后退两个层级cd ../..

切换目录有两种路径表示方式:相对路径和绝对路径

比如在位于/usr目录时,我们只用了cd games就切换到了/usr/games下,这里的cd games的games就是相对路径

如果在家目录下进入到games的绝对路径表示,cd /usr/games,直接先进入到根目录/当中,再进入到usr等

Linux中基础知识(基本命令和操作)
绝对路径方式

在家目录中用相对路径方式进入到games中则是cd ../../usr/games 因为第一次..回到home中,第二次..进入到根目录中 

Linux中基础知识(基本命令和操作)
相对路径方式

 

进入家目录的三种方法

  1. cd  /home/matthew
  2. cd ~
  3. cd 直接cd不加任何参数

du命令

disk usage的缩写,表示“磁盘占用”。可以让我们知道文件的目录所占空间的大小。相比ls -l命令,du命令统计的才是真正的文件大小 。因为du命令会深入遍历每个目录的子目录,统计所有文件的大小。

默认情况下du命令只显示目录的大小,如果加上-a参数,则会显示目录和文件的大小。

如果不想看到各个目录和文件的大小统计,只想知道当前目录的总大小,则可用-s参数。

 

cat和less命令

显示文件内容 这两个命令只能显示文件内容,并不能对文件内容进行修改  

syslog文件 :syslog文件位于/var/log这个目录中 syslog是当下你电脑里发生的几乎所有事情的日志

cat命令: concatenate缩写,表示连接/串联。一次性在终端显示文件的所有内容(所以比较适合处理小文件) 用法:在命令后加上想要显示的文件路径即可:cat syslog

-n参数:在显示的文件内容上加上行号 :cat -n syslog

less命令: 分页显示文件内容 less会分一页一页的显示文件内容

more命令: 和less命令差不多,但是不能往后翻页,只能往前

less命令中最基本常用的快捷键:

空格键:文件内容读取下一个终端屏幕的行数(前进一页),b键:后退一页

回车键:文件内容读取下一行   y键:后退一行

 d键:前进半个屏幕    u键:后退半个屏幕

q键:停止读取文件,中止less命令

=号:显示你在文件中的什么位置(按回车键退出)

h键:显示帮助文档,q键退出帮助文档

/:进入搜索模式,在斜杠后边输入想搜索的文字,按下回车键。即可得到被标注的匹配搜索项,按n键(跳到下一个符合项目)按N键(shift+n,跳到上一个符合项目)。也支持用正则表达式在搜索内容中使用。

head命令和tail命令

head命令:显示文件的开头几行 默认情况下,head会显示文件的头10行 指定显示的行数:head -n 5 syslog  

tail命令:显示文件的结尾几行 默认情况下,tail会显示文件的尾10行 指定显示的行数:tail -n 5 syslog  

tail命令和-f参数来实时追踪文件的更新 如:tail -f syslog。这样就会检查文件是否有追加内容,如果有就显示新增内容。默认的,tail -f会每过1秒检查一下文件是否有新内容 指定间隔检查的秒数,用-s参数:tial -f -s 4 syslog。可以用Ctrl+c来终止tail -f命令。

Ctrl+c命令:可以终止大部分终端的命令和正在执行的程序。有点类似Windows中的Alt+F4

touch命令

创建一个空白文件 事实上,Liunx没有一个命令是专门用来创建一个空白文件的 我们习惯用文本编辑器(Emacs,vim,gEdit,Sublime Text,Nano等)来创建空白文件,并编辑文件 。

如果touch命令后边跟着的文件名是不存在的文件,它会新建一个,touch new_file

touch同时可以创建多个文件:touch new_file new_file_2,如果创建的文件的名字有空格,加上双引号 如:touch “new file”(但是尽量不要名字中有空格)

mkdir命令

mkdir命令:创建一个目录

mkdir同时可以创建多个目录:mkdir new_folder new_folder_2

-p参数:递归创建目录结构:mkdir -p one/two/three 先创建one目录,在one里创建two目录,在two里创建three目录

cp命令

cp命令:拷贝文件或目录

cp命令拷贝文件:不仅可以拷贝单个文件,也可以拷贝多个文件,可以拷贝目录 cp new_file new_file_copy,前者new_file是已经存在的文件,也就是被拷贝的文件。后者new_file_copy是需要创建的文件,是new_file的副本

复制文件到另一个目录: 把文件拷贝到其他目录(如one目录),把cp命令的第二个参数换成目录名: cp new_file one/ ,其中one后的斜杠可加可不加,至于怎么区别 one 是目录还是复制后的文件名,有以下解释:Linux中同一目录内的文件和目录是不能同名的。因为Linux下一切都是文件,一个目录归根到底还是一个文件。因为不会出现刚刚所说的情况。若有one的目录存在,则会复制到目录中。

拷贝文件到其他目录,拷贝文件是新名字: cp new_file one/new_file_copy,new_file_copy 是新名字

cp命令拷贝目录:拷贝目录,在命令之后加上-r或-R参数,拷贝时,目录中的所有内容(子目录和文件)都会被拷贝 cp -r one one_copy

使用通配符*

通配符可以代替任意的字符串

如cp *.txt folder:把当前目录下所有txt文件拷贝到folder目录中。cp ha* folder:把当前目录以ha开头的文件都拷贝到folder目录下

mv命令

mv命令:移动文件

两个功能:1、移动文件(或目录)2、重命名文件(或目录)

cp好比windows中的复制+粘贴;mv好比windows中的剪切+粘贴

mv new_file_2 one:将new_file_2这个文件移动到one目录

mv new_folder one:将new_folder目录(包括其下的子目录和文件)移动到one这个目录 。mv移动目录不需要加参数,而cp复制目录需要加参数-r/-R

mv *.txt one:将当前目录下所有txt文件移动到one目录

mv用来重命名文件,事实上Linux没有一个专门用来重命名文件的命令,而mv重命名文件是归因于它的机制:移动文件。因为移动文件的时候可以移动到当前文件夹而改一个新名字。如mv new_file renamed_file会将当前的new_file改为renamed_file。

rm命令

rm命令:删除文件和目录 (在终端中是没有回收站的,所以用rm命令删除了文件,一般就比较难恢复了)

rm new_file_copy:删除当前目录下的new_file_copy这个文件

删除多个文件:rm file1 file2 file3

-i参数:inform缩写(告知通知)向用户确认是否删除  

-f参数:forc缩写,慎用,不会询问是否删除,强制删除  

-r参数:recursive缩写(递归的),递归删除,删除目录,因为目录里才会有递归的包含,子目录和文件都会没。如果不加-r来删除目录是删除不了的。即rm 后面直接跟名字。只能删除文件,不能删除目录。删除目录需要-r rm -r one:删除one这个目录,包括其子目录和文件

rmdir:只能删除空的目录

rm -rf极为危险 rm -rf /*或者rm -rf / 会删除整个Linux系统。头号一级危险命令,如果Windows系统也挂载在Linux下,也会把Windows系统删除。普通用户不能使用这个命令,root可以。Ubuntu做了保护机制,用root权限运行rm -rf /也是没问题的。sudo rm -rf --no-preserve-root / 这样就会删除根目录下所有文件。如果先cd /然后sudo rm -rf * ubuntu也是没有保护机制的

文件的存储

每个文件有三部分: 文件名、权限、文件内容。大致来说,每个文件有两个部分:文件名和文件内容

文件名的列表是储存在硬盘的其他地方的,和文件内容分开存放,这样方便Linux管理

每个文件的文件内容被分配到一个标示号码,就是inode。每个文件名都绑定到它的文件内容(用inode标识)

Linux中基础知识(基本命令和操作)

In命令

ln命令(是l不是大写的i):link的缩写,创建链接(性质类似于windows的快捷方式)

两种链接类型: Physical link:物理链接或硬链接 Symbolic link:符号链接或软链接

创建硬链接:

硬链接原理:使链接的两个文件共享同样文件内容,就是同样的inode

文件1和文件2之间有了硬链接,修改文件1或文件2,修改是相同的一块内容

硬链接缺陷:只能创建指向文件的硬链接,不能创建指向目录的(通过一些参数的修改,也可以创建指向目录的硬链接,比较复杂) 软链接可以指向文件或目录

创建硬链接:ln file1 file2,file2是新生成的硬链接,file2指向file1的文件内容 它们共享相同的文件内容,也就是拥有同一个inode

Linux中基础知识(基本命令和操作)

ls -i查看(-i参数可以显示文件的inode)inode一样。rm file2删除file2,对file1没什么影响。对于硬链接来说,删除任意一方的文件,共同指向的文件内容并不会从硬盘上被删除。当删除file1或file2等其它硬连接时,对磁盘对应的数据节点连接数减一,只有当连接数为0时,才真正的删除数据。drwxr-xr-x 2 gzy gzy 4096 2月 19 18:54 Desktop,2对于文件表示相同inode的个数,2对于目录表示目录内所含文件数目。

创建软链接:

软链接加参数-s:ln -s file1 file2:创建了file1的软链接file2,file2指向file1,file1的inode号和file2的inode号不一样,因为指向的文件内容是不一样的,file1指向一个文件内容,而file2指向file1,但是打开文件file1和file2的内容是一样的(即file1和file2文件内容不一样,但文件中显示的内容是一样的)。file2只是file1的一个快捷方式 。快捷方式并不是拷贝,拷贝的文件修改其中file1对file2是不影响的,拷贝的文件删除其中一个文件对另一个文件也不影响。而软链接修改file1对file2是影响的。

Linux中基础知识(基本命令和操作)

软链接的特点: 删除file2,file1不会受到影响。删除file1,file2会变成死链接,指向的文件不见了,删除file1,终端中的file2变成了红色,表示此软链接已经损坏。软链接可以指向目录,硬链接不行。

 

Linux中用户权限管理

用户和权限的基本介绍

linux是一个多用户系统,可以实现多人同时不同地登录

sudo命令:以root身份运行命令

下图演示一下Linux中的用户组织的一般可能形式 可以有好多不同的群组

创建个人用户叫做matthew,这时系统只有两个用户:root和matthew,root用户是默认创建的,matthew是自己创建的的用户。Ubuntu系统是Linux的一个特例。Ubuntu默认不允许直接用root用户登录系统(可以通过设置来允许ubuntu直接登录root)

sudo命令:暂时成为root运行管理员的命

sudo su命令:一直成为root用户。 exit退出root用户,回到个人用户身份。在Ubuntu以外的其他Linux发行版切换到root用户也许不是用sudo su而是直接用su,但是建议用su -,这样不仅能切换到root还可以直接定位到root用户的家目录

以下是一些只有root用户才能运行的命令:

adduser命令:添加新用户 ,先sudo su命令切换到root,然后 adduser thomas 就会进入创建用户thomas,或者直接sudo adduser thomas

passwd命令:修改密码,如passwd matthew,修改用户matthew的密码

deluser:删除用户 deluser matthew,不加参数的话,只会删除用户,不会删除在/home目录中的用户家目录matthew家目录及时这个蓝色的matthew

Linux中基础知识(基本命令和操作)

deluser -- remove-home thomas 把用户matthew删除同时也把matthew的家目录删除

adduser和deluser只是Debian一族(包括Ubuntu)才有的命令,其他Linux发行版添加删除用户可能是useradd和userdel

群组管理的命令

群组管理的命令 不设置用户的群组,默认会创建一个和它的用户名一样的群组,把用户划归到这个群组

addgroup命令:创建群组 addgroup friends

groups命令:获知一个用户属于哪个群组 groups thomas

usermod命令:修改用户账户 -l:对用户重命名。但是重命名后/home中的该用户家目录名不改变,需要手动修改 ;-g:修改用户所在群组,usermod -g friends thomas ;-G:一个用户添加到多个群组 usermod -G friends,happy,funny thomas 把thomas添加到friends,happy,funny三个群组。使用-G或-g参数时,会把用户从原先的群组里剔除加入到新的群组 usermod -aG happy thomas 该命令把thomas追加到群组happy里了,属于两个群组:friends和happy

delgroup命令:删除一个已存在的群组 delgroup happy

addgroup和delgroup只是Debian一族(包括Ubuntu)才有的命令,其他Linux发行版添加删除用户可能是groupadd和groupdel

修改文件的所有者和群组: 只有root用户可以修改一个文件的所有者和群组,chown命令:改变文件的所有者 chown thomas file.txt 将file.txt的所有者转换为thomas,但群组还是之前的群组;chown命令也可以同时改变所有者和群组:chown thomas:friends file.txt 把file.txt文件的所有者改为thomas,群组改为friends;chgrp命令:改变文件的群组 chgrp thomas file.txt

-R参数:

递归设置子目录和子文件,会修改目录的所有子目录和子文件的所有者

对于chown命令只能用大R不能用小r。chown -R oscar:oscar /home/thomas thomas目录下的所有子目录和子文件的所有者和群组都是oscar

权限的原理:

drwxr-xr-x 第一个字母: -:表示普通文件  d:表示目录  l:表示链接

r:“读”可以读这个文件   w:“写”可以写或者修改这个文件  x:execute缩写表示“执行”可运行这个文件

如果x权限在目录上表示这个权限是可以被读的

drwxr-xr-x是分组的,分为了四组。d表示其类型为目录,其他三组,表示下图中各组对应的用户对此目录所访问的权限。

Linux中基础知识(基本命令和操作)

解析 -rw-r--r--

-表示其实一个普通文件,rw-表示有读写权限没有运行权限,很好理解,因为普通文件默认没有可执行的属性。记住:如果有w权限,那么也有删除此文件的权限。第一个r--表示所在群组的其他用户只有读的权限,第二个r--表示,该群组之外的其他用户只有读的权限。不过root大管家拥有所有权限

chmod命令:修改访问权限

不需要是root用户才能运行,只要是该文件的所有者就可以用chmod来修改文件的访问权限

用数字来分配权限:chomd的绝对用法

事实上Linux对每种权限分配了对应的数字(-:0,r:4,w:2,x:1)

权限数字组合如下:

Linux中基础知识(基本命令和操作)

举例:640 表示文件的所有者拥有rw权限,文件所在群组其他用户具有r权限,而其他用户没有任何权限

修改文件权限:chmod 600 file1,则file1 文件的访问权限就被修改为了:rw-------

用字母来分配权限:chomd的相对用法

u:user 所有者  g:group 群组用户  o:other 其他用户

+: 表示添加权限  -:表示去除权限  =:表示分配权限

如:chmod u+rx file    chmod g+r o-r file  chmod go -r file  chomd +x file(省略用户代表针对所有用户,也可以用a表示所有用户)

chmod u=rwx,g=r,o=- file 表示对所有者分配读写执行权限,群组用户读权限,其他用户无权限

配合R参数:也要一定是大写R,递归。假如只允许matthew能读写运行/home/matthew目录下的所有文件。则chmod -R 700 /home/oscar