Linux与生活中常用的Windows系统有着本质的区别;下面看一下百度百科对Linux的定义。
Linux是一套免费使用和自由传播的类Unix操作系统,是一个基于POSIX和UNIX的多用户、多任务、支持多线程和多CPU的操作系统。
Linux 目录
Linux 系统和信息都以文件的形式进行存储。
Linux的目录结构为树状结构,以"/"目录作为根目录。
/ ## 根目录
bin ## 系统程序
boot ## 内核和启动程序,所有和启动相关的文件都保存在这里
etc ## 系统软件的启动和配置文件,系统在启动过程中需要读取的文件都在这个目录。如用户账户和密码。
dev ## 设备文件
lib ## 系统程序库文件
tmp ## 临时文件夹
home ## 用户的主目录
绝对路径与相对路径
绝对路径:路径的写法『一定由根目录 / 写起』,例如 /usr/share/doc
这个目录。
相对路径:路径的写法『由当前所在目录写起』,例如由你当前所在的目录 /usr/share/doc
要到目标目录 /usr/share/man
底下时,可以写成: cd ../man
。"./"表示当前目录。
## 在linux系统里特殊符号代表的意义
. ## 代表此层目录
.. ## 代表上一层目录
- ## 代表前一个工作目录
~ ## 代表『当前登陆用户』所在的家目录"/home/youraccount",该用户对"/home/youraccount"目录拥有完全控制权
常用的目录操作命令
cd ## 切换目录
pwd ## 显示当前所在目录
mkdir ## 建立一个新的目录
rmdir ## 删除一个空的目录
ls命令
ls 目录名称
选项与参数:
-a :全部的目录,连同隐藏文件夹一起列出来
-h :将目录容量转换为以易读的方式(例如 GB, KB 等等)
-l :列出目录的详细信息
-S :以文件大小排序
-t :以时间排序
$ ls -alhS /usr/
total 136K
dr-xr-xr-x. 2 root root 36K Jun 25 22:03 bin
dr-xr-xr-x. 52 root root 36K Jun 19 01:17 lib64
dr-xr-xr-x. 2 root root 20K Jun 19 01:17 sbin
drwxr-xr-x. 13 root root 4.0K Feb 27 14:58 .
dr-xr-xr-x. 21 root root 4.0K Jul 1 23:30 ..
drwxr-xr-x. 2 root root 4.0K Apr 11 2018 etc
drwxr-xr-x. 2 root root 4.0K Apr 11 2018 games
drwxr-xr-x. 49 root root 4.0K Jun 17 10:52 include
dr-xr-xr-x. 41 root root 4.0K Jun 17 10:51 lib
drwxr-xr-x. 26 root root 4.0K Jun 19 01:17 libexec
drwxr-xr-x. 14 root root 4.0K Jun 17 22:48 local
drwxr-xr-x. 126 root root 4.0K Jun 25 22:03 share
drwxr-xr-x. 4 root root 4.0K Feb 27 14:58 src
lrwxrwxrwx. 1 root root 10 Feb 27 14:58 tmp -> ../var/tmp
cp命令
cp 被拷贝的文件 目标目录
cp file1 file2 ... 目标目录
选项与参数:
-f :强行复制文件或目录, 不论目的文件或目录是否已经存在
-i :若目标文件(destination)已经存在时,在覆盖时会先询问用户
-p :连同档案的属性一起复制过去,而非使用默认属性(备份常用);
-u :若destination 比 source 旧才更新 destination !
-R :复制目录及目录内的所有项目
-v :显示执行过程
rm命令
rm 文件或目录
选项与参数:
-f :忽略不存在的文件,不显示警告讯息
-i :在删除会先询问用户
-r :递归删除文件夹
#删除文件
$ rm *.sam
#删除目录
$ rm -rf /tmp/etc
mv命令
mv 待移动的文件或目录 目标目录
mv file1 file2 ... 目标目录
选项与参数:
-f :如果目标文件已经存在,不会询问而直接覆盖;
-i :若目标文件已经存在时,询问用户是否覆盖
解压缩命令
根据文件的后缀名,需要以不同方式压缩的文件使用不同的命令进行解压:
- tar
tar –xvf
- .gz
gzip -d
或gunzip
- .tar.gz 或 .tgz
tar –xzf
- .bz2
bzip2 -d
或bunzip2
- .tar.bz2
tar –xjf
- .Z
uncompress
- .tar.Z
tar –xZf
- .rar
unrar e
- .zip
unzip
链接
Linux链接分两种,一种被称为硬链接(Hard Link),另一种被称为符号链接(Symbolic Link),也称为软连接。
默认情况下,ln命令产生硬链接。
【硬连接】
硬连接指通过索引节点来进行连接。在Linux的文件系统中,保存在磁盘分区中的文件都会得到一个分配的编号, 称之为索引节点号(Inode Index)。在Linux中,硬连接就是多个文件名指向同一索引节点,允许一个文件拥有多个有效路径名,这样用户就可以建立硬连接到重要文件,以防止“误删”的功能。如上所述,当目录的索引节点有一个以上的连接,只删除一个连接并不影响索引节点本身和其它的连接,只有当最后一个连接被删除后,文件的数据块 及目录的连接才会被释放。也就是说,文件真正删除的条件是与之相关的所有硬连接均被删除。
【软连接】
软链接类似于Windows的快捷方式。软连接实际上是一个文本文件,其指向另一文件的位置信息。
$ touch mf1 # 创建一个测试文件mf1
$ ln mf1 mf2 # 创建mf1的一个硬连接文件mf2
$ ln -s mf1 mf3 # 创建mf1的一个符号连接文件mf3;软连接
$ ls -li # -i参数显示文件的inode节点信息
total 0
9797648 -rw-r--r-- 2 oracle oinstall 0 Apr 21 08:11 mf1
9797648 -rw-r--r-- 2 oracle oinstall 0 Apr 21 08:11 mf2
9797649 lrwxrwxrwx 1 oracle oinstall 2 Apr 21 08:11 mf3 -> mf1
## 从上面的结果中可以看出,硬连接文件mf2与原文件mf1的inode节点相同,均为9797648,然而软连接文件的inode节点不同。
## 当删除原始文件mf1后,硬连接mf2不受影响,软连接mf1文件无效
## 当删除硬链接mf2后,原始文件mf1不受影响,软连接mf3文件不受影响
## 当删除软链接mf3后,原始文件mf1不受影响,硬连接mf2文件不受影响
## 当删除原始文件mf1,,硬连接mf2后,文件被彻底删除
注意:
- 强烈不建议给目录创建硬链接,容易造成目录链接死循环
- 不能跨硬盘分区创建硬链接
通配符
使用通配符可以对具有某种规律的文件进行同一操作。
字符 | 含义 | 实例 | 解释 |
---|---|---|---|
* | 匹配 0 或多个字 符 | a*b | a与b之间可以有任意长度的任意字符,也可以一个 也没有,如ab, aab, acccccdb, a24322qqb。 |
? | 匹配任意单一字符 | a?b | a与b之间必须有一个任意字符,如aqb, acb, a7b。 |
[list] | 匹配list中的任意 单一字符 | a[xyz]b | a与b之间必须是list列出的任意一个字符, 如: axb, ayb, azb。 |
[!list] | 匹配除list中的任 意单一字符 | a[!0-9]b | a与b之间必须是除去阿拉伯字符的任意一个字符, 如axb, aab, a-b。 |
[c1-c2] | 匹配 c1-c2 中的 任意单一数字 | a[0-9]b | a与b之间必须是0与9之间的一个字符,如a0b, a1b... a9b。 |
{string1...} | 匹配 sring1或其 他字符串之一 | a{abc,xyz,123}b | a与b之间只能是abc或xyz或123这三个字符串之 一。 |
示例
## 1.拷贝文件
cp /tmp/file[0-9].txt /tmp/etc
## 2.删除'file'开头,'.txt'结尾的所有文件
rm -rf {file}*.txt
linux 文本操作
查看文件命令
cat
命令将文件由前向后全部打印在屏幕上。
tac
命令将文件由后向前全部打印在屏幕上。
head
命令查看文件头部, -n 选项可以指定查看前几行。
tail
命令查看文件尾部, -n 选项可以指定查看后几行。
more
命令将以一页一页的形式展示内容,按空白键(space)向后一页。
less
命令用来查阅文档,功能更为强大。在使用less
过程中,可以用以下的按键查看文件内容
q ## 退出
g ## 第一行
G ## 最后一行
j ## 下一行
k ## 上一行
/ ## 检索
n ## 匹配到的前一个
N ## 匹配到的后一个
less
还可以将文件整齐显示
less -SN text.txt
管道与重定向
管道(|)可以将一个命令的输出作为另外一个命令的输入。
重定向命令列表如下:
命令 | 说明 |
---|---|
command > file | 将输出重定向到 file。 |
command < file | 将输入重定向到 file。 |
command >> file | 将输出以追加的方式重定向到 file。 |
n > file | 将文件描述符为 n 的文件重定向到 file。 |
n >> file | 将文件描述符为 n 的文件以追加的方式重定向到 file。 |
n >& m | 将输出文件 m 和 n 合并。 |
n <& m | 将输入文件 m 和 n 合并。 |
<< tag | 将开始标记 tag 和结束标记 tag 之间的内容作为输入。 |
echo命令
echo用于字符串的输出
echo -n 字符串
选项与参数:
-n 不要在最后自动换行
-e 显示转义字符
cat命令
cat
命令将文件的内容打印在屏幕上
paste命令
用来将多个文件的内容合并,首先确保两个文件行数相同。 paste
连接文件时,除非指定 -d
选项,否则默认用空格
或tab键
分隔文本。
$ paste 1.txt 2.txt
a d
b e
c f
cut 可以从数据中提取某列
-f
选项指定列,可以是一个范围(比如2-8),注意不能用它给列排序。
cut 默认以 \t
为分隔符, -d
选项可以指定分隔符,比如指定,
为分隔符。
grep命令
grep
是一种强大的文本搜索工具,它能使用正则表达式搜索文本,并把匹配的行打印出来。grep
处理速度非常之快,尽量使用这个命令处理文本。
-v ## 排除匹配到的
-w ## 单词的完全匹配
-B ## 指定输出匹配到的前多少行
-A ## 指定输出匹配到的后多少行
-E ## 指定支持扩展表达式
-C ## 对匹配到的行计数
-o ## 只输出匹配到的部分
sort命令
sort 根据某种规律对文本进行排序
- -b 忽略每行前面开始出的空格字符。
- -c 检查文件是否已经按照顺序排序。
- -d 排序时,处理英文字母、数字及空格字符外,忽略其他的字符。
- -f 排序时,将小写字母视为大写字母。
- -i 排序时,除了040至176之间的ASCII字符外,忽略其他的字符。
- -m 将几个排序好的文件进行合并。
- -M 将前面3个字母依照月份的缩写进行排序。
- -n 依照数值的大小排序。
- -o<输出文件> 将排序后的结果存入指定的文件。
- -r 以相反的顺序来排序。
- -t<分隔字符> 指定排序时所用的栏位分隔字符。
- +<起始栏位>-<结束栏位> 以指定的栏位来排序,范围由起始栏位到结束栏位的前一栏位。
- --help 显示帮助。
- --version 显示版本信息。
uniq命令
uniq 根据文件某列或行检查文件中重复的行;uniq的输入文件必须是已经拍好序的文件。
- -c或--count 在每列旁边显示该行重复出现的次数。
- -d或--repeated 仅显示重复出现的行列。
- -f<栏位>或--skip-fields=<栏位> 忽略比较指定的栏位。
- -s<字符位置>或--skip-chars=<字符位置> 忽略比较指定的字符。
- -u或--unique 仅显示出一次的行列。
- -w<字符位置>或--check-chars=<字符位置> 指定要比较的字符。
- --help 显示帮助。
- --version 显示版本信息。
参考
Linux_Basics.md
Linux 命令大全