Linux-Day1笔记

一、Linux系统简介

1.Linux发展史

1946年世界上的第一台计算机就产生了,刚产生出的计算机并没有操作系统,需要手工输入

人机矛盾:1. 只能一个人使用 2.人工速度慢于计算

产生操作系统(根据人的需求产生)

1965年麻省理工,ATT,贝尔实验室去研发一套操作系统,想要允许300台操作并使用

1969年实现进度缓慢,计划失败了

1969-1970 肯.汤姆逊移植了一个软件,定制一套标准,Unix系统

1970 推出了Unix系统,Unix系统元年,操作系统元年,电脑底层时间 1970

1985 年推出了windows

Unix是一个传统的美国人思维,按年,按月,或者按设备收美金

林纳斯.托瓦兹看不惯Unix

1991年模拟Unix写了一套操作系统Linux

开源,当时也只有大约100开发者,核心开发者大约5人

1993年Linux使用者大约10w数量级

2.Linux的应用领域【掌握】

IT服务器Linux、Unix、Windows三分天下,Linux系统可谓后起之秀,特别是最近几年来,服务器端Linux操作系统不断地扩大市场份额,且每年增长势头迅猛,并且开始对Windows及Unix服务器市场的地位构成严重的威胁。Linux占80%左右(包括CentOS,Ubuntu等),Windows占12.8%,solaris占6.2%。可见,在未来的服务器领域市场里Linux是大势所趋。

Linux作为企业级服务器的应用十分广泛,利用Linux系统可以为企业架构WWW服务器、数据库服务器、负载均衡服务器、邮件服务器、DNS服务器、代理服务器、路由器等,不但使企业降低了运营成本,同时还获得了Linux系统带来的高稳定性和高可靠性,且无须考虑商业软件的版权问题

Linux操作系统应用的三大领域

a.企业级服务器应用领域【利用Linux系统可以为企业架构WWW服务器、数据库服务器、负载均衡服务器、邮件服务器、DNS服务器、代理服务器、路由器等,不但使企业降低了运营成本,同时还获得了Linux系统带来的高稳定性和高可靠性,且无须考虑商业软件的版权问题,随着Linux在服务器领域的广泛应用,近几年来,该系统已经参透到电信、金融、政府、教育、银行、石油等各个行业,同时各大硬件厂商也相继支持Linux操作系统。这一切表明,Linux在服务器市场前景光明。同时,大型、超大型互联网企业都在使用Linux系统作为其服务器端的程序运行平台,全球及国内排名前十的网站使用的几乎都是Linux系统,Linux已经逐步渗透到了各个领域的企业里】

b.嵌入式Linux系统应用领域【由于Linux系统开放源代码,功能强大、可靠、稳定性强、灵活而且具有极大的伸缩性,再加上它广泛支持大量的微处理体系结构、硬件设备、图形支持和通信协议,因此,在嵌入式应用的领域里,从因特网设备(路由器、交换机、防火墙,负载均衡器)到专用的控制系统(自动售货机,手机,PDA,各种家用电器),LINUX操作系统都有很广阔的应用市场。特别是经过这几年的发展,它已经成功地跻身于主流嵌入式开发平台。例如《在智能手机领域,Android Linux已经在智能手机开发平台牢牢地占据了一席之地。嵌入式系统应用领域是另一个应用领域】

c.个人桌面Linux应用领域【所谓个人桌面系统,其实就是我们在办公室使用的个人计算机系统,例如:Windows xp、windows 7、Mac等。Linux系统在这方面的支持也已经非常好了,完全可以满足日常的办公需求】

服务器、云计算、嵌入式、政府、企业、影视、超算、桌面

3.Linux的特点

开放
多用户
多任务
出色的速度性能
良好的用户界面
丰富的网络功能
可靠的系统安全
良好的移植性
具有标准兼容性

4.系统的使用

​ 严格来讲,Linux不是一个操作系统,Linux只是一个操作系统中的内核。内核是什么?内核建立了计算机软件与硬件之间通讯的平台,内核提供系统服务,比如文件管理、虚拟内存、设备I/O等。

​ 既然Linux只是一个内核。那么我们通常所说的Linux操作系统又是什么?我们通常所说的Linux,指 GNU/Linux ,即采用Linux内核的GNU操作系统。是的,操作系统的实际名称是GNU。什么是GNU?GNU代表GNU’s Not Unix。可以说是一个操作系统又可以说是一种规范

参考资料:https://blog.csdn.net/baidu_32134295/article/details/52439823

5.Linux组成

Linux内核:
​ 操作系统的心脏,运行程序和管理硬件设备的核心程序
Linux Shell:
​ 系统的用户界面,提供用户与内核进行交互操作的一种接口
Linux 文件系统:
​ 文件存储在磁盘等存储设备上的组织方法
Linux 应用程序
​ 标准的程序集,比如文本编辑,编程语言,Window,办公套件,Internet工具,数据库等

6.Linux版本【了解】

RedHat :性能稳定,老牌的linux发行版。收费的是RedHat Enterprise Linux(RHEL,redhat的企业版)

Fedora :界面比较好看,RedHat的社区免费版,非常强大。

Centos :可以算是RHEL的克隆版,但它最大的好处是免费
SUSE :德国最著名的linux发行版

Debian:算是迄今为止最遵循GUN规范的linux系统(GUN的目标就是创建一套完全自由的操作系统)

Ubuntu :Debian的后继或是一个分支,对于初学者而言比较友好

Ubuntu的优点:

​ a.简便易用,对于初学者,Ubuntu系统算是非常简单的了

​ b.版本更新定期而频繁,每六个月就有一个新的ubuntu版本

​ c.使用者非常多,支持的社区也很多

​ d.标准化

7.Linux VS Windows

见图

二、环境安装

1.VMWare安装

VMWare是一个虚拟机【Virtual Machine】

虚拟机是在我们的物理机中使用软件模拟出来的一个操作系统,虚拟机和物理机是寄宿和被寄宿的关系

虚拟机是一个软件,只不过该软件可以 被当做一个操作系统使用

2.Ubuntu系统安装

Ubuntu

【可能会出现的问题】

1.CPU 不支持虚拟化,见图

解决办法:
https://jingyan.baidu.com/article/b24f6c82c11ad286bfe5da23.html

BIOS:全称(Base  Input  Output System),中文是基本输入输出系统
虽然BIOS成百上千,但功能都是一样的,对硬件信息进行保存设置,所以设置方法上也大同小异,90%以上的电脑设置方法都差不多,进入BIOS按键也就那几个<del,Esc,F1,F2,F8,F9,F10,F11,F12>

英文:Press Esc to enter SETUP
中文:按Esc键进入BIOS设置

英文:Press F2 go to Setup Utility
中文:按F2去设置BIOS实用程序

英文:Press DEL to enter EFI BIOS SETUP
中文:按Del键进入EFI模式的BIOS进行设置

英文:Press Del run Setup
中文:按Del键运行BIOS设置

英文:Press F1 run Setup
中文:按F1键运行BIOS设置

英文:Press <F2> to Setup
中文:按F2进行BIOS设置

【t400进入bios的方法:按f1】
1.首先需要确定计算机型号和菜谱,BIOS(基本输入输出系统)系统型号,因为过老的计算机是不支持虚拟机化的
2.检测方式:
	开机时按 F2,F12,DEL,ESC 等键就可以进到 BIOS[至于按哪个 看电脑品牌]
3.进入 BIOS 后,找到 Configuration 选项或者 Security选项, 然后选择 Virtualization或者 Intel Virtual Technology 就可以开始操作了
4.然后回车 将其设置为 Enabled
5.保存 BIOS 设置重启计算机
6.进入操作系统 右键 选择任务管理器 - 性能 - CPU - 查看虚拟化设置(已启动表示设置成功了, 可以装虚拟机了)

不同型号的电脑进入bios的按键总结:

见图

3.VMWare Tools安装

作用:保证两个系统之间可以进行文件共享【ctrl+c ,ctrl + v】

4.快照

将初始状态保存为一个快照,相当于将当前的操作系统备份,如果后期在使用的过程中出现问题,只需要恢复快照即可

三、系统设置

1.外观【图形化界面】

系统设置

2.账户和密码

系统账户:

​ a.普通用户:自己创建的用户,平时尽量使用普通用户

​ b.root用户:是系统中唯一的超级管理员,它具有等同于操作系统的权限,也被称为超级用户,相当于windows的system用户,注意:普通用户也可以调用root用户的指令【系统设置】

3.主机名,root用户密码等

a.root用户密码:

su root
输入原始密码
passwd root
输入新的密码
确认新的密码
reboot

b.修改主机名

su root
输入新的密码
vim /etc/hostname  将其中的主机名修改为自定义的
vim /etc/hosts   将第二行中的主机名修改为自定义的
	注意:进入vim之后,按下a或者i进入编辑状态,修改完内容,按下esc退出编辑状态,按下:wq表示保存退出
reboot	

c.修改用户名

su root
vim /etc/shadow
cd ..
mv rock liujia
vim /etc/passwd
reboot

d.可能会出现的问题

问题:
liujia@liujia01:~$ sudo useradd user1
[sudo] liujia 的密码: 
liujia 不在 sudoers 文件中。此事将被报告。
liujia@liujia01:~$ 

解决:
root@liujia01:/home/liujia# vim /etc/sudoers
	添加:普通用户   ALL=(ALL:ALL) ALL	

三、目录结构

1.Windows文件系统

window系统下,打开计算机,看到的都是一个个的盘符:c盘等

每个驱动器都有自己的目录结构

2.Linux文件系统

ubuntu没有盘符这个概念,只有一个根目录/,所有文件都在该目录的下面

注意:目录也被当做文件处理

liujia@liujia01:~$ ls

liujia@liujia01:~$ ls -l

liujia@liujia01:~$ ls -l /

liujia@liujia01:~$ ls -l /etc/
Linux目录结构:  

#/ : 根目录  #Linux下有且仅有一个根目录,在终端输入/home,表示从根目录开始,进入hom目录
/boot : boot 配置文件、内核和其它启动时所需的文件  #一些连接文件和镜像文件
#/etc :存放系统配置有关的文件   #存放所有系统管理有关的文件【配置文件】,用户信息保存该目录下,包含用户名和密码。主机名
#/home :存放普通用户目录 #Linux系统是一种典型的多用户系统,是用户的主目录,每个普通用户在home目录下都有一个自己的目录,一般该目录名以当前用户名命名
/mnt :硬盘上手动挂载的文件系统	 
	#挂载:将硬盘连接到文件系统中
  	#mnt默认是空的,为了让用户临时挂载别的文件系统
/media :自动挂载(加载)的硬盘分区以及类似CD、数码相机等可移动介质。	#Linux系统会自动识别一些设备,例如:优盘,光驱,当识别之后,会被挂载到该目录下
/cdrom :挂载光盘 
/opt : 存放一些可选程序,如某个程序测试版本,安装到该目录的程序的所有数据,库文件都存在同个目录下  #给主机额外安装的软件的目录
#/root : 系统管理员的目录,对于系统来说,系统管理员好比上帝
#超级管理员的用户主目录,可以对系统做任何操作,一般尽量避免使用root
#/bin :存放常用的程序文件,binary,存放的是二进制文件
/sbin :系统管理命令,这里存放的是系统管理员使用的管理程序 
#/tmp :临时目录,存放临时文件,temp,临时,系统会定期清理该目录下的内容
#/usr :在这个目录下,你可以找到那些不适合放在/bin或/etc目录下的额外的工具。比如游戏、打印工具等。/usr目录包含了许多子目录: 
#用户的很多应用程序或者文件都在该目录下,相当于window下的program files
	/usr/bin目录用于存放程序;
	/usr/share用于存放一些共享的数据,比如音乐文件或者图标等等;
	/usr/lib目录用于存放那些不能直接 运行的,但却是许多程序运行所必需的一些函数库文件。
	/usr/local : 这个目录一般是用来存放用户自编译安装软件的存放目录;一般是通过源码包安装的软件,如果没有特别指定安装目录的话,一般是安装在这个目录中。
	/usr/bin/ 非必要可执行文件 (在单用户模式中不需要);面向所有用户。
	/usr/include/ 标准包含文件。
	/usr/lib/ /usr/bin/和/usr/sbin/中二进制文件的库。
	/usr/sbin/ 非必要的系统二进制文件,例如:大量网络服务的守护进程。
	/usr/share/ 体系结构无关(共享)数据。
	/usr/src/ 源代码,例如:内核源代码及其头文件。
	/usr/X11R6/ X Window系统 版本 11, Release 6.
	/usr/local/ 本地数据的第三层次,具体到本台主机。通常而言有进一步的子目录, 例如:bin/、lib/、share/.

/var :该目录存放那些经常被修改的文件,包括各种日志、数据文件;
    #/var/cache/ 应用程序缓存数据。这些数据是在本地生成的一个耗时的I/O或计算结果。应用程序必须能够再生或恢复数据。缓存的文件可以被删除而不导致数据丢失。
    /var/lib/ 状态信息。 由程序在运行时维护的持久性数据。 例如:数据库、包装的系统元数据等。
    /var/lock/ 锁文件,一类跟踪当前使用中资源的文件。
    /var/log/ 日志文件,包含大量日志文件。
    /var/mail/ 用户的电子邮箱。
    /var/run/ 自最后一次启动以来运行中的系统的信息,例如:当前登录的用户和运行中的守护进程。现已经被/run代替[13]。
    /var/spool/ 等待处理的任务的脱机文件,例如:打印队列和未读的邮件。
    /var/spool/mail/ 用户的邮箱(不鼓励的存储位置)
    /var/tmp/ 在系统重启过程中可以保留的临时文件。
    
/lib : 目录是根文件系统上的程序所需的共享库,存放了根文件系统程序运行所需的共享文件。这些文件包含了可被许多程序共享的代码,以避免每个程序都包含有相同的子程序的副本,故可以使得可执行文件变得更小,节省空间。
/lib32 : 同上
/lib64 : 同上
#/lost+found : 该目录在大多数情况下都是空的。但当突然停电、或者非正常关机后,有些文件就临时存放在;
/dev : 存放设备文件
/run :代替/var/run目录,
/proc : 虚拟文件系统,可以在该目录下获取系统信息,这些信息是在内存中由系统自己产生的,该目录的内容不在硬盘上而在内存里;
	cat /proc/cpuinfo
	
/sys : 和proc一样,虚拟文件系统,可以在该目录下获取系统信息,这些信息是在内存中由系统自己产生的,该目录的内容不在硬盘上而在内存里;

#总结:
/etc
/home
/root
/tmp
/usr
/bin,/sbin,/usr/bin,/usr/sbin,
	举例:ls命令存在/bin/ls目录下,
  	/bin,/usr/bin是给系统用户使用的指令,/sbin,/usr/sbin给root使用的指令
  	/usr/bin,/usr/sbin是/bin,/sbin,是系统预设置的命令
/var 日志文件
.     当前目录
..     上一级目录
../..  上上一级目录
注意:在根目录下,.和..代表都是当前目录[/]
相对路径:从当前位置开始的路径
绝对路径:从根目录开始的路径      /home/xx  /etc/xxx等

演示命令:
liujia@liujia01:/$ cd /home/
liujia@liujia01:/home$ pwd
/home
liujia@liujia01:/home$ cd liujia/    #相对路径
liujia@liujia01:~$ pwd
/home/liujia
liujia@liujia01:~$ cd ..
liujia@liujia01:/home$ cd /home/liujia/    #绝对路径
liujia@liujia01:~$ cd /
liujia@liujia01:/$ pwd
/
liujia@liujia01:/$ cd .
liujia@liujia01:/$ pwd
/
liujia@liujia01:/$ cd ..
liujia@liujia01:/$ pwd
/

四、快捷键

#ctrl + alt + t ;快速打开终端

ctrl + shift +  + :放大终端界面,放大终端字体
ctrl + -:缩小终端和字体

tab键:自动补全命令或者文件名称

ctrl + f:前进一个字符
ctrl + b:后退一个字符

#ctrl + a:回到行首
#ctrl + e:回到行尾

#ctrl + w:向左删除一个单词
#ctrl + u :向左删除全部内容
ctrl + k:向左删除全部内容

ctrl + y:可以恢复ctrl + w/u/k删除的内容

ctrl + l:清屏【实际上相当于翻页】

ctrl + c:中断命令

ctrl + d;退出终端

五、安装软件

Ubuntu的软件安装一般分为在线安装和离线安装

一般LInux发行版分为两大部分:
	a.RedHat系列:RedHat,Centos,Fedore等
	b.Debian系列:Debian,Ubuntu等
	
yum和apt-get的区别
	a.apt属于Debian,Ubuntu等的包管理工具
	b.yum属于RedHat,Centos,Fedore的包管理工具
	c.yum比较与apt比较落后

1.apt

软件管理 apt ( Advanced Packaging Tool ) , 他可以自动下载、配置、安装软件包

apt-get是apt早期的版本,从Ubuntu16.04版本开始,一般使用的apt

#注意:package表示需要安装的软件的名称
apt-cache search package 搜索包
apt-cache show package 获取包的相关信息,如说明、大小、版本等
sudo apt-get install package 安装包
sudo apt-get install package –reinstall 重新安装包
sudo apt-get -f install 强制安装
sudo apt-get remove package 删除包
sudo apt-get remove package –purge 删除包,包括删除配置文件等
sudo apt-get autoremove 自动删除不需要的包
sudo apt-get update 更新源
sudo apt-get upgrade 更新已安装的包
sudo apt-get dist-upgrade 升级系统
sudo apt-get dselect-upgrade 使用 dselect 升级
apt-cache depends package 了解使用依赖
apt-cache rdepends package 了解某个具体的依赖
sudo apt-get build-dep package 安装相关的编译环境
apt-get source package 下载该包的源代码
sudo apt-get clean && sudo apt-get autoclean 清理下载文件的存档
sudo apt-get check 检查是否有损坏的依赖

apt的配置文件

/etc/apt/sources.list 设置软件包的获取来源
/etc/apt/apt.conf apt配置文件
/etc/apt/apt.conf.d apt的零碎配置文件
/etc/apt/preferences 版本参数
/var/cache/apt/archives/partial 存放正在下载的软件包
/var/cache/apt/archives 存放已经下载的软件包
/var/lib/apt/lists 存放已经下载的软件包详细信息
/var/lib/apt/lists/partial 存放正在下载的软件包详细信息

2.dpkg

dpkg是Debian软件包管理器的基础,被用于安装、卸载和供给和.deb软件包相关的信息,dpkg本身是一个底层的工具,本身并不能从远程包仓库下载包以及处理包的依赖的关系,需要将包从远程下载后再安装

sudo dpkg -i package.deb 安装包
sudo 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 配置包

3.pip

安装pip

pip:apt install python-pip
pip3:apt install python3-pip

更新pip

pip:pip install --upgrade pip
pip3:pip3 install --upgrade pip

pip的使用

pip install xxx:安装xxx依赖包
pip list:查看所有已经安装的依赖包
pip freeze:查看新安装的依赖包
pip uninstall xxx:写在xxx依赖包

pip -V:查看pip当前的版本

六、常用命令

1.概述

语法:

command options parameters

​ command :命令,比如ls,pwd,mkdir等

​ options :选项,可以对命令进行控制,根据需求可写可不写

​ parameters:传给命令的参数,可以不写,可以写多个

2.查看帮助文档

1>–help:Linux命令自带的帮助信息

格式:command --help

ls --help

2>man:相当于一个手册,包含了绝大多数命令,可以查看命令的使用说明

man ls

快捷键
空格键:向上翻页
上下箭头键:上下翻行
fn + 左/fn+右,行首和行尾

/xxx,从上往下通过xxx的关键字进行搜索
?xxx,从下往上通过xxx的关键字进行搜索
n:通过关键字搜索之后,定位到下一个关键字的位置
N:通过关键字搜索之后,定位到上一个关键字的位置

q:退出文档

3>history 查看执行过的命令

history    默认获取最近执行的1000条命令
history  num   获取最近执行的num条命令
!num   num表示历史命令的编号,表示执行编号对应的命令

3.文件管理

1>ls:列举出当前工作目录的内容 【list】

-a 用于显示所有文件和子目录(包括隐藏文件)
-A 同-a,但不列出“.”(表示当前目录)和“..”(表示当前目录的父目录)
-l 除了文件名之外,还将文件的权限、所有者、文件大小等信息详细列出来。 (文件大小是字节)
-lh 与-l 类似  只不过文件大小显示的是 KB [默认是按照文件名的 abcd 排序的]
-lht 与-l -lh 类似  排序是按照修改时间降序排的
-lhtr 按照时间升序排
-r 将目录的内容清单以英文字母顺序的逆序显示
-t 按文件修改时间进行排序
-F 在列出的文件名和目录名后添加标志。例如,在可执行文件后添加“*”,在目录名后添加“/”以区分不同的类型
-R 如果目标目录及其子目录中有文件,就列出所有的文件

演示命令:
ls:显示当前路径下的所有内容
ls  相对路径/绝对路径:显示指定路径下的所有内容
ls -l:显示文件的详细信息【类型,权限,所属用户,大小日期】
ls -a:显示隐藏文件 ,简写为ls -al ------>ll
ls -lh:可以按照指定的单位显示文件大小,其内容和-l相同

补充:通过ls -l显示内容
-rw-r--r--  1 root root 3.8K 12月 12 17:59 '\'
-rw-------  1 wyq  wyq  1.8M 12月 11 08:43  core
-rw-r--r--  1 wyq  wyq  8.8K 12月  5 04:11  examples.desktop
drwxr-xr-x  3 wyq  wyq  4.0K 12月 10 19:32  GitProject
drwxr-xr-x 12 wyq  wyq  4.0K 12月 12 21:31  Pycharm

#第一列
#1.文件类型
	-:文件
  	d:目录
    b:块设备文件
    c:字符设备文件,端口设备文件,例如键盘,鼠标等一次性配置
    l:链接文件
    p:管道文件
    s:socket文件
#2.文件权限
	总共九个,分为三组,代表当前用户的权限,和当前用户在同一组中的其他用户的权限,其他用户组中的用户的权限
  	r:可读,read,也可以使用数字4表示
    w;可写,write,也可以使用数字2表示
    x:可执行,execute,也可以使用数字1表示
    -:没有任何权限,也可以使用数字0表示
    
    文件权限表示:
    	a.通过字母表示
      	b.采用数字
         取值范围为0~7
#3.文件和目录的权限类型
	文件:
  		可读:只能允许读取内容
    	可写:可以修改或者编辑该文件
      	可执行:允许将该文件作为一个程序执行
  	目录:
		可读:只能允许显示目录中的内容【子目录,文件】
    	可写:在该目录下可以新建或者删除文件或者目录
      	可执行:表示可以进入该目录,如果没有可执行,进不了目录

#第二列:表示文件个数
	如果是文件,则数目为1,如果是目录,则该目录下的所有内容的个数
	
#第三列和第四列
	当前文件的用户和用户所在的组            

#补充:ls和通配符【* ?】使用
ls a*:查询以a开头的文件
ls *a:查询以a结尾的文件
ls ?a:?只能匹配文件名中的任意一位,?a只能匹配文件名第二位为a的文件
ls  [abc].txt,只能匹配a或者b或者c.txt的文件

2>pwd 查看当前的工作目录

演示命令:
pwd

3>查看文件

#cat:查看完整的文件内容,顺序查找
	-n	:显示每一行的行号,包括空行
	-b	:显示每一行的行号,不包括空行
tac:查看完整的文件内容,逆序查找
  
  
head:查看文件内容,头部
tail:查看文件内容,尾部
	#默认显示10条
  	#head/tail -num  filename ,只显示头部或者尾部num条数据


less:查看文件,都会打开一个类似手册的页面,按下q退出
#more:查看文件,内容少的时候,结果和cat相同;内容多的时候,会打开一个类似手册的页面,按下q退出
	#建议:内容少:cat将文件内容输出到终端上;内容多,使用more
  

wc:一次显示文件行数,字节数以及文件名信息 #显示的不是文件内容,是文件的属性
stat:查看文件详细信息,可以获取文件的文件名、大小、权限,最近访问以及最近更改的时间,stat命令的输出信息比ls命令还要详细

file:查看文件的类型

echo:用于在终端输出字符串或变量的值

演示命令:
wyq@Wyq:~/桌面$ ls ?a.txt
aa.txt
wyq@Wyq:~/桌面$ ls [ab]1.txt
a1.txt  b1.txt
wyq@Wyq:~/桌面$ cat aa.txt 
hello
abcjhg
wyq@Wyq:~/桌面$ tac aa.txt 
abcjhg
hello
wyq@Wyq:~/桌面$ cat -n aa.txt 
     1	hello
     2	abcjhg
wyq@Wyq:~/桌面$ head aa.txt 
hello
abcjhg
hello
abcjhg
hello
abcjhg
hello
abcjhg
hello
abcjhghello
wyq@Wyq:~/桌面$ head aa.txt 
hello
abcjhg
hello
abcjhg
hello
abcjhg
hello
abcjhg
hello
abcjhghello
wyq@Wyq:~/桌面$ head -2 aa.txt 
hello
abcjhg
wyq@Wyq:~/桌面$ tail aa.txt 
hello
abcjhg
hello
abcjhg
hello
abcjhg
hello
abcjhghello
abcjhg

wyq@Wyq:~/桌面$ tail -2 aa.txt 
abcjhg

wyq@Wyq:~/桌面$ less aa.txt
wyq@Wyq:~/桌面$ less aa.txt
wyq@Wyq:~/桌面$ more aa.txt 
wyq@Wyq:~/桌面$ wc aa.txt 
 43  40 283 aa.txt
wyq@Wyq:~/桌面$ stat aa.txt 
  文件:aa.txt
  大小:283       	块:8          IO 块:4096   普通文件
设备:801h/2049d	Inode:663066      硬链接:1
权限:(0644/-rw-r--r--)  Uid:( 1000/     wyq)   Gid:( 1000/     wyq)
最近访问:2019-02-26 16:22:26.083946031 +0800
最近更改:2019-02-26 16:22:23.595845195 +0800
最近改动:2019-02-26 16:22:23.599845357 +0800
创建时间:-
wyq@Wyq:~/桌面$ file aa.txt 
aa.txt: ASCII text
wyq@Wyq:~/桌面$ echo "hello"
hello
#|:管道
	格式:命令1 | 命令2
	作用:将一个命令的输出作为另外 一个命令的输入

#重定向:Linux中将原本默认的输出路径做一个修改,将输出放置到一个路径下【本应显示在终端上的内容保存到指定文件中】
#print("hello",file="a.txt")
#>:输出重定向,Linux允许将执行结果重定向到一个文件,
>>:输出重定向,Linux允许将执行结果重定向到一个文件,本应显示在终端上的内容保存到指定文件中
1>  标准正确输出,同上
1>> 标准正确输出,同上  
2> 标准错误输出,同上
2>> 标准错误输出,同上
&> 标准正确输出和标准错误输出,同上
	将1和2结合在一起了
 
演示命令:
wyq@Wyq:~/桌面$ ls
a1.txt  aa.txt  b1.txt  vmware-tools-distrib  笔记-Linux-Day1
wyq@Wyq:~/桌面$ ls > a1.txt
wyq@Wyq:~/桌面$ cat a1.txt 
a1.txt
aa.txt
b1.txt

4>tree 以树形结构去显示目录结构

-d 	只显示文件夹
-f	显示文件的完整路径【绝对路径】
-L 2	:只看前两级的内容

演示命令:
tree -d
tree -f
tree -L num

5>cd 切换工作目录

用法:cd  路径[此处可以是相对路径,也可以是绝对路径]
特殊用法:
cd	切换到当前用户的主目录,注意:用户登录的时候,默认的目录就是用户的主目录
cd ~	切换到当前用户的主目录
cd .	切换到当前目录
cd ..	切换到上一级目录
cd - 	返回上一次切换的目录
cd #	回到当前用户的主目录

6>mv 移动或者重命名文件或者目录

命令格式:mv [参数] 源文件  [目标路径|目标文件名]    ------》可以cd到【文件所在路径下】或者【直接通过路径指明文件】
-i	在目标文件存在的时候会询问是否要覆盖
-b	当冲突的时候,会对源文件进行备份

#mv 文件名1  文件名2  :修改文件名称
#mv  目录名1  目录名2 :修改目录名
#mv  文件名  目录名/ :将指定的文件移动到指定的目录下

7>cp 复制文件或者目录

命令格式:cp [参数] 源文件 目标文件

-i	在目标文件存在的时候会询问是否要覆盖【交互式复制】
-r 若给出的源文件是一目录文件,此时cp将递归复制该目录下所有的子目录和文件。此时目标文件必须为一个目录名
-a 复制的时候保持文件原有属性
-f 对于已经存在的目标文件不提示
-v 显示拷贝进度

演示命令:
wyq@Wyq:~/桌面$ cp aa.txt check/
wyq@Wyq:~/桌面$ cd check/
wyq@Wyq:~/桌面/check$ ls
aa.txt  b1.txt
wyq@Wyq:~/桌面/check$ cd  ..
wyq@Wyq:~/桌面$ ls
aa.txt  check  file1.txt  vmware-tools-distrib  笔记-Linux-Day1
wyq@Wyq:~/桌面$ mkdir text
wyq@Wyq:~/桌面$ cp check text/
cp: -r not specified; omitting directory 'check'
wyq@Wyq:~/桌面$ cp -r check text/
wyq@Wyq:~/桌面$ cd text/
wyq@Wyq:~/桌面/text$ ls
check
wyq@Wyq:~/桌面/text$ cd check/
wyq@Wyq:~/桌面/text/check$ ls
aa.txt  b1.txt

8>创建文件或者目录

8.1>mkdir	创建一个新的目录
	-p:创建出具有嵌套层关系的文件目录
演示命令:
mkdir xxx:创建一个空目录
mkdir -p xx/xx/xx/ :可以创建多级目录
mkdir -p b/{c,d}/{e,f} 可以创建多级目录
	
8.2>touch	创建空白文件,可以设置文件的时间
	名词解释:
	atime:最后一次访问文件或目录的时间【access time】
	mtime:最后一次修改内容的时间【modify time】
	ctime :最后一次改变属性的时间【change time】
	参数:
	-a   修改atime
	-m	修改mtime
	-c	修改ctime
	-d	同时修改atime与mtime
	-t	同时修改atime与mtime,格式{YYYYMMDDhhmm}
	注意:只有-d和-t后面可以指定时间,其他的只能把时间修改为当前时间
	
演示命令:
touch  xxx

9>删除文件或者目录

9.1>rmdir  删除给定的目录,注意:只能删除空文件夹
9.2>rm	删除文件或者目录,可以删除一个目录中的一个或多个文件或目录,也可以将某个目录及其下面所有子文件和目录都删掉

	-r	删除目录,否则删不掉
	-ri	交互式删除,每次删除都会进行询问
	-rf	强制删除文件或目录     #谨慎:确保目录或者文件确实不需要,但是常用
	rm -r xxx
	rm -ri xxx
	rm -rf xxx   常用
	
演示命令:
wyq@Wyq:~/桌面/text/check$ rmdir b
rmdir: 删除 'b' 失败: 目录非空
wyq@Wyq:~/桌面/text/check$ rm b
rm: 无法删除'b': 是一个目录
wyq@Wyq:~/桌面/text/check$ rm -r b
wyq@Wyq:~/桌面/text/check$ ls
a  aa.txt  b1.txt
wyq@Wyq:~/桌面/text/check$ rm -ri a
rm:是否进入目录'a'? y
rm:是否进入目录'a/b'? y
rm:是否进入目录'a/b/c'? y
rm:是否删除目录 'a/b/c/d'? y
rm:是否删除目录 'a/b/c'? y
rm:是否删除目录 'a/b'? y
rm:是否删除目录 'a'? y
wyq@Wyq:~/桌面/text/check$ rm -rf aa.txt 

10>ln 建立链接文件

分类:

​ 软链接:不占用磁盘空间,源文件删除则链接失效,ln -s 源文件 链接文件

​ 硬链接:占用磁盘空间,源文件删除对链接文件没有影响【类似于拷贝】,ln 源文件 链接文件

#软连接
wyq@Wyq:~/桌面$ cd check/
wyq@Wyq:~/桌面/check$ ls
aa.txt  b1.txt
wyq@Wyq:~/桌面/check$ rm -rf *
wyq@Wyq:~/桌面/check$ ls
wyq@Wyq:~/桌面/check$ touch a1.txt
wyq@Wyq:~/桌面/check$ ll
总用量 8
drwxr-xr-x 2 wyq wyq 4096 2月  26 17:27 ./
drwxr-xr-x 7 wyq wyq 4096 2月  26 16:55 ../
-rw-r--r-- 1 wyq wyq    0 2月  26 17:27 a1.txt
wyq@Wyq:~/桌面/check$ ln -s a1.txt a
wyq@Wyq:~/桌面/check$ ls
a  a1.txt
wyq@Wyq:~/桌面/check$ ll
总用量 8
drwxr-xr-x 2 wyq wyq 4096 2月  26 17:28 ./
drwxr-xr-x 7 wyq wyq 4096 2月  26 16:55 ../
lrwxrwxrwx 1 wyq wyq    6 2月  26 17:28 a -> a1.txt
-rw-r--r-- 1 wyq wyq    0 2月  26 17:27 a1.txt
wyq@Wyq:~/桌面/check$ vim a1.txt
wyq@Wyq:~/桌面/check$ cat a1.txt 
hello
wyq@Wyq:~/桌面/check$ cat a
hello
wyq@Wyq:~/桌面/check$ vim a
wyq@Wyq:~/桌面/check$ cat a
hello
abc
wyq@Wyq:~/桌面/check$ cat a1.txt 
hello
abc
wyq@Wyq:~/桌面/check$ rm -rf a1.txt
wyq@Wyq:~/桌面/check$ ls
a
wyq@Wyq:~/桌面/check$ cat a
cat: a: 没有那个文件或目录
wyq@Wyq:~/桌面/check$ 

#硬链接
wyq@Wyq:~/桌面/check$ ln a1.txt a
wyq@Wyq:~/桌面/check$ ll
总用量 8
drwxr-xr-x 2 wyq wyq 4096 2月  26 17:32 ./
drwxr-xr-x 7 wyq wyq 4096 2月  26 16:55 ../
-rw-r--r-- 2 wyq wyq    0 2月  26 17:32 a
-rw-r--r-- 2 wyq wyq    0 2月  26 17:32 a1.txt
wyq@Wyq:~/桌面/check$ vim a1.txt 
wyq@Wyq:~/桌面/check$ cat a1.txt 
hello
wyq@Wyq:~/桌面/check$ cat a
hello
wyq@Wyq:~/桌面/check$ vim a
wyq@Wyq:~/桌面/check$ cat a
hello
abc
wyq@Wyq:~/桌面/check$ cat a1.txt 
hello
abc
wyq@Wyq:~/桌面/check$ rm -rf a1.txt 
wyq@Wyq:~/桌面/check$ cat a
hello
abc

11>grep 文本搜索

强大的文本搜索工具,grep允许对文本文件进行模式查找,如果找到匹配模式,grep打印包含模式的所有行
注意:搜索内容串可以是正则表达式

-c:仅显示找到的行数	
-i:忽略大小写	
-n:显示匹配行以及行号
-v:反向选择,列出没有关键词的行【求反】

输出命令 | grep 
#说明:grep检索的内容取决于输出的内容

演示命令:
wyq@Wyq:~/桌面$ ls | grep a1.txt
wyq@Wyq:~/桌面$ ls | grep -v a
check
file1.txt
text
wyq@Wyq:~/桌面$ touch a1.txt
wyq@Wyq:~/桌面$ ls | grep a1.txt
a1.txt
wyq@Wyq:~/桌面$ ls | grep -n a
1:a1.txt
2:aa.txt
6:vmware-tools-distrib
7:笔记-Linux-Day1
wyq@Wyq:~/桌面$ vim a1.txt
wyq@Wyq:~/桌面$ cat a1.txt
hello
abcd
1343
ffff
gsjherg
wyq@Wyq:~/桌面$ cat a1.txt  | grep -n a
2:abcd

12>which 查找其他命令所在的位置

演示命令:
wyq@Wyq:~/桌面$ which ls
/bin/ls
wyq@Wyq:~/桌面$ which ll
wyq@Wyq:~/桌面$ which pwd
/bin/pwd

13>type 寻找命令所在的位置,包括命令别名

-a:可以找到所有,包括别名

演示命令:
wyq@Wyq:~/桌面$ type ls
ls 是 `ls --color=auto' 的别名
wyq@Wyq:~/桌面$ type pwd
pwd 是 shell 内建

猜你喜欢

转载自blog.csdn.net/qq_41470296/article/details/87944893