总结归纳一下 Linux 的 Shell 的快捷键和常用命令 (环境基于 ubuntu-20.04.2.0)
# Shell 快捷键
- [
方向键←→
] 或Ctrl B/F
—— 光标向后(左)/ 前(右)移动 - [
Home/End
] 或Ctrl A/E
—— 光标移动到开头(最左边)/ 末尾(最右边) - [
方向键↑↓
] 或Ctrl P/N
—— 显示上一条 / 下一条历史命令 - [
Backspace/Del
] 或Ctrl H/D
—— 删除光标前 / 后(被光标覆盖住)的字符 Ctrl U
—— 删除光标前的所有字符Ctrl L
—— 清屏Tab
—— 快速补全命令或目录(按一次或当有多个匹配项时两次)Ctrl Alt T
—— 新建一个终端窗口
# Linux 基础常识
- 使用
ls
命令显示文件或目录时的不同颜色:(一般情况下) 白色 —— 普通文件 蓝色 —— 目录 绿色 —— 可执行文件(相当于 Windows .EXE) 红色 —— 压缩文件 青色 —— 链接文件(相当于 Windows 快捷方式) 黄色 —— 设备文件 灰色 —— 其他文件 - Linux 下的文件类型:
普通文件类型 (-) Linux 中最多的一种文件类型,包括 纯文本文件 (ASCII);二进制文件 (binary);数据格式的文件 (data); 各种压缩文件。第一个属性为 [-] ,这些文件一般是用一些相关的应用程序创建,比如图像工具、文档工具、归档工具… … 或 cp 工具等。这类文件的删除方式是用 rm 命令。 目录文件 (d) 就是目录, 能用 # cd 命令进入的。第一个属性为 [d],例如 [drwxrwxrwx] ,创建目录的命令可以用 mkdir 命令,或 cp 命令,cp 可以把一个目录复制为另一个目录。删除用 rm 或 rmdir 命令。 块设备(b)和 字符设备(c) 这个种类的文件,是用 mknode 来创建,用 rm 来删除。目前在最新的 Linux 发行版本中,我们一般不用自己来创建设备文件。因为这些文件是和内核相关联的。 块设备文件 : 就是存储数据以供系统存取的接口设备,简单而言就是硬盘。例如一号硬盘的代码是 /dev/hda1 等文件。第一个属性为 [b] 字符设备文件:即串行端口的接口设备,例如键盘、鼠标等等。第一个属性为 [c] 套接字文件 (s) 这类文件通常用在网络数据连接。可以启动一个程序来监听客户端的要求,客户端就可以通过套接字来进行数据通信。第一个属性为 [s],最常在 /var/run 目录中看到这种文件类型 管道文件 (p) FIFO 也是一种特殊的文件类型,它主要的目的是,解决多个程序同时存取一个文件所造成的错误。FIFO 是 first-in-first-out (先进先出) 的缩写。第一个属性为 [p] 符号链接(l) 和 Windows 操作系统中的快捷方式类似。 引自 Linux 下的 7 种文件类型 - CYYZ 古月
ls -a
显示路径下全部文件(包括隐藏的)ls -l
查看路径下文件的详细信息
tip:在 Linux 下文件夹(目录)所占用的磁盘空间都是 4096byte,目录大小不包括目录内的文件大小
- 目录必须有执行权限才能进入
- Linux 下隐藏文件以。开头
- itcast@itcast:~第一个itcast:当前登陆的用户第二个itcast:主机名 第一个itcast:当前登陆的用户 第二个itcast:主机名 第一个itcast:当前登陆的用户第二个itcast:主机名:普通用户 $ 换成 #:超级用户(管理员权限)
- Linux 系统中硬盘名字:
硬盘1:sda
|--主分区
| └--(最多允许有4个)--主分区1:sda1
| |-主分区2:sda2
| |-主分区3:sda3
| └-主分区4:sda4
└--扩展分区
└--(第一个逻辑分区从sda5开始)--逻辑分区1:sda5
|-逻辑分区2:sda6
└...
硬盘2:sdb
硬盘3:sdc
硬盘4:sdd
磁盘设备种类:
sd -> SCSI Device
hd -> Hard Disk 硬盘
fd -> Floppy Disk 软盘
# Shell 常用命令
| 管道 - 将命令 1 的输出作为命令 2 的输入(命令 1 | 命令 2)
pwd
查看当前所在路径
~
:家目录
cd -
:在两个目录间切换
rm
参数:
r
—— 递归(进入子目录)
i
—— 提示
f
—— 强制删除(rm 命令默认会加上这个参数)
tip: rm -rf /
懂的都懂
mkdir
( -p
)/ touch
创建目录 / 文件
cat
查看文件内容
cp
拷贝文件或目录(拷贝目录时加 -r
)
tip: 拷贝文件时:软硬链接都拷贝原文件;
拷贝目录时:软链接拷贝过去还是软链接,硬链接拷贝原文件
more
一点一点的看某个文件,但是只能往下看,不能往上
less
一点一点的查看某个文件,比 more 更智能
head
/ tail
显示文件前 / 后十行(也可以加 -5
或者其他任意数字控制显示行数)
mv
移动(到一个已经存在的文件夹)或重命名
ln
创建硬链接
ln -s
创建软连接
tip:硬链接相当于新建文件名指向文件(给文件取个别名),软链接指向文件名
wc
获取文本文件的行数、单词数、字节数
od
查看二进制文件信息
参数: -t
指定数据的显示格式(c/d/f/o/u/x)
du -h
查看当前文件夹和子文件夹大小
df -h
查看磁盘容量信息
which
找到命令对应的路径
修改文件权限:chmod >folded
代码语言:javascript复制1) 文字设定法:
chmod [who] [ |-|=] [mode]
who: -> 不写也相当于对所有的人
文件所有者:u
文件所属组:g
其他人:o
所有的人:a
:添加权限
-:减少权限
=:覆盖原来的权限
mode:
r:读
w:写
x:执行
例:chmod o rx [文件名]
2) 数字设定法:
chmod [三位数] ->覆盖权限
chmod [ |-|=] [三位数] ->增加/减少/覆盖权限
没有权限:0
r:4
w:2
x:1
例:chmod 765 [文件名]
7 -- rwx -- 文件所有者
6 -- rw -- 文件所属组
5 -- rx -- 其他人
chown
改变文件所有者 [和所属组]
sudo chown user1[:group2] [文件名]
chgrp
改变所属组
tip:chown 和 chgrp 都需要管理员权限
find [目录] -name [文件名]
在指定目录下查找文件(文件名也可以使用通配符叠加 例如:* 和?)
find [目录] -size [ |-][文件大小]
找大于 / 小于
例:find [目录] -size 10K -size -10M 按大小范围查找
find [目录] -type [d|f|b|c|s|p|l]
按文件类型查找
grep -r "查找的内容" [查找的路径]
按文件内容查找
sudo apt-get install [名字]
在线安装软件
sudo apt-get remove [名字]
卸载软件
sudo apt-get update
更新软件列表
sudo apt-get clean
清理所有软件安装包(/var/cache/apt/archives/*.deb)
tip:也可用 aptitude 代替
sudo dpkg -i [deb包]
通过 deb 包安装软件
sudo dpkg -r [名字]
卸载软件
mount [U盘对应的设备名(/dev/...)] [要挂载的目录]
挂载 U 盘
umount [挂载U盘的目录]
卸载 U 盘
tip:卸载 U 盘时 U 盘不能被占用(包括 cd 到挂载 U 盘的目录下)
tip:当挂载 U 盘的目录中有文件时,挂载期间文件会被临时覆盖,待卸载 U 盘后恢复原状
alias
查看或设置别名
alias [shell命令]
查看别名
alias [封装的命令名]='shell语句'
(例:alias pag=‘ps aux | grep’)
(注意:需要长久有效需要去设置配置文件:.bashrc)
# 压缩包管理
# 基础工具
gzip [要压缩的文件]
—— .gz 格式的压缩包bzip2 [参数(-k)] [要压缩的文件]
—— .bz2 格式的压缩包
注意:
- gzip 和 bzip2 都只能对单个文件进行压缩,不能对目录进行压缩。
- gzip 和 bzip2 默认都不保留源文件,只有 bzip2 可以加 - k 参数保留源文件
# 进阶工具
tar
—— 不使用 z/j 参数,该命令只能对文件或目录打包
参数: c —— 创建 —— 压缩 x —— 释放 —— 解压缩 v —— 显示提示信息 —— 压缩 / 解压缩 —— 可以省略 f —— 指定压缩文件的名字 z —— 使用 gzip 的方式压缩文件 —— .gz j —— 使用 bzip2 的方式压缩文件 —— .bz2
压缩:
tar zcvf [生成的压缩包的名字(推荐xxx.tar.gz)] [要压缩的文件或目录]
tar jcvf [生成的压缩包的名字(推荐xxx.tar.bzip2)] [要压缩的文件或目录]
解压缩:
tar jxvf [压缩包的名字]
-> 解压到当前目录tar jxvf [压缩包的名字] -C [目录]
-> 解压到指定目录Tip:tar 命令主要做的是打包的功能,内部调用 gzip 和 bzip2 进行压缩操作
rar
—— 必须手动安装该软件(实测 Ubuntu-20.04.2.0 自带有)
参数: a —— 压缩 x —— 解压缩
压缩:
rar a [生成的压缩文件的名字(自动添加.rar后缀)] [要压缩的文件或目录]
解压缩:
rar x [压缩包文件名] [要解压到的目录(不写则默认当前目录)]
zip
参数: -r 压缩目录时需要加上
压缩:
zip [压缩包的名字] [要压缩的文件]
zip -r [压缩包的名字] [要压缩的文件或目录]
解压缩:
unzip [压缩包的名字]
unzip [压缩包的名字] -d [要解压到的目录]
总结:
压缩:tar/rar/zip [参数] [生成的压缩文件的敏子] [要压缩的文件或目录] 解压缩:tar/rar/unzip [参数] [压缩包的名字] [参数(rar 没有参数)] [要解压到的目录]
# 进程管理
# 相关命令
who
查看当前在线用户的情况(登录的用户名、使用的设备终端、登陆到系统的时间)
关于 tty 设备:(这个没搞太清楚,仅做参考) tty3 - tty6 表示文字界面(文字终端) - Ctrl Alt F3~F6 tty2 (?) 或:0 表示图形界面 - Ctrl Alt F2 Ctrl Alt F2~F6 切换终端 Ctrl Alt F1 切换到用户登录界面(类似 Windows 下的锁定)
-
ps a
列出当前所有用户的进程信息ps au
在上面的基础上再加上 USER、CPU、MEM、VSZ、RSS 的信息ps aux
在上面的基础上再加上没有终端的应用信息(没有 TTY 信息的)ps aux | grep [要查找的内容]
按要查找的内容过滤进程(注:此命令会把自己也找出来) -
kill
杀死进程kill -l
查看 kill 命令可以发出的信号kill -SIGKILL(-9) [进程PID]
发送 SIGKILL 信号杀死进程 -
env
查看系统环境变量env | grep [要查找的值]
按内容过滤环境变量 -
top
类似 Windows 下的任务管理器,但只能看而不能进行任何操作
# 网络相关
# 常用命令
ifconfig
查看网络配置信息(相当于 CMD 的 ipconfig)
eth0 - 第一块网卡(第二块 eth1…) 硬件地址(MAC 地址)
-
ping
同 CMD 的 ping,但是会一直运行直到用户手动结束ping -c [次数]
指定 ping 的次数ping -i [秒数]
指定每过多少秒给一条回复 -
nslookup [域名]
查看网站对应的 IP 地址
# 用户管理
# 相关命令
- 创建用户:
sudo adduser [用户名(只能小写英文字母)]
sudo useradd -s [使用的bash目录(/bin/bash)] -g [所属的组] -d [指定用户的家目录(/home/xxx)] -m(没有这个目录的话就创建) [用户名]
(注:通过这条命令创建的用户没有密码,需要再设置 - sudo passwd [用户名]) - 删除用户:
sudo deluser [用户名]
(注:这样删除后用户对应的家目录不会被删除)sudo userdel -r [用户名]
(注:这样会把用户对应的家目录一起删除) - 查看现有用户:
vi /etc/passwd
(/etc/passwd 里存放的是所有用户的信息)
# ftp 服务器搭建 – vsftpd
ftp 服务器作用:实现文件的上传和下载
# 服务器端
(ftp 服务器在本机环境中启动服务失败,原因暂不明,以下仅供参考)
- 修改配置文件(/etc/vsftpd.conf)
sudo gedit /etc/vsftpd.conf
或sudo vi /etc/vsftpd.conf
打开配置文件 (注意:更改时不要随意修改配置文件书写格式) - 重启服务
sudo service vsftpd restart
# 客户端
(仅供参考)
- 登录
ftp [服务器IP]
实名登录:用户名 密码 匿名登录:anonymous 直接回车 - 文件的上传和下载
put file
get file
(注意:不允许操作目录,可以对目录打包后操作)
# nfs 网络共享服务器
类似 Windows 下的共享文件夹
# 服务器端
- 创建共享目录
mkdir [dir]
- 修改配置文件(/etc/exports)
[共享目录路径] [允许访问的IP网段(*代表所有)]([参数1],[参数2],...)
参数可用:rw —— 可读可写,sync —— 从内存同步到磁盘 - 重启服务
sudo service nfs-kernel-server restart
# 客户端
- 挂载共享目录
sudo mount [服务器IP:共享目录路径] /mnt
# ssh 服务器
(需要先安装 openssh-server)
# 基本命令
查看 SSH 是否安装: sudo aptitude show openssh-server
远程登录: ssh [用户名]@[IP]
退出登陆: logout
# scp 命令(super copy)
scp -r [用户名]@[IP]:[目标文件绝对路径] [保存到的本机路径(绝对或相对)]
拷贝目录时须加 -r
参数
未完待续…
参考文章: linux 全套教程【黑马】