Linux: 一切设备皆文件
-
查看当前系统有多少以g开头的指令
g [tab][tab]
查看命令的用法
-
查看比较熟悉指令该怎么使用 ?–help
date --help
出现的usage 是这个指令的基本用法:比如
Usage: date [OPTION]... [+FORMAT]
… 代表了[option] 是个可选参数
那么就代表了 date这挨个指令的用法大致是
date -d +%Y%m%d
如果想要快速的看到这个命令该怎么用的话,可以看
Convert seconds since the epoch (1970-01-01 UTC) to a date $ date --date='@2147483647' Show the time on the west coast of the US (use tzselect(1) to find TZ) $ TZ='America/Los_Angeles' date Show the local time for 9AM next Friday on the west coast of the US $ date --date='TZ="America/Los_Angeles" 09:00 next Fri'
这里有基本的例子,通过例子,我们就可以看到如何使用了
如果你要使用的是从来没有用过得指令,或者是你要查询的根本就不是指令,而是文件的“格式”时,那就得要通过 man page 。
-
查看不熟悉的指令的时候
man date
接下来按空格翻页,按 下键 是一行一行向下翻
同样的可以
Linux 目录结构
linux 的目录结构是属性结构
/
是根目录
~
是home目录
linux 的顶级目录只有一个,但是windows 的目录结构有好多个
相对路径、绝对路径、特殊的路径表示符
-
相对路径
从当前目录当作根目录
-
绝对路径
从
/
当作起点 -
特殊的路径表示符
.
: 当前目录..
:上一级目录~
: home目录
常用的linux文件命令
ls
: 在命令行中以平铺的形式,展示当前工作目录
pwd
: 显示当前文件的路径 (print work directory)
mkdir
:创建文件夹
touch
: 创建文件
control + l = clear
:清屏
cp -r 被复制文件路径 目标路径
- ls 的命令参数和选项
ls -a [指定目录] //列出全部文件 (包含隐藏的文件/文件夹)
ls -l [指定目录] //以列表形式列出全部文件,并显示更多信息 ,会显示文件的字节数,但是不会转换为文件的大小
ls -lh [指定目录] // 以便于阅读的形式显示文件的大小
lh //必须同时使用,不然没有效果
注意:linux 系统下,以.开头的,表示是linux 系统的隐藏文件夹
语法中的选项是可以组合使用的,比如学习的 -a 和 - l 可以组合应用
ls -l -a
ls -la
ls -al
-
mkdir + 路径 创建文件夹
-
如果想要一次性创建多个层级的目录(上级目录也不存在)
mkdir -p 多层文件夹 p是 parents 的缩写,这个选项告诉 mkdir命令创建目录时,如果父目录不存在,也一并创建父目录
创建文件夹需要修改权限,请确保操作均在HOME 目录内,不要在HOME外操作(也可以使用sudo命令)
-
-
touch linux路径
touch abc.txt // 创建某种类型的文件
-
cat linux路径
cat abc.txt // 查看文件内容
-
more linux路径 : 按翻页查看内容
more abc.txt // 支持翻页查看文件路径
按空格翻页,按q退出
-
cp 被复制文件夹路径,目标路径
-r 选项,表示递归的复制文件夹,文件夹内有多个层级的文件,必须递归的进行复制
cp 文件夹
注意: cp 在复制的过程中,可以将文件重命名成另一个文件
-
mv 命令可以用于移动文件或者文件夹,mv命令来自于英文单词: move
mv 被移动文件的路径 目的文件夹路径
-
rm : 一个命令可以一次性删除多个文件
rm -r // 递归的删除文件夹 rm -rf // 强制的递归删除文件夹,不会弹出任何的提示信息 rm -f // 强制删除文件,不会弹出任何的提示信息
rm 命令支持通配符*,用来做模糊匹配
-
符号*表示通配符,用来做模糊匹配
-
test*,表示匹配任何以test开头的内容
-
*test,表示匹配任何以test结尾的内容
-
*
test*
, 表示 匹配任何包含test 的内容
-
-
which 和 find
我们在前面学习的linux 命令,其实它们的本体就是一个个的二进制可执行程序,和window 中的.exe文件本质上一个东西
-
which 要查找的命令
可以找到命令在电脑中实际的位置 -
su
切换到root权限注意:第一次使用该命令,需要更新root 密码
解决方法: sudo passwd root ,会提示你设置su的密码
-
find
起始路径 - name “被查找的文件名” :按照名称查找find 起始路径 -name "被查找的文件名"
find 起始路径 -size +|-n[kMG]
- +、-表示大于和小于
- n表示大小数字
- KMG表示大小单位,k表示kb , M表示MB,G表示GB
-
-
grep 和 wc 在文件中统计功能
-
grep [-n] 关键字 待查找文件的路径
-
wc [-c -m -l -w] 文件路径 //-c 统计bytes数量 -- 这两个是一样的 //-m 统计字符数量 -- 这两个是一样的 //-l 统计行数 //-w 统计单词数量 linux还有个计算器的功能 使用命令 bc // bc
-
管道符:
|
管道符的含义是: 将管道符左边命令的结果,作为右边命令的输入
cat test.txt | grep itheima
-
-
echo
命令: 可以使用echo命令在命令行内输出指定内容,包括字符串和环境变量当输出内容比较复杂的时候,可以使用“”将输出的内容给包裹起来
-
`` 的作用
被``包裹的内容会当作命令来执行,而不是文本来执行
-
重定向符: > 和 >> , 这个命令可以用来生成日志文件
>
将左侧命令的结果,覆盖写入到符号右侧指定的文件中>>
将左侧命令的结果,追加写入到符号右侧指定的文件中
-
tail 命令 , 使用 tail命令,可以查看文件尾部的内容,跟踪文件的最新更改,语法如下:
tail [-f -num] linux路径
-f 表示持续跟踪
-num , 查看尾部多少行,不填默认10行
tail -f 文件路径
最常用的就是这个命令,以后可能经常要用它来查看日志
-
vi 编辑器 (vi 或者 vim )
vim 是 vi 的加强版本,兼容vi的所有指令,不仅能编辑文本,而且还具有shell 程序编辑的功能,可以用不容颜色的字体来辨别语法的正确性,极大的方便程序设计和编辑行。
//常用的vim命令 // dd,可以实现以一行的删除 -delete 的d // u ,可以完成对文本编辑的撤销等等 // i , 对文本进行编辑 // 底线命令模式 以:开始,通常用于文件的保存,退出 // :q 退出 :wq 保存写入内容并退出 :q! 强制退出 :set nu 显示行号 : set paste 设置粘贴模式 // pageUP , 向上翻页 // pageDown , 向下翻页 // / 进入搜索模式 // n 向下继续搜索 // N 向上继续搜索 // yy 复制当前行 -copy 的 y // p 粘贴到下一行 -paste 的p // ctrl + d = exit ; // ctrl + c : 退出当前命令 // ctrl + l : 清屏 = clear
-
linux 下面的alias命令: 用于给命令起别名
linux用户和权限
switch user = su
基本命令格式 su - 用户名
别忘了 - 后面有个空格
su - 用户名 //切换到某个用户
普通用户的权限,一般在其HOME目录内是不受限的
一旦除了可HOME目录,大多数地方,普通用户仅有只读和执行权限,无修改权限
-
-
符号是可选的,表示是否在切换用户后加载环境变量,建议加上 -
参数: 用户名,表示要切换的用户,用户名也可以省略,省略表示切换到root
-
切换用户后,可以通过exit命令退回上一个用户,也可以使用快捷键: ctrl + d
-
使用普通用户,切换到root用户需要输入密码
注意:第一次使用该命令,需要更新root 密码
解决方法: sudo passwd root ,会提示你设置su的密码 -
使用root用户切换到其他用户,无需密码,可以直接切换
sudo 其他命令
我们可以使用sudo命令,为普通的命令授权,临时以root 身份执行
在其他命令之前,带上sudo,即可以为这一条命令赋予root权限
但是可能要为普通用户配置sudo认证
用户和用户组
Linux中关于权限控制的管控级别有两个级别,分别是:
- 针对用户的权限控制
- 针对用户组的权限控制、
比如,针对某文件,可以控制用户的权限,也可以控制用户组的权限
用户组管理
- 创建用户组
groupadd 用户组名
- 删除用户组
groupdel 用户组名
用户管理
-
创建用户
推荐使用 adduser 用户名 添加用户
若使用adduser 将某一个用户添加到指定用户组下 可以用以下命令
adduser zhaoruyang blcu
前提是zhaoruyang用户必须存在,并且 blcu这个用户组也必须要存在
也可以用下面的方法,使用下面的方法的话,unbantu 上home目录下没有用户文件夹
useradd [-g -d] 用户名 // -g指定用户的组,不指定-g,会创建同名组并自动加入,指定-g需要组已经存在,如已存在同名组,必须使用-g // 意思就是如果你打出了这个指令 useradd test , 那么linux就会把test用户默认加到test组里面,若之前 //创建了用户组 test,那么就必须使用 -g这个选项 // -d 指定用户HOME路径,不指定,HOME目录默认在: /home/用户名 路径下 // ~ 是 HOME = /home/用户名 而不是 /home
-
删除用户
deluser 用户名 --[remove-home|remove-allfiles] // 后面的参数是问你是否要删除该文件夹 userdel -r 用户名 // 删除目录并且要删除对应的文件夹
-
查看用户所属组
id [用户名] 不写的话是当前用户的信息(包含所属的组)
-
修改用户所属组
usermod -aG 用户组 用户名 // 将指定用户加入指定用户组 : 当然也可以用adduser命令
-
查看系统下有那些用户、用户组
getent passwd // 查看系统中有哪些用户 zhaoruyang:x:1001:1002:,,,:/home/zhaoruyang:/bin/bash 用户名:密码(x):用户ID:组ID:描述信息(无用):HOME目录:执行终端(模式bash而非zsh)
getent group // 查看系统中有那些组
用户权限管理
能看懂就行
//例如
drwxr-xr-x
d代表是文件夹 , 还可能有 -或d或l - 表示文件 d表示文件夹 l 表示软链接
rwx 表示该用户权限
r-x 表示该用户所属用户组权限
r-x 表示其他用户权限
r: 可读权限 、 w 可写权限、 x:对于文件夹表示进入该文件夹的权限,对于文件表示可执行
- chmod 命令
我们可以使用chmod命令,修改文件、文件夹的权限信息
注意,只有文件、文件夹、的所属用户或root用户可以用chmod 修改权限
chmod [-R] 权限 文件或文件夹
示例:
chmod u=rwx,g=rx,o=x hello.txt 将文件权限修改为: rwxr-x--x //该命令r,g,o中间用,而不能用空格
其中: u表示user所属用户权限,g表示group组权限,o表示 other其他用户权限
chmod -R u=rwx,g=rx,o=x test 将文件夹test以及文件夹内全部内容权限设置为 rwxr-x--x
注:只有待修改文件是所属用户的时候,用户才能够使用chmod对他的权限进行修改
快捷的写法:
chmod u=rwx,g=rx,o=x hello.txt <=> chmod 751 hello.txt (二进制)
-
chown 命令
我们可以使用chown命令,可以修改文件、文件夹的所属用户和用户组
普通用户无法修改所属为其他用户或组的文件,所以此命令只适用于root用户执行
语法:
chown [-R] [用户][:][用户组] 文件或文件夹
chown :root hello.txt // 将hello.txt所属用户组修改为root chown root:songyuliang hello.txt // 将hellO.txt 所属用户组修改为root chown :root helloxtxt, 将hello.txt所属用户组
不仅有用户和用户组,而且文件也有用户和用户组
常用快捷键
- 可以通过 history 命令,查看历史输入过的命令
ctrl + a
跳到命令开头ctrl + e
跳到命令结尾ctrl + 键盘左键
, 向左跳一个单词ctrl + 键盘右键
, 向右跳一个单词ctrl + l
清屏ctrl + r
搜索历史命令
systemctl 命令
linux 系统很多软件均支持使用 systemctl 命令控制:启动、停止、开机自启,能够被systemctl 管理的软件,一般被称之为: 服务
语法:
systemctl start | stop | status | enable | disable 服务名
- start 启动
- stop 关闭
- status 查看状态
- enable 开启开机自启
- disable 关闭开机自启
ln 命令创建软链接
语法:
ln -s 链接文件路径 被链接文件路径