linux1-2

操作系统的作用:

使计算机系统易于使用

有效管理系统资源

方便用户开发、测试和引进新功能

向下封装硬件,向上提供操作接口

linux分为内核版本和发行版本

内核源码网站:www.kernel.org

发行版本就是给系统披上了UI

文件系统:

采用 “路径” + “文件名”

linux 采用 ‘’/" 且没有盘符

路径分为:

  1. 绝对路径
  2. 相对路径
  3. ./表示当前目录
  4. ../表示上一级目录

linux目录结构

  • / 根目录
  • /home 家目录
  • /bin 放工具(可执行文件)
  • /lib 库文件
  • /usr/include 头文件

文件权限

文件分类

  • 普通文件 -
  • 目录文件 d
  • 设备文件 c字符设备 b块设备
  • 管道文件
  • 链接文件
文件类型 文件所有者 用户组 其他人
- rwx rwx rwx

-rwxrwxrwx

查看用户组信息

1
cat /ect/gruop

查看用户信息

1
cat /ect/passwd

用户名: x : 用户id : 组id

文件目录的x权限代表可进入权限

一般情况下linux/unix只允许文件所有者或超级用户(root)改变文件权限

命令 [-可选参数1] [-可选参数n]

[]是可选参数

查命令

使用–hellp

查手册

用man命令

1
man [选项] 命令名

按q退出

enter下一行

空格下一屏

h列出所有功能键

/字符串 搜索所有该字符串

可以使用方向键操控

以章节方式分类

1代表命令

2代表系统调用

3代表库调用

1
man 3 printf //查询printf函数使用说明

按tab键可以补全命令

方向键可以查使用过的命令

history 命令

列出历史命令(连续重复的命令只列举一次)

ls 遍历当前目录

ls [-选项]

-a 遍历所有子目录与文件
-l 详细显示信息
-h 以人性化方式显示文件大小

使用方式

1
2
3
4
ls -ahl
ls -a
ls -l
ll #等价于 ls -l

一个文件夹默认有两个目录,一个是.另一个是.. 分别代表当前目录和上一级目录。

文件类型 权限 硬连接数目 文件所有者 用户组 文件大小 创建日期 文件名/目录

如果是文件夹,硬链接数目代表其下有多少子目录

touch 创建文件

1
2
3
touch 文件名
touch abc
touch 文件名1 文件名2 文件名3...文件名n

如果文件存在则修改日期时间为当下时间,否则则创建新文件

? 代表任意一个字符
[abc] 匹配a、b、c中任意一个字符
[a~z] 匹配a~z中任意一个字符
\ 转义字符
1
2
3
4
ls ?.c
ls a.?
ls [a~d]*
ls [abc].?

输出重定向命令: >

将命令执行结果重定向到一个文件上

1
2
3
4
ls > text.txt  #如果文件不存在,则创建.存在则覆盖
ls >> a.txt #如果文件不存在,则创建.存在则追加内容,不覆盖
set -C #禁止覆盖
set +C #解除禁止覆盖

分屏显示:more

1
2
more 文件名
more abc

按q退出 空格下一页 h帮助

管道:|

一个命令的输出可以通过管道做为另一个命令输入

输出|输入

1
2
3
ls | grep std   #从ls中搜索std字符

ls | more

从切换工作目录 cd

Linux所有的目录或文件名大小写敏感

1
2
3
4
5
6
7
8
9
10
#切换到当前用户的主目录(/home/用户目录)
cd ~
#当前目录
cd .
#上一级目录
cd ..
#上一次进入的目录
cd -
cd 相对路径和绝对路径
cd ~/share #等价于cd /home/用户名/share

查看当前路径 pwd

清屏 clear

1
clear

ctrl+l也可以

创建文件夹 mkdir

1
2
3
4
mkdir 文件名
mkdir 123 #创建一个123的文件夹
mkdir /home/yc/aaa #指定路径创建一个aa文件夹
mkdir -p /home/yc/a/b/c #递归创建

创建者需要有当前文件夹写的权限

删除文件夹 rmdir

1
2
rmdir 文件夹名
rmdir aaa

文件夹必须是空的才可以删除

rm 可以删除非空文件夹或文件

-f不提示

-r删除文件夹

-i交互式删除

1
2
3
4
rm 文件
rm -r 文件夹
rm * -rf #危险操作
rm 文件1 文件2 文件3...文件n

建立链接文件 ln

硬链接:

给某个文件拷贝一份,这两个文件独立存在

改变其中一个,另一个也会改变

删除某个硬链接,不会影响另一个文件

只能链接普通文件,不能链接目录

1
2
ln 源文件 链接文件
ln 1.txt a.txt #a.txt是硬链接文件

软链接:

类似windows的快捷方式

如果源文件删除,软连接文件没有意义

1
2
ln -s 源文件 链接文件
ln -s aaa bbb

和windows快捷方式的区别:

假设有一个软连接目录是aaa,源文件是b,进入aaa路径会显示xx/aaa而不是xx/b,aaa实际上是b的别名,实际进入的是b目录

软链接文件的大小是固定的

gedit 图形化文本编辑

1
gedit 文件名

文件存在就打开,不存在就创建一个

查看或合并文本内容 cat

1
2
3
4
cat 文件名
cat 文件名1...文件名n
cat 文件名1 文件名2 文件名n >> 文件名x1 #追加合并文本内容
cat 文件名1 文件名2 文件名n > 文件名x1 #覆盖合并文本内容

文本搜索 grep

grep [-选项] '字符串' 文件名

字符串最好用双引号括起来

-v求反

-n显示行号

-i不区分大小写

1
2
grep "sss" 1.txt
grep aaa 1.txt -n
正则表达式

^a代表以a开头

ke$以ke结尾

[1~9]1~9中任意一个

[1~9]aaa[1~9]aaa是固定字符

.a.点代表任意一个字符,a是固定字符

?和*失效

1
ls | grep ^a

查找文件 find

find 路径 -name 文件名

find 路径 -size 文件大小

find 路径 -perm 0777

1
2
3
4
5
6
7
8
find ./ -size 2M #搜索等于2M的文件
find ./ -size +2M #搜索大于2M的文件
find ./ -size -2M #搜索小于2M的文件
find ./ -size +4k -size -5M #搜索大于4k小于5M的文件
find 路径 -perm 0777 #搜索777权限的文件
find ./ -name abc
find ./ -name "*.ssh"
find ./ -name "[a-z]*"

拷贝文件 cp

cp 源文件或目录 文件名 [-选项]

-a保持文件原有属性

-f不提醒

-i交互式复制

-r递归复制目录

-v显示进度

1
2
cp ./a /b -r
cp ./1.txt ./a/b

移动文件 mv

用来移动或重命名文件或目录

-f 不提示

-i 交互式移动

-v显示进度

1
2
3
mv ./a.txt ./b 
mv ./a.txt ./b.txt #重命名
mv ./a /

获取文件类型 file

file 文件名

executable 可执行文件

ASCII text 文本文件

编译文件

gcc 源文件 -o 文件名

运行程序

直接输入路径+文件名

1
./a.exe

归档管理 tar

打包和解包但不压缩

tar [参数] 打包文件名 源文件

-可以不写

打包

1
2
3
4
tar -cvf 打包名称.tar 源文件
c 创建包 v 进度 f 后面是打包名,f放最后

tar -cvf aaa.tar *

解包

1
2
3
4
5
tar -xvf 包名
tar -xvf 包名 -C 路径
指定路径要加大写C,x代表解包

tar -xvf aaa.tar

gzip压缩和解压

1
gzip xxx.tar #自动生成一个xxx.tar.gz压缩包

-r代表压缩,一般省略不写

-d代表解压

1
2
gzip -r xxx.tar xxx.tar.gz
加了-r xxx.tar.gz要自己写

解压

1
gzip -d xxx.tar.gz

bzip2 解压/压缩

1
2
bzip2 xxx.tar #压缩
bzip2 -d xxx.tar.bz2 #解压

打包压缩

指定路径要加 -C

gzip

1
tar -czvf xxx.tar.gz *.*

bzip2

1
tar -cjvf xxx.tar.bz2 *.*
1
tar -cjvf xxx.tar.bz2 -C ./my/*.*

解压解包

gzip

1
tar -xzvf xxx.tar.gz

bzip2

1
tar -xjvf xxx.tar.bz2
1
tar -xjvf xxx.tar.bz2 -C ./my/

文件压缩和解压 zip unzip

压缩 zip

1
2
zip -r 压缩文件名
-r是必须要加的

解压 unzip

1
2
unzip -d 压缩包名
unzip -d ./text.zip

查看命令所在目录 which

1
2
which 命令名
which ls

who查看最近登录的用户

1
who

w 查看最近登录的用户,显示ip

1
w

exit 退出当前用户

1
exit

如果是图像界面终端,退出当前终端
如果是使用ssh远程登录,退出登录用户
如果是切换后的登录用户,退出则返回上一个登录账户.

su 切换用户

1
2
3
4
5
6
su  #切换到root用户
su root #切换root用户
su - #切换root用户,同时切换到/root目录
su - root #切换root用户,同时切换到/root目录 -两边都有空格
su 普通用户
su - 普通用户

sudo 运行普通用户执行一些或全部的root命令的一个工具,减少了root用户的登录和管理时间,提高安全性

需要root权限

添加删除组账号:groupadd groupdel

groupadd 新建组账号
groupdel删除组账号
如果有用户属于组了,就不能删组了,把用户移出该组才可以删
groupadd 组名
groupdel组名

1
2
groupadd abc
groupdel abc

修改用户所在组 usermod

usermod -g 用户组 用户名

1
usermod -g root abc

查看用户组信息 cat /etc/group

查看用户信息 cat /etc/passwd

yxc19980620c:x:1000:0:yc:/home/yxc19980620c:/bin/bash
1000代表用户id
0代表用户组id

添加用户 useradd或adduser

添加用户时需要在/home目录下添加一个和新建用户同名的文件夹
useradd和adduser功能完全一样
useradd -d 用户文件夹 用户名 -m
useradd -d /home/abc abc -m

1
2
useradd -d 用户文件夹 用户名 -m 
useradd -d /home/abc abc -m

-d代表指定用户文件夹
-m代表如果用户文件夹不存在则新建一个用户文件夹

新建用户并指定用户组

useradd -d 用户文件夹 用户名 -g 用户组 -m

1
useradd -d /home/abc abc -g root -m

删除用户 userdel

1
2
userdel 用户名  #不会自动删除用户的主目录
userdel 用户名 -r #会同时删除用户的主目录

给用户添加密码 passwd

1
2
passwd 用户名
passwd abc

查看用户登录情况 last

1
sudo last

修改文件权限 chmod

字母法:

chmod 修改权限 文件名

u 用户所有者 g 用户组 o 其他人

1
2
3
+ 代表加权限
- 代表减权限
= 赋值权限
1
2
3
4
5
chmod u+x 1.c  #给1.c文件添加所有者x执行权限

chmod g-x 1.c #给1.c文件减去所属组x执行权限

chmod o=rwx #给1.c文件赋予其他人rwx权限

数字法

1
2
3
u g o
0 0 0
第一个数字0 对应着u权限
1
2
3
4
5
6
7
8
9
rwx
--- 000 代表没有权限
r-- 100 4
-w- 010 2
--x 001 1
rw- 110 6
r-x 101 5
-wx 011 3
rwx 111 7
1
2
3
chmod 777 1.c  #代表1.c的权限是-rwx rwx rwx

chmod 444 1.c #代表1.c的权限是-r--r--r--
文件夹权限说明

目录没有x权限,表示不能进此目录
没有r权限,不能查看文件夹内容
没有w权限,不能新建或删除,修改文件

改变文件所有者 chown

1
2
chown 用户名 文件或目录
chown root aa

改变文件所属组 chgrp

1
2
chgrp 用户组  文件或目录
chgrp root aa

查看当前日历 cal

1
2
cal
cal -y #查看一年的日历

显示或设置时间 date

1
date

查看进程信息 ps

1
ps -aux

可以不用加-
-a显示所有进程,包括其他用户进程
-u显示进程的详细信息
-x 显示没有控制终端的进程
-w显示加宽,以便显示更多的详细

USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND

USER 用户名
PID 进程ID
%CPU 进程占用的CPU百分比
%MEM 占用内存的百分比
VSZ 该进程使用的虚拟內存量(KB)
RSS 该进程占用的固定內存量(KB)(驻留中页的数量)
TTY //该进程在哪个终端上运行,若与终端无关,则显示? 若为pts/0等,则表示由网络连接主机进程。
STAT 进程的状态
START 该进程被触发启动时间
TIME 该进程实际使用CPU运行的时间
COMMAND:所执行的指令

动态显示进程信息 top

1
top

结束进程 kill

1
2
kill 进程id
kill -9 进程id #强制结束

后台运行 &、jobs、fg

1
2
3
4
5
 ./hello.exe &  #表示后台运行

jobs #查看后台程序

fg 后台编号 #把后台程序调出前台

关机重启 reboot shutdown init

1
2
3
4
5
6
7
reboot  #重启
shutdown -r now #重启
shutdown -h now #立刻关机
shutdown -h 20:25 #在20:25分关机
shutdown -h +10 #十分钟后关机
init 0 #关机
init 6 #重启

字符界面和图像界面切换

redhat平台
1
2
init 3  #字符界面
init 5 #图形界面

Ubuntu快捷键切换

ctrl+alt+F2 字符界面
ctrl+alt+F1 图像界面

检测硬盘空间 df

1
df -h

检查目录所占磁盘空间:du

1
du -h 目录

-a 递归显示指定目录中各文件和子目录中文件占用的数据块
-s 显示指定文件和目录占用的数据块
-b 以字节为单位显示磁盘占用情况
-h人性化输出大小

安装软件 rpm

rpm [选项][软件包名]

-i指定安装的软件包
-h显示安装过程及进度
-v 显示安装的详细信息
-q查询系统是否已安装指定软件包
-a 查看系统已安装的软件包
-e 卸载软件
--nodeps 配合-e使用 ,强制卸载,不检查依赖项
--force 强制操作,如强制安装或卸载

1
rpm -ihv ./aaa.rpm

获取最新的软件包的列表

1
sudo apt-get update

从源中添加xxx软件

1
sudo apt-get install xxx

删除xxx软件

1
sudo apt-get remove xxx

dpkg

Debian Linux系统用来安装、创建和管理软件包的实用工具。

语法

dpkg(选项)(参数)

选项

-i:安装软件包;
-r:删除软件包;
-P:删除软件包的同时删除其配置文件;
-L:显示于软件包关联的文件;
-l:显示已安装软件包列表;
--unpack:解开软件包;
-c:显示软件包内文件列表;
--confiugre:配置软件包。

参数

Deb软件包:指定要操作的.deb软件包。

实例
1
2
3
4
5
6
7
8
9
10
dpkg -i package.deb     #安装包
dpkg -r package #删除包
dpkg -P package #删除包(包括配置文件)
dpkg -L package #列出与该包关联的文件
dpkg -l package #显示该包的版本
dpkg --unpack package.deb #解开deb包的内容
dpkg -S keyword #搜索所属的包内容
dpkg -l #列出当前已安装的包
dpkg -c package.deb #列出deb包的内容
dpkg --configure package #配置包