C语言基础 (1) 操作系统介绍,linux入门

 

 

 

 

第一天

 

一、操作系统

1.1.1操作系统的目标

·方便:使计算机系统易于使用

·有效:以更有效的方式使用计算机系统资源

·扩展:方便用户有效开发、测试和引进新功能

 

1.1.2 操作系统的地位

 

操作系统——向下封装硬件

 

系统编程:在某个系统上面编程,系统调用,调用操作系统提供的接口

 

Unix => Linux

 

 

 

2.文件系统

 

2.1目录和路径

Windows \

Unix/Linux /

 

 

 

(记住 /   /bin 和 /home)

(记住lib C语言使用时候需要的库函数)

 

usr == Unix System Resource4

 

/ 根目录

/home 家目录

/bin 放工具

/lib 放库文件

/usr/include 头文件

 

2.3 一切皆文件

 

 

 

 

2.权限问题:

ls -l stdio.h

 

开始的-代表文件,-后面有9个字符,三个三个为一组,分类

 

第一组:文件所有者

第二组:用户组(相当于qq群..)

第三组:其他用户

 

root root 代表root用户组的文件所有者root

 

-没权限

r读

w写

x可执行

 

 

 

第一步:whoami 查看我是谁

第二步:cat /etc/group 查看到root组的群号是0

第三步:cat/etc/passwd

解读:

我的蜜罐子你叫做呼号

改一下权限(这个以后会学)

然后ls -l,gedit stdio.h 就会发现编辑器上没有只读的限制了。

3.命令:

ls –help

ls -a  显示所有文件(包括隐藏文件)

4.命令使用方式和技巧

(其实好像是manual的简写)

命令printf aaa

有一个函数也叫printf

如果直接输入 man ls

那么其实查询的是命令

 

敲一下 man man 看一下手册说明

原来输入man printf的时候查询的是第一章节的内容,

所以以后查询的时候指定第三个章节好了,

自动补全: 按tab让它自动补全

05:常用命令:ls

 

1.ls -l -a -h (-human更人性化)

ls -lah

 

2.ll (是ls -l-a的一个别名)

 

3.

(.. 和 . 算两个文件夹)

 

4.ls stdio.h 看看有没有这个文件,如果有stdio.h就会显示出这个名字

  ls *.c

  ls te* 找te开头的

  ls ?.c 只匹配一个字符的

  ls [1-9].?

5.touch 如果文件不存在,则创建文件

        如果文件存在,文件修改时间就会变成当前时间

 

   touch *.c 把所有.c文件改成当前时间

   touch \*.c (这时创建了一个文件,不是通配符,而是转义字符)

 

6.常用命令:重定向、more、管道

 

1.ls > test.txt

把ls显示到屏幕的东西写到test.txt中(覆盖)

 

2.cat /usr/include/stdio.h

 

3.more /usr/include/stdio.h(分屏显示)

 

4.管道: cat stdio.h | more

 

5.ls | grep std 输入的是ls 输出的要grep

7.常用命令:clear、cd、pwd

1.clear 或者 ctrl+l

 

2.cd .. . 

  cd什么都不加或者加~ 去到用户主目录

  cd – 回到上一次进入的目录

 

8.常用目录:mkdir、rmdir、rm

 

1.mkdir创建目录 参数-p可以递归创建目录库

 

mkdir ./a/b/c -p

 

2.rmdir 只能删除空的文件夹

 

mkdir a 加a这个参数

 

3.rm a -r 删除掉这个文件夹

 

  -f 不进行提示

 

删除所有文件:rm * -rf 用这个时候小心

 

因为可能会出现这种情况:

rm * .png -rf (中间多了一个空格结果导致所有文件和.png都被删除)

 

9.常用命令:grep

 

  1. 重定向:

touch 1.txt

touch 2.txt

cat 1.txt 2.txt > abc.txt

 

2.检索:

 

按行的搜索Mike并标记: grep a.txt Mike -n

 

3.grep a.txt -i(忽略大小写) -n(显示行数) -v(取反:即匹配到的都不显示,显示相反的)

 grep a.txt -niv

 

 grep a test.txt -ni

 grep “a” test.txt -ni

 grep ‘a’ text/txt -ni

 看起来好像是一样的,加不加双引号都行

 

 但是有一个问题:如果文本中有 

这样的,

 

grep 1 2 3 test.txt -ni

查找1或者2或者3

这样就不好了,所以最好加上双引号

 

grep ‘1 2 3’ test.txt -ni

grep ^a test.txt -ni

grep a$ test.txt -ni

 

里面还可以加各种正则表达式

10.常用命令:findcpmvfile

 

1.ls | grep abc

 

 

2.find ./ -name *.c

 

=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-

 

find ./ -size +12k -size -5M

 

3.cp 01.c 02.c

 

+++++ cp abc/ cba -r (递归的拷贝)

 

 

要是不加-v就会感觉卡住没提示,所以最号加-v

 

 

4.mv mike.c ../

 

5,file查看文件类型

 

hello.exe word.txt

 

 

10.常用命令:tar、gzip

 

1.磁带归档(打包)

 

 

tar -cvf  (c代表create v代表进度 f代表file) f必须放在最后

 

tar -cvf aaaa.tar 1.txt 2.txt /cmd /floder

 

或者

 

tar -cvf aaaa.tar *

2.解包:

 

tar -xvf aaaa.tar (什么都不写 默认是在当前路径)

l  tar只负责打包、解包,不进行压缩

打包: tar -cvf xxx.tar 需要打包的文件

解包: tar -xvf xxx.tar (不指定路径,默认在当前路径解包)

 

   解包指定路径: tart -xvf xxx.tar -C xxxxxx(路劲)

(很特别,如果想指定某个目录,必须加-C)

 

3.文件压缩

 

 如何查看某个目录大小:

du ./目录 -h

 

gzip 压缩tar包

gzip  xxx.tar 自动在当前路径生成xxx.tar.gz

gzip -d xxx.tar.gza

 

压缩打包:tar -zvcf xxx.tar.gz 所需文件

解压解包:tar -xzvf xxx.tar.gz

 

将当前目录的都所有文件压缩打包:tar -cvzf xxx.tar.gz *

 

压缩打包:tar -cjvf xxx.tar.bz2 所需文件

解压打包:tar -xjvf xxx.tar.bz2 -C 指定路径

 

zip -r test * 把所有的压缩叫test(必须要加-r)

unzip -d ./ test.zip

(为了兼容windows的)

du ./cmd/ -h

常用命令which

 

which ls

which gc

which sudo

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

这样的,

 

grep 1 2 3 test.txt -ni

查找1或者2或者3

这样就不好了,所以最好加上双引号

 

grep ‘1 2 3’ test.txt -ni

grep ^a test.txt -ni

grep a$ test.txt -ni

里面还可以加各种正则表达式

 

posted @ 2018-09-26 21:14  hh9515  阅读(625)  评论(0编辑  收藏  举报