Linux学习日志
最后更新时间:
文章总字数:
预计阅读时间:
前言
Linux是一个免费、开源、可靠、安全、稳定、多平台的操作系统内核,这篇文章将随着我的学习进程不断更新用于作为笔记。
一些小知识(
快捷键
· Ctrl+L:清空终端
小知识(没啥用也许
· 使用ls查看目录下内容时,深色的为文件夹,浅色的为文件;
使用ls -l时,最前面为d(directory)的是文件夹,为-的是文件
· 使用su -root
然后输入用户密码,获得最大权限(切换root用户)
通配符“*”
通配符“*”,用来做模糊匹配
通配符,即匹配任意内容(包括空),例:
· test* 表示匹配任何以test开头的内容
· *test 表示匹配任何以test结尾的内容
· test 表示任何包含test的内容
管道符“|”
管道符“|”,把管道符左侧输出的结果作为右边的输入
左侧可以是任何有输出的命令,右侧只能是有可作为内容输入端口参数的命令
例:cat test.txt | grep pessenger
原本上面grep命令应该为grep pessenger 筛选内容
,但是grep命令的筛选内容参数可作为内容输入端口,所以在使用管道符时可以省略,将管道符之前内容作为参数输入
注:管道符可以嵌套使用,比如:cat test.txt | grep pessenger | grep D
即:cat test.txt
的输出(输出内容1)作为参数进行grep pessenger 输出内容1
,得到输出内容2,在输入输出内容2进行命令grep D 输出内容2
得出最后我们看到的输出内容
反引号“`”(又称飘号)
用反引号包围的命令不会被作为参数,而是将命令输出的内容作为参数输入
例:echo pwd
输出结果为pwd,而echo "pwd"
输出内容是当前目录位置
重定向符“>”和“>>”
>
将左侧命令的结果覆盖写入到符号右侧指定的文件中
例:eacho "Hello Linux" > test.txt
->test.txt内容为“Hello Linux”
>>
将左侧命令的结果追加写入到符号右侧的指定文件中
例:echo "Hello Linux" >> test.txt
->test.txt最后多一行“Hello Linux”
命令行操作
命令结构
Linux的命令结构大致为:[commend] [-option] [parameter]
其中:
· commend 指的是命令本身,比如:ls、cd等
· -option 指的是命令的一些选项,可以通过这个来选择控制命令的行为细节
· parameter 指的是命令的参数,用于命令的指向目标
注:[-0ption]
和[parameter]
是可选的而不是必须的
命令表
ls
ls命令的作用是列出目录下的内容,细节如下:
ls [-a -l -h] [Linux路径]
前置小知识:
·Home目录:每一个用户在Linux系统的专属目录默认在:/home/用户名
·当前工作目录: Linux在执行命令的时候往往需要一个工作目录来打开命令程序(终端),默认设置工作目录在用户的home目录
选项
-a选项
-a
选项 表示“all”,即列出所有文件(包括隐藏的)
显示的文件里面开头是 “.” 的就是隐藏的文件
-l选择
-l
选项 以纵向的形式展示内容,并展示更多内容
-h选择
-h
选项 可以更好的展示内存,但是只能和 -l
一起使用
组合使用
可以选择分别使用选项,比如 ls -l -a -h
,也可以组合使用,比如ls -lah
两者等效并且前后顺序没有影响。
cd
cd命令就是更改工作目录,语法是:
cd [Linux路径]
注:cd没有选项只有路径
cd直接执行不写参数就是回到根目录
绝对路径和相对路劲
绝对路径即从根目录为起点,以 / 开头
相对路径从当前文件夹开始,不需要/开头
特殊路径符
·**.** 表示当前目录 例:cd ./desktop
就是切换到当前目录下的desktop目录内
·**..**表示上一级目录 例:cd ../..
切换到上二级目录
·**~**表示HOME目录 例:cd ~/desktop
切换到根目录的desktop目录
pwd
(Print Work Directory) 用于查看当前所在的工作目录
pwd没有选项,并且没有参数,直接执行即可
mkdir
mkdir命令(来自“Make Directory”)可以创建新的目录(文件夹)
语法:mkdir [-p] Linux路径
注:·参数必填,相对路径以及绝对路径均可
· -p选项可选,表示创建不存在父目录,适用于连续多级的目录
· 创建文件夹需要修改权限,在home目录内可以直接创建,在home目录之外需要权限
例:mkdir pessenger
,mkdir ./pessenger
等
选项
-p
-p 可以没有父目录的目录,用于创建连续目录
例: mkdir -p /pessenger/hello/world
touch
用来创建文件,语法:touch Linux路径
注:touch命令没有选项,但是参数必填
例:touch text.txt
cat
查看文件内容,语法:cat Linux路径
注:cat命令也没有路径且参数必填
例:cat test.txt
more
也可以查看文件内容,语法:more Linux路径
注:more也没有选项且参数必填
文件内操作
·space键:下一页
·ENTER键::下一行
·B键上一页
·Q键退出
more与cat的区别
·cat直接将内容全部展示出来
·more支持翻页,若文件内容过多,可以一页页展示
所以more较cat更适合大文件的查看
cp
复制文件/文件夹(copy),语法:cp [-r] 参数1 参数2
参数1:Linux路径,表示被复制的文件或者文件夹
参数2:Linux路径,表示要复制去的文件或者文件夹
选项
-r
用于复制文件夹用,表示递归
mv
用于移动文件夹/文件(move),语法: mv 参数1 参数2
参数1:Linux路径,表示被移动的文件或者文件夹
参数2:Linux路径,表示要移动到的地方(若目标不存在则改名确保存在)
例:若目标存在,比如:mv text.txt /desktop
,text.txt就被移动到了desktop目录下
若目录不存在,比如:mv text.txt text2.txt
(text1.txt不存在这个目录下),text.txt就被重命名成了text1.txt
rm
用于删除文件/文件夹(来自remove),语法:rm [-r -f] 参数1 参数2 …… 参数n
参数为要删除的文件或者文件夹路径
谨慎使用rm命令,尤其root用户时rm -rf/
,rm -rf/*
等效于电脑格式化(删光光)
选项
-r
同cp命令,用于删除文件夹
-f
-f表示force,强制删除(不会弹出确认信息)
注:
·普通用户删除内容不会弹出提示,只有root管理员用户删除内容会有提示
·一般用户不使用-f选项
which
我们前面学的Linux命令,本体就是一个个二进制的可执行程序(相当于windows的exe文件)
which命令查看一系列命令的程序文件存放在哪里,语法:which Linux命令
例:which cd
find
搜索指定的文件,语法:find 起始路径 -name "被查找文件名"
(以文件名查找)
find 起始路径 -size +/-n[kMG]
(以 大小查找文件)
+、-表示大于小于;n表示大小数字;[]内为大小单位(k为kb,M为MB,G为GB)
注:允许使用通配符
例:find /desktop "-name" *text
,find -size +1k
grep
从文件中,通过关键字过滤文件行,语法:grep [-n] 关键词 文件路径
选项-n(可选):表示在结果中显示匹配行的行号
参数·关键字(必填):表示过滤的关键字,带有space或者其他特殊符号时建议用””把关键字包起来(建议一直使用“”包围)
参数·文件路径(必填):表示要过滤的文件的路径,可作为内容输入端口
例:grep "pessenger" text.txt
wc
文件内容统计,包括行数,单词数量等,语法:wc [-c -m -l -w] 文件路径
参数文件路径(必填),被统计路径,可作为内容输入端口
例:wc -c test.txt
选项
-c
统计bytes数量
-m
统计字符数量
-l
统计字数
-w
统计单词数量
echo
在命令行内输出指定内容,语法:echo 输出内容
注:无选项,参数较复杂时可用“”包围
例:echo "Hello Linux"
tail
可以查看文件尾部内容,跟踪文件最新更改,语法:tail [-f -num] Linux路径
·参数Linux路径:表示被追踪的文件路径
例:tail test.txt
选项
-f
表示持续追踪,例:tail -f test.txt
(运行之后不会主动停止并一直更新用户在对参数对象操作之后的结果)
注:CTRL+C强制停止运行
-num
表示查看尾部多少行,num为具体数字,不填默认10行,例:tail -5 test.txt
Vim/Vi 编辑器
Vi/Vim是Linux最经典的文本编辑器(Vim是Vi的加强版)
工作模式
命令模式
此模式下,所敲的按键编辑器都会理解为命令,用命令驱动不同功能。
此模式下不能自由进行文本编辑
输入模式
编辑模式、插入模式
此模式下,可以自由地对文件内容进行编辑
底线命令模式
以”:”开始,通常用于文件的保存退出
打开编辑器时默认是命令模式
*注:你可以从命令模式进入输入模式和底线命令模式,但是不可以从输入模式进入底线模式或相反,只能从两者回到命令模式再进入另一方
用打开vi/vim打开并编辑文件
vi/vim 文件路径
如果存在文件就打开,如果不存在就新建一个文件,再打开进行编辑
命令模式的命令(缩写)表
模式 | 快捷键 | 描述 |
---|---|---|
命令模式 | i | 在当前光标位置进入输入模式 |
命令模式 | a | 在当前光标位置之后进入输入模式 |
命令模式 | I | 在当前行的开头进入输入模式 |
命令模式 | A | 在当前行的结尾进入输入模式 |
命令模式 | o | 在当前光标的上一行进入输入模式 |
命令模式 | O | 在当前光标的下一行进入输入模式 |
输入模式 | esc | 任何情况下输入esc都能回到命令模式 |
命令模式 | ↑、k | 向上移动光标 |
命令模式 | ↓、j | 向下移动光标 |
命令模式 | ←,h | 向左移动光标 |
命令模式 | →、l | 向右移动光标 |
命令模式 | 0 | 移动光标到当前行的开头 |
命令模式 | $ | 移动光标到当前行的结尾 |
命令模式 | pageup(PgUp) | 向上翻页 |
命令模式 | pagedown(PgDn) | 向下翻页 |
命令模式 | / | 进入搜索模式 |
命令模式 | n | 向下继续搜索 |
命令模式 | N | 向上继续搜索 |
命令模式 | dd | 删除光标所在行的内容 |
命令模式 | ndd | n是数字,表示删除当前光标向下n行 |
命令模式 | yy | 复制当前行 |
命令模式 | nyy | n位为数字,表示复制当前光标向下n行 |
命令模式 | p | 黏贴复制的内容 |
命令模式 | u | 撤销修改 |
命令模式 | CTRL+r | 反向撤销修改 |
命令模式 | gg | 回到首行 |
命令模式 | G | 跳到行尾 |
命令模式 | dG | 从当前行开始删除下面所有内容 |
命令模式 | dgg | 从当前行开始删除上面所有内容 |
命令模式 | dS | 从当前光标开始删除到本行结尾 |
命令模式 | dG | 从当前光标开始删除到本行开头 |
命令模式 | : | 进入底线命令模式 |
底线命令模式 | :wq | 保存并退出 |
底线命令模式 | :q | 仅退出 |
底线命令模式 | :q! | 强制退出 |
底线命令模式 | :w | 仅保存 |
底线命令模式 | :set nu | 显示行号 |
底线命令模式 | :set paste | 设置黏贴模式(用于从外部复制内容,防止格式错乱) |
root及相关
root用户,即超级用户,是拥有最大权限的账户
root用户拥有一般用户没有的权限,例如:在根目录创建文件夹等
普通用户的权限一般在HOME目录内是不受限的,一旦出了HOME目录,一般用户在大部分地方只有只读和执行权限,无修改权限
切换用户
我们可用使用su
命令来切换用户(switch user)
语法:su [-] [用户名]
注:
·“-”符号是可选的,表示是否加载环境变量,建议带上。
·参数:用户名,表示要切换的用户,可省略,省略表示切换到root
·切换用户后可用exit
命令退回到上一个用户,也可以使用快捷键CTRL+D
·普通用户切换到其他用户需要输入密码
·root用户切换到其他用户不需要密码
sudo命令
长期使用root用户可能会对系统产生损坏,所以可以使用sudo来为普通命令授权,临时以root身份执行
语法:sudo 其他命令
在其他命令前带上sudo即可为这一条命令临时赋予root授权
注:不是所有用户都有权利使用sudo,我们需要为普通用户配置sudo认证
为普通用户配置sudo认证
1.切换到root用户,执行visudo
命令,会通过vi打开:/etc/sudoers
2.在文件最后添加:用户名 ALL=(ALL) NOPASSSWD:ALL
其中:NOPASSSWD:ALL表示使用sudo命令无需输入密码
3.使用wq保存
4.换回普通用户即可使用
用户以及用户组
在Linux中可以:
· 配置多个用户
· 配置多个用户组
· 用户可以加入到多个用户组中
linux系统中关于权限的管控级别有两个:
- 针对用户的权限控制
- 针对用户组的权限控制
用户组及用户管理命令
用户组以及用户相关命令只有root用户才可以执行
用户组相关命令
创建用户组:groupadd 用户组名称
删除用户组:groupdel 用户组名称
用户相关命令
创建用户:useradd [-g 用户组 -d home目录] 用户名
·选项-g:指定用户组,若不指定则创建一个与用户同名的用户组然后把这个用户塞进去(-g指定的组需要已存在,如果已存在同名的用户组,必须使用-g)
·选项-d:指定用户的HOME目录,不指定就默认在:/home/用户名
删除用户:userdel [-r] 用户名
·选项-r:删除用户的home目录,如果不带则不删除
产看用户所属组:id [用户名]
·参数用户名:被查看的用户,不带就看自己
修改用户所属组:user mod -aG 用户组 用户名
将指定用户移动到指定用户组
getent命令:查看当前系统有哪些用户和用户组
语法1:getent password
(password是你的密码)
每条结果包括七份信息,分别是:
用户名:密码(x):用户ID:组ID:描述信息(没啥软用):HOME目录:执行终端(默认bash)
语法2:getent group
每条结果包含三份信息,分别是:
组名称:组认证(显示为x):组ID
查看权限控制
认知权限信息
当你使用ls -l
命令查看内容时,会显示权限细节。
以一条结果为例:
drwxr-xr-x. 3 pessenger passenger 4 11月 4 5:14 Desktop
1 2 3
其中:第一部分表示文件、文件夹的权限控制信息
第二部分表示文件、文件夹所属用户
第三部分:表示文件、文件夹所属用户组
第一部分用于展示文件、文件夹的具体权限,可以分为十个槽位:-/d/l
r/-
w/-
x/-
r/-
w/-
x/-
r/-
w/-
x/-
· 第一块:-表示文件
d表示文件夹
l表示软链接
· 第2-4块表示所属用户权限
· 第5-7块表示所属用户组的权限
· 第8-10块表示其他用户权限
r 表示读权限
w 表示写权限
x 表示执行权限
对于文件、文件夹的不同,rwx的含义有细微差别:
· r 针对文件可以查看文件内容
针对文件夹可以查看文件夹内容(如ls命令)
· w 针对文件可以修改文件内容
针对文件夹可以在文件夹内创建、删除、修改等操作
· x 针对文件可表示将文件作为程序执行
针对文件夹可表示更改工作目录到这个文件夹,即cd进入
chmod命令
chomd命令用于修改文件、文件夹的权限信息
注:只有文件、文件夹的所属用户或者root用户才可修改
语法:chmod [-R] 权限 文件/文件夹
· -R 对文件夹内所有内容应用同样操作
例:chmod u=rwx,g=rx,o=x hello.txt
将文件权限修改为rwxr-x–x
·其中:u表示user所属用户权限,g表示group组权限,o表示other其他权限
chmod语法也可以简化,例如:chmod 761 hello.txt
这句命令相当于chmod u=rwx,g=rw,o=x hello.txt
例句中的7、6、1分别将u、g、o的权限修改
我们可以把三位上的每个数字分别理解为一个三位二进制数
比如7
就相当于111
即rwx三个权限都有;6
相当于110
即拥有rw两个权限
用这种表达可以更加快速便捷地执行chmod命令
chown命令
chown命令可以修改文件文件夹的所属用户和所属用户组
注:普通用户无法修改所属为其他用户或族,此命令仅适用于root用户执行
语法:chown [-R] [用户] [:] [用户组] [文件或者文件夹]
· 选项-R:同chmod
· 选项用户:修改所属用户
· 选项用户组:修改所属用户组
· “:”:用于分隔用户和用户组
例:chown root hello.txt
将hello.txt所属用户组修改为root
chown root:pessenger hello.txt
将hello.txt所属用户改为root,用户组改为pessenger
实战训练
用于练习,锻炼熟练度。本环节不会有较多的文字,只是作为实战过程中部分须注意点的记录。