Linux 指令学习全攻略

在 Linux 系统中,大量操作需借助指令完成。尤其是职场中服务器维护、后端开发场景,掌握常用 Linux 指令极为关键。本文全面梳理常用指令,助力快速上手。

Linux 指令基础格式

Linux指令遵循“命令名 选项 参数”格式。如`ls -l /home`,`ls`是命令名,用于列出目录内容;`-l`是选项,以列表形式展示详细信息;`/home`是参数,指定操作对象。

文件及目录操作

linux下,我们是看不到硬件盘符的,我们只能看到文件夹(目录)

目录速查表

 / :根目录,Ubuntu只有一个根目录,所有文件都在它下面

 /home/user :用户工作目录或者家目录。

 /bin、/usr/bin :可执行二进制文件的目录

 /boot :放置 linux 系统启动时用到的一些文件,如 linux 的内核文件:/boot/vmlinuz;系统引导管理器:/boot/grub

 /dev :存放linux系统下的设备文件,访问该目录下某个文件,相当于访问某个设备,常用的是挂载光驱mount /dev/cdrom /mnt

 /etc :系统配置文件存放的目录,不建议在此目录下存放可执行文件,重要的配置文件有

 /home :系统默认的用户家目录,新增用户账号

  • ~ 表示当前用户的家目录
  • ~edu 表示用户 edu 的家目录

 /root :系统管理员root的家目录

 /tmp :一般用户或正在执行的程序临时存放文件的目录,任何人都可以访问,重要数据不可放置在此目录下

 /srv :服务启动之后需要访问的数据目录,如 www 服务需要访问的网页数据存放在 /srv/www 内

 /usr :应用程序存放目录

  • /usr/bin:存放应用程序
  • /usr/share:存放共享数据
  • /usr/lib:存放不能直接运行的,却是许多程序运行所必需的一些函数库文件
  • /usr/local:存放软件升级包
  • /usr/share/doc:系统说明文件存放目录
  • /usr/share/man:程序说明文件存放目录

 /var :放置系统执行过程中经常变化的文件

  • /var/log:随时更改的日志文件
  • /var/spool/mail:邮件存放的目录
  • /var/run:程序或服务启动后,其 PID 存放在该目录下

小技巧

  • ctrl + shift + = 放大终端窗口的字体显示
  • ctrl + - 缩小终端窗口的字体显示
  • 自动补全:在敲出 文件/目录/命令 的前几个字母之后,按下tab键,如果输入的没有歧义,系统会自动补全
  • 按 上 / 下 光标键可以在曾经使用过的命令之间来回切换
  • 如果想退出,并且不想执行当前选中的命令,可以按 ctrl+ c

目录操作

指令功能示例
pwd 查看当前目录路径 pwd,输出如/home/user
ls 查看目录内容

ls显示当前目录文件和文件夹;

ls -l以列表显示详细信息;

ls -a显示全部文件(含隐藏文件);

ls -t按修改时间排序;

ls -lh人性化显示文件大小

cd 切换目录

cd /home切换到/home目录;

cdcd ~回到当前用户主目录;

cd.留在当前目录;

cd..进入上级目录;

cd - 返回上一次所在目录

mkdir 创建目录

mkdir new_dir创建new_dir目录;

mkdir -p parent/child可同时创建父目录和子目录

文件操作

指令功能示例
touch 创建空文件 touch new_file.txt创建文件
echo 写入文件内容

echo "Hello" > file.txt覆盖写入;

echo "World" >> file.txt追加写入

cat 查看文件内容 cat file.txt显示文件全部内容
grep 搜索文件内容 grep "error" log.txt查找log.txt中含“error”的行
tree 树状展示目录结构 tree /home/user展示指定目录结构
head 查看文件前几行 head -n 5 file.txt查看前5行
tail 查看文件后几行 tail -n 3 file.txt查看最后3行
find 查找文件或目录

find / -name "*.txt" -type f在根目录找txt文件;

find / -name "dir_name" -type d找指定目录

cp

复制文件或目录

 cp [选项] [原文件|目录] [新文件|目录] 

 

  • -r:遍历文件
  • -n:跳过已存在文件

 

mv

移动文件或目录

  mv 原文件路径 新文件路径 

mv file.txt /new_path/移动文件;

mv dir/* /new_dir/移动文件夹下所有文件

rm

删除文件或目录

 rm [选项] 文件名|目录名  

  • -f 强制删除(慎用!)
  • -i 互动模式,在删除前询问
  • -r 递归删除目录下的内容,删除文件夹时必须的加此参数
diff 比较文件夹差异 diff -r dir1/ dir2/比较两个文件夹
rsync

比较并同步文件夹

 rsync [选项] 目录1 目录2 

  • -n选项表示模拟比较
  • -r表示递归比较
  • -c表示根据文件内容比较
  • -v表示详细输出
  • --size-only 仅比较文件大小

权限管理

权限参数

Linux文件有读(r)、写(w)、执行(x)权限,分别用4、2、1表示,无权限用0表示。权限组合用累加值表示,如`rwx`对应7(4 + 2 + 1),`rw-`对应6(4 + 2 + 0) 。

权限操作指令

指令功能示例
chmod

修改文件或目录权限

 chmod {权限值} {文件/目录名} 

chmod 755 file.txt修改文件权限;

chmod -R 777 dir/递归修改目录权限

chown

更改文件所有者

 chown 新用户名 文件名 

chown new_user file.txt将文件所有者改为new_user

进程管理

指令功能示例
ps -u -p PID 查询服务器进程所属用户 ps -u -p 1234查看PID为1234的进程所属用户
pkill -u username 杀死指定用户所有进程 pkill -u user_name杀死user_name用户的所有进程
pkill -f 进程名 通过进程名杀死进程 pkill -f "process_name"杀死含指定进程名的进程

通配符

  • *:代表任意个数字符
  • ?:代表任意一个字符,至少1个
  • []:表示可以匹配字符组中的任意一个
  • [abc]:匹配a、b、c中的任意一个
  • [a-f]:匹配从a到f范围内的任意一个字符

linux的通配符和正则表达式有很多相似点,可以参考我写正则表达式的这篇文章

查看磁盘空间

指令功能示例
df 查看文件系统磁盘分区信息 df查看基本信息;df -hl查看磁盘剩余空间;df -h查看各根路径分区大小
du

查看目录或文件占用磁盘空间

 du -* [目录名] 

  • -s :只给出占用的数据总数。
  • -h :以K,M,G为单位,提高信息的可读性。
  • -a :递归地显示指定目录中各文件及子目录中各文件占用的数据块数。若既不指定-s,也不指定-a,则只显示Names中的每一个目录及其中的各子目录所占的磁盘块数。
  • -b :以字节为单位列出磁盘空间使用情况(系统默认以k字节为单位)。
  • -k :以1024字节为单位列出磁盘空间使用情况。
  • -c :最后再加上一个总计(系统默认设置)。
  • -l :计算所有的文件大小,对硬链接文件,则计算多次。
  • -x :跳过在不同文件系统上的目录不予统计。

压缩与解压

  windows常用rar,Mac常用zip;Linux常用tar.gz,tar后缀名表示进行了打包,gz后缀名表示进行了压缩,加后缀名是为了清晰、易于理解,而不是必须的。

tar格式

参数:

  • c 创建打包文件
  • x 解开打包文件
  • v 列出详细过程,显示进度
  • f 执行打包的文件名称,f后面一定是.tar文件,所以必须放在选项后面
  • z 使用gzip方式压缩

压缩

压缩为.tar文件

tar -cvf archive.tar folder_name

压缩为.tar.gz文件(gzip压缩)注重压缩速度

tar -czvf archive.tar.gz folder_name

压缩为.tar.bz2文件(bzip2压缩)注重压缩率

tar -cjvf archive.tar.bz2 folder_name

tar与gzip命令结合可以实现文件 打包和压缩

  • tar只负责打包文件,但不压缩
  • 用gzip压缩tar打包后的文件,其扩展名一般用 xxx.tar.gz

解压

tar -xvf archive.tar
tar -xzvf archive.tar.gz
tar -xjvf archive.tar.bz2

 tar -zxvf xxx.tar.gz -C 解压到指定的文件位置 :解压xxx.tar.gz到指定位置,注意:要解压缩的目录必须存在

 tar -xvf xxx.tar -C 解压到指定的文件位置 :解压xxx.tar到指定位置,注意:要解压缩的目录必须存在

依次把当前文件夹的tar解压

for f in *.tar; do mkdir -p "${f%.tar}"; tar -xf "$f" -C "${f%.tar}"; done

zip格式

压缩

zip -r archive.zip folder_name

 zip -dv test.zip file1 :从压缩文件 test.zip 中删除文件 file1 

解压

 unzip dataset.zip :将 dataset.zip 解压到当前文件夹   

 unzip -o dataset.zip -d dataset/ :将dataset.zip解压到dataset文件夹,如果已有相同的文件存在,要求unzip命令覆盖原先的文件 


 依次把当前文件夹的子文件夹一一压缩成zip

for i in */; do zip -r "${i%/}.zip" "$i"; done

依次把当前文件夹的zip解压

for zip_file in *.zip; do unzip "$zip_file"; done

网络操作

 ifconfig :查看/配置计算机当前的网卡配置信息

 ping ip地址 :检查目标 ip地址 的连接是否正常,数值越大,速度越慢

 ssh 用户名@ip :远程登录

 hostname -I : 主机所有的地址

服务器传输文件

1、拷贝本机目录至远程主机192.168.100.1的/root目录下 

scp -r /home/wtf/test/ root@192.168.100.1:/root/

2、拷贝单个文件至远程主机

scp /home/wtf/test/wtf.txt root@192.168.100.1:/root/

3、如果小文件多,总体积大,可以先压缩再传输

tar czf - /source/path | ssh user@remote "tar xzf - -C /destination/path"

4、rsync在处理大量小文件时通常比scp更高效,却具有更强大的同步功能,能够减少不必要的重复传输。

rsync -avz --progress never@remote:/data/never/Dataset/kws_data/ /data/never/Dataset/kws_data/
  • -a:归档模式,表示递归复制目录,并保留符号链接、文件权限、时间戳、用户和组信息等
  • -v:详细模式,输出同步的文件信息
  • -z:在传输过程中压缩数据,提高传输效率
  • -c:强制校验和来比较文件,计算文件的哈希值并根据哈希值判断文件是否需要传输。这个方法更精确,相对较慢,因为需要读取每个文件的内容。
  • --progress:显示同步进度,包括已传输的大小、速度和预计完成时间
  • --ignore-existing:忽略已经存在的文件
  • --size-only:只比较文件大小(忽略时间戳的差异)
  • --exclude='*.pth':忽略.pth后缀的文件
  • --whole-file:建议全量传大目录时,用 --whole-file 禁用增量分块算法(本地/同局域网时有用)

关机

命令格式: shutdown 选项 时间 

 shutdown now :现在就关闭电脑

 shutdown 20:10 :时间20:10分关闭电脑

 shotdown -r +10 :十分钟后重启电脑

 shotdown -c :取消之前指定的关机计划

 shutdown :不设置选项和参数:默认1分钟后 关闭电脑

 sudo reboot :重启电脑

创建用户

创建新用户:  sudo adduser 用户名 

删除用户: sudo deluser 用户名 

删除用户及其主目录: sudo deluser --remove-home 用户名 

检查用户是否存在: id 用户名 

将用户添加为管理员: sudo usermod -aG sudo 用户名 

  • 验证用户是否拥有管理员权限(登陆用户账号后)  sudo whoami

免密登陆

1、在本地机器生成 SSH key(如果没有): ssh-keygen -t rsa -b 4096 

直接一路回车(默认保存到 ~/.ssh/id_rsa)。
如果你已经有 ~/.ssh/id_rsa 和 ~/.ssh/id_rsa.pub,可以跳过这步。

2、把公钥传到远程服务器

把本地的公钥发送到目标机器(172.x.xx.xx): ssh-copy-id never@172.xx.xx.xx 

然后输入一次密码进行安装。

3. 测试免密  ssh never@172.xx.xx.xx 

 

如果能直接登录而不输入密码,说明配置成功。

window平台安装ubuntu子系统

1、安装Ubuntu子系统,具体的操作步骤可以参考Win10安装Ubuntu子系统超详细攻略这篇知乎文章,步骤一步一步的进行下去就OK了。

2、在文件夹中,我们可以通过shift + 鼠标右键,快速打开 linux shell,即wsl。

  微软为我们提供了一个默认的变量可以直接指向WSL的目录 wsl$ , 你可以在运行(win+R)或资源管理器的路径里直接输入 \\wsl$ 进入Ubuntu的目录,

知道WSL的网络路径后你可以直接将它添加到资源管理器的网络位置里

参考

Linux命令大全

【菜鸟教程】Linux 查看磁盘空间

【CSDN】将 Windows10 中的 WSL 添加至右键菜单

【博客园】windows10 ubuntu子系统 WSL文件位置

【博客园】linux如何复制文件夹和移动文件夹

【CSDN】ubuntu查看已安装所有软件包

【CSDN】Ubuntu下如何查看已安装软件版本

【CSDN】如何安全的从ubuntu16.04升级到18.04?

【谷歌搜索】apt-get dist-upgrade能将ubuntu16.04升级到18.04吗

【CSDN】如何在Ubuntu中用apt命令删除/卸载软件包(remove/clean/purge)

 
posted @ 2019-07-14 17:19  凌逆战  阅读(1062)  评论(0)    收藏  举报