Linux 常用指令学习整理

Linux 常用指令学习整理目录

    • 文件相关
            • `cd`
            • `ls`
            • `tree`
            • `mkdir`
            • `cp`
            • `mv`
            • `rm`
            • `cat`
            • `more`
            • `grep`
            • `echo`
            • `>` 和 `>>`
            • `|`
            • `tar`
            • `文件详情`
    • 管理相关
            • `shutdown`
            • `ifconfig`
            • `ping`
            • `ssh`
            • `ssh-copy-id`
            • 配置服务器别名
            • `scp`
    • `用户` 和 `组`
            • 超级用户
            • 组管理
            • 用户管理
    • 软件管理
            • `yum` 和 `apt-get`
    • `命令行` 相关
    • 其他

文件相关

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

用户

超级用户
  • 日常使用不登录root账号,需要管理员权限的时候指令前加sudo
  • 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 文件/目录

软件管理

yumapt-get
  • 一般来说著名的 Linux 系统基本上分两大类:

    1. RedHat 系列:Redhat、Centos、Fedora等
    2. Debian 系列:Debian、Ubuntu等
  • RedHat 系列

    1. 常见的安装包格式 rpm 包,安装 rpm 包的命令是 rpm -参数
    2. 包管理工具 yum
    3. 支持 tar
  • Debian 系列

    1. 常见的安装包格式 deb 包,安装 deb 包的命令是 dpkg -参数
    2. 包管理工具 apt-get
    3. 支持 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

你可能感兴趣的:(Linux,Linux,指令,centos)