Linux知识
Linux,全称GNU/Linux,是一种免费使用和自由传播的类UNIX操作系统,其内核由林纳斯·本纳第克特·托瓦兹于1991年10月5日首次发布,它主要受到Minix和Unix思想的启发,是一个基于POSIX的多用户、多任务、支持多线程和多CPU的操作系统。它能运行主要的Unix工具软件、应用程序和网络协议。它支持32位和64位硬件。Linux继承了Unix以网络为核心的设计思想,是一个性能稳定的多用户网络操作系统。Linux有上百种不同的发行版,如基于社区开发的debian、archlinux,和基于商业开发的Red Hat Enterprise Linux、SUSE、Oracle Linux等。
主要目录
Linux系统是多用户操作系统,只有一个根目录/,没有盘符概念。
Linux的根目录下主要包含以下目录:
-
/
根目录,一般根目录下只存放目录,在终端里输入/home,其实是在告诉电脑,先从/(即根目录)开始,再进入到home目录;
-
/bin,/user/bin
可执行的二进制文件的目录,如常用的命令:ls,tar,mv,cat等;
-
/boot
放置Linux系统启动时用到的一些文件,如Linux内核文件:/boot/vmlinuz,系统引导管理器:/boot/grub;
-
/dev
存放Linux系统下的设备文件,访问该目录下某个文件,相当于访问某个设备,常用的是挂载光驱:mount /dev/cdrom /mnt;
-
/etc/
系统配置文件存放的目录,不建议在此目录下存放可执行文件,重要的配置文件有:/etc/initab etc/fstab etc/init.d /etc/xll /etc/sysconfig /etc/xinetd.d;
-
/home
系统默认的用户家目录,新增用户账号时,用户的家目录都存放在此目录下:表示当前目录的家目录,edu表示用于edu的家目录;
-
/lib,/user/lib,/usr/local/lib
系统使用的函数库的目录,程序在执行过程中,需要调用一些额外的参数时需要函数库的协助;
-
/lost+fount
系统异常产生错误时,会将一些遗失的片段放置于此目录下;
-
/mnt,/media
光盘默认挂载点,通常光盘挂载于/mnt/cdrom下,也不一定,可以选择任意位置进行挂载;
-
/opt
给额外安装软件所放置的目录;
-
/proc
此目录的数据都在内存中,如系统核心外部设备、网络状态,由于数据的都存放于内存中,所以不占用磁盘空间,比较重要的文件,有:/proc/cpuinfo,/proc/interrupts,/proc/dma,/proc/ioports,/proc/net/*等;
-
/root
系统管理员root的家目录。
-
/usr/share/doc
收录了完整系列的软件说明文件
家目录
环境变量
-
查看环境变量:env
-
设置系统环境变量
export name="值" # (注意:这只是临时设置环境变量,在下次登录shell时就失效了) # 永久方法: # 在/etc/profile.d目录下创建sh文件 # 在每次登录shell时都会执行/etc/profile.d文件夹里面的所有sh文件
命令
命令格式:
`command [-options] parameter` `command -lh`和`command -l -h`的效果是一样的
查询帮助:
`command --help` `man command`
快捷键:
Tab 自动补全 ↑ / ↓ 快速切换历史命令 Ctrl + C 退出选择,取消执行当前命令
命令 | 英文 | 作用 | 参数 |
---|---|---|---|
man <命令> | manual | 查找命令的帮助信息 | |
ls [查找内容] | list | 查看当前文件夹下的内容 | -a 查看包括隐藏文件的所有文件 -l 列出文件的详细信息 -h 更好的显示文件大小 通配符: ls 1* ls 1?1.txt ls [A-Z]* |
tree [目录名] | tree | 树状图显示目录结构 | -a 显示所有文件(隐藏文件) -d 只显示目录 |
pwd | Print Work Directory | 查看当前文件夹 | |
cd [目录名] | Change Directory | 切换文件夹 | cd 切换到用户目录cd ~ 切换到用户目录cd . 保持当前目录cd .. 返回上一级目录cd - 返回上次的目录 |
touch <文件名> | touch | 创建文件 | 创建文件或者修改文件修改时间信息 |
mkdir <目录名> | Make Directory | 创建文件夹 | -p 创建递归目录mkdir -p a/b/c/d |
cp [原文件] [目标文件] | copy | 复制文件 | -i 文件覆盖前提示 -f 强制覆盖文件 -r 复制文件夹及里面的内容 |
mv [原文件] [目标文件] | move | 移动文件/重命名文件 | -i 文件覆盖前提示 -f 强制覆盖文件 |
rm <文件名> | remove | 删除指定文件 | -f 强制删除文件 -r 删除文件夹及内容 -d 删除空的目录 -i 删除前提示 |
find [路径] | Find | 查找文件 | -name “*.py” 指定查找的文件名 |
cat [文件名] | concatenate | 查看文件/修改文件/文件追加 | -b 非空行编号(相当于nl )-n 对所有行编号 cat > 1.txt 写入文件1.txtcat 1.txt > 2.txt 将1中的内容覆盖到2cat 1.txt >> 2.txt 将1中的内容追加到2cat < 1.txt 2.txt 将打印2中的内容 |
nl [文件名] | Number of Line | 查看文件(非空行显示行数) | |
more [文件名] | more | 分屏显示文件内容 | 空格键 下一页 Enter键 滚动一行 b 向后滚动一屏 f 向前滚动一屏 q 退出 |
less [文件名] | less | 分屏显示文件内容 | |
grep [内容] [文件名] | Globally search a Regular Expression and Print | 搜索文本内容 | -n 显示行数 -v 显示不包含行 -i 忽略大小写 |
echo [内容] | echo | 输出指定文本 | echo xxx > 1.txt 输出到文件echo xxx >> 1.txt 追加到文件 |
clear | clear | 清屏 | |
shutdown | shutdown | 关机 | -r 重新启动电脑 -c 取消关机 shutdown now 立即关机否则1分钟后关闭 |
reboot | reboot | 重启 | |
ifconfig | network interfaces configuring | 查看/配置网卡 | |
ping [IP地址] | ping | 测试网络联通 | -I 使用指定网卡 -c 指定次数 |
ssh <用户名>@<地址>:[路径] | Secure Shell | ssh远程连接 | -p 使用指定端口(默认22) |
scp [原文件] [目标文件] | Secure Copy | 远程拷贝文件 | -P 使用指定端口 -r 传送目录里的所有内容 |
ssh-keygen | Secure Shell Key Generate | 生成SSH钥匙 | |
ssh-copy-id <用户名>@<地址>:[路径] | Secure Shell Copy Idification | 复制公钥到服务器 | -p 使用指定端口(默认22) |
su [用户名] | Substitute User | 切换用户 | - 切换后到默认工作目录 默认切换为root超级用户 |
sudo <命令> | Substitute User Do | 用超级用户执行命令 | 5分钟内不用重新输入密码 |
chmod [ugoa][+/-/=][rwx] [文件/目录] | Change Mode | 更改文件权限 | -R 递归修改文件夹下的所有内容chmod +x file 为文件添加可执行的权限 |
chgrp <组名> <文件> | Change Group | 修改文件所属组 | -R 递归修改所有文件夹里面的内容 |
chown <用户名>[:组名] <文件> | Change Owner | 修改文件所属用户 | -R 递归修改所有文件夹里面的内容 |
groups [用户名] | Groups | 查询用户所在组 | cat /etc/group 可以查询所有用户组 |
groupadd <组名> | Group Add | 添加用户组 | |
groupdel <组名> | Group Delete | 删除用户组 | |
useradd <用户名> | User Add | 新建用户 | -m 自动建立家目录 -g [组] 指定用户组 |
userdel <用户名> | User Delete | 删除用户 | -r 自动删除家目录 |
usermod <用户名> | User Modify | 修改用户信息 | -g [组] 设置用户主组 -G [组] 设置用户附加组 -s [/bin/shell] 修改用户的登录命令 |
passwd [用户名] | Password | 设置用户密码 | cat /etc/passwd | grep <用户> 可以查询用户 |
id [用户名] | Idification | 查询用户的UID和GID | |
who | Who | 当前登录到当前计算机的用户 | |
whoami | Who Am I | 显示当前登录的用户名 | |
which | Which | 查看命令的所在文件位置 | |
exit | Exit | 退出终端 | |
date | Date | 查看当前的系统时间 | |
cal | Calender | 查看日历 | -y 查看一年的日历 |
df | Disk Free | 查看磁盘信息 | -a 查看所有信息 -h 人性化显示文件大小 |
du [目录] | Disk Usage | 查看目录占用信息 | -s 显示总大小 -h人性化显示文件大小 |
ps [aux] | Process Status | 查看进程的状况 | a 显示所有进程 u 显示详细信息 x 显示没有终端的进程 |
top | Top | 动态显示进程且进行排序 | |
kill <进程PID> | Kill | 杀死某一个进程 | -9 强制终止程序 |
ln <被链接文件> <链接文件> | Link | 创建链接 | -s 建立软链接 不带该参数默认建立硬链接 |
tar | Tape Archive | 打包/解包 | -c 生成档案文件 -x 解开档案文件 -v 列出进度 -f 指定文件名称 -j 通过bzip2压缩 -z 通过gzip压缩 -C 指定解压目录 tar -cvf xxx.tar xxx 打包文件tar -xvf xxx.tar 解包文件 |
zip <压缩包.zip> <文件> | Zip | 压缩 | -v 列出进度 -r 递归压缩文件夹下的所有内容 -n [1~9] 压缩级别 -u 追加文件到zip |
unzip <压缩包> | Unzip | 解压 | -d <路径> 指定解压文件夹 -P <密码> 指定密码 -l 列出压缩包内容 |
apt | Advanced Packaging Tool | 管理软件包 | |
chattr | 加锁和解锁 只读权限root也无法修改 | chattr +i /etc/resolv.conf chattr -i /etc/resolv.conf | |
alias | alias | 给命令定义别名 | alias rm = ‘rm -i’ |
unalias | unalias | 取消别名 | unalias rm |
diff | 显示文件不同的地方 | diff file.txt file1.txt 也可以显示文件夹不同的地方: diff -r / /home |
用户和权限
超级用户
-
root
账号是超级用户账号 -
用于系统的维护和管理
-
不建议直接使用超级用户
用户符号
用户 | 英文 | 简写 |
---|---|---|
所有者 | owner | u |
用户组 | group | g |
其他用户 | other | o |
所有用户 | all | a |
权限符号
对于命令ls -al
可以显示所有文件的属性,而属性中包含以下内容:
最前面的一行即为权限(当前用户权限 组用户权限 其他用户权限)
第三行为所属用户
第四行为所属用户组
权限 | 英文 | 缩写 | 数字代号 |
---|---|---|---|
读 | read | r | 4 |
写 | write | w | 2 |
执行 | excute | x | 1 |
无权限 | - | 0 |
八进制语法 | 权限 | 缩写 |
---|---|---|
7 | 读+写+执行 | rwx |
6 | 读+写 | rw- |
5 | 读+执行 | r-x |
4 | 只读 | r– |
3 | 写+执行 | -wx |
2 | 只写 | -w- |
1 | 只执行 | –x |
0 | 无权限 | — |
文件类型 | 文件/目录 | 拥有者权限 | 组权限 | 其他用户权限 |
---|---|---|---|---|
普通文件 | - | rw- | rw- | r– |
目录文件 | d | rwx | rwx | r-x |
管理文件 | p | |||
连接文件 | l | |||
块设备文件 | b | |||
字符设备文件 | c | |||
套接字文件 | s |
关于Shell
通配符
星号 *
用于匹配任何字符,包括数字、字母和符号。可以使用星号指定应用程序需要查找的字符相应位置的任何字符。
# 删除所有文件后缀为.bak的文件
rm *.bak
问号 ?
用于匹配单个任意字符。
# 列出所有任意一个字符开头,后面为bc.txt的文件
# 例如:abc.txt bbc.txt 1bc.txt
ls ?bc.txt
文件别名
# 给命令设置别名
# alias <别名>="<原命令>"
alias test="ls -l /"
# 取消别名
# unalias <别名>
unalias test
管道
# 管道的符号为 |
[命令]|[命令]|[命令]
重定向
# 输出重定向
# 将命令执行的输出保存在文件里 直接覆盖
[命令] > [文件]
ls /etc > 1.txt
# 追加重定向
# 追加来替代直接覆盖文件
ls /etc >> 1.txt
# 输入重定向
[命令] < [文件]
grep test < 1.txt
# 追加重定向
# 获取一段分隔符之间的内容
[命令] << [分隔符]
> [内容]
> [内容]
> [分隔符]
# 错误重定向
# 把命令发生的错误写到文件里
[命令] 2> [文件]
ls /nofile 2> 1.txt
ls /nofile 2>> 1.txt
# 同时实现输出和错误重定向
[命令] &> [文件]
write by dudu233