linux基础

194 阅读15分钟

1. linux简介

  • linux是一种多用户多任务多层次,应用于服务器领域的操作系统
  • 常见的有Debian系列的乌班图、红帽公司的centos
  • 在Linux系统中,shell是命令行解释器,即用户输入命令,然后shell解释这些命令,根据不同的命令,给用户返回不同的结果

2. linux根目录介绍

目录功能其他
bin主要存放linux命令和工具
etc存放linux的配置文件,如账号、密码、分组数据等
usr安装程序的目录
bootlinux入口文件
home用户目录
root超管用户目录
proc系统状态文件
var存放变化过程文件
lost-round回收站
mnt外部设备挂载目录
opt第三方软件安装目录
lib静态链接库
dev设备文件

3. 基础指令

指令功能其他
cd ../跳转上一层
cd ./跳转当前层
cd /跳转根目录
cd ~跳转家目录每创建一个用户就会创建一个家目录,在/home/里面,用户一进来默认的目录就是家目录
cd -跳转上一次的目录
pwd查看当前目录
sodu su获取root权限要输入超管的密码
exit退出超管权限
init 0关机
init 6重启
clear清屏ctrl+l 快捷键也是清屏
history查看历史命令上下翻页可以回显历史命令
!历史命令编号执行指定的历史命令history指令可以看到历史指令编号
"|""|" 为管道运算符,可以将一个命令的输出作为另一个命令的输入用多个指令依次执行可以达到更理想的效果

3.1 硬链接、软链接(符号链接)

指令功能其他
ln 1.txt 1硬链接.txt创建硬链接Linux 采用索引节点 inode 记录文件信息,每个文件或目录都唯 一地对应 inode 数组中的一个元素。但一个元素可以与多个文件 或目录名对应。文件名与索引节点号的对应称之为连接。可在不同目录通过不同路径访问同一个文件,节省磁盘空 间又便于数据一致性;有一定防止误删除功能,只有同一 个 inode 属于唯一一个连接时,数据才被物理删除,不能链接目录,不能跨越不同文件系统(如分区、驱动器)
ln -s 1.txt 1软链接.txt创建软链接前者的文件数据是指向 后者的路径。即便在源文件不存在的情况下也可建立符号连接,删除被指向的文件,连接文件看似失效,再次写入数据,本文件会被重新创建并且把数据写进去。

4. 常用快捷键

指令功能其他
ctrl+alt+t打开终端窗口
ctrl+shift+w关闭终端窗口
ctrl+d关闭终端窗口
ctrl+shift+t在同一个窗口增加终端tab
ctrl+shift+加号等比例放大终端窗口
ctrl+减号等比例缩小终端窗口

5. 文件、文件夹增删改查指令

5.1 新增

指令功能其他
touch 1.txt创建文件1.txt
mkdir demo创建demo文件夹
cp 1.txt ./2.txt复制1.txt到当前目录并命名为2.txt
cat >3.txt编辑3.txt并写入内容(编辑完内容后ctrl+c退出),没有3.txt的情况下会创建3.txt
cat >>3.txt编辑3.txt并追加内容(编辑完内容后ctrl+c退出),没有3.txt的情况下会创建3.txt
mv ./demo/4.txt ./移动demo目录下的4.txt到当前目录

5.2 删除

指令功能其他
rm -rf 1.txt删除1.txt文件-r递归删除、-f强制删除不提示、-i提示删除、-v删除后显示已删除xxx文件
rmdir删除空文件夹
rm -rfv demo递归删除demo文件夹并展示删除信息

5.3 修改

指令功能其他
cat > 3.txt覆盖修改3.txt里面的内容> 将标准输出重定向到文件。如果文件已存在,则覆盖它;如果文件不存在,则创建它
cat 1.txt 2.txt > 3.txt将1.txt和2.txt合并并且覆盖掉3.txt的内容-n 显示行号、-s 将连续多行的空格合并为一行
cat >> 3.txt在3.txt内容的最后面增加内容>> 将标准输出追加到文件末尾。如果文件不存在,则创建它。
cat 1.txt 2.txt >> 3.txt将1.txt和2.txt合并并且追加到3.txt内容的最后面
touch 3.txt在3.txt存在的情况下,会修改3.txt的最后更新时间

5.4 查看指令

指令功能其他
cat 1.txt查看1.txt的内容
head 1.txt -15查看1.txt的前15行内容-数字 代表展示的行数
tail 1.txt -15查看1.txt的最后15行内容-数字 代表展示的行数
ls -aliR以列表加递归加显示索引查看当前文件夹下所有的目录和文件-all 列出所有文件、-l 以列表展示、-R 递归展示、-i 显示索引、-F 在文件名后添加表示文件类型的字符
ls查看当前目录下的所有内容linux终端下,白色普通内容、浅蓝色链接、蓝色文件夹、红色压缩文件或者失效的链接文件,绿色可执行文件
dir查看当前文件夹下的内容
vdir查看当前文件夹下的详细内容
ll最常用的查看当前文件夹下详细信息等同于ls -alF
alias查看有简写的指令
pwd查看当前目录
more 1.txt分页查看文件内容空格键:下翻一屏,b: 前翻一屏,回车键:下翻一行,q: 退出
less 1.txt分页查看文件内容空格键:下翻一屏,b: 前翻一屏,回车键:下翻一行,q: 退出

5.5 通配符

指令功能其他
ls *.txt查询所有的.txt文件*号匹配所有
ls ?.txt查询名字为一个字符的.txt文件?号匹配一个字符
ls [abc].txt查询名字叫a或b或c的.txt文件[]里面有的字符任意一个匹配
ls [a-f].txt查询名字为a-f的一个字符的.txt文件[-]为范围匹配
ls [^abc].txt查询名字不叫a或b或c的.txt文件[^]为取反匹配
ls {ab,bb,bc}.txt查询名字叫ab或bb或bc的.txt文件{}为全匹配,用逗号可以隔开写多个

6. 搜索查找指令

指令功能其他
find / -name 1.txt 从根目录开始递归查询名称为1.txt的文件建议搜索的目录不要写太大,不然速度很慢
grep -r dlb 1.txt 查找文件内容-F 将查找模式看成是单纯的字符串,-i 匹配比较时不区分大小写,-r/-R 以递归方式查询目录下所有子目录中的文件,-n 加上行号
diff 1.txt 2.txt 比较文件差异-b忽略行尾空格 -c展示上下三行上下文 -n显示行号
wc 1.txt查看文件行数、字节数、字数、文件名
file 1txt 识别文件类型
uame -a显示系统版本相关信息
diff a b -r递归查找两个文件夹内所有文件名的不同
`ps -auxgrep demo`查找所有包含demo的进程
whereis cd 查找cd指令所在位置
whatiis cd查找cd指令简易文档
which cd 在系统默认的目录中查找cd文件

7. 文件所有者和所有组修改

指令功能其他
find / -name 1.txt 从根目录开始递归查询名称为1.txt的文件建议搜索的目录不要写太大,不然速度很慢
chown root 1.txt 修改1.txt这个文件的所有者为root
chgrp root 1.txt 修改1.txt这个文件的所有组为root
chown root:root 1.txt 同时修改1.txt这个文件的所有者和所有组所有者:所有组,可以不一样
chown root:root demo -R同时递归修改demo文件夹的所有者和所有组

8. 文件各个角色读写执行权限修改

指令功能其他
chmod 777 1.txt 将1.txt文件的所有者所有组其他用户三种角色都设置读写执行权限777三个数字,分别代表所有者所有组其他用户72进制表示是111111三个数字分别表示执行权限
chmod ugo+rwx 1.txt 将1.txt文件的所有者所有组其他用户设置读写执行权限ugo三个字母,分别代表所有者所有组其他用户,也可以直接用a表示all所有角色,+或者-表示是增加或减去权限,rwx三个字母分别表示执行权限

9. 用户管理

root用户:有且只有一个,拥有所有权限

普通用户:多个,部分权限

指令功能其他
adduser dlb创建用户电话、房间号等可以选填项可以回车默认
useradd dlb2 -u 1007 -m dlb2 -g 1007 -G dlb2半自动创建用户-u 用户id -m 主目录 -g 组id -G 组名称
usermod -u 1008 修改用户id不能改为已经使用的id
passwd dlb 修改用户密码root账号修改可以不用输入原密码并且不限制长度,其他角色修改需要输入原密码并且需要长度大于8位
cat /etc/password 查看用户信息用户名:密码令牌:uid用户id:gid组id:解释:主目录:解释器
cat /etc/shadow 查看令牌信息用户名:密码密文
vi /etc/sudoers 编辑有权限sudo的用户dlb ALL=(ALL:ALL) ALL
userdel -r dlb2删除用户dlb2
vi /etc/passwd禁用用户dlb2找到对应用户哪一行,在最前面加#号注释掉或者在最后面加:false或者:nologin
su student改变用户身份为student账号,要输入student的密码省却了注销和重新登录过程,在使用 root 身份无法登录的 Telnet 网络登录的情况下更为有用。( su 是替代用户(Substitute user)的意思,但常被理解为 super user)
sudo su student作为student用户su后面不写账号默认为root
id查看uid、gid

10. 用户组管理

私有组:useradd在创建用户时,默认也创建了一个组,这个组叫用户私有组,可以设置别的账号为这个组的成员,享有这个组的权限

登录组:用户登录进来默认的组,这个组可以修改

指令功能其他
groupadd dlb2 新增dlb2组
userdel -r dlb2 删除dlb2组
usermod -G 1001 dlb 将dlb加到1001组
usermod -g student dlb 将dlb用户组修改为student组
vi /etc/group删除挂载的组权限,只能手动删用户名:x(令牌):1001:dlb,dlb2,这里挂载的dlb,dlb2需要手动去掉

11. 查看设备信息

指令功能其他
vi /etc/hostname修改主机信息
cat /proc/version查看linux版本
cat /proc/cpuinfo查看cpu信息
cat /proc/partitions查看分区信息
last查看登录过的账号和时间
cal打印日历

12. 多个用户登录

Linux 提供了六个虚拟终端(TTY1-TTY6)和一个 X-window 图 形终端供不同的或相同的用户名登录,用ctrl+alt+Fn 切换,ctrl+alt+F1 至 ctrl+alt+F6 :TTY1 到 TTY6

ctrl+alt+F7 :X-window 图形终端

13. 软件包管理

在 Linux 下,deb 格式是 Debian 软件包格式。Deb 是 Debian Linux 发行版和基于 Debian 的操作系统所使用的软件包格式。Deb 文件实际上是一个归档文件,其中包含了软件包的二进制文件、库文件、配置文件和其他相关的元数据。

指令功能其他
dpkg -i ./linuxQQ.deb安装指定目录的qq
apt-get -h 查看安装软件文档
sudo apt-get update更新软件库文件
sudo apt-get install + cmatrix安装屏保软件运行屏保指令cmatrix
sudo apt-get remove + cmatrix卸载屏保软件

14. 压缩与解压

指令功能其他
tar -cvf dist 1.txt 2.txt 3.txt 将多个文件归档为一个文件-c归档 -v查看进度 -f创建或解压文件(必须放在最后一个)
tar -xvCf dist ./ 解压归档到当前目录
tar -zvf dist dist 将归档文件压缩-z压缩
tar -zxvCf dist ./ 解压归档到指定目录
tar -zcvf dist.tar dist归档压缩dist
tar -zxvCf dist.tar ./解压缩dist.tar 到指令目录-z压缩 -x解压 -v查看进度 -C指定目录 -f创建或解压文件(必须放在最后一个)
gzip 1.txt 2.txt 将两个文件分别压缩
gzip -dv 1.gz 解压缩1.gz

14. 磁盘管理

目录功能其他
\ 根目录
\boot 引导分区存放启动linux的核心文件
\swap 交换分区用来支持虚拟内存

14. u盘挂载卸载

指令功能其他
在mnt下创建usb文件夹 创建挂载目录
虚拟机可移动设备连接u盘
虚拟机设置-usb控制器-usb兼容性三种都要试一下
fdisk -l查看可以挂载的设备位置一般都在/dev下叫sda1之类的
mount -t auto /dev/sda1 /mnt/usb挂载usb设备/dev/sda1到/mnt/usb文件夹-t 选择文件类型,auto为自动选择
umount /dev/sda1卸载usb设备

14. 进程管理

指令功能其他
ps -aux 查看全部进程详细信息
sleep 3 暂停进程3s
top 查看动态进程
kill -9 进程号 关闭进程
pstree 查看进程树

14. 网络管理

指令功能其他
ifconfig 查看网络信息首行首单词是网卡名称
ifconfig 网卡名 192.168.3.3 临时设置网络ip
ifconfig 网卡名 down/up 关闭/启动网卡
nmcli networking off/on关闭/打网络服务乌班图图形窗口右上角网络符号会变化
service network-manager restart重启网络服务
ping 192.168.1.1 查看ip是否能通信

14. VIM编辑器

有三个模式,命令模式、编辑模式、底行模式 每个家目录都有一个.vimrc配置文件

指令功能其他
vim 1.c 进入vim编辑器一进来一般是命令模式
vim 1.c 进入vim编辑器一进来一般是命令模式
命令模式下单独按下a、i、o按键进入编辑模式按Esc按键退出编辑模式
命令模式下输入:进入底行模式进入底行模式按Esc按键退出底行模式,w保存、q退出、!强制执行,可以自由组合
# 命令模式下
gg 跳转首字
G 跳转尾字
dd 删除一行
D 删除一行内容
yy 复制
p 粘贴
5yy 复制5行
Ctrl + v 块选  然后使用 end向下移动
u 撤销
Ctrl + r 重做

14. GCC 编译文件

指令功能其他
gcc -E 1.c -o 1.i 预处理文件,生成.i文件-o 设置生成的文件名
gcc -S 1.i -o 1.s 编译文件,生成.s文件-o 设置生成的文件名
gcc -c 1.s -o 1.o 汇编文件,生成.o文件-o 设置生成的文件名
gcc 1.o -o 1.out 将1.o目标文件链接成1.out二进制可执行文件-o 设置生成的文件名
./1.out 执行out二进制可执行文件
gcc 1.c -o 1.out 一步到位将c文件转化为out二进制可执行文件-o设置生成的文件名,不设置默认为a.out

14. GDB 调试文件

步骤指令功能其他
1gcc -g 1.c -o demo.out 编译-g 生成可调试文件 -o 指定输出目标文件名称(不加默认教a.out)
2gdb -q demo.out 调试文件-q 不展示gdb版本等信息
3l 查看10行再按一下l再往下翻10行
4l 7第七行前后各显示5行
5l mainmain函数名位置前后各显示5行
6break 10/sum给第10行或者sum函数名处设置断点break可以简写b
7info break查看断点
8delete 1删除断点号处的断点
9run运行代码,会停在断点处
10next单步调试,不进入函数简写n
11step单步调试,进入函数简写s
12ctrl+l清空
13continue结束单步调试
14print c打印变量c的值打了断点,使用变量的地方有值了,p变量名就能出来 $n = 1
13display c观察模式

14. Makefile 批量构建文件

Makefile是用于c/c++等语言编译过程中管理项目构建过程的工具,

F7}XNCZEKA`NXF@Q6P6)Q_tmb.png

步骤指令功能其他
1touch Makefile创建构建文件
2vim Makefile编辑构建文件
3make执行构建文件从上面开始一行一行开始执行,如果没有依赖到后面的行,后面的行不会执行
4make 2.i执行构建文件指定行从指定的行开始执行,如果没有依赖到后面的行,后面的行不会执行
# 输出文件:依赖文件
main.out:1.o 2.o
    gcc 1.o 2.o -o main.out # 将两个.o文件合并为可执行文件main.out
1.i:1.c
    # 脚本命令
    gcc -E 1.c -o 1.i # 预处理1.c文件,格式会变为1.i # 这里用到了下一行的1.i,下一句才会执行
1.s:1.i
    gcc -S 1.i -o 1.s # 编译1.i文件,格式会变为1.s
1.o:1.s
    gcc -c 1.s -o 1.o # 汇编1.s文件,格式会变为1.o

2.i:2.c
    # 脚本命令
    gcc -E 2.c -o 2.i # 预处理1.c文件,格式会变为2.i
2.s:2.i
    gcc -S 2.i -o 2.s # 编译1.i文件,格式会变为2.s
2.o:2.s
    gcc -c 2.s -o 2.o # 汇编1.s文件,格式会变为1.o

14. sh脚本

#! /bin/bash
# 第一行标记使用什么语言进行解析

# 打印输出
echo nihaoshijie  # 直接输出打印

# 单引号' '也是直接输出,里面不能放变量
echo '你好shijie'

# 定义一个变量,等号两边不能带空格
demo='wangzong'

# 双引号" "里面可以放变量,$变量名
echo "你好$demo"

# 如果会连着字母,需要用花括号括起来,限定变量的名称范围
echo "nihao{$demo}dejia"

# 倒引号` `里面可以写sh语句,并且会执行语句
echo `touch 1.txt | ls -l`
# "sh test.sh 参数1 参数2 参数3"命令传过来的参数
echo "\$0=$0,$1,$2,$3..." # \是转义符,$0为test.sh,$1-3为参数1-3

# 输入read
echo "请输入登录姓名"
read name
echo "姓名是 $name"
#隐藏文本信息
stty -echo
read -p "请输入登录密码:" passwd # 按按钮输入的密码不会显示在这里
if [ $passwd = '1' ] # 输入的密码为1时,能判断通过
then
    echo "u=$name,p=$passwd" #passwd不会显示
    #显示文本信息
    stty echo
    echo "u=$name,p=$passwd" #passwd会显示
else
    echo "密码不为1" 
fi

# 中括号[]里面可以放算术表达式
sum=1+2
echo $sum #打印结果为1+2
echo $[sum] # 打印结果为3

# 用let定义变量,运行sh test.sh 11 20
let a=$1 #等号两边不能带空格
let b=$2
echo $[a+b] # 打印结果为31

# if判断语句,-gt大于 -ge大于或等于 -le小于或等于 -lt小于 -ne不等于 -eq等于(符号=也可以,但是两边需要留空格)
if [ $1 -lt 10 ] # $1小于10
then # 判断开始
    echo "参数一{$1}大于10"
    if [ $2 -gt 20 ] # if和中括号之间需要有空格
    then
        echo "参数二{$2}大于20"
    else
        echo "参数二{$2}小于20"
    fi #判断结束
elif [ $1 -gt 10 ] && [ $1 -lt 20 ] # else if判断大于10小于20
then
    echo "参数一{$1}大于10小于20"
else
    echo "参数一{$1}小于10"
fi

# switch case 判断
echo "what is your grade?" 
read grade 
case $grade in 
    "100") echo "your grade is excellent " ;; 
    "90") echo "your grade is nice" ;; 
    "80" ) echo "your grade is good" ;; 
    "70") echo " your grade is not bad";; 
    *) echo "your grade is low" ;; 
esac

# for循环语句,与平常的基本类似,之色for的括号里多一层括号,花括号用do和done替代
for ((i=0;i<10;i++))
do 
    echo "i---$i `sleep 2 `" # 间隔两秒打印一下i
done

# do while 循环 病毒程序,千万别试,原理就是用递归创建文件的方式,让程序一直执行,直到耗尽内存
#! /bin/bash 
while echo "just give me money!!" 
do 
    mkdir cry 
    cd cry 
    touch haha.txt 
    sleep 1s 
done