Linux学习笔记二(系统文件和目录管理)
根目录和家目录
在Linux系统中永远只有一个根目录“/”,Linux系统中的目录结构是固定的,跟磁盘分区没有任何关系。
Linux系统中所有用户的家目录都是集中存放在“/home”目录中,以用户名命名:
用户“jerry”的家目录是“/home/jerry”
用户“natasha”的家目录是“/home/natasha”
root用户是个例外,他的家目录是单独的“/root”。
绝对路径和相对路径
cd命令用于切换工作目录
如果只是单纯执行cd命令,默认将返回到用户的家目录。
绝对路径:以根目录“/”作为起点,如“/boot/grub”。使用绝对路径可以准确地表示一个目录(或文件)所在的位置。
相对路径:以当前的工作目录作为起点,在开头不使用“/”符号,如“grub.conf”,表示当前目录下的grub.conf文件,而“/grub.conf”则表示根目录下的grub.conf文件。
如果当前目录是“/root”,要进入当前目录下的一个名为test的子目录中,可以使用相对路径“cd test”,也可以使用绝对路径“cd /root/test”。
对于初学者,建议尽量使用绝对路径,以便于理解和区分。
cd test #相对路径 |
“.”表示当前目录,例如“./grub.conf”表示当前目录下的gurb.conf文件。
“..”表示以当前目录的上一级目录(父目录),例如若当前处于“/boot/grub”目录中,则“../vmlinuz”等同于“/boot/vmlinuz”。
文件管理命令
Linux命令
用于实现某一类功能的指令或程序
命令的执行依赖于解释器程序(例如:/bin/bash)
Linux命令的分类
内部命令:指集成在Shell里的命令,属于shell的一部分,系统中没有与命令单独对应的程序文件。
外部命令:独立于shell之外的命令,每个外部命令都对应了系统中的一个文件,Linux系统必须要知道外部命令对应的程序文件所在的位置,才能由shell加载并执行这些命令。
可以用type命令来判断一个命令是内部命令还是外部命令
外部命令的程序文件大都存放在/bin、/sbin、/usr/bin……这些目录里,Linux系统默认将这些路径添加到一个名为PATH的变量里,执行“echo $PATH”命令可以显示出PATH变量里的保存的目录路径(路径之间用“:”间隔)。
如果把一个外部命令所对应的程序文件删了,或者是存放外部命令程序文件的目录没有添加到PATH变量里,这些都会导致外部命令无法正常执行
Linux命令的通用命令格式
命令字 [选项] [参数]
选项及参数的含义
选项:用于调节命令的具体功能
- 以 “-”引导短格式选项(单个字符),例如“-l”
- 以“–”引导长格式选项(多个字符),例如“–color”
- 多个短格式选项可以写在一起,只用一个“-”引导,例如“ls –l –a”命令与“ls –al”命令功能完全相同。
命令行编辑的几个辅助操作
- Tab键:自动补齐
- 反斜杠“\”:强制换行
- 快捷键 Ctrl+U:清空至行首
- 快捷键 Ctrl+K:清空至行尾
- 快捷键 Ctrl+L:清屏
- 快捷键 Ctrl+C:取消本次命令编辑
内部命令help
- 查看Bash内部命令的帮助信息
命令的“–help” 选项
- 适用于大多数外部命令
使用man命令阅读手册页
- 使用“↑”、“↓”方向键滚动文本
- 使用Page Up和Page Down键翻页
- 按Q或q键退出阅读环境、按“/”键后查找内容
使用info命令阅读信息页
目录操作命令
- pwd
- cd
- ls
- mkdir
- du
pwd
pwd命令用于显示用户当前所在的工作目录位置,使用pwd命令可以不加任何选项或参数。
“/root”的含义:
- “/”,是Linux系统的根目录,也是其它所有目录的起点。
- “/root”,是根目录下面的一个子目录,它是管理员root用户的家目录。
pwd #显示当前工作目录的绝对路径 |
cd
cd [相对路径或绝对路径] #切换工作目录 |
ls
ls显示结果以不同的颜色来区分文件类别。
蓝色代表目录
灰色代表普通文件
绿色代表可执行文件
红色代表压缩文件
浅蓝色代表链接文件
-”代表普通文件
“d”代表目录
“l”代表符号链接
“c”代表字符设备
“b”代表块设备
“?”可以匹配文件名中的一个任意字符,
“*”可以匹配文件名中的任意多个字符。
显示/etc目录下文件名以ns开头,扩展名是conf的文件的详细信息
ls –l /etc/ns*.conf
显示/etc目录下文件名以v开头,文件名一共是4个字符的文件的详细信息
Ls –l /etc/v???
ls [选项] [目录或是文件] #显示当前目录下的目录和文件 |
mkdir
mkdir [选项] 要创建的目录 #用于创建目录 |
du
du [选项] [目录或是文件] #显示目录或文件的大小 |
文件操作命令
- touch
- file
- cp
- rm
- mv
- which
- find
- ln
touch
touch 文件名称 #创建一个空文件 |
file
file [选项] [目录或是文件] #辨识文件类型。 |
cp
cp [选项] 源文件或目录 目标文件或目录
在用cp命令复制的同时还可以将文件改名。
cp [选项] [目录或是文件] #复制文件或目录。 |
rm
rm [选项] [目录或是文件] #删除一个文件或者目录 |
mv
mv命令相当于Windows中的“剪切”操作,Linux中的“重命名”操作也是由mv命令完成的。
mv [选项] [目录或是文件] #为文件或目录改名、或将文件或目录移入其它位置 |
which
查找外部命令所对应的程序文件
which命令用于查找Linux外部命令所对应的程序文件,其搜索范围由环境变量PATH决定。
which [选项] 外部命令 #用于查找文件 |
find
find path -option [-print] [ -exec -ok command] {} \;
用来在指定目录下查找文件。任何位于参数之前的字符串都将被视为欲查找的目录名。如果使用该命令时,不设置任何参数,则 find 命令将在当前目录下查找子目录与文件。并且将查找到的子目录和文件全部进行显示。
expression 中可使用的选项有二三十个之多,在此只介绍最常用的部份。
-mount, -xdev : 只检查和指定目录在同一个文件系统下的文件,避免列出其它文件系统中的文件
-amin n : 在过去 n 分钟内被读取过
-anewer file : 比文件 file 更晚被读取过的文件
-atime n : 在过去n天内被读取过的文件
-cmin n : 在过去 n 分钟内被修改过
-cnewer file :比文件 file 更新的文件
-ctime n : 在过去n天内被修改过的文件
-empty : 空的文件-gid n or -group name : gid 是 n 或是 group 名称是 name
-ipath p, -path p : 路径名称符合 p 的文件,ipath 会忽略大小写
-name name, -iname name : 文件名称符合 name 的文件。iname 会忽略大小写
-size n : 文件大小 是 n 单位,b 代表 512 位元组的区块,c 表示字元数,k 表示 kilo bytes,w 是二个位元组。
-type c : 文件类型是 c 的文件。
d: 目录
c: 字型装置文件
b: 区块装置文件
p: 具名贮列
f: 一般文件
l: 符号连结
s: socket
-pid n : process id 是 n 的文件
#将当前目录及其子目录下所有文件后缀为 .c 的文件列出来: |
ln
Linux文件系统中,有所谓的链接(link),我们可以将其视为档案的别名,而链接又可分为两种 : 硬链接(hard link)与软链接(symbolic link),硬链接的意思是一个档案可以有多个名称,而软链接的方式则是产生一个特殊的档案,该档案的内容是指向另一个档案的位置。硬链接是存在同一个文件系统中,而软链接却可以跨越不同的文件系统。
不论是硬链接或软链接都不会将原本的档案复制一份,只会占用非常少量的磁碟空间。
软链接:
- 软链接,以路径的形式存在。类似于Windows操作系统中的快捷方式
- 软链接可以 跨文件系统 ,硬链接不可以
- 软链接可以对一个不存在的文件名进行链接
- 软链接可以对目录进行链接
硬链接:
- 硬链接,以文件副本的形式存在。但不占用实际空间。
- 不允许给目录创建硬链接
- 硬链接只有在同一个文件系统中才能创建
ln [参数][源文件或目录][目标文件或目录] #为某一个文件在另外一个位置建立一个同步的链接
ln -b #删除,覆盖以前建立的链接
ln -d #允许超级用户制作目录的硬链接
ln -f #强制执行
ln -i #交互模式,文件存在则提示用户是否覆盖
ln -n #把符号链接视为一般目录
ln -s #软链接(符号链接)
ln -v #显示详细的处理过程
#给文件创建软链接,为log2013.log文件创建软链接link2013,如果log2013.log丢失,link2013将失效:
ln -s log2013.log link2013
#输出
[root@localhost test]# ll
-rw-r--r-- 1 root bin 61 11-13 06:03 log2013.log
[root@localhost test]# ln -s log2013.log link2013
[root@localhost test]# ll
lrwxrwxrwx 1 root root 11 12-07 16:01 link2013 -> log2013.log
-rw-r--r-- 1 root bin 61 11-13 06:03 log2013.log
#给文件创建硬链接,为log2013.log创建硬链接ln2013,log2013.log与ln2013的各项属性相同
ln log2013.log ln2013
#输出
[root@localhost test]# ll
lrwxrwxrwx 1 root root 11 12-07 16:01 link2013 -> log2013.log
-rw-r--r-- 1 root bin 61 11-13 06:03 log2013.log
[root@localhost test]# ln log2013.log ln2013
[root@localhost test]# ll
lrwxrwxrwx 1 root root 11 12-07 16:01 link2013 -> log2013.log
-rw-r--r-- 2 root bin 61 11-13 06:03 ln2013
-rw-r--r-- 2 root bin 61 11-13 06:03 log2013.log
文件内容操作命令
- cat
- more
- less
- head
- tail
- wc
- grep
cat
cat是应用最为广泛的文件内容查看命令。
cat在显示文本文件的内容时不进行停顿,因此不适合查看长文件。
cat [选项] 文件 #用于连接文件并打印到标准输出设备上 |
more
more 命令类似 cat ,不过会以一页一页的形式显示,更方便使用者逐页阅读,而最基本的指令就是按空白键(space)就往下一页显示,按 b 键就会往回(back)一页显示,而且还有搜寻字串的功能(与 vi 相似),使用中的说明文件,请按 h 。
more [参数] 文件 #查看文件内容 |
less
less [参数] 文件 #可以随意浏览文件,支持翻页和搜索,支持向上翻页和向下翻页。 |
head
head [参数] [文件] #用于查看文件的开头部分的内容,有一个常用的参数 -n 用于显示行数,默认为 10,即显示 10 行的内容。 |
tail
tail [参数] [文件] #用于查看文件的内容,有一个常用的参数 -f 常用于查阅正在改变的日志文件。 |
wc
wc 文件 #命令用于计算字数 |
grep
find和grep命令的区别:
find命令是在某个指定的路径下找我们需要的文件或目录,目标是文件或目录。
grep命令是在某个文件中找我们所需要的某部分内容,目标是字符串。
find命令类似于在Windows系统中执行的“搜索”操作,而grep命令则类似于在WORD中执行的“查找”操作。
grep [选项] 查找内容 源文件 #用于查找文件里符合条件的字符串 |
归档及压缩命令
- gzip
- bzip2
- tar
gzip
gzip 是 Linux 系统中经常用来对文件进行压缩和解压缩的命令,通过此命令压缩得到的新文件,其扩展名通常标记为“.gz”。
gzip 命令只能用来压缩文件,不能压缩目录,即便指定了目录,也只能压缩目录内的所有文件。
gzip [选项] 源文件 |
bzip2
bzip2采用新的压缩演算法,压缩效果比传统的LZ77/LZ78压缩演算法来得好。
bzip2 用于压缩文件,文件经压缩后以 .bz2 的扩展名结尾。bzip2 只能针对一个文件进行压缩,当要压缩多个文件时,需要将文件 tar 归档 。
bunzip2 命令用来解压 bz2 文件,事实上 bunzip2 就是 bzip2 的硬连接( bzip2 –d 等价于 bunzip2 ),命令选项基本相同。
命令格式:
bzip2 [ -cdfkqstvzVL123456789 ] [ filenames ... ] |
常用选项
-c --stdout |
使用实例:
# 压缩文件,默认会删除源文件 |
tar
将许多文件一起保存至一个单独的磁带或磁盘归档,并能从归档中单独还原所需文件。
补充
tar命令 可以为linux的文件和目录创建档案。利用tar,可以为某一特定文件创建档案(备份文件),也可以在档案中改变文件,或者向档案中加入新的文件。tar最初被用来在磁带上创建档案,现在,用户可以在任何设备上创建档案。利用tar命令,可以把一大堆的文件和目录全部打包成一个文件,这对于备份文件或将几个文件组合成为一个文件以便于网络传输是非常有用的。
首先要弄清两个概念:打包和压缩。打包是指将一大堆文件或目录变成一个总的文件;压缩则是将一个大的文件通过一些压缩算法变成一个小文件。
为什么要区分这两个概念呢?这源于Linux中很多压缩程序只能针对一个文件进行压缩,这样当你想要压缩一大堆文件时,你得先将这一大堆文件先打成一个包(tar命令),然后再用压缩程序进行压缩(gzip bzip2命令)。
常用选项
-c: |
示例
tar -cf all.tar *.jpg |
alias命令——设置命令别名
命令别名通常是命令的缩写,对于经常使用的命令,通过设置别名可以简化操作。
alias命令的一般格式:
alias [别名=‘标准Shell命令行’]
单独执行alias命令可以列出当前系统中已经存在的别名命令。
alias cpd='cat /etc/passwd' #设置cat /etc/passwd的别名为cpd |
输入输出重定向
Linux系统中标准的输入设备为键盘,标准输出设备为屏幕,但在某些情况下,我们希望能从键盘以外的其他输入设备读取数据,或者将数据送到屏幕外的其他输出设备,这种情况称为重定向。
输入重定向:<
输出重定向:>或>>
会覆盖原来的文件
是在文件末尾另起一行写入
重定向的目标通常是一个文件。
输出重定向
cat /etc/passwd > pass.txt |
管道符“|”
通过管道符“|”,可以把多个简单的命令连接起来实现更加复杂的功能。
管道符用于将“|”左边命令的执行结果作为“|”右边命令的输入。
ls -lh /etc | more |
vi编辑器的使用
vi编辑器相当于Windows系统中的WORD加记事本。
命令格式:
vim [文件名]
如果指定的文件不存在,vim会创建文件并进入编辑状态,如果文件存在,则进入编辑状态对其进行编辑。
命令模式。启动vi编辑器后默认进入命令模式,主要完成光标移动、字符串查找、删除、复制、粘贴等操作。不论用户当前处于何种模式,只要按下Esc键,即可进入命令模式。
插入模式。在命令模式下,按“i”、“o”、“a”键或“Insert”键就可以切换到插入模式,该模式中的主要操作是录入文件内容,可以对文件正文进行修改、或者添加新的内容。处于插入模式时,vi编辑器的最后一行会出现“—INSERT—”的状态提示信息。
末行模式。在命令模式下,按“:”键即可进入末行模式,该模式中可以保存文件、退出编辑器,以及对文件内容进行查找、替换等操作。处于末行模式时,vi编辑器的最后一行会出现“:”提示符。
命令模式下的基本操作
复制、粘贴、删除
文件内容查找
撤销编辑
末行模式下的基本操作
文件内容替换
:[替换范围] s/旧的内容/新的内容[/g][/c]