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
- 重定向:
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.常用命令:find、cp、mv、file
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
里面还可以加各种正则表达式
C语言基础 (1) 操作系统介绍,linux入门的更多相关文章
- Python与C语言基础对比(Python快速入门)
代码较长,建议使用电脑阅读本文. 10分钟入门Python 本文中使用的是Python3 如果你曾经学过C语言,阅读此文,相信你能迅速发现这两种语言的异同,达到快速入门的目的.下面将开始介绍它们的异同 ...
- Go语言基础之操作Redis
Go语言操作Redis 在项目开发中redis的使用也比较频繁,本文介绍了Go语言如何操作Redis. Redis介绍 Redis是一个开源的内存数据库,Redis提供了5种不同类型的数据结构,很多业 ...
- Go语言基础之操作MySQL
Go语言操作MySQL MySQL是常用的关系型数据库,本文介绍了Go语言如何操作MySQL数据库. Go操作MySQL 连接 Go语言中的database/sql包提供了保证SQL或类SQL数据库的 ...
- C语言基础课程 第一课 Linux环境配置小实战httpserver
网段我需要改成如下 10.重启网络服务 并且查看ip 11. 打开windows的浏览器数人Linux的IP地址出现REDHAT的欢迎界面 11.进入目录 12.编写一个简单的html脚本 13 ...
- day05<Java语言基础--数组>
Java语言基础(数组概述和定义格式说明) Java语言基础(数组的初始化动态初始化) Java语言基础(Java中的内存分配以及栈和堆的区别) Java语言基础(数组的内存图解1一个数组) Java ...
- 2.JAVA语言基础部分
1.语言基础 二进制操作 "&"按位与:a与b同时为1结果为1,否则为0: "|"按位或:a与b其中任一个为1,否则为0 "~"按位 ...
- Java语言基础(数组)
Java语言基础(数组概述和定义格式说明) A:为什么要有数组(容器) 为了存储同种数据类型的多个值 B:数组概念 数组是存储同一种数据类型多个元素的集合.也可以看成是一个容器. 数组既可以存储基本数 ...
- 【Linux基础】Unix与Linux操作系统介绍
一.Unix和Linux操作系统概述 1.Unix是什么 UNIX是一个计算机操作系统,一个用来协调.管理和控制计算机硬件和软件资源的控制程序. 2.Unix特点 (1)多用户:在同一时刻可以有多个用 ...
- Linux入门所必备的Linux命令和C语言基础
文件和目录(底部有视频资料) cd /home 进入 '/ home' 目录' cd - 返回上一级目录 cd -/- 返回上两级目录 cd 进入个人的主目录 cd ~user1 进入个人的主目录 c ...
随机推荐
- jquery根据滚动条动态加载数据
PHP Code <div id="container"> <?php $query=mysql_query("select * from conten ...
- APUE学习笔记7——进程间通信
1 管道 管道一般是一种半双工的进程间通信方式,只能够在具有公共祖先的进程之间使用,比如一个管道由一个进程创建,然后该进程调用fork,之后父.子进程就可以使用该管道. 管道是调用pipe函数创建的. ...
- APUE学习笔记5——信号、信号集和进程信号屏蔽字
1 信号传递过程 当引发信号的事件发生时(如软硬件异常.软件定时.终端产生信号或调用kill函数等等),会产生信号,内核会发送给目标进程. 在信号产生到信号传递给目标进程之间的时间间隔内,称该信号为未 ...
- 立即调用函数(IIFE)
定义: IIFE:立即调用的函数表达式,声明函数的同时立即调用这个函数. 语法: IIFE的常用写法:这两种写法的作用相同,只是表现形式不同而已,()只是起了自执行的作用 (function(){.. ...
- css font-family 字体组
介绍图片来自: http://www.runoob.com/cssref/css-websafe-fonts.html
- Vue引用第三方datepicker插件无法监听datepicker输入框的值
一.背景 在Vue项目中使用了第三方的datepicker插件,在选择日期后vue无法检测到datepicker输入框的变化 <label class="fl">日期: ...
- [剑指offer] 5. 用两个栈实现队列+[剑指offer]30. 包含min函数的栈(等同于leetcode155) +[剑指offer]31.栈的压入、弹出序列 (队列 栈)
c++里面stack,queue的pop都是没有返回值的, vector的pop_back()也没有返回值. 思路: 队列是先进先出 , 在stack2里逆序放置stack1的元素,然后stack2. ...
- NOIP2018提高组省一冲奖班模测训练(四)
NOIP2018提高组省一冲奖班模测训练(四) 这次比赛只AC了第一题,而且花了40多分钟,貌似是A掉第一题里面最晚的 而且还有一个半小时我就放弃了…… 下次即使想不出也要坚持到最后 第二题没思路 第 ...
- 2.WHERE中使用=,>,>=,<,<=,<>,!=比较符号
//查询工资大于等于2000的人 select * from person salary >= 2000; //查询名字等于scott的人 select * from per ...
- 【转】C# winform 加载网页 模拟键盘输入自动接入访问网络
[转]C# winform 加载网页 模拟键盘输入自动接入访问网络 声明: 本文原创,首发于博客园 http://www.cnblogs.com/EasyInvoice/p/6070563.html ...