Linux-文件结构、快捷键、安装软件和常用命令(1)

一、目录结构【文件结构】

1.Windows文件系统

打开计算机,看到的都是一个个的驱动器盘符,比如C盘,D盘。。。。

注意:每个驱动器都有自己的根目录结构,形成了树型结构

相对路径:没有盘符

绝对路径:有盘符

2.Linux文件系统

ubuntu没有盘符这个概念,只有一个根目录:/

相对路径:从当前默认的路径开始

绝对路径:从根目录/开始的路径

注意:在Linux下,所有内容都被视为文件,目录也被视为文件

lichongchong@ubuntu01:~$ ls
Desktop    Downloads  Pictures  PycharmProjects  Templates
Documents  Music      Public    Software         Videos
lichongchong@ubuntu01:~$ pwd
/home/lichongchong
lichongchong@ubuntu01:~$ cd Desktop/    #相对路径
lichongchong@ubuntu01:~/Desktop$ cd ..
lichongchong@ubuntu01:~$ cd /home/lichongchong/Desktop/    #绝对路径
lichongchong@ubuntu01:~/Desktop$ 
Linux目录结构: 

/ : 根目录    #在Linux下有且只有一个根目录,在终端输入/home,告诉系统,从根目录开始,查找home目录下的内容
/boot : boot 配置文件、内核和其它启动时所需的文件   #包括一些连接文件和镜像文件
/etc :存放系统配置有关的文件   #存放所有的系统管理需要的文件和子目录,用户信息都在当前目录下,包括用户名,主机名,和密码		
/home :存放普通用户目录    #Linux系统是一个典型的多用户系统,是用户的主目录,每个用户都有一个自己的目录,一般该目录名是以当前用户的用户名命名的

/mnt :硬盘上手动挂载的文件系统	
	#挂载:把硬盘挂载在文件系统上
  	#mnt默认是空的,系统提供该目录让用户挂载别的临时文件,例如:挂载光驱,进入该目录就可以查看光驱中的内容
/media :自动挂载(加载)的硬盘分区以及类似CD、数码相机等可移动介质。
	#会自动识别一些设备:U盘,光驱等,当识别后,会将识别的设备自动挂载到当前目录下
/cdrom :挂载光盘 

/opt : 存放一些可选程序,如某个程序测试版本,安装到该目录的程序的所有数据,库文件都存在同个目录下   #默认是空的,给主机额外安装软件提供的目录,比如:安装mysql数据库,则可以被存放到该目录下

/root : 系统管理员的目录,对于系统来说,系统管理员好比上帝  #超级管理员的用户主目录

/bin :存放常用的程序文件   #binary,二进制文件,可执行的
/sbin :系统管理命令,这里存放的是系统管理员使用的管理程序  #s:super user

/tmp :临时目录,存放临时文件   #temp,临时的,系统会定期清理tmp下的内容

/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 : 存放设备文件 #device,设备,存放linux的外部设备
  
/run :代替/var/run目录,  #是一个临时文件系统,存储系统启动以来的信息,当系统重启之后,其中的数据会被清除或者被覆盖

/proc : 虚拟文件系统,可以在该目录下获取系统信息,这些信息是在内存中由系统自己产生的,该目录的内容不在硬盘上而在内存里;  #虚拟目录,它是系统内存的映射,可以通过该目录直接获取系统的信息,也可以修改其中的某些文件
	cat /proc/cpuinfo
	
/sys : 和proc一样,虚拟文件系统,可以在该目录下获取系统信息,这些信息是在内存中由系统自己产生的,该目录的内容不在硬盘上而在内存里;

#掌握
home
root
etc
tmp
usr
bin, /usr/bin :普通用户信息
sbin,/usr/sbin:超级用户信息
var:varity,日志

二、快捷键

ctrl + alt + t :快速打开终端

ctrl + shift + + :放大终端窗口,放大字体
ctrl + -:缩小终端窗口,缩小字体

tab:自动补全

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

ctrl + w:删除一个单词【通过空格区分单词】
ctrl + u :删除光标左边全部的内容
ctrl + k:删除光标右边全部的内容

ctrl + y:恢复由ctrl + w,ctrl + u以及ctrl + k删除的内容

ctrl + l:清屏【实质:翻页】

ctrl + c:中断

ctrl + d:退出终端

三、安装软件

一般分为离线安装【dpkg】和在线安装[apt]

一般情况下,Linux系统分为两大类:
	1.RedHat系列:RedHat,Centos,Fedora等
	2.Debian系列:Debian,Ubuntu等

yum 和 apt-get的区别
	1.apt和apt-get是Debian,Ubuntu等的包管理工具
	2.yum是RedHat,Centos,Fedora等的包管理工具
	3.yum相对于apt或者apt-get是落后的

RedHat:
	1.常见的安装格式为rpm包,格式为:rpm -参数
	2.包管理工具:yum
	3.支持tar包

Debian:
	1.常见的安装格式为deb包,格式:dpkg -参数
	2.包管理工具:apt或者apt-get
	3.支持tar包
1.apt

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

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 存放正在下载的软件包详细信息

sublime:

sublime text3
步骤:
1.添加subline的仓库
sudo add-apt-repository ppa:webupd8team/sublime-text-3
	#根据提示按下enter键,建立信任数据库
2.更新软件库
sudo apt update
3.安装sublime text
sudo apt install sublime-text-installer
	#等待软件安装

pip  install pygame
2.dpkg

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

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

wps

#1.定位到deb包所在的位置
cd 
#2.安装
dpkg -i wps-office....deb


演示命令:
lichongchong@ubuntu01:~$ cd Software/
lichongchong@ubuntu01:~/Software$ ls
linux-wps  pycharm-2017.3.4
lichongchong@ubuntu01:~/Software$ cd linux-wps/
lichongchong@ubuntu01:~/Software/linux-wps$ ls
wps-office_10.1.0.5672~a21_amd64.deb  wps_symbol_fonts.zip
lichongchong@ubuntu01:~/Software/linux-wps$ dpkg -i wps-office_10.1.0.5672~a21_amd64.deb 
dpkg:错误:所请求的操作需要超级用户权限
lichongchong@ubuntu01:~/Software/linux-wps$ sudo !!   
  #sudo !! 相当于sudo  dpkg -i wps-office_10.1.0.5672~a21_amd64.deb  ,当执行一条命令没有超级管理员的权限,则再次执行,可以使用sudo !!
sudo dpkg -i wps-office_10.1.0.5672~a21_amd64.deb 
正在选中未选择的软件包 wps-office。
(正在读取数据库 ... 系统当前共安装有 253363 个文件和目录。)
正准备解包 wps-office_10.1.0.5672~a21_amd64.deb  ...
正在解包 wps-office (10.1.0.5672~a21) ...
正在设置 wps-office (10.1.0.5672~a21) ...
正在处理用于 desktop-file-utils (0.22-1ubuntu5.1) 的触发器 .....
正在处理用于 mime-support (3.59ubuntu1) 的触发器 ...
正在处理用于 shared-mime-info (1.5-2ubuntu0.1) 的触发器 ...
正在处理用于 hicolor-icon-theme (0.15-0ubuntu1) 的触发器 ...

四、常用命令

1.概述

功能:磁盘操作,文件存取,目录操作,进程管理,权限管理等

格式:

command options paras

command :命令名称

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

paras:传给命令的参数,根据需求可写可不写,也可以写多个

2.查看帮助文档

1>–help:自带的命令信息,不属于命令,属于选项

注意:任何命令都有–help选项,查看某个指定命令的使用方式以及包含的参数

演示命令:
lichongchong@ubuntu01:~$ ls --help

2>man :相当于一个手册,包含了绝大多数命令以及信息【函数使用说明】

格式:man 命令名称

man命令中常用的按键
	空格键:向上翻一页
	下方向键:向下翻行
	上方向键:向上翻行
	fn + 左方向键:直接回到首页
	fn + 右方向键:直接回到尾页
	q:退出帮助文档
	
	/xxx  :从上往下进行xxx的搜索
	?xxx  :从下往上进行xxx的搜索
	
	n:定位到下一个搜索的关键字
	N:定位到上一个搜索的关键字
	
说明:fn + 左方向键和fn + 右方向键不起作用,则可以使用home和end代替

演示命令:
lichongchong@ubuntu01:~$  man ls

3>history 查看执行过的命令

​ 当系统执行过一些命令之后,可以通过上下键查看,但是,一旦终端重启,则上下键则不起作用,就可以使用history

​ history :只显示最近的1000条命令

​ history num;显示最近的num条命令

​ !number:执行指定编号的命令,number为history列出来的执行过的命令的编号

演示命令
lichongchong@ubuntu01:~$ history
lichongchong@ubuntu01:~$ history 5
lichongchong@ubuntu01:~$ !1046
ls
Desktop    Downloads  Pictures  PycharmProjects  Templates
Documents  Music      Public    Software         Videos
lichongchong@ubuntu01:~$ !1047
cd Software/
lichongchong@ubuntu01:~/Software$ cd ..
lichongchong@ubuntu01:~$ cat ~/.bashrc | grep -i hist
# don't put duplicate lines or lines starting with space in the history.
HISTCONTROL=ignoreboth
# append to the history file, don't overwrite it
shopt -s histappend
# for setting history length see HISTSIZE and HISTFILESIZE in bash(1)
HISTSIZE=1000
HISTFILESIZE=2000
alias alert='notify-send --urgency=low -i "$([ $? = 0 ] && echo terminal || echo error)" "$(history|tail -n1|sed -e '\''s/^\s*[0-9]\+\s*//;s/[;&|]\s*alert$//'\'')"'
lichongchong@ubuntu01:~$ ls -a ~/.bash*   #查看历史命令的位置
/home/lichongchong/.bash_history  /home/lichongchong/.bashrc
/home/lichongchong/.bash_logout
lichongchong@ubuntu01:~$ gedit /home/lichongchong/.bash_history   #打开历史命令所在文件
lichongchong@ubuntu01:~$ vim /home/lichongchong/.bash_history   #区别于gedit
3.文件管理

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

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

演示命令:
lichongchong@ubuntu01:~$ ls
lichongchong@ubuntu01:~$ ls -a
lichongchong@ubuntu01:~$ ls -A
lichongchong@ubuntu01:~$ ls -l
lichongchong@ubuntu01:~$ ls -lh
lichongchong@ubuntu01:~$ ls -a -l
lichongchong@ubuntu01:~$ ls -al
lichongchong@ubuntu01:~$ ll

#注意事项
ls -a -l   :显示出隐藏文件,格式化的显示文件
简写:ls -al 
ll  :ls -a -l的封装,但是注意:ll并不是Linux的原生命令
  
  
#补充:
#1
.   ---->当前路径
..  ---->上一级路径
注意:对于根目录而言,.和..代表是同一个目录


drwxr-xr-x  2 lichongchong rock  4096 7月  18  2017 Music

第一列:drwxr-xr-x ,总共有10位组成,假设用数字0~9表示
#2.文件的类型
第0位表示文件类型
	-:文件
  	d:目录
    b:块设备文件
    c:字符设备文件【端口设备文件,例如鼠标,键盘】
    l:链接文件
    p:管道文件
    s:socket文件

#3.权限
第1~9位文件的权限
权限被分为三组,每三位为一组
1~3:当前用户的权限【user/owner】
4~6:用户所属组的权限【group】
7~9:其他组的权限【others】
	rwx-
  	r:read,可读权限,也可以使用4表示
    w:write,可写权限,也可以使用2表示
    x:execute,可执行权限,也可以使用1表示
    -:没有任何权限,也可以使用0表示
注意:一个文件对于一个用户有什么样的权限 ,可以使用rwx表示之外,还可以使用数字和表示,文件的最高权限为7【对于一个用户而言,可以修改一个文件的权限】

#4.文件和目录的权限类型
	文件:
  		可读:允许读取其中的内容
    	可写:任意修改其中的内容
      	可执行:允许将一个文件作为程序执行
     目录:
    	可读:允许显示目录中的内容
      	可写:可以在该目录中创建,删除,替换操作
        可执行:可以进入该目录,执行基本操作
取值范围为0~7
	0:没有任何权限
  	1:只能执行
    2:只能写
    3:可写可执行
    4:只读
    5:可读可执行
    6:可读可写
    7:可读可写可执行
#5.	第二列
普通文件+隐藏文件


#6.第三列和第四列
用户和用户组,显示的是主组,【一个用户可以存在于不同的组中,一个组中可以有多个用户,用户的最初的组为主组,其他的组都被称为附加组】

#7.通配符   *
演示命令:
lichongchong@ubuntu01:~$ cd Desktop/
lichongchong@ubuntu01:~/Desktop$ touch a1.txt
lichongchong@ubuntu01:~/Desktop$ touch a2.txt
lichongchong@ubuntu01:~/Desktop$ touch b.txt
lichongchong@ubuntu01:~/Desktop$ ls
a1.txt  a2.txt  b.txt  file1.txt
lichongchong@ubuntu01:~/Desktop$ ls a*
a1.txt  a2.txt
lichongchong@ubuntu01:~/Desktop$ ls *a
ls: 无法访问'*a': 没有那个文件或目录
lichongchong@ubuntu01:~/Desktop$ touch aa.txt
lichongchong@ubuntu01:~/Desktop$ touch ba.txt
lichongchong@ubuntu01:~/Desktop$ ls *a
ls: 无法访问'*a': 没有那个文件或目录
lichongchong@ubuntu01:~/Desktop$ ls *a.txt
aa.txt  ba.txt
lichongchong@ubuntu01:~/Desktop$ 
  
  
#掌握:
ls
ls 相对路径
ls -l
ll 相对路径

2>pwd 查看当前的工作目录【print working directory】

演示命令:
lichongchong@ubuntu01:~$ pwd
/home/lichongchong
lichongchong@ubuntu01:~$ cd Desktop/
lichongchong@ubuntu01:~/Desktop$ pwd
/home/lichongchong/Desktop

3>查看文件,会将查询的结果显示到终端上

#1
cat:查看完整的文件内容,从上往下查看
	-n	:显示每一行的行号,包括空行
	-b	:显示每一行的行号,不包括空行
     #注意:如果文件内容较少可以使用cat
tac:查看完整的文件内容,从下往上查看
  	#注意:没有-n选项
演示命令:
lichongchong@ubuntu01:~$ cd Desktop/
lichongchong@ubuntu01:~/Desktop$ cat file1.txt 
hello
fnjawnfkja
najwngj126473
\5375y
lichongchong@ubuntu01:~/Desktop$ cat -n file1.txt 
     1	hello
     2	fnjawnfkja
     3	najwngj126473
     4	\5375y
lichongchong@ubuntu01:~/Desktop$ tac file1.txt 
\5375y
najwngj126473
fnjawnfkja
hello

#2   
head:查看文件内容,默认查看文件的前十行
tail:查看文件内容,默认查看文件的后十行
	-num :查看指定的行数
演示命令:
lichongchong@ubuntu01:~/Desktop$ head file1.txt
hello
fnjawnfkja
najwngj126473
\5375y
hello
fnjawnfkja
najwngj126473
\5375y
hello
fnjawnfkja
lichongchong@ubuntu01:~/Desktop$ tail file1.txt 
najwngj126473
\5375y
hello
fnjawnfkja
najwngj126473
\5375y
hello
fnjawnfkja
najwngj126473
\5375y
lichongchong@ubuntu01:~/Desktop$ head -2 file1.txt 
hello
fnjawnfkja
lichongchong@ubuntu01:~/Desktop$ tail -2 file1.txt 
najwngj126473
\5375y
lichongchong@ubuntu01:~/Desktop$ 


#3
less:查看文件
more:查看文件
	#注意:按下enter键向上翻一行,按下空格键向上翻一页,按下q退出,类似man的使用
     #通过ls或者cat查看目录下的内容,文件中的内容,显示较长的时候,使用less或者more,文件内容较多使用more,文件内容较少使用less
    #注意:如果文件中的内容一个终端显示屏可以显示的话,则more和cat的作用完全相同,
演示命令:
lichongchong@ubuntu01:less file1.txt
lichongchong@ubuntu01:more file1.txt

#4
wc:一次显示文件行数,字节数以及文件名信息,查看文件的属性
stat:查看文件详细信息,可以获取文件的文件名、大小、权限,最近访问以及最近更改的时间,stat命令的输出信息比ls命令还要详细
#wc和stat用法类似,stat显示的信息更加详细
演示命令:
lichongchong@ubuntu01:~/Desktop$ wc file1.txt 
 268  267 2842 file1.txt
lichongchong@ubuntu01:~/Desktop$ stat file1.txt 
  文件:'file1.txt'
  大小:2842      	块:8          IO 块:4096   普通文件
设备:801h/2049d	Inode:583182      硬链接:1
权限:(0644/-rw-r--r--)  Uid:( 1000/lichongchong)   Gid:( 1000/    rock)
最近访问:2018-12-18 15:41:07.247759694 +0800
最近更改:2018-12-18 15:40:59.147544240 +0800
最近改动:2018-12-18 15:40:59.151544347 +0800
创建时间:-


#5.
file:查看文件的类型
演示命令:
lichongchong@ubuntu01:~/Desktop$ file file1.txt 
file1.txt: ASCII text


#6.
echo:用于在终端输出字符串或变量的值
演示命令:
lichongchong@ubuntu01:~$ echo "hello"
hello

#7
|:管道
  作用:将一个命令的输出,可以作为另外一个命令的输入
  
#8
>:输出重定向,Linux允许将执行结果重定向到一个文件,本应显示在终端上的内容保存到指定文件中
>>:输出重定向,Linux允许将执行结果重定向到一个文件,本应显示在终端上的内容保存到指定文件中
	#注意:如果文件不存在,则会自动创建,,如果存在,则会覆盖其中的内容
1>  标准正确输出,同上
1>> 标准正确输出,同上  
	#标准正确输出;当文件以及命令没有任何错误的时候才能正常写入
2> 标准错误输出,同上
2>> 标准错误输出,同上
  	#标准错误输出:当文件以及命令出现错误的时候,会将错误信息写入到指定文件中
&> 标准正确输出和标准错误输出,同上
	将1和2结合在一起了
"""
输出重定向。类似于Python中print的用法
f = open("","w")
print("fhad",file=f)
"""
演示命令:
lichongchong@ubuntu01:ls
lichongchong@ubuntu01:touch a1.txt
lichongchong@ubuntu01:touch a2.txt
lichongchong@ubuntu01:ls > a1.txt
lichongchong@ubuntu01:cat a1.txt > a2.txt
lichongchong@ubuntu01:ls >> a1.txt
lichongchong@ubuntu01:ls 1> a1.txt
lichongchong@ubuntu01:ls 1>> a1.txt

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

-d 	只显示文件夹
-f	显示文件的完整路径
-L num	:只看前num级的内容

#类似ls的使用,只不过显示的内容更加格式化

演示命令:
lichongchong@ubuntu01: tree
lichongchong@ubuntu01: tree -d
lichongchong@ubuntu01: tree -f
lichongchong@ubuntu01: tree -L 3 

5>cd 切换工作目录【change directory】

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

演示命令:
lichongchong@ubuntu01:~$ cd
lichongchong@ubuntu01:~$ pwd
/home/lichongchong
lichongchong@ubuntu01:~$ cd ~
lichongchong@ubuntu01:~$ pwd
/home/lichongchong
lichongchong@ubuntu01:~$ cd .
lichongchong@ubuntu01:~$ pwd
/home/lichongchong
lichongchong@ubuntu01:~$ cd Desktop/
lichongchong@ubuntu01:~/Desktop$ cd ..
lichongchong@ubuntu01:~$ cd -
/home/lichongchong/Desktop
lichongchong@ubuntu01:~/Desktop$ cd -
/home/lichongchong
lichongchong@ubuntu01:~$ cd #
lichongchong@ubuntu01:~$ pwd
/home/lichongchong

#注意:如果要操作某个文件或者目录,一般都需要切换路径,切换到需要操作的文件或者目录下

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

命令格式:mv [参数] 源文件  [目标路径|目标文件名]    ------》可以cd到【文件所在路径下】或者【直接通过路径指明文件】
	-i	在目标文件存在的时候会询问是否要覆盖 #输入y表示移动成功,覆盖原来的文件,输入n,则表示没有移动   【交互式命令】
	-b	当冲突的时候,会对源文件进行备份

演示命令
#重命名:mv  原文件名称   新文件名称  【前提:cd到文件所在的目录下】
#移动:mv 源文件名称  目标目录  【前提:cd到文件所在的目录下】

#重命名
lichongchong@ubuntu01:~$ cd Desktop/
lichongchong@ubuntu01:~/Desktop$ ls
a1.txt  a2.txt  aa.txt  ba.txt  b.txt  file1.txt
lichongchong@ubuntu01:~/Desktop$ mv file1.txt  hello.txt   #重名
lichongchong@ubuntu01:~/Desktop/aaa$ cd ..
lichongchong@ubuntu01:~/Desktop$ mkdir bbbb
lichongchong@ubuntu01:~/Desktop$ mkdir cccc
lichongchong@ubuntu01:~/Desktop$ ls
aaa  aa.txt  bbbb  cccc  hello.txt
lichongchong@ubuntu01:~/Desktop$ mv bbbb hhhh
lichongchong@ubuntu01:~/Desktop$ ls
aaa  aa.txt  cccc  hello.txt  hhhh
lichongchong@ubuntu01:~/Desktop$ 
#移动
lichongchong@ubuntu01:~/Desktop$ ls
a1.txt  a2.txt  aa.txt  ba.txt  b.txt  hello.txt
lichongchong@ubuntu01:~/Desktop$ mkdir aaa
lichongchong@ubuntu01:~/Desktop$ mv a1.txt aaa/
lichongchong@ubuntu01:~/Desktop$ ls
a2.txt  aaa  aa.txt  ba.txt  b.txt  hello.txt
lichongchong@ubuntu01:~/Desktop$ cd aaa/
lichongchong@ubuntu01:~/Desktop/aaa$ ls
a1.txt
lichongchong@ubuntu01:~/Desktop/aaa$ cd ..
lichongchong@ubuntu01:~/Desktop$ mv a2.txt  ba.txt b.txt aaa/
lichongchong@ubuntu01:~/Desktop$ ls
aaa  aa.txt  hello.txt
lichongchong@ubuntu01:~/Desktop$ cd aaa/
lichongchong@ubuntu01:~/Desktop/aaa$ ls
a1.txt  a2.txt  ba.txt  b.txt
lichongchong@ubuntu01:~/Desktop/aaa$ 
 
lichongchong@ubuntu01:~/Desktop/aaa$ cd ..
lichongchong@ubuntu01:~/Desktop$ touch a1.txt
lichongchong@ubuntu01:~/Desktop$ mv a1.txt aaa/
lichongchong@ubuntu01:~/Desktop$ touch a1.txt
lichongchong@ubuntu01:~/Desktop$ mv -i a1.txt aaa/
mv:是否覆盖'aaa/a1.txt'? n
lichongchong@ubuntu01:~/Desktop$ ls
a1.txt  aaa  aa.txt  cccc  hello.txt  hhhh
lichongchong@ubuntu01:~/Desktop$ cd aaa/
lichongchong@ubuntu01:~/Desktop/aaa$ ls
a1.txt  a2.txt  ba.txt  b.txt
lichongchong@ubuntu01:~/Desktop/aaa$ 

7>cp 复制文件或者目录【copy】

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

-i	在目标文件存在的时候会询问是否要覆盖【交互式复制】
-r 若给出的源文件是一目录文件,此时cp将递归复制该目录下所有的子目录和文件。此时目标文件必须为一个目录名  #单纯拷贝目录,拷贝失败,加上-r,会将整个目录以及子文件,子目录全部拷贝进去
-a 复制的时候保持文件原有属性
-f 对于已经存在的目标文件不提示
-v 显示拷贝进度,#显示文件的路径的映射关系

"""
Linux中,拷贝分为几种情况
	1.如果目标路径是目录,则会将源文件拷贝到目录的下面
	2.如果目标路径是文件,则需要询问要覆盖它
"""
演示命令:
lichongchong@ubuntu01:~/Desktop$ ls
a2.txt  aaa  aa.txt  ba.txt  b.txt  hello.txt
lichongchong@ubuntu01:~/Desktop$ cd aaa/
lichongchong@ubuntu01:~/Desktop/aaa$ ls
a1.txt
lichongchong@ubuntu01:~/Desktop/aaa$ cd ..
lichongchong@ubuntu01:~/Desktop$ mv a2.txt  ba.txt b.txt aaa/
lichongchong@ubuntu01:~/Desktop$ ls
aaa  aa.txt  hello.txt
lichongchong@ubuntu01:~/Desktop$ cd aaa/
lichongchong@ubuntu01:~/Desktop/aaa$ ls
a1.txt  a2.txt  ba.txt  b.txt
lichongchong@ubuntu01:~/Desktop/aaa$ cd ..
lichongchong@ubuntu01:~/Desktop$ mkdir bbbb
lichongchong@ubuntu01:~/Desktop$ mkdir cccc
lichongchong@ubuntu01:~/Desktop$ ls
aaa  aa.txt  bbbb  cccc  hello.txt
lichongchong@ubuntu01:~/Desktop$ mv bbbb hhhh
lichongchong@ubuntu01:~/Desktop$ ls
aaa  aa.txt  cccc  hello.txt  hhhh
lichongchong@ubuntu01:~/Desktop$ cd aaa/
lichongchong@ubuntu01:~/Desktop/aaa$ cat
^C
lichongchong@ubuntu01:~/Desktop/aaa$ ls
a1.txt  a2.txt  ba.txt  b.txt
lichongchong@ubuntu01:~/Desktop/aaa$ cd ..
lichongchong@ubuntu01:~/Desktop$ touch a1.txt
lichongchong@ubuntu01:~/Desktop$ mv a1.txt aaa/
lichongchong@ubuntu01:~/Desktop$ touch a1.txt
lichongchong@ubuntu01:~/Desktop$ mv -i a1.txt aaa/
mv:是否覆盖'aaa/a1.txt'? n
lichongchong@ubuntu01:~/Desktop$ ls
a1.txt  aaa  aa.txt  cccc  hello.txt  hhhh
lichongchong@ubuntu01:~/Desktop$ cd aaa/
lichongchong@ubuntu01:~/Desktop/aaa$ ls
a1.txt  a2.txt  ba.txt  b.txt
lichongchong@ubuntu01:~/Desktop/aaa$ cd ..
lichongchong@ubuntu01:~/Desktop$ ls
a1.txt  aaa  aa.txt  cccc  hello.txt  hhhh
lichongchong@ubuntu01:~/Desktop$ cp hello.txt aaa/
lichongchong@ubuntu01:~/Desktop$ ls
a1.txt  aaa  aa.txt  cccc  hello.txt  hhhh
lichongchong@ubuntu01:~/Desktop$ cd aaa/
lichongchong@ubuntu01:~/Desktop/aaa$ ls
a1.txt  a2.txt  ba.txt  b.txt  hello.txt
lichongchong@ubuntu01:~/Desktop/aaa$ cd ..
lichongchong@ubuntu01:~/Desktop$ cp cccc aaa/
cp: 略过目录'cccc'
lichongchong@ubuntu01:~/Desktop$ ls
a1.txt  aaa  aa.txt  cccc  hello.txt  hhhh
lichongchong@ubuntu01:~/Desktop$ cd aaa/
lichongchong@ubuntu01:~/Desktop/aaa$ ls
a1.txt  a2.txt  ba.txt  b.txt  hello.txt
lichongchong@ubuntu01:~/Desktop/aaa$ cd ..
lichongchong@ubuntu01:~/Desktop$ cp -i aa.txt aaa/
lichongchong@ubuntu01:~/Desktop$ cp -i aa.txt aaa/
cp:是否覆盖'aaa/aa.txt'? y
lichongchong@ubuntu01:~/Desktop$ cd cccc/
lichongchong@ubuntu01:~/Desktop/cccc$ touch c1.txt
lichongchong@ubuntu01:~/Desktop/cccc$ mkdir c2
lichongchong@ubuntu01:~/Desktop/cccc$ ls
c1.txt  c2
lichongchong@ubuntu01:~/Desktop/cccc$ cd ..
lichongchong@ubuntu01:~/Desktop$ cp cccc aaa/
cp: 略过目录'cccc'
lichongchong@ubuntu01:~/Desktop$ cp -r  cccc aaa/
lichongchong@ubuntu01:~/Desktop$ cd aaa/
lichongchong@ubuntu01:~/Desktop/aaa$ ls
a1.txt  a2.txt  aa.txt  ba.txt  b.txt  cccc  hello.txt
lichongchong@ubuntu01:~/Desktop/aaa$ cd cccc/
lichongchong@ubuntu01:~/Desktop/aaa/cccc$ ls
c1.txt  c2
lichongchong@ubuntu01:~/Desktop/aaa/cccc$ cd .
lichongchong@ubuntu01:~/Desktop/aaa/cccc$ cd ..
lichongchong@ubuntu01:~/Desktop/aaa$ cd ..
lichongchong@ubuntu01:~/Desktop$ cp -v hello.txt cccc/
'hello.txt' -> 'cccc/hello.txt'
lichongchong@ubuntu01:~/Desktop$ 

8>创建文件或者目录

8.1>mkdir	创建一个新的目录   #默认创建的是空目录
	-p:创建出具有嵌套层关系的文件目录
演示命令:
lichongchong@ubuntu01:~/Desktop$ mkdir ddd
lichongchong@ubuntu01:~/Desktop$ mkdir a/b/c/d
mkdir: 无法创建目录"a/b/c/d": 没有那个文件或目录
lichongchong@ubuntu01:~/Desktop$ mkdir -p  a/b/c/d
lichongchong@ubuntu01:~/Desktop$ mkdir -p b/{c,d,e}/{text1,text2}
lichongchong@ubuntu01:~/Desktop$ 

  
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后面可以指定时间,其他的只能把时间修改为当前时间
    
 演示命令:
lichongchong@ubuntu01:~/Desktop$ touch file2.txt
lichongchong@ubuntu01:~/Desktop$ ls
a  a1.txt  aaa  aa.txt  b  cccc  ddd  file2.txt  hello.txt  hhhh
lichongchong@ubuntu01:~/Desktop$ touch -d "2 days ago" file3.txt

9>删除文件或者目录

9.1>rmdir  删除给定的目录,注意:只能删除空目录  mkdir
演示命令:
lichongchong@ubuntu01:~/Desktop$ mkdir text
lichongchong@ubuntu01:~/Desktop$ rmdir text
lichongchong@ubuntu01:~/Desktop$ rmdir aaa
rmdir: 删除 'aaa' 失败: 目录非空


9.2>rm	删除文件或者目录,可以删除一个目录中的一个或多个文件或目录,也可以将某个目录及其下面所有子文件和目录都删掉

	-r	删除目录,包括非空目录
	-ri	交互式删除,每次删除都会进行询问
	-rf	强制删除文件或目录【注意:必须在保证目录或者文件确实没用的情况下】
演示命令:
lichongchong@ubuntu01:~/Desktop$ mkdir text
lichongchong@ubuntu01:~/Desktop$ rmdir text
lichongchong@ubuntu01:~/Desktop$ rmdir aaa
rmdir: 删除 'aaa' 失败: 目录非空
lichongchong@ubuntu01:~/Desktop$ rm hello.txt 
lichongchong@ubuntu01:~/Desktop$ ls
a  a1.txt  aaa  aa.txt  b  cccc  ddd  file2.txt  file3.txt  hhhh
lichongchong@ubuntu01:~/Desktop$ rm aaa
rm: 无法删除'aaa': 是一个目录
lichongchong@ubuntu01:~/Desktop$ rm -r aaa
lichongchong@ubuntu01:~/Desktop$ ls
a  a1.txt  aa.txt  b  cccc  ddd  file2.txt  file3.txt  hhhh
lichongchong@ubuntu01:~/Desktop$ rm -ri aa.txt 
rm:是否删除普通空文件 'aa.txt'? y
lichongchong@ubuntu01:~/Desktop$ ls
a  a1.txt  b  cccc  ddd  file2.txt  file3.txt  hhhh
lichongchong@ubuntu01:~/Desktop$ rm -rf file3.txt 
lichongchong@ubuntu01:~/Desktop$ rm -rf hhhh/

10>ln 建立链接文件

11>grep 文本搜索

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

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

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

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

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

14>find 按照指定条件来查找文件

格式:find  【查找路径】 【查找方式】 【查找条件】

-name:匹配名称,默认是精确匹配
-size:匹配文件大小
-atime  -n  +n:匹配访问内容的时间(-n指n天以内,+n指n天以前)
-empty

15>locate 查找数据

-i:忽略大小写
-c:不输出寻找结果,仅计算找到的文件数量
-l:仅输出指定的几行,  例如:-l 8,输出8行
-r:后面可以接正则表达式

16>sort 给文件内容排序

-f:忽略大小写的差异,例如 A 与 a 视为编码相同;
-b:忽略最前面的空格符部分;
-n:使用『纯数字』进行排序(默认是以文字型态来排序的);
-r:反向排序;
-u:就是 uniq,表示唯一的,相同的数据中,仅出现一行代表;
-t:分隔符,默认是用 [tab] 键来分隔;
-k:以那个区间 (field) 来进行排序的意思

17>cut 可以从一个文本文件或者文本流中提取文本列

-d :后面接分隔字符。与 -f 一起使用;
-f :依据 -d 的分隔字符将一段信息分割成为数段,用 -f 取出第几段的意思;
-c :以字符 (characters) 的单位取出固定字符区间;( -连接区间  ,取的是和的意思)

18>tee 读取标准输入的数据,并将其内容输出成文件

-a:读取原文件内容,并追加新的内容,如果不设置该选项,则新的内容直接覆盖旧的内容

19>gedit 打开Linux下的文本编辑器

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值