Linux基础一

1.什么是操作系统

如智能机器人,智能家居等,用C语言直接操作硬件,但我们用手机QQ发送消息时,QQ是应用程序,无法直接操作硬件,这个时候,操作系统就在应用程序和硬件中起媒介作用,让应用程序得以间接操作硬件。应用程序可以在操作系统上运行,操作系统可以直接操控硬件,这就是操作系统的作用。同时,操作系统支持让一个程序(如QQ)支持在不同的设备上(华为等手机)运行而不用每个品牌都有一个对应版本的QQ。

2.Linux的发展历史

1969年,Ken Tompson为了能在一台闲置的电脑上运行“星际旅行”游戏,花了一个月的时间,编写出了UNIX的原型。

1970年,汤普逊在BCPL的基础上设计出了B语言,并且用B语言写出了第一个UNIX操作系统。但因为B语言的跨平台性比较差,很难移植到其他电脑上,于是他和丹尼斯(Dennis Ritchie)一起设计出了C语言,并迫不及待的用C语言完全重写了现在大名鼎鼎的UNIX。

后来因为UNIX闭源,Andrew S.Tanenbaum教授为了教学开发了MINIX(nini-UNIX)。

1991年4月,林纳斯·托瓦兹(学生)开始酝酿并着手编制自己的操作系统。
1991年的10月5日,林纳斯·托瓦兹在发布消息,正式向外宣布Linux内核的诞生。而因为Linux的不断吸取广大使用者的意见进行改进,及unix和minix的版权纠纷,linux顺势崛起。

3.命令介绍

页面放大:ctrl+shift+”+”
页面缩小:ctrl+”-“

. 表示:当前路径
..表示:当前路径的上一层路径
没有…及以上,如果想要跳到上上层路径,可以使用绝对路径或者“cd../..”

ls:

ls:显示当前路径下的文件及文件夹的名字
ls /bin:查看根目录下的/bin文件夹下的东西
ls Document:查看当前路径下的Document下的所有东西
ls -a:查看隐藏文件
ls -l:以列表方式查看当前路径下的文件
ls -l -h:以合适的单位显示文件的大小
ls -a -l -h = ls -alh = ls -lah(作用一样)
ls *.txt:显示所有以.txt结尾的文件
ls *.t?t:显示所有以.t(任意一个字符)t结尾的文件
ls *.t[xn]t:显示所有以.txt或.tnt结尾的文件
ls *.t[a-x]:同上,a-x指从a到x
ls \*a:查找文件名为*a的文件

cd:

cd Desktop:进入Desktop文件
cd..:返回上一级目录
cd- :返回上一次操作的目录(类似遥控中的回看)
cd~:切换到当前用户的主目录(/home/用户目录)

pwd:显示当前操作的路径(绝对路径)
clear:清屏,也可以用快捷键ctrl+l
tab键:用来自动补全
touch:创建文件
tree:以目录树的方式显示文件结构

输出重定向:将原来要显示的东西重新定位显示的方向

ls -ahl >ls.txt:将ls -ahl命令要显示的东西在终端上不显示,覆盖式写入ls.txt中(类似于py中的”w”)。
ls -ahl >>ls.txt:将ls -ahl命令要显示的东西在终端上不显示,追加式写入ls.txt中(类似于py中的”w+”)。

分屏显示

字符为“more”
eg:more test.txt
如果文件夹中的内容一屏显示不下,可以按空格键,一屏看完再看一屏;如果一屏能显示,则正常显示。
但一般很少单独用more,更多的是和管道|一起用。

管道

字符为“|”
eg:ls -ahl | more
一次只能出现两个命令,但用管道的话,可以将ls -ahl的值暂时存储在管道中,more从管道中取值

创建文件夹

字符为“mkdir”
eg:mkdir test.py
mkdir A/B/C -p:递归创建A文件夹,A下创建B,B下创建C文件夹

删除文件夹

字符为“rmdir”
只能删除空目录

删除文件

字符为“rm”
可删除任意文件但不能删除文件夹,且不会放入回收站
rm test -r,可删除文件及文件夹,递归的删
rm test -i,交互的删除文件,会进行提示是否删除
rm test -f, 强制的删除,忽略不存在的文件,无需提示

ln软链接与硬链接

格式:
软:ln -s 源文件 链接文件
硬:ln 源文件 链接文件
eg:
ln -s test.txt softlink_test.txt
ln test.txt hardlink_test.txt
区别:软链接相当于windows中的快捷方式,源文件被删了则软链接也无法使用;硬链接则相当于一个文件的两个名字,删除了源文件,把源文件名指向源文件的线断了,但硬链接还是指向源文件。

查看和合并文件:cat

  • cat 01.py >laowang.txt:把查看的内容copy给laozhang.txt
  • cat 01.py 02.py:查看01.py和02.py
  • cat 01.py 02.py >laoliu.txt:把查看的两个文件的内容赋值给laoliu.txt

文本搜索:grep

选项 含义
-v 显示不包含匹配文本的所有行(相当于求反)
-n 显示匹配行及行号
-i 忽略大小写
eg:

'''
python@ubuntu:~/Desktop$ grep -n 'a' test.txt
3:a.txt
6:java

python@ubuntu:~/Desktop$ grep -n -i 'a' test.txt
2:A
3:a.txt
6:java

python@ubuntu:~/Desktop$ grep -n -v 'a' test.txt
1:1.py
2:A
4:b.txt
5:c
7:python
8:t1.py
9:test.txt
'''

除此之外,’’中也可以是正则表达式

查看历史命令:history

帮助文档:help,man

eg:
ls –help
cd –help
man ls

查找文件:find

常用用法:
命令 含义
find ./ -name test.sh 查找当前目录下所有名为test.sh的文件
find ./ -name ‘*.sh’ 查找当前目录下所有后缀为.sh的文件
find ./ -name “[A-Z]*“ 查找当前目录下所有以大写字母开头的文件
find /tmp -size 2M 查找在/tmp 目录下等于2M的文件
find /tmp -size +2M 查找在/tmp 目录下大于2M的文件
find /tmp -size -2M 查找在/tmp 目录下小于2M的文件
find ./ -size +4k -size -5M 查找当前目录下大于4k,小于5M的文件
find ./ -perm 0777 查找当前目录下权限为 777 的文件或目录

grep和find的差别是,grep是查找文件中的内容,而find是查找文件

拷贝:cp

常用用法
-a 该选项通常在复制目录时使用,它保留链接、文件属性,并递归地复制目录,简单而言,保持文件原有属性。
-f 已经存在的目标文件而不提示
-i 交互式复制,在覆盖目标文件之前将给出提示要求用户确认
-r 若给出的源文件是目录文件,则cp将递归复制该目录下的所有子目录和文件,目标文件必须为一个目录名。
-v 显示拷贝进度
eg:
cp a/* b -r:拷贝a文件夹下的所有文件到b文件中
cp a b -r:拷贝a文件夹到b文件中
cp *.t?t b:拷贝所有以.t?t结尾的文件到b文件夹下

剪切文件:mv

命令说明
-f 禁止交互式操作,如有覆盖也不会给出提示
-i 确认交互方式操作,如果mv操作将导致对已存在的目标文件的覆盖,系统会询问是否重写,要求用户回答以避免误覆盖文件
-v 显示移动进度
eg:
mv a b:mv a整体文件夹到b文件夹里面去
mv a/* b:mv a文件夹下的所有文件到b文件夹里面去
mv 1.tyt 1.txt:相当于重命名1.tyt

打包压缩

  • 打包:tar -cvf Test.tar *
  • 解包:tar -xvf Test.tar
  • 压缩:gzip Test.tar
  • 解压缩:gzip -d Test.tar.gz
  • 打包压缩:tar -zcvf test.tar.gz *
  • 解压缩:tar -zxvf test.tar.gz
  • 解压缩到指定文件:tar -zxvf test.tar.gz -C chen/
  • bzip2打包压缩:tar -jcvf test.tar.bz2 *
  • bzip2解压缩:tar -zxvf test.tar.bz2