linux学习笔记 1

 

1.命令行之旅

 

hcf  是当前用户的名字(username)。Linux是多用户的操作 系统

@  前面是用户名,后面是所在的域。例如87195425@qq.com

localhosyt   电脑/主机的名字。也就是主机名(hostname)

~   当前所在目录的名字。会随着用户进入不同的目录而改变

~  表示当前用户的家目录(home directory)

$  指示你所具有的权限

 

命令行表示权限的字符

$ 表示普通用户,有权限的限制

# 表示超级用户,也就是root(英语“根”的意思),拥有所有权限,是系统的大管家

 

假如把普通用户切换为超级用户

用sudo su 命令

退出root身份,可以用ctrl+D的组合键,或者用exit命令。

whoami和hostname命令查看用户名字

 

简单的命令

date命令 -->  时间

ls命令-->"list"意思。就是列表目录

 

命令的参数

参数是写在命令之后的一些补充选项。命令和参数之间有空格隔开

格式: command parameters,命令 参数

参数可以包含多个参数,空格隔开,数字,字母等等

 

短参数(-一个字母)

最常用的参数形式就是一个短横线后接一个字母:command -p

一次加好几个短参数,可以用空格隔开:command -p -a -T -c

多个短参数也可以合并在一起:command -paTc

字母的大小写有区别,大写的T和小写的通常含义不同

 

长参数(多个字母)

短参数是一个短横线开始,长参数是两个短横线开始的

格式:command --parameter

多个长参数,是不能像多个短参数那样合并写的

而是只能以空格隔开:command --paramenter1 --parameter2

可以组合使用短参数和长参数

例如command -paTc --parameter1 --parameter2

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

 

参数的值

有一些参数需要赋值。短参数和长参数的赋值方式不一样

短参数赋值,通常是这样的:command -p 10

长参数赋值,通常是这样的:command --parameter=10

 

总结

命令可以单独使用,也可以带参数。参数好比选项,改变命令的行为

命令的参数通常是由一个短横和一个字母组成,例如 -h

也可以由两个短横和几个字母组成。例如 --help

 

 

2.查找命令和实用快捷键

 

如何查找命令和命令的历史记录

  • Linux的开发者们为我们准备了对策:用Tab键来补全命令
  • Tab键可以补全命令,也可以补全文件名,路径名:按两次Tab键
  • 向上键:按时间顺序向前查找过的命令,每按一次就前进一个命令
  • 向下键:按时间顺序后查找用过的命令,每按一次就前进一个命令
  • Ctrl+R:用于查找使用过的命令
  • history命令列出之前使用过的所有命令
  • 可以使用!编号这样的格式来重新运行history输出对应编号的命令

 

快捷键

  • Ctrl+L用于清理终端的内容,就是清屏的作用,用clear命令
  • Ctrl+D给终端传递EOF(End Of File,文件结束符)
  • Shift+PaDn用于向下滚屏,与鼠标的滚轮向下是一个效果
  • Ctrl+A光标跳到一行的命令的开台。Home键有相同的效果
  • Ctrl+E光标跳到一行命令的结尾。End键相同
  • Ctrl+U删除光标左侧的内容
  • Ctrl+K删除所有在光标右侧的命令符
  • Ctrl+Y粘贴用Ctr+U,Ctrl+K
  • Ctrl+W“删除”的字符串,有点像“剪切-粘贴”

 

 

3.文件和目录组织命令

 

linux中一切都是文件

 

Linux中两种类型的文件

普通的文件

特殊的文件

 

普通的文件

文件类型的文件(.txt,.doc.odt,等等)

声音的文件(.wav,.mp3,.ogg),还有程序,等

 

特殊的文件

例如,你的光盘驱动器就是者类的特殊的文件

 

Linux的根目录

Linux有且只有一个根目录,就是/(斜杠)

Linux中没有比根目录再高一级的目录了,没有目录包含根目录

根目录就是Linux最顶层的目录:“万有之源,斜杠青年”

Linux中用斜杠/来标明目录的层级与包含关系

Liunx的目录形式是这样的 /usr/bin,bin是usr目录的子目录,usr是/这个根目录的子目录

 

目录命名友情提示

Windows的目录名称可以包含空格等符号,linux也可以

一般在Linux下命名的目录尽量不使用空格或者其他特殊的符号

尽量用小写英文字母。这会省去很多不必要的麻烦

 

根目录的直属子目录

ls / 查看

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

dev:英语device的缩写,表示“设备”,包含外设,它里面的子目录,每一个对应一个外设

home:用户的私人目录

lib64

mnt:英语mount的缩写,表示“挂载”,有点类是media目录,但一般用于临时挂载一些装置

proc

run

srv:英语service的缩写,表示“服务”,包含一些网络服务启动之后所泻药取用的数据

tmp:英语temporary的缩写,表示“临时的”,普通用户和程序存放临时文件的地方

var:英语variable的缩写,表示“动态的,可变的”,通常包含程序的数据,比如log(日志文件),log文件记录电脑中发生了什么事

boot :英语boot表示“启动”,目录包含与Linux启动密切相关的文件

etc:etc是法语 et cetera 的缩写,翻成英语就是 and so on,表示“...等等”,ect目录包含系统的配置文件

lib:英语library的缩写,表示“库”,包含被程序所调用的库文件,例如.so结尾文件,Windows下这样的库是.dll结尾

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

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

root:英语“根”的意思,超级用户root的家目录,一般的用户家目录是在/home下,root用户是个例外

sbin:英语system binary的缩写,表示“系统二进制文件”,比bin目录多了一个前缀system("系统"),sbin目录包含系统级的重要可执行程序

sys:

usr:是英语 Unix Software Resource 的缩写,表示“Unix操作系统软件资源”(类似etc,也是历史遗留的命令),最庞大的目录之一

 

 

pwd命令和which命令:我在哪里?

pwd命令:显示当前的目录的路径,Print Working Directory(打印当前工作目录)的缩写。

which命令:获取命令的可执行文件的位置,Linux下,每一条命令其实对应了一个可执行程序,

一个命令,其实只不过是一个我们随时可以调用的程序罢了,which命令接受一个参数,是你向知道其可执行程序位于哪里的那个命令。

Windows可执行程序以.exe结尾,Linux中一般是没有后缀名结尾的。

 

 

 

4.浏览和切换目录

 

ls命令:列出文件和目录

 

CentOS的终端默认是有颜色标注的。一般来说:

蓝色--->目录

绿色-->可执行文件

红色--->压缩文件

浅蓝色--->链接文件

灰色--->其他文件

可以加上参数  --color=auto来开启颜色标注: ls --color=auto

可以用 --color=none来关闭颜色标注:ls  --color=none

为了避免每次都输入额外的参数,其实可以在一个配置文件里修改

ls -a: 列出包括隐藏的文件

.开头的都是隐藏文件,不包括开头的两个.和..,这两个的含义如下:.(一个点)表示当前目录;..(两个点)表示上一级的目录

 

ls -l  :详细列表

-l 这个参数算是ls命令最常用的了

-l参数使得ls命令列出一个显示文件和目录的详细信息列表

每一个文件都有对应的一行信息

ls -h:以Ko,Mo,Go的形式显示文件大小

仅用 ls -l,列出的文件详细信息中,文件大小是以字节为单位的

参数 -h,h是humain readable的缩写,表示“适合人类阅读的”

参数 -t:按文件最近的一次修改时间排序,t是time的缩写,表示“时间”

效果叠加:ls -lath

 

cd命令:切换目录

cd是英语change directory的缩写,表示”切换目录“

cd 命令后面接的参数就是一个:你要去那个目录的路径

 

重回家目录的三种办法

 cd/home/hcf    hcf是可替换为你的用户名

cd ~

cd命令,不加任何命令

 

 

5.目录大小

 

du命令:显示目录包含的文件大小

du可以让我们知道文件和目录所占的空间大小

相比ls -l命令,du命令统计的才是真正的文件大小

du命令会深入遍历每个目录的子目录,统计所有文件的大小

du是英语disk usage的缩写,表示 ”磁盘使用/占用“

 

ls命令用于显示当前目录中的文件

cd命令用于切换目录

du命令用于统计目录大小

 

 

6.浏览和创建文件

 

/var/log中有很多日志文件

/var 这个目录通常包含程序的数据

log是英语”日志“的意思

log文件通常会记录电脑中发生了什么事

 

cat命令:一次性显示文件的所有内容

cat是concatenate的缩写,表示”连接/串联“

cat命令可以一次性在终端中显示文件的所有内容

用法:只需要在命令后加上想要显示的文件路径即可

 

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

如果文件比较大,cat命令会令人”猝不及防“

这种时候,另外一个命令less显示得必不可少了

和cat命令最大得区别:less会分一页一页显示文件内容

还有more命令

 

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

d键:前进半页

b键:后退一页。与键盘上得PageUp(上一页)效果一样

y键:后退一行。与键盘上得向上键效果一样的

u键:后退半页

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

大小写有区分的

= 显示你在Linux什么位置

会显示当前页面内容是文件中第几行第几行

h 显示文档,q 退出文档

 

/(斜杠):进入搜索模式

要在搜索所得结果中跳转,可以按n键盘

按N键(shift+n,跳到上一个符合项目)

正则表达式也是可以用在搜索内容中

 

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

 

touch命令和mkdir命令:创建文件和目录

 

mkdir命令:创建一个目录

mkdir是mk和dir的缩写。mk是make的缩写,表示”创建“

dir是directory的缩写,表示”目录“

可以用-p参数来递归创建目录结构:mkdir -p one/two/three

 

 

 

7.文件的复制和移动操作

 

比较危险的命令:rm命令

 

cp命令:拷贝文件或目录

拷贝之前创建的new_file文件:cp new_file new _file_copy,第一个new_file是已经存在的文件,也就是被拷贝的文件,第二个文件new_file_copy是需要创建的文件。

 

复制文件到另一个目录

不一定要在同一个目录下拷贝,也可以把文件拷贝到其他目录,只需要把cp命令的第二个参数换成目录名:cp new_file one/

 

拷贝目录

拷贝目录,只要在cp命令之后加上 -r 或者 -R 参数

r大写和小写作用是一样的,都表示recursive,也就是”递归的“

拷贝的时候,目录中的所有内容(子目录和文件)都会被拷贝

 

使用通配符*

*号(星号)是很常用的正则表达式符号,被称为”通配符“

顾名思义就是”百搭“,可以代替任意字符串

cp *.txt folder:把当前目录下所有txt文件拷贝到folder目录中

cp ha*folder:把当前目录以ha开头的文件都拷贝到folder目录中

通配符是极为强大的,如果用得好,可以大大提高效率

 

 

mv命令:移动文件

mv是英语move的缩写,表示“移动”。mv命令有两个功能:

移动文件(或目录)

重命名文件(或目录)

mv命令单纯移动,不会制作副本

经过mv移动之后,原始文件可以变成新的名字

 

 

rm命令:删除文件和目录

rm是英语remove的缩写,表示“移除”

这个命令就是用来删除东西的。rm命令不好惹

为什么不好惹呢,因为在终端中没有回收站和垃圾箱

用rm命令删除了文件,那可没后悔药吃。

有办法恢复,很麻烦

 

-i参数:向用户确认是否删除

保险起见,用rm命令删除文件时,可以加上 -i 参数

这样对于每一个要删除的文件,终端都会询问我们时候确定删除

i是英语inform的缩写,表示“告知,通知”

y是yes,n是no

 

在rm命令后加上 -f参数,终端不会询问用户是否确定删除文件

不论如何,文件会立刻被强制删除

f是英语force的缩写,表示“强迫,强制”

 

-r参数:递归地删除

r是英语recursive地缩写,表示“递归地”

使用-r参数,可以使 rm 命令删除目录

并且递归删除其包含地子目录和文件

 

rm命令 -r 和 -f 参数 :极为危险!

cd / 然后 sudo rm -rf *

sudo是管理员

 

 

8.文件的删除和链接

 

In命令:创建连接

In是link地缩写,在英语中表示“链接”

In命令用于在文件之间创建链接

用一个比较熟悉地词:快捷方式

虽然Linux的链接比起Windows快捷方式要更复杂的多,性质是类是的

事实上,Linux下有两种链接类型:

Physical link:物理链接或硬链接

Symbolic link:符号链接或软连接

 

文件的存储

文件名,权限和文件内容

简单可以分为两部分:文件名和文件内容

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

 

创建硬链接

硬链接原理:

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

一旦文件1和文件2之间有了硬链接,那么你修改文件1或者文件2,修改的是同样的内容

硬链接的缺陷:只能创建指向文件的硬链接,不能创建指向目录的

软链接可以指向文件或目录。对于目录,一般都是用软链接

使用命令:In file1 file2

使用ls -i来查看inode

 

创建软链接

软链接像在Windows下的快捷方式,原理很相似

创建硬链接In不带任何参数,创建软连接需要加上 -s参数

s是symbolic(符号的)缩写

命令:In -s file1 file2

软链接可以指向目录,硬链接不行

 

 

 

 

 

9.用户和权限

 

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

sudo是英语Substitute User DO 的缩写,substitute是“替换,代替,替身”的意思

 

Linux下的用户组织

在Linux中,理论上来说,我们可以创建无数个用户

但是这些用户是被划分到不同的群组里面的

有一个用户,名叫root,是一个很特殊的用户,它可以做任何事情

sudo su 可以一直保留更久时间,存在终端里面

 

用户管理的命令

useradd命令,添加新用户

passwd命令:修改密码,输入完密码才有效

userdel:删除用户,不加参数,只会删除用户,但是不会删除在/home目录中的用户家目录,可以加上 -r或 --remove这个参数

 

 

 

 

 

10.群组的管理

 

Linux中每一个用户都属于一个特定的群组

如果你不设置用户的群组,默认会创建一个和它的用户名一样的群组

 

groupadd:创建群组

groupadd是group和add的缩写

group是英语“群组”的意思,add是英语“添加”的意思

groupadd命令用于添加一个新的群组

例如:groupadd friends 

 

usermod命令:修改用户账户

usermod是user和modify的缩写

user是英语“用户”的意思,modify是“修改”的意思

usermod命令用于修改用户的账户

 

usermod命令的参数

-l:对用户重命名。/home 中的用户家目录名不改变,需要手动修改

-g:修改用户所在群组

usermod -g friends thomas

可以将一个用户添加到多个群组,用-G参数(大写的G)

 

groupdel命令:删除群组

groupdel是group 和 delete 的缩写

group 是英语“群组”的意思,delete,是英语“删除”的意思

groupdel命令用于一个已经存在的群组

 

修改文件的所有者和群组

只有root用户可以修改一个文件的所有者和群组

我们在家目录里创建一个文件,例如file.txt

 

chown命令:改变文件的所有者

chown是change和owner的缩写。需要root身份才能运行

change 是英语“改变”的意思,owner是英语“所有者”的意思。

chown命令用于改变文件的所有者

 

-R参数:递归设置子目录和子文件

chown 命令的-R参数非常有用

R是recursive的缩写,表示“递归”

chown命令配上-R参数,就会使得被修改的目录的所有子目录和子文件都改变所有者

 

 

 

 

 

11.文件权限管理

 

权限的原理

r:英语read的缩写,表示“读”。就是说可以读这个文件

w:英语write的缩写,表示“写”。就是说可以 写/修改这个文件

x:英语execute的缩写,表示“执行/运行”。可以运行这个文件

最后可能会有一个点,这是SELinux的安全标签

为什么我们看到这一排好多个重复出现的r,w和x呢,那是因为访问权限是按照用户来划分的。

 

解析 -rw-rw-r--

rw-:文件的所有者对文件有读,写的权限,没有运行权限,也很好理解,因为这是一个普通文件,默认没有可执行的属性

记住:如果有w权限,那么也有删除此文件的权限

r--:表示其他用户只可以读此文件,但不能写也不能执行

root是超级大管家,只有它想不到的,没有它做不到的。它可以读写,运行任意文件

 

chmod命令:修改文件的访问权限

chmod命令不需要是root和mode的缩写

change是英语“改变”的意思,mode是“模式”的意思

chmod命令用于修改文件的各种访问权限

 

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

 

 

 

12.Nano文本编译器和终端配置

 

Linux终端的文本编译器中,较著名的有:Nano,Vim,Emacs

其他文本编译器还有Gedit,Sublime,Atom,等等

 

nano是“毫微”的意思,也就是10的-9次方

纳米科技“纳米”就是nanometer,由nano和meter组成

nano是“十亿分之一”,meter是“米”

 

Nano是一个文本编译器,不是文本处理器

Nano 的全称其实是GNU Nano.

 

启动Nano

CentOS预装了nano,因此要启动nano,只需要在终端中输入nano

^这个符号表示键盘的Ctrl键,所以这些都是Nano的快捷键组合

^X标明的是Exit,就是退出Nano,exit是英语“退出”的意思

Ctrl+G:显示帮助文档,等等

 

通过.nanorc来配置Nano

注意,.nano的最前面有一个点,表明这是一个隐藏文件

像这样的配置文件,用ls -l命令是列不出来的,需要用 ls -a来列出

Linux中的配置文件大多以点开头,而且多以rc结尾

比如Vim的配置文件 .vimrc; Bash shell 的配置文件 .bashrc

那这个rc是什么意思呢?

Linux或Unix的许多程序在启动时

都需要“rc”后缀的初始文件或配置文件

“rc”是“runcomm”的缩写,即“run command”(运行命令)

 

 

 

 

13.软件仓库

 

软件安装,如虎添翼

软件包和依赖关系

RedHat发行版

 

在Windows下,要安装软件,一般使用“安装程序”

一般是.exe结尾的可执行程序,双击即可运行

一般会把软件安装到Program Files 这个文件夹下

 

软件包

CentOS 下也有类似的程序,但不称为“安装程序”

而称之为“软件包”,英语是Package

一个软件包其实是软件的所有文件的压缩包

二进制形成的,包含了安装软件的所有指令

在Red Hat一族里,软件包的后缀是 .rpm,是Red Hat Package Manager的缩写

 

依赖关系

通常来说,很少有一个软件可以单独在Linux上运行

也就是说它不依赖其他程序

一个软件经常需要使用其他程序或者其他程序的片段(称之为库)

一个软件依赖其他程序,这就是依赖关系

比如说,Linux下类似Photoshop的软件GIMP

GIMP的正常运作需要调用图片读取的库(例如读取一个JPG图片)

往往依赖关系还有下层依赖关系,环环相扣

当然,在Windows里面你也遇到依赖问题,比如你运行Eclipse软件,它会说你还没安装Java环境

你运行一个大型游戏,它提示你先安装Direct X

幸运的是,Red Hat的包管理系统非常智能

 

软件仓库

Linux的软件包都存放在一个地方,叫做软件仓库

对于Windows的各种软卷,可没有这样一个集中存放的地方

因为Linux是在Windows之后诞生的

为了避免Windows的这个“弊端”

Linux选择创建一个集中存放软件的地方

Linux的这以优势得益它的开源性

Linux中的软件基本都是开源自由的,任何人都可以分发,传播软件

只要遵守一定的软件协议,把这些软件集中存放在某个地方是可行的

 

管理软件仓库

用默认的官方版本没有太大坏村,但是有时候会卡

所以我们要学习如何切换仓库

CentOS系统使用的软件仓库列表是记录在一个文件中

要编辑的那个包含软件仓库的列表文件是  /etc/yum.repos.d/CentOS-Base.repo,这个文件是系统文件,只能被root用户修改

 

切换CentOS的软件源

CentOS官方的源列表

https://www.centos.org/download/mirrors

 

包管理工具

使用终端来管理软件包

终端的软件包管理命令一般用yum

yum是CentOS中的默认包管理工具,也用于Red Hat 一族

 

yum update / ypgrade    更新

sudo yum search 搜索软件包

sudo yum install xxx  安装软件包

 

本地的 .rpm软件包,可以用rpm命令来安装

sudo rom -i *.rpm   用于安装

sudo rpm -e 包名  用于卸载

 

 

 

 

 

14.RTFM阅读手册

 

RTFM 阅读那该死的手册

Read The Fucking manual的缩写

翻译中文是“阅读那该死的手册”

 

man命令,显示使用手册

man是maual的缩写,是英语“使用手册”的意思

用法很简单,后接你想要显示使用手册的命令,函数,等等

此命令用于查看系统中自带的各种参数手册

 

可执行程序或Shell命令

系统调用(Linux内核提供的函数)

库调用(函数库中的函数)

文件(例如/etc/passwd)

特殊文件(通常在/dev下)

游戏

杂项(比如man(7),grogg(7))

系统管理命令(通常只被root用户使用)

内核子程序

 

如果man的手册没有安装,可以运行以下命令

sudo yum install -y man-pages

如果man的手册不全,可以运行以下命令

sudo mandb

输入man + 数字 + 命令/函数,可以查到相关的命令和函数

 

手册页的不同区域

手册页分为不同的区域

这些区域的名字是用大写和粗体表示,且靠左对齐

NAME:英语”名字“的意思

手册页对于的命令或函数名字,后接简单描述

SYNOPSIS:英语”概要,大意,摘要“的意思

使用此命令的所有方法

 

 

whatis命令

what是英语”什么“的意思,is是英语”是“的第三人称单数形式

所有连起来 what is 就是 ”是什么“ 的意思

whatis 命令可以说是man命令的精简版

只会列出man命令显示的手册开头部分,就是概述命令的作用

例如用whatis命令来查看ls命令的作用

whatis ls

 

 

 

 

 

15.查找文件

 

locate命令,快速查找,locate命令是搜索包含关键字的所有文件和目录

 

文件的数据库

locate命令不会对你实际的整个硬盘进行查找,而是在文件的数据库里查找记录

对于刚创建不久的文件,因为它们还没被收录进文件数据库

locate命令就找不到其索引,自然就不会返回任何结果

Linux系统一般每天会更新一次文件数据库

 

可以用updatedb命令强制系统立即更新文件数据库

updatedb命令只能由root用户执行

update英语”更新“

sudo updatedb

 

 

find命令,深入查找

find是英语”找到“的意思,find命令也用于查找文件

find命令是查找文件的利器

而且它可以让我们对每个找到的文件做后续的操作

与locate命令不同,find命令不会在文件数据库中查找文件的记录

而是遍历你的实际硬盘

 

find命令的用法是这样的

find <何处> 《何物》 <做什么>

这几个参数中,只有何物是必须指定的,也就是要查找什么

find -name "new_file"

 

 

 

根据文件大小查找

 

 

格式化打印查找结果

printf -name ".txt" -printf "%p - %u\n"

 

 

删除查找到的文件

假如我要删除查找到的文件,我可以用 -delete参数

find -name "*.jpg" -delete

会删除当前目录及子目录下所有以.jpg为后缀的文件

 

 

 

调用命令

使用-exec参数

假如要将one目录下所有查找到的txt文件的访问权限都改为600

find one -name "*.txt" -exec chmod 600 {} \;

对于每个找到的.txt结尾的文件,都进行-exec参数指定的操作

 

posted @   漫漫长路</>  阅读(173)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 【译】Visual Studio 中新的强大生产力特性
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 【设计模式】告别冗长if-else语句:使用策略模式优化代码结构
点击右上角即可分享
微信分享提示