cd
# - 在最近两次工作目录之间来回切换
cd -
ls
# -l 以列表方式显示文件的详细信息
ls -l
# -h 显示的文件大小带单位,需要配合 -l ,可简写成 ls -lh
ls -l -h
# 带通配符筛选显示文件信息
# 通配符(部分系统第一个不能是通配符)
# * 代表任意个任意字符
# ? 代表一个任意字符
# [abc] 匹配abc中的任一个
# [a-f] 匹配a到f范围内的任一个字符
ls 0*ch
tree
# 树状图列出文件目录的结构
tree
# 只显示目录的树状结构
tree -d
mkdir
# -p 递归创建目录文件夹
mkdir -p a/aa/aaa
cp
# 复制文件或目录(复制源文件目录下的文件)
cp 源文件 目标文件
# -i 覆盖文件前提示
cp -i 源文件 目标文件
# 递归复制该目录下的所有子目录和文件
cp -r 源文件 目标文件
mv
# 移动文件或者重命名
mv 源文件 目标文件
# 覆盖文件前提示
mv -i 源文件 目标文件
rm
# -f 强制删除,不带提示
rm -f 1.txt
# -r 递归删除目录下的内容,删除目录必带
rm -r Document/
# 常用的删除参数
rm -rf Document/
# centOS 删除当前整个目录的内容
rm -rf *
cat
# 查看文件内容
# 一次性显示完,适合内容少的文件
cat 文件路径
# 对输出的所有行编号
cat -n 文件路径
# 对非空输出行编号
cat -b 文件路径
more
# 查看文件内容
# 分屏显示文件内容,适合内容多的文件
# 查看快捷键
# 空格 显示下一屏
# enter 显示下一行
# b 回滚一屏
# f 前滚一屏
# q 退出
more 文件路径
grep
# 文本搜索工具,搜索文本或输出内匹配的内容
grep 匹配词(有空格加引号) [文件路径]
# 搜索模式查找 ^首 $尾
grep ^ab$ 123.txt
# 显示匹配行及行号
grep -n 匹配词
# 显示不包含匹配文本的所有行(相当于求反)
grep -v 匹配词
# 忽略大小写
grep -i 匹配词
echo
# 在终端中显示参数指定的文字,通常会和重定向联合使用
echo 参数
>
和 >>
# 将本应显示在终端上的内容 输出/追加 到 指定文件中
# > 表示输出
# 创建文件带内容
echo hello > a.txt
ls -lh > a.txt
# >> 表示追加
|
# 将一个命令的输出通过管道作为另一个命令的输入
# 常用的管道命令 more 和 grep
ls -lha ~ | more
ls -lha ~ | grep Do
tar
# 打包和解包
# Mac 中常用 zip ,Windows 常用 rar ,Linux 常用 tar.gz
# c:生成档案文件,创建打包文件
# x:解开档案文件
# v:列出归档解档的详细进程,显示进度
# f:指定档案文件名称,f 后面一定是 .tar 文件,必须放最后
# 打包文件
tar -cvf 打包文件.tar 被打包的文件/路径(可以是多个)...
# 解包文件
tar -xvf 打包文件.tar
# tar 只负责打包,不负责压缩
# 用 gzip 压缩 tar 打包后的文件,其扩展名一般用 xxx.tar.gz
# Linux 常见的压缩文件格式是 xxx.tar.gz
# 在 tar 命令中有一个选项 -z 可以调用 gzip ,从而方便实现压缩和解压缩的功能
# 压缩文件
tar -zcvf 打包文件.tar.gz 被打包的文件/路径(可以是多个)...
# 解压缩文件
tar -zxvf 打包文件.tar.gz
# 解压缩到指定路径
# -C 可以指定解压缩的目标路径,目标必须存在
tar -zxvf 打包文件.tar.gz -C 目标路径
# bzip2(two)
# tar 和 bzip2 结合可以实现文件打包和压缩(用法和 gzip 类似)
# 用 bzip2 压缩 tar 打包后的文件,扩展名一般用 xxx.tar.bz2
# 在 tar 命令中有一个选项 -j 可以调用 bzip2 ,从而方便实现压缩和解压缩的功能
# 压缩文件
tar -jcvf 打包文件.tar.gz 被打包的文件/路径(可以是多个)...
# 解压缩文件
tar -jxvf 打包文件.tar.gz
文件详情
ls -l 查看目录下文件的详细信息,对文件和目录的权限,从左到右依次是
d
的话代表目录r
代号 4
w
代号 2
x
代号 1
(也有 s
代表可执行的,可执行文件颜色不一样,可以用 ./文件
执行)目录 | 拥有者权限 | 组权限 | 其他用户权限 |
---|---|---|---|
- | r w - | r w - | r - - |
d | r w x | r w x | r - x |
cd
进cd .
cd ..
(每个子目录都算一种)ln
不加 -s
建立的硬链接拥有者:家目录下的文件/目录的拥有者通常是当前用户
组
shutdown
# 关机/重启
# 不指定选项和参数,默认表示1分钟之后关闭电脑
# 远程维护服务器时,最好不要关闭系统,而应该重新启动系统
# 马上关机
shutdown now
# 重新启动
shutdown -r
# 取消关机
shutdown -c
# 晚上20:25关机
shutdown 20:25
# 十分钟后自动关机
shutdown +10
# 立刻重启
shutdown -r now
ifconfig
# 查看或配置网卡信息
ifconfig
# 常用
ifconfig | grep inet
ping
# 检测到目标 ip 地址的连接是否正常
ping ip地址
ssh
# 远程登录
ssh [-p port] user@remote
# user 是远程机器上的用户名,如果不指定的话默认为当前用户
# remote 是远程机器的地址,可以是 ip/域名/别名
# port 是 SSH server 监听的端口,如果不指定,就是默认 22
# 修改端口 vi /etc/ssh/sshd_config
# 登录成功后输入 exit 可以退出当前用户的登录
# Windows 系统安装 Putty 或者 XShell 才可以用 ssh
ssh-copy-id
ssh
免密登录操作ssh-keygen
生成 ssh
钥匙ssh-copy-id -p port user@remote
ssh aliasName
代替 ssh 用户名@ip
)~/.ssh/config
追加以下内容Host aliasName
HostName xxx.xxx.xxx.xxx
User ubuntu
Port 22
ssh aliasName
实现远程登录aliasName
等价 [email protected]ssh aliasName
scp
# 远程复制文件
scp 用户名@ip:文件名或路径(源) 用户名@ip:文件名或路径(目标)
# 本地到远程复制文件
scp -P port 01.py user@remote:Desktop/01.py
# 远程到本地复制文件
scp -P port user@remote:Desktop/01.py 01.py
# 本地到远程复制目录
scp -r demo user@remote:Desktop
# 远程到本地复制目录
scp -r user@remote:Desktop/demo
# Windows 中使用 FTP 和 Linux 进行文件传输,软件的名字叫 FileZilla,端口 21
用户
和 组
sudo -i
频繁执行超级用户才能执行的权限,不用每次输入密码# 添加组
groupadd 组名
# 删除组
groupdel 组名
# 确认组信息
cat /etc/group
cat /etc/group | grep zhangsan
# 输出 root:x:0:zhangsan
# 3个:分了4组信息
# 1. 用户组名
# 2. 密码,x 代表加密的密码
# 3. GID (组标识)
# 4. 当前组下的用户(实测 centOS 下同名或 root 用户不显示在后面)
# 修改文件/目录所属组
chgrp -R 组名 文件/目录名
# 将目录 Document 修改到 dev 组下
chgrp -R dev Document
# 添加新用户(-m 自动建立用户家目录,-g 指定用户的所在的组,否则创建一个同名组)
useradd -m -g 组 新建用户名
# 设置用户密码(实际上执行的是 /usr/bin/passwd)
passwd 用户名
# 删除用户(-r 会自动删除用户家目录)
userdel -r 用户名
# 确认用户信息
cat /etc/passwd | grep 用户名
cat /etc/passwd | grep lisi
# 输出 lisi:x:1001:1000::/home/lisi:/bin/bash
# 6个:分了7组信息
# 1. 用户名
# 2. 密码,x代表加密的密码
# 3. UID (用户标识)
# 4. GID (主组标识)
# 5. 用户全名活本地账号,如果::中间是空的,代表用户全名是空的,用用户名代替
# 6. 用户的家目录
# 7. 登录使用的 shell ,就是登录之后,使用的终端命令,centOS 默认是 bash
# 快速编辑用户密码文件
vipw
# 查看用户 UID 和 GID 信息
id [用户名]
# 查看当前所有登录的用户列表
who
# 查看当前登录用户的账户名
whoami
# 修改用户的主组
# 主组:通常在新建用户的时候指定,在 /etc/passwd 的第4列 GID 对应的组
usermod -g 组 用户名
# 修改用户的附加组
# 附加组:在 /etc/group 中最后一列表示改组用户列表,用于指定用户的附加权限
# 设置完用户的附加组后,要重新登录才生效
usermod -G 组 用户名
# 修改用户登录 shell
usermod -s /bin/bash
# 默认用 useradd 添加的用户是没有权限使用 sudo 以 root 身份执行命令的,可以使用 "usermod -G sudo 用户名" 将用户添加到 sudo 附加组中
# 切换用户命令,并且切换目录
su - 用户名
# su 不接 - ,只切换用户名,不切换家目录
# su 不接用户名,可以切换到 root ,但不推荐使用,因为不安全
# 修改文件/目录的拥有者
chown 用户名 文件/目录
# 递归修改文件/目录的组
chgrp -R 组名 文件/目录
# 递归修改文件权限
# chmod 在设置权限时,可以使用简单的是三个数字分别对应拥有者/组/其他用户的权限(rwx,421)
chmod -R 755 文件/目录
# 直接修改文件/目录的读/写/执行的权限,但不能精确到拥有者/组/其他用户的权限
chmod +/-rwx 文件/目录
yum
和 apt-get
一般来说著名的 Linux
系统基本上分两大类:
RedHat
系列:Redhat、Centos、Fedora等Debian
系列:Debian、Ubuntu等RedHat
系列
rpm
包,安装 rpm
包的命令是 rpm -参数
yum
tar
包Debian
系列
deb
包,安装 deb
包的命令是 dpkg -参数
apt-get
tar
包# 安装软件(apt)
sudo apt install 软件包
# 安装小火车
sudo apt install sl
# 卸载软件
sudo apt remove 软件名
# 更新已安装的包
sudo apt upgrade
# 安装软件(yum)
# 首先先安装一个企业版 Linux 附加软件包(EPEL)
yum -y install epel-release
# 然后就正常安装
yum -y install sl
# 如果使用 yum install xxxx ,会找到安装包之后,询问你 Is this OK[y/d/N] ,需要你手动进行选择。
# 但是如果加上参数 -y ,就会自动选择 y ,不需要你再手动选择!
命令行
相关alt + ←/→
光标向左/有移动 一个词
ctrl + w
删除光标前面的 一个词
ctrl + u
删除光标前面的 所有词
ctrl + k
删除光标后面的 所有词
ctrl + a
回到命令行行首ctrl + e
回到命令行行尾ctrl + l
清屏# command --help 展示命令行帮助
ls --help
# man command 分屏展示命令行帮助
# 查看快捷键
# 空格 显示下一屏
# enter 显示下一行
# b 回滚一屏
# f 前滚一屏
# q 退出
man ls
# which 查看执行命令所在的位置
which ls
# 查看系统时间
date
# 查看日历
cal
# 查看一年的日历
cal -y
# 显示磁盘剩余空间(disk free)
df -h
# 显示目录下的文件大小(disk usage)
du -h [目录名]
# 查看进程的详细状况(process status)
# a:显示终端上所有的进程,包括其他用户的进程
# u:显示进程的详细状态
# x:显示没有控制终端的进程(不是通过终端启动的进程)
ps aux
# 动态显示运行中的进程并且排序
# 按 q 退出
top
# 终止指定代号的进程,-9 表示强行终止
kill [-9] 进程代号
# 查找文件
# 查找指定路径下扩展名是 .py 的文件,包括子目录
# 如果省略路径,表示在当前目录下查找
# 通配符同之前的规则一样,注意引号
find [路径] -name "*.py"
# 显示 Linux 系统架构
uname -a
# tee 将标准输入复制到每个指定文件,并显示到标准输出。
ping baidu.com | tee -a ping-baidu.log
# 2>&1 将标准错误重定向到标准输出
ls xxx >out.txt 2>&1
# 相当于
ls xxx 1>out.txt 2>&1
# 重定向符号 > 默认是 1 ,错误和输出都传到 out.txt 了。
# 显示操作系统架构类型
# x86_64 表示为 64 位系统,i686 或 i386 则表示为 32 位系统
arch
# 软链接
# 建立文件的软链接,类似于 windows 下的快捷方式
# 没有 -s 选项建立的是一个硬链接文件,两个文件占用相同大小的磁盘空间,工作中几乎不会建立这样的硬链接
# 源文件要用绝对路径,不能使用相对路径,这样方便以后移动链接文件后还能正常使用
# 在 Linux 中,文件名和文件的数据是分开存储的
# 软链接:软链接文件名 → 软链接文件数据 → 文件名 → 文件数据
# 硬链接:文件名 → 文件数据 和 硬链接 → 文件数据
# 在 Linux 中只有文件的 硬链接数==0 才会被删除,日常不使用硬链接
ln -s 被链接的源文件 链接文件
# 循环执行一个指令
while true; do sl; done
# 设置环境变量需要注意终端的类型,可以先通过以下方式获取:
# 执行命令
echo $SHELL
# 根据结果判断:
# /bin/zsh => zsh => .zprofile
# /bin/bash => bash => .bash_profile