Linux入门篇
1 Shell命令
-
ls:目录信息查看命令
-a 显示所有的文件以及子目录
-l 显示文件的详细信息
-al
-
cd:目录切换命令
cd / 进入到根目录“/”下
cd /usr 进入到目录“/usr”里面
cd … cd …/ 进入到上一级目录
cd ~ 切换到当前用户主目录 -
pwd:当前路径显示命令
-
uname:系统信息查看命令
-
clear:清理屏幕
-
cat: 显示文件内容
-
sudo:切换用户身份命令
-
cp:文件拷贝命令
cp a.c b.c //把a.c复制给b.c
-
su:切换用户命令
-
mv:移动文件
mv a.c test1/
-
mkdir:创建文件夹命令
mkdir test
-
touch:创建文件命令
touch a.c
-
rm:删除命令
rm test/ -rf //删除test文件夹及子文件 rm a.c
-
ifconfig:显示和配置网络属性
-
reboot:系统重启
-
poweroff:系统关机
-
man:系统帮助命令
man printf
-
sync:数据同步写入磁盘命令
-
find:查找文件
-
grep:查找内容
-
du:文件夹大小查看命令
du test/ -sh
-
df:磁盘空间检查命令
-
gedit:使用gedit打开某个文件命令
-
ps:当前的系统进程查看
-
top:进程实时运行状态查看命令
-
file:文件类型查看命令
file a.c
2 Ubuntu软件安装
-
通过APP Store安装
-
通过APT工具安装
sudo apt-get install git
-
deb软件包安装
使用dpkg命令安装deb软件包,命令如下:
sudo dpkg -i xxx.deb
在Windows下,软件安装包为exe文件。在Ubuntu下,软件安装包为deb文件。
-
自己下载程序源码编译安装 如:tree软件
一般命令为:
make make install
3 Ubuntu文件系统结构
- /bin 存放二进制可执行文件
- /boot Ubuntu内核和启动文件
- /dev 设备驱动文件
- /home 系统默认的用户主文件夹
- /lib 存放库文件
- /media 此目录下放置可插拔设备,如:U盘
- /mnt 用户可使用的挂载点,额外的设备挂载到此处
- /opt 可选的文件和程序存放目录
- /root 系统管理员目录
- /sbin 和/bin类似
- /srv 服务相关目录,如:网络服务
- /sys 记录内核信息,虚拟文件系统
- /temp 临时文件
- /var 存放一些变化的文件,如:日志文件
- /usr 存放与用户有关的文件,会占用很大的内存空间
- /proc 虚拟文件系统
4 Ubuntu磁盘管理
4.1 Ubuntu磁盘文件
-
/dev/sd*文件是磁盘设备文件,它不能直接访问磁盘,必须要将磁盘挂载到某一目录下才可以访问
-
/dev/sdb和/dev/sdb1是U盘的设备文件
-
/dev/sdb表示U盘,/dev/sdb1表示U盘的第一个分区
4.2 磁盘和目录的容量查询命令
- df 列出系统的磁盘使用量
- du 查看当前目录文件大小
du -h --max-depth=1 //指定显示的目录深度
4.3 磁盘的挂载与卸载
- mount 挂载
sudo mkdir udisk //先创建挂载点
sudo mount -o tocharset=tf8 /dev/sdb1 /media/wjy/udisk/
- umount 卸载
sudo umount /media/wjy/udisk -f //卸载之前要将U盘从启动器解锁
4.4 磁盘的分区与格式化
- 磁盘分区
sudo fdisk -l //查看磁盘分区
sudo fdisk /dev/sdb //查看U盘分区
- 磁盘格式化
格式化就是给每个分区装一个文件系统,比如:FAT
sudo mkfs -t vfat /dev/sdb1
5 压缩与解压缩
Linux下常用的压缩扩展名:.tar .tar.bz2 .tar.gz
5.1 gzip压缩与解压缩
gzip虽然可以对文件夹进行压缩,但是并不提供打包服务,只是对文件夹中的所有文件进行了单独的压缩
gzip a.c //将a.c压缩为a.c.gz
gzip -d a.c.gz //将a.c.gz解压缩为a.c
gzip -r test //对test文件夹进行压缩
gzip -rd test/ //对test.gz文件夹进行解压缩
5.2 bzip2压缩与解压缩
bzip2 -z a.c //将a.c压缩为a.c.bz2
bzip2 -d a.c.bz2 //将a.c.bz2解压缩为a.c
5.3 tar打包服务
tar --heip //查看tar的帮助信息
tar -vcf test.tar test //将test打包成test.tar
tar -vxf test.tar //解包
tar -vcjf test.tar.bz2 test //压缩
tar -vxjf test.tar.bz2 //解压缩
tar -vczf test.tar.gz test //压缩
tar -vxzf test.tar.gz //解压缩
5.4 zip压缩与解压缩
zip -rv test.zip test //压缩
unzip -v test.zip //解压缩
8 Linux连接文件
两种连接文件:软连接(符号连接)和硬连接
- 软连接:类似于Windows中的快捷方式
- 硬连接:通过inode连接来产生新文件名,而不是产生新文件
8.1 ln命令
ln命令用于创建连接文件
ln hello hello1 //为hello创建硬连接文件hello1
ll -i hello* //查看hello*文件的结点
8.2 硬连接
- 所有硬连接文件的inode相同
- 源文件被删除,连接文件还会存在
- 通过创建硬连接来防止文件被误删
- 不论是修改源文件还是连接文件,另一个文件的数据都会被改变
注:硬连接不常用
8.3 软连接
-
源文件要使用绝对路径
ln -s /home/wjy/hello hello3 ll -i hello*
-
源文件被删除,连接文件就打不开了
9 vim编辑器
-
三种工作模式
- 一般模式(指令模式):a -> 编辑模式
- 编辑模式:Esc -> 指令模式
- 命令行模式(输入冒号“:”进入命令行模式)
-
保存退出
- wq 保存退出
- q 退出
- q! 不保存退出
-
其他命令
dd //删除光标所在行 ndd //删除光标所在行及其下n行 u //恢复上一步 . //重复前一个操作 yy //复制光标所在行 nyy //复制光标所向下n行 p //复制光标上一行 P //复制光标上一行
10 Linux C 编程
gcc -o main main.c //将main.c编译和链接,生成可执行文件main
./main //运行main
11 make工具和makefile的引入
11.1 make工具
利用make工具可以自动完成编译工作,这些工作包括:
- 如果修改了某几个源文件,则只重新编译这几个源文件
- 如果某个头文件被修改了,则重新编译所有包含该头文件的源文件
利用这种自动编译可以大大简化开发工作,避免不必要的重新编译,make工具通过一个成为Makefile的文件来完成并自动维护编译工作,Makefile文件描述了整个工程的 编译,连接规则。
11.2 makefile文件
makefile示例代码:
main: main.o input.o caclu.o
gcc -o main main.o input.o caclu.o
main.o: main.c
gcc -c main.c
input.o: input.c
gcc -c input.c
calcu.o: calcu.c
gcc -c calcu.c
clean:
rm *.o
rm main
这同时也是我们之后通过 vi Makefile 命令,在Makefile文件中所撰写的程序。
make //make命令将所有.c统一编译
make clean //删除所有.o文件和可执行文件
makefile变量:
objects = main.o input.o caclu.o
main: $(objects)
gcc -o main $(objects)
main.o: main.c
gcc -c main.c
input.o: input.c
gcc -c input.c
calcu.o: calcu.c
gcc -c calcu.c
clean:
rm *.o
rm main
赋值符"=":
name = wjy
curname = $(name)
name = wanjinyao
print:
@echo curname: $(curname)
输出:curname:wanjinyao
name变量的值取决于name变量最终的值
赋值符":=":
name = wjy
curname := $(name)
name = wanjinyao
print:
@echo curname: $(curname)
输出:curname:wjy
name变量的值取决于name变量赋值时候的值
赋值符"?=":
curname ?= wanjinyao
如果变量curname前面没有被赋值,那么此变量就是“wanjinyao”,如果前面已经赋过值了,那么就使用前面赋的值
变量追加"+=":
objects = main.o input.o
objects += calcu.o
模式规则和自动化变量使用:
“%”的作用跟通配符类似
objects = main.o input.o caclu.o
main: $(objects)
gcc -o main $(objects)
%.o : %.c
gcc -c $<
clean:
rm *.o
rm main
Makefile伪目标
避免make clean命令和工作目录下的实际文件(clean)出现名字冲突
这时,要编写一个规则:
.PHONY:clean