Linux 常用高级命令总结
重定向命令
将命令行输出的结果写入指定文件内.
| 命令 | 说明 |
|---|---|
| > | 如果文件存在会覆盖原有文件内容,相当于文件操作中的‘w’模式 |
| >> | 如果文件存在会追加写入文件末尾,相当于文件操作中的‘a’ 模式 |
常用命令为:
-
ls /home > ./info.text将home目录的文件目录内容覆盖写入当前目录的info.txt文件中
-
pwd home >> ./info.text将home路径信息内容追加写入当前目录的info.txt文件中
查看文件内容
查看文件选项
| 命令 | 选项 |
|---|---|
| cat | 查看小型文件 |
| more | 分屏查看大型文件 |
常用命令为:
-
cat 1.txt查看1.txt文件内容,可结合重定向命令实现文件合并.如下:
-
cat 1.txt >> 2.txt将1.txt文件内容追加到2.txt文件内
-
more msg.txt分屏查看msg.txt文件内容
more分屏查看文件时操作命令:
| 操作间 | 说明 |
|---|---|
| 空格 | 显示下一屏信息 |
| 回车 | 现实下一行信息 |
| b | 显示上一屏信息 |
| f | 显示下一屏信息 |
| q | 退出查看 |
管道命令使用
管道(|):一个命令的输出可以通过管道做为另一个命令的输入,可以理解成是一个容器,存放在终端显示的内容。
常用命令为:
-
ls -lh | more将当前目录信息使用more分屏模式查看
-
可结合后面的grep文本搜索命令使用,如下:
-
ls | grep 'txt'在ls返回的目录信息中搜索'txt'字段
链接命令
链接命令是创建链接文件,分为硬链接和软连接两种:
| 命令 | 说明 |
|---|---|
| ln -s | 创建软链接 |
| ln | 创建硬链接 |
软链接
类似于Windows下的快捷方式,当一个源文件的目录层级比较深,我们想要方便使用它可以给源文件创建一个软链接。
软链接命令为:
-
ln -s /home/python/Desktop/AA/info.txt ./info-s.txt给桌面AA文件夹内info.txt文件在当前路径创建软链接,名为info-s.txt
注意事项:
-
如果软链接和源文件不在同一个目录,源文件要使用绝对路径,不能使用相对路径
-
删除源文件或移动源文件位置则软链接失效
-
可以给目录创建软链接
硬链接
类似于源文件的一个别名,也就是说硬链接同源文件名一样,指向的是同一个文件数据,而不是指向它的源文件名.
硬链接的作用是可以给重要文件创建硬链接,能够防止文件数据被误删。
硬链接命令为:
-
ln ./AA/info.txt ./info-h.txt给当前目录下AA文件夹内info.txt文件在当前路径创建软链接,名为info-h.txt
注意事项:
-
创建硬链接使用相对路径和绝对路径都可以
-
删除源文件,硬链接还可以访问到数据。
-
创建硬链接,硬链接数会加1,删除源文件或者硬链接,硬链接数会减1。
-
创建软链接,硬链接数不会加1
-
不能给目录创建硬链接
硬链接数:
硬链接数就是文件数据被文件名使用的次数, 好比引用计数
文本搜索命令
| 命令 | 说明 |
|---|---|
| grep | 文本搜索 |
grep命令选项:
| 命令选项 | 说明 |
|---|---|
| -i | 忽略大小写 |
| -n | 显示匹配行号 |
| -v | 显示不包含匹配的行 |
grep结合正则表达式使用:
| 正则表达式 | 说明 |
|---|---|
| ^ | 以指定字符串开头 |
| $ | 以指定字符串结尾 |
| . | 匹配一个非换行符的字符 |
常用命令为:
-
grep "python" hello.py -in在hello.py文件中搜索"python"内容,忽略大小写,并显示匹配行号.
-
grep "python" hello.py -iv在hello.py文件中搜索不包含"python"的行,忽略大小写.
-
grep "^py" hello.py -n"在hello.py文件中搜索"py"开头的内容,显示匹配行号.
-
grep "on$" hello.py -n在hello.py文件中搜索"on"结尾的内容,显示匹配行号.
-
grep "py.on" hello.py -n在hello.py文件中搜索符合"py.on"的内容,显示匹配行号.
结合管道使用:
ls | grep 'txt'
查找文件命令
| 命令 | 说明 |
|---|---|
| find | 在指定目录下查找文件(包括目录) |
find常用选项:
| 选项 | 说明 |
|---|---|
| -name | 根据文件名(包括目录名)查找 |
| - perm | 根据文件权限查找 |
find可结合通配符使用:
- 通配符不仅可用于文件查找,还可在其他命令中使用,比如ls、mv等
| 通配符 | 说明 |
|---|---|
| * | 代表0个或多个任意字符 |
| ? | 代表任意一个字符 |
常用命令为:
-
find . -name "*.txt"在当前路径起始向下,所有文件名结尾为.txt的文件.
-
find ~ -perm 755在家目录下,查找所有权限为755的文件,即用户、用户组、其他用户权限分别为可读写操作/可读操作/可读操作。详细权限内容参考后文。
压缩和解压缩命令
Linux 默认支持的3种格式
-
.gz:使用tar命令来压缩和解压缩 -
.bz2:使用tar命令来压缩和解压缩 -
.zip:使用zip命令来压缩和解压缩
tar 命令选项
| 选项 | 命令 |
|---|---|
| -c | 创建打包文件 |
| -v | 显示打包或解包详细信息 |
| -f | 指定文件名称 |
| -z | 压缩或解压缩(用于.gz格式) |
| -j | 压缩或解压缩(用于.bz2格式) |
| -x | 解包 |
| -C | 解压缩到指定目录 |
常用命令为:
-
tar -zcvf test.tar.gz dir1 dir2将dir1和dir2压缩为test.tar.gz 名的gz压缩文件
-
tar -zxvf test.tar.gz -C DIC将test.tar.gz文件解压到当前目录的DIC文件夹内
-
tar -jcvf test.bz2 dir1 dir2将dir1和dir2压缩为test.bz2 名的bz2压缩文件
-
tar -zxvf test.bz2 -C DIC将test.bz2文件解压到当前目录的DIC文件夹内
可不指定解压或压缩路径,默认解压或压缩到当前路径
zip 和unzip命令选项的使用
| 命令及选项 | 说明 |
|---|---|
| zip | 压缩成.zip格式文件 |
| unzip | 解压缩.zip格式文件 |
| -d | 解压缩到指定目录 |
常用命令为:
-
zip test.zip dir1 dir2将dir1和dir2压缩为test.zip
-
unzip test.zip -d DIC将test.zip解压到DIC目录内
说明
-
压缩文件尽量使用
.gz格式,占用空间更少 -
zip格式占用空间较大,但各平台较通用
用户权限命令
chmod命令介绍
chmod用于修改文件权限,修改方式分为两种:
-
字母法
-
数字法
字母法
| 角色 | 说明 |
|---|---|
| u | user,文件所有者 |
| g | group,用户组 |
| o | other,其他用户 |
| a | all,所以用户 |
权限说明
| 权限 | 说明 |
|---|---|
| r | 可读 |
| w | 可写 |
| x | 可执行 |
| - | 无任何权限 |
权限设置说明:
| 操作符 | 说明 |
|---|---|
| + | 增加权限 |
| - | 撤销权限 |
| = | 设置权限 |
各角色权限对应位置说明:
image.png
如图:使用ls -l命令以列表方式显示文件信息,信息开头如-rw-rw-r--即为每个文件的权限,其长度为10。第一个位置为文件类型,除开第一个,其于9个每3个为一组,分别对应用户u、g、o权限的r、w、x权限,无权限的为-表示。
权限对应示例:
---------所有用户均无任何权限
rwxrwxrwx所有用户都有读、写、可执行的权限
rwxrw-r--user可读、写、执行,group可读、写,other只可读
字母法修改权限命令示例:
就以上图1.bz2文件权限为例修改
-
命令:
chmod u=rwx,g-w,o+x 1.bz2解析:命令修改1.bz2文件权限:user改为rwx权限,user去掉w权限,other增加x权限,修改后1.bz2权限如下,可与上图对比。
image.png
数字法
数字法可以让“rwx”三个权限字母仅用一个数字来代替
权限说明:
| 权限 | 说明 | 权限值 |
|---|---|---|
| r | 可读 | 4 |
| w | 可写 | 2 |
| x | 可执行 | 1 |
| - | 无任何权限 | 0 |
把对应权限的权限值相加,即可得到最终权限值;
如rw- 对应权限值6,r-x对应权限值5,r--对应权限值4;
在修改权限命令中用3个数字可分别对应u、g、o的权限内容。
数字法修改权限命令示例:
同样以上图1.bz2文件权限为例修改
-
命令:
chmod 666 1.bz2解析:命令修改1.bz2文件权限为666,6=4+2 ,即分别对应u、g、o权限为rw-, 即修改所有角色权限为可读写权限,可继续对比上图。
image.png
说明
常使用的是数字法给不同角色修改权限,语法更简洁。
获取管理员权限相关命令
sudo 命令的使用
| 命令 | 说明 |
|---|---|
sudo |
单个命令l临时获取root权限,命令前加sudo |
sudo -s |
切换到root用户,获取管理员权限 |
-
例:在根目录新建文件,需使用root权限:
使用
sudo获取临时权限:sudo touch /test.txt
whoami 命令
- 查看当前用户权限
exit 命令
- 退出登录用户(在不同用户之前切换时需先使用exit推出栈
who 命令
- 查看所有登录用户
passwd 命令
- 修改用户密码,不指定用户时默认修改当前登录用户密码
关机重启命令
-
shutdown -h now立即关机 -
shutdown -h 1010分钟后关机 -
reboot重启
用户相关操作
useradd 创建用户
创建用户需使用root权限
| 选项 | 说明 |
|---|---|
| -m | 创建用户时,自动创建用户主目录(基本都会使用该选项) |
| -g | 指定用户所属的用户组,默认不指定时自动创建同名用户组 |
示例:
-
sudo useradd -m demo解析:创建用户demo,并默认创建同名用户组,图中可见,家目录中新增demo用户。
image.png
也可在使用命令
cat /etc/passwd在/etc/passwd中查看新增用户,最文件最后一行显示demo用户信息:
image.png
-
id命令查看用户信息
-
第一个: uid 表示用户id
-
第二个: gid 表示用户组id
-
第三个: 组 表示用户所在的用户组
且可见新建demo用户的组数量小于python用户,这将会在下面详细讲到。
image.png
-
设置密码
使用sudo passwd 用户名的命令形式给用户设置密码
- 给新建用户demo设置密码命令:
sudo passwd demo
image.png
切换用户
-
使用
su 用户命令切换用户切换用户后,当前用户名变为demo
image.png
-
新建的用户不在sudo的组内,是无法使用使用root权限的:
image.png
解决办法:
- 给demo用户设置一个sudo附加组, 需要使用
usermod修改用户信息
- 给demo用户设置一个sudo附加组, 需要使用
修改用户信息
usermod:修改用户信息
| 选项 | 说明 |
|---|---|
| -G | 设置一个附加组 |
| -g | 修改用户组 |
-
切换回原用户给demo用户设置附加组sudo,让其可使用sudo命令:
sudo usermod -G sudo demo
image.png
- 给demo用户修改组信息过后,即可成功切换到root用户下:
image.png
删除附加组
gpasswd :添加或删除附加组信息
| 选项 | 说明 |
|---|---|
| -a 用户名 | 给用户添加附加组 |
| -d 用户名 | 给用户删除附加组 |
-
在python用户下删除demo用户的sudo组
sudo gpasswd -d demo sudo
删除用户
userdel:删除用户
| 选项 | 说明 |
|---|---|
| -r 用户名 | 删除用户主目录,必须要设置,否则用户主目录不会删除 |
-
命令:
sudo userdel -r demo删除创建的demo用户:删除前请确保使用
exit完全退出了栈
image.png
忽略最后的提示,demo用户成功删除。
删除用户,默认同名的用户组也会被删除
用户组相关操作
-
groupadd:创建用户组sudo groupadd test
-
sudo useradd -m -g test demo: 创建demo用户同时指定用户组test -
sudo usermod -g abc demo:修改用户组为abc -
sudo usermod -G sudo demo: 给用户设置附加组sudo -
groupdel:删除组-
sudo groupdel test:删除用户组 -
如果用户组下面有用户,需要先使用
userdel -r删除用户,再删除组
-
编辑器 vim
vim 是一款功能强大的文本编辑器,也是早年 Vi 编辑器的加强版,它的最大特色就是使用命令进行编辑,完全脱离了鼠标的操作。
vim的工作模式
-
命令模式
-
编辑模式:
i -
末行模式:
:
image.png
编辑模式和末行模式之间不能直接切换,都需要先退回到命令模式
vim 末行模式命令
命令模式下:进入末行模式
-
:w 保存
-
:wq 保存退出
-
:x 保存退出
-
:q! 强制退出
vim 命令模式下常用命令
| 命令 | 说明 |
|---|---|
| yy | 复制光标所在行 |
| p | 粘贴 |
| dd | 删除/剪切当前行 |
| V | 按行选中 |
| u | 撤销 |
| ctr+r | 反撤销 |
| >> | 往右缩进 |
| << | 往左缩进 |
| :/搜索的内容 | 搜索指定内容 |
| :%s/要替换的内容/替换后的内容/g | 全局替换 |
| :开始行数,结束行数s/要替换的内容/替换后的内容 | 局部替换 |
| . | 重复上一次命令操作 |
| G | 回到最后一行 |
| gg | 回到第一行 |
| 数字+G | 回到指定行 |
| ctr+f | 下一屏 |
| ctr+b | 上一屏 |
| shift+6 | 回到当前行的行首 |
| shift+4 | 回到当前行的行末 |