Linux指令

Ubuntu, Desktop, Operating System, Computer, Office

1.目录与路径

. 本层目录
.. 上一层目录
- 前一个目录(历史)
~ 当前用户身份目录
~account account这个用户的home目录
cd 变换目录
pwd 显示当前目录路径
mkdir 建立新的目录
rmdir 删除一个空的目录

2.文件与目录管理

(1) ls 文件目录检查

选项与参数:
-a :全部的文件,连同隐藏档( 开头为 . 的文件) 一起列出来(常用)
-A :全部的文件,连同隐藏档,但不包括 . 与 .. 这两个目录
-d :仅列出目录本身,而不是列出目录内的文件数据(常用)
-f :直接列出结果,而不进行排序 (ls 预设会以档名排序!)
-F :根据文件、目录等信息,给予附加数据结构,例如:
*:代表可执行文件; /:代表目录; =:代表 socket 文件; |:代表 FIFO 文件;
-h :将文件容量以人类较易读的方式(例如 GB, KB 等等)列出来;
-i :列出 inode 号码,inode 的意义下一章将会介绍;
-l :长数据串行出,包含文件的属性与权限等等数据;(常用)
-n :列出 UID 与 GID 而非使用者与群组的名称 (UID 与 GID 会在账号管理提到!)
-r :将排序结果反向输出,例如:原本档名由小到大,反向则为由大到小;
-R :连同子目录内容一起列出来,等于该目录下的所有文件都会显示出来;
-S :以文件容量大小排序,而不是用档名排序;
-t :依时间排序,而不是用档名。
–color=never
:不要依据文件特性给予颜色显示;
–color=always :显示颜色
–color=auto :让系统自行依据设定来判断是否给予颜色
–full-time :以完整时间模式 (包含年、月、日、时、分) 输出
–time={atime,ctime} :输出 access 时间或改变权限属性时间 (ctime)
而非内容变更时间 (modification time)

范例:

将家目录下的所有文件列出来(含属性与隐藏文件)

1
ls -al~

完整的呈现文件的修改时间 (modification time)

1
ls -al --full-time ~

(2)复制、删除与移动

cp 复制文件或者目录
rm 删除
mv 移动

cp(复制文件或者目录)

cp [-adfilprsu] 来源文件(source) 目标文件(destination)

选项与参数:
-a :相当于 -dr –preserve=all 的意思,至于 dr 请参考下列说明;(常用)
-d :若来源文件为链接文件的属性(link file),则复制链接文件属性而非文件本身;
-f :为强制(force)的意思,若目标文件已经存在且无法开启,则移除后再尝试一次;
-i :若目标文件(destination)已经存在时,在覆盖时会先询问动作的进行(常用)
-l :进行硬式连结(hard link)的连结档建立,而非复制文件本身;
-p :连同文件的属性(权限、用户、时间)一起复制过去,而非使用默认属性(备份常用);
-r :递归持续复制,用于目录的复制行为;(常用)
-s :复制成为符号链接文件 (symbolic link),亦即『快捷方式』文件;
-u :destination 比 source 旧才更新 destination,或 destination 不存在的情况下才复制。
–preserve=all :除了 -p 的权限相关参数外,还加入 SELinux 的属性, links, xattr 等也复制了。
最后需要注意的,如果来源档有两个以上,则最后一个目的文件一定要是『目录』才行!

范例:

把new/1.txt复制到当前目录.

1
cp new/1.txt .

.为当前目录的意思,执行之后你会发现在当前目录多了一个1.txt,在/new目录中还留着一个1.txt

rm (移除文件或者目录)

rm [-fir] 文件或目录

选项与参数:
-f :就是 force 的意思,忽略不存在的文件,不会出现警告讯息;
-i :互动模式,在删除前会询问使用者是否动作
-r :递归删除啊!最常用在目录的删除了!这是非常危险的选项!!!

范例一:

将刚刚在 cp 的范例中建立的 bashrc 删除掉

1
2
cd /tmp
rm -i bashre

范例二:

透过通配符*的帮忙,将/tmp 底下开头为 bashrc 的档名通通删除:

1
rm -i bashrc*

注意那个星号,代表的是 0 到无穷多个任意字符喔!很好用的东西!

如果想删除目录下的所有jpg图像文件的话可以使用:

1
rm -i *.jpg

范例三:

将 cp 范例中所建立的 /tmp/etc/ 这个目录删除掉!

1
rm -r /tmp/etc

不管etc里面是否还有文件或者目录,直接删掉

mv(移动文件与目录,或更名)

1
2
mv [-fiu] source destination
mv [options] source1 source2 source3 .... directory

选项与参数:
-f :force 强制的意思,如果目标文件已经存在,不会询问而直接覆盖;
-i :若目标文件 (destination) 已经存在时,就会询问是否覆盖!
-u :若目标文件已经存在,且 source 比较新,才会更新 (update)

范例一:

复制一文件,建立一目录,将文件移动到目录中

1
2
3
4
cd /tmp
cp ~/.bashrc bashrc
mkdir mvtest
mv bashrc mvtest2

cp相当与负责,mv相当与剪切

范例二:

将刚刚的目录名称更名为 mvtest2

1
mv mvtest mvtest2

mvtest文件夹这样就更名为mvtest2了

(3)取得文件文件名和目录名称

1
2
3
4
basename /etc/sysconfig/network
network<== 很简单!就取得最后的档名~
dirname /etc/sysconfig/network
dirname /etc/sysconfig<== 取得的变成目录名了!

3.文件内容查询

cat 由第一行开始显示文件内容
tac 从最后一行开始显示,可以看出 tac 是 cat 的倒着写!
nl 显示的时候,顺道输出行号!
more 一页一页的显示文件内容
less 与 more 类似,但是比 more 更好的是,他可以往前翻页!
head 只看头几行
tail 只看尾巴几行
od 以二进制的方式读取文件内容!

more (一页一页翻动)

1
more package.json

空格键 (space):代表向下翻一页;

Enter:代表向下翻『一行』

/字符串:搜索关键词

:f :显示文件名以及目前行数

q:离开

b:往回翻页

less (一页一页翻动)

可以使用 [pageup] [pagedown] 等按键的功能来往前往后
翻看文件

空格键 :向下翻动一页

pagedown : 向下翻动一页

pageup:向上翻动一页

/字符串 :向下搜寻『字符串』的功能;
?字符串 :向上搜寻『字符串』的功能;
n :重复前一个搜寻 (与 / 或 ? 有关!)
N :反向的重复前一个搜寻 (与 / 或 ? 有关!)
g :前进到这个资料的第一行去;
G :前进到这个数据的最后一行去 (注意大小写);
q :离开 less 这个程序;

touch

1
touch [-acdmt] 文件

选项与参数:
-a :仅修订 access time;
-c :仅修改文件的时间,若该文件不存在则不建立新文件;
-d :后面可以接欲修订的日期而不用目前的日期,也可以使用 –date=”日期或时间”
-m :仅修改 mtime ;
-t :后面可以接欲修订的时间而不用目前的时间,格式为[YYYYMMDDhhmm]

4.文件与目录的默认权限与隐藏权限

文件预设权限:umask查看

1
2
3
4
umask
0022
umask
u=rwx,g=rx,o=rx

查阅的方式有两种,一种可以直接输入 umask ,就可以看到数字型态的权限设定分数, 一种则是
加入 -S (Symbolic) 这个选项,就会以符号类型的方式来显示出权限了!

这段没看懂,先不写着先!

观察文件类型:file

1
2
3
[root@study ~]# file ~/.bashrc
/root/.bashrc: ASCII text
<==告诉我们是 ASCII 的纯文本档啊!

5.指令于文件收缩

脚本文件名的搜索

在终端机模式当中,连续输入两次[tab]按键就能够知道用户有多少指令可以下达。同时我们可以通过which或者type来寻找这些指令的完整文件名放在哪里,举例寻找’ls’这个常用指令放在哪里:

1
2
usg@usg-HP-280-Pro-G2-MT-Legacy:~$ which ifconfig
/sbin/ifconfig <==告诉我们是在 /sbin/ifconfig!

这个指令是根据『PATH』这个环境变量所规范的路径,去搜寻『执行档』的档名~ 所以,重点是
找出『执行档』而已!且 which 后面接的是『完整档

which(寻找执行命令)

1
which [-a] command

选项或参数:
-a :将所有由 PATH 目录中可以找到的指令均列出,而不止第一个被找到的指令名称

范例一:

搜寻 ifconfig 这个指令的完整文件名

1
which ifconfig

文件档名的搜寻

我们一般搜索文件时都是先使用 whereis 或者是 locate 来检查,如果真的找不到了,才以 find 来搜寻whereis 只找系统中某些特定目录底下的文件而已, locate则是利用数据库来搜寻文件名,当然两者就相当的快速, 并且没有实际的搜寻硬盘内的文件系统状态,比较省时间

whereis (寻找文件文件名)

whereis [-bmsu] 文件或目录名

选项与参数:
-l :可以列出 whereis 会去查询的几个主要目录而已
-b :只找 binary 格式的文件
-m :只找在说明文件 manual 路径下的文件
-s :只找 source 来源文件
-u :搜寻不在上述三个项目当中的其他特殊文件

范例一:寻找ifconfieg档名

1
whereis ifconfig

范例二:只找出跟 passwd 有关的『说明文件』档名(man page)

1
2
whereis passwd
# 全部的档名通通列出来!
1
2
whereis -m passwd
# 只有在 man 里面的档名才抓出来!

locate / updatedb

1
locate [-ir] keyword

选项与参数:
-i :忽略大小写的差异;
-c :不输出档名,仅计算找到的文件数量
-l :仅输出几行的意思,例如输出五行则是 -l 5
-S :输出 locate 所使用的数据库文件的相关信息,包括该数据库纪录的文件/目录数量等
-r :后面可接正规表示法的显示方式

范例一:找出系统中所有与 passwd 相关的档名,且只列出 5 个

1
locate -l 5 passwd
1
2
3
4
5
/etc/passwd
/etc/passwd-
/etc/pam.d/passwd
/etc/security/opasswd
/usr/bin/gpasswd

locate 的使用更简单,直接在后面输入『文件的部分名称』后,就能够得到结果。 举上面的例子来说,我输入 locate passwd ,那么在完整文件名 (包含路径名称) 当中,只要有 passwd 在其中,就会显示出来。

限制:

locate是经由数据库来搜寻的,而数据库的建立默认是在每天执行一次所以当你新建立起来的文件, 却还在数据库更新之前搜寻该文件,那么 locate 会无法找到

手动更新数据库:

1
sudo updatedb

ubuntu会读取‘/var/lib/mlocate/mlocate.db’里的配置文件更新数据库文件,可能会等待数分钟。

updatedb:根据 /etc/updatedb.conf 的设定去搜寻系统硬盘内的文件名,并更新 /var/lib/mlocate 内的数据库
文件;
locate:依据 /var/lib/mlocate 内的数据库记载,找出用户输入的关键词文件名。

find

find [PATH] [option] [action]

选项与参数:

  1. 与时间有关的选项:共有 -atime, -ctime 与 -mtime ,以 -mtime 说明

-mtime n :n 为数字,意义为在 n 天之前的『一天之内』被更动过内容的文件;
-mtime +n :列出在 n 天之前(不含 n 天本身)被更动过内容的文件档名;
-mtime -n :列出在 n 天之内(含 n 天本身)被更动过内容的文件档名。
-newer file :file 为一个存在的文件,列出比 file 还要新的文件档名

范例一:将过去系统上面 24 小时内有更动过内容 (mtime) 的文件列出

1
2
3
4
find / -mtime 0
# 那个 0 是重点!0 代表目前的时间,所以,从现在开始到 24 小时前,
# 有变动过内容的文件都会被列出来!那如果是三天前的 24 小时内?
# find / -mtime 3 有变动过的文件都被列出的意思!

范例二:寻找 /etc 底下的文件,如果文件日期比 /etc/passwd 新就列出

1
2
find /etc -newer /etc/passwd
# -newer 用在分辨两个文件之间的新旧关系是很有用的!

选项与参数:
2. 与使用者或组名有关的参数:
-uid n :n 为数字,这个数字是用户的账号 ID,亦即 UID ,这个 UID 是记录在
/etc/passwd 里面与账号名称对应的数字。这方面我们会在第四篇介绍。
-gid n :n 为数字,这个数字是组名的 ID,亦即 GID,这个 GID 记录在
/etc/group,相关的介绍我们会第四篇说明~
-user name :name 为使用者账号名称喔!例如 dmtsai
-group name:name 为组名喔,例如 users ;
-nouser :寻找文件的拥有者不存在 /etc/passwd 的人!
-nogroup :寻找文件的拥有群组不存在于 /etc/group 的文件!
当你自行安装软件时,很可能该软件的属性当中并没有文件拥有者,
这是可能的!在这个时候,就可以使用 -nouser 与 -nogroup 搜寻。

范例三:搜寻 /home 底下属于 dmtsai 的文件

1
2
3
find /home -user dmtsai
# 这个东西也很有用的~当我们要找出任何一个用户在系统当中的所有文件时,
# 就可以利用这个指令将属于某个使用者的所有文件都找出来喔!

范例四:搜寻系统中不属于任何人的文件

1
2
3
find / -nouser
# 透过这个指令,可以轻易的就找出那些不太正常的文件。如果有找到不属于系统任何人的文件时,
# 不要太紧张,那有时候是正常的~尤其是你曾经以原始码自行编译软件时。

选项与参数:
3. 与文件权限及名称有关的参数:
-name filename:搜寻文件名为 filename 的文件;
-size [+-]SIZE:搜寻比 SIZE 还要大(+)或小(-)的文件。这个 SIZE 的规格有:c: 代表 byte, k: 代表 1024bytes。所以,要找比 50KB还要大的文件,就是『 -size +50k 』
-type TYPE:搜寻文件的类型为 TYPE 的,类型主要有:一般正文件 (f), 装置文件 (b, c),目录 (d), 连结档 (l), socket (s), 及 FIFO (p) 等属性。
-perm mode:搜寻文件权限『刚好等于』 mode 的文件,这个 mode 为类似 chmod的属性值,举例来说, -rwsr-xr-x 的属性为 4755 !

-perm -mode :搜寻文件权限『必须要全部囊括 mode 的权限』的文件,举例来说,我们要搜寻 -rwxr–r– ,亦即 0744 的文件,使用 -perm -0744,当一个文件的权限为 -rwsr-xr-x ,亦即 4755 时,也会被列出来,因为 -rwsr-xr-x 的属性已经囊括了 -rwxr–r– 的属性了。
-perm /mode :搜寻文件权限『包含任一 mode 的权限』的文件,举例来说,我们搜寻
-rwxr-xr-x ,亦即 -perm /755 时,但一个文件属性为 -rw——-
也会被列出来,因为他有 -rw…. 的属性存在!

范例五:找出档名为 passwd 这个文件

1
find / -name passwd

找出文件名包含了 passwd 这个关键词的文件

1
2
3
find / -name "*passwd*"
# 利用这个 -name 可以搜寻档名啊!默认是完整文件名,如果想要找关键词,
# 可以使用类似 * 的任意字符来处理

范例六:找出 /run 目录下,文件类型为 Socket 的檔名有哪些?

1
2
3
find /run -type s
# 这个 -type 的属性也很有帮助喔!尤其是要找出那些怪异的文件,
# 例如 socket 与 FIFO 文件,可以用 find /run -type p 或 -type s 来找!

范例七:搜寻文件当中含有 SGID 或 SUID 或 SBIT 的属性

1
2
3
find / -perm /7000
# 所谓的 7000 就是 ---s--s--t ,那么只要含有 s 或 t 的就列出,所以当然要使用 /7000,
# 使用 -7000 表示要同时含有 ---s--s--t 的所有三个权限。而只需要任意一个,就是 /7000

范例九:找出系统中,大于 1MB 的文件

1
find / -size +1M

6.Linux磁盘和文件操作

磁盘与目录的容量

df [-ahikHTm] [目录或文件名]

选项与参数:
-a :列出所有的文件系统,包括系统特有的 /proc 等文件系统;
-k :以 KBytes 的容量显示各文件系统;
-m :以 MBytes 的容量显示各文件系统;
-h :以人们较易阅读的 GBytes, MBytes, KBytes 等格式自行显示;
-H :以 M=1000K 取代 M=1024K 的进位方式;
-T :连同该 partition 的 filesystem 名称 (例如 xfs) 也列出;
-i :不用磁盘容量,而以 inode 的数量来显示

范例一:将系统内所有的 filesystem 列出来!

1
df
1
2
3
4
5
6
7
文件系统           1K-块     已用     可用 已用% 挂载点
udev 10156628 0 10156628 0% /dev
tmpfs 2036200 3324 2032876 1% /run
/dev/sda2 95596964 32107852 58589940 36% /
tmpfs 10180996 665676 9515320 7% /dev/shm
tmpfs 5120 4 5116 1% /run/lock
tmpfs 10180996 0 10180996 0% /sys/fs/cgroup

范例二:将容量结果以易读的容量格式显示出来

1
df -h
1
2
3
4
5
6
7
文件系统        容量  已用  可用 已用% 挂载点
udev 9.7G 0 9.7G 0% /dev
tmpfs 2.0G 3.3M 2.0G 1% /run
/dev/sda2 92G 31G 56G 36% /
tmpfs 9.8G 651M 9.1G 7% /dev/shm
tmpfs 5.0M 4.0K 5.0M 1% /run/lock
tmpfs 9.8G 0 9.8G 0% /sys/fs/cgroup

范例三:将系统内的所有特殊文件格式及名称都列出来

1
df -aT
1
2
3
4
5
6
7
文件系统       类型                1K-块     已用     可用 已用% 挂载点
sysfs sysfs 0 0 0 - /sys
proc proc 0 0 0 - /proc
udev devtmpfs 10156628 0 10156628 0% /dev
devpts devpts 0 0 0 - /dev/pts
tmpfs tmpfs 2036200 3324 2032876 1% /run
/dev/sda2 ext4 95596964 32107856 58589936 36% /

范例四:将 /etc 底下的可用的磁盘容量以易读的容量格式显示

1
df -h /etc
1
2
文件系统        容量  已用  可用 已用% 挂载点
/dev/sda2 92G 31G 56G 36% /

范例五:将目前各个 partition 当中可用的 inode 数量列出

1
df -ih
1
2
3
4
5
6
7
文件系统       Inode 已用(I) 可用(I) 已用(I)% 挂载点
udev 2.5M 541 2.5M 1% /dev
tmpfs 2.5M 1.1K 2.5M 1% /run
/dev/sda2 5.9M 479K 5.4M 9% /
tmpfs 2.5M 2.3K 2.5M 1% /dev/shm
tmpfs 2.5M 6 2.5M 1% /run/lock
tmpfs 2.5M 18 2.5M 1% /sys/fs/cgroup

磁盘分区格式化

lsblk 列出系统上的所有磁盘列表

选项与参数:
-d :仅列出磁盘本身,并不会列出该磁盘的分区数据
-f :同时列出该磁盘内的文件系统名称
-i :使用 ASCII 的线段输出,不要使用复杂的编码 (再某些环境下很有用)
-m :同时输出该装置在 /dev 底下的权限数据 (rwx 的数据)
-p :列出该装置的完整文件名!而不是仅列出最后的名字而已。
-t :列出该磁盘装置的详细数据,包括磁盘队列机制、预读写的数据量大小等

1
2
3
4
5
6
7
8
lsblk

NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
sda 8:0 0 298.1G 0 disk
├─sda1 8:1 0 512M 0 part /boot/efi
├─sda2 8:2 0 93.1G 0 part /
├─sda3 8:3 0 100G 0 part /data
└─sda4 8:4 0 104.5G 0 part /home

磁盘分区: gdisk/fdisk

MBR 分区表请使用 fdisk 分区, GPT 分区表请使用 gdisk 分区!


7.压缩文件的用途和技术

在 Linux 的环境中,压缩文件案的扩展名大多是:『 *.tar, *.tar.gz, *.tgz, *.gz, *.Z, *.bz2, *.xz』

*.Z compress 程序压缩的文件;
*.zip zip 程序压缩的文件;
*.gz gzip 程序压缩的文件;
*.bz2 bzip2 程序压缩的文件;
*.xz xz 程序压缩的文件;
*.tar tar 程序打包的数据,并没有压缩过;
*.tar.gz tar 程序打包的文件,其中并且经过 gzip 的压缩
*.tar.bz2 tar 程序打包的文件,其中并且经过 bzip2 的压缩
*.tar.xz tar 程序打包的文件,其中并且经过 xz 的压缩

gzip

gzip 可以说是应用度最广的压缩指令了!目前 gzip 可以解开 compress, zip 与 gzip 等软件所压缩的文件。

1
gzip [-cdtv#] 檔名

选项与参数:
-c :将压缩的数据输出到屏幕上,可透过数据流重导向来处理;
-d :解压缩的参数;
-t :可以用来检验一个压缩文件的一致性~看看文件有无错误;
-v :可以显示出原文件/压缩文件案的压缩比等信息;
-# :# 为数字的意思,代表压缩等级,-1 最快,但是压缩比最差、-9 最慢,但是压缩比最好!预设是 -6

范例一:将文件解压缩

1
gzip -d services.gz

gzip -d 会将原本的 .gz 删除,回复到原本的 services 文件。

范例四:将解开的 services 用最佳的压缩比压缩,并保留原本的文件

1
gzip -9 -c services > services.gz
  • zip 提供 1~9 的压缩等级,不过使用默认的 6 就非常好用了

  • -c 可以将原本要转成压缩文件的资料内容,将它变成文字类型从屏幕输出, 然后我们可以透过大于(>) 这个符号,将原本应该由屏幕输出的数据,转成输出到文件而不是屏幕,所以就能够建立出压缩挡了。只是档名也要自己写, 当然最好还是遵循 gzip 的压缩文件名


bzip2

若说 gzip 是为了取代 compress 并提供更好的压缩比而成立的,那么 bzip2 则是为了取代 gzip 并提供更佳的压缩比而来的,两者用法几乎相同。

1
2
bzip2 [-cdkzv#] 檔名
bzcat 檔名.bz2

选项与参数:
-c :将压缩的过程产生的数据输出到屏幕上!
-d :解压缩的参数
-k :保留源文件,而不会删除原始的文件喔!
-z :压缩的参数 (默认值,可以不加)
-v :可以显示出原文件/压缩文件案的压缩比等信息;
-# :与 gzip 同样的,都是在计算压缩比的参数, -9 最佳, -1 最快!

xz

虽然 bzip2 已经具有很棒的压缩比,不过显然某些自由软件开发者还不满足,因此后来还推出了 xz这个压缩比更高的软件!这个软件的用法也跟 gzip/bzip2 几乎一模一样

1
2
xz [-dtlkc#] 檔名
xczt 檔名.xz

选项与参数:
-d :就是解压缩啊!
-t :测试压缩文件的完整性,看有没有错误-l :列出压缩文件的相关信息
-k :保留原本的文件不删除~
-c :同样的,就是将数据由屏幕上输出的意思!
-# :同样的,也有较佳的压缩比的意思!

8.打包指令tar

gzip, bzip2, xz仅能对单一文件进行压缩,所以诞生了tar将多个文件或目录包成一个大文件的指令功能,tar 可以将多个目录或文件打包成一个大文件,同时还可以透过 gzip/bzip2/xz 的支持,将该文件同时进行压缩

目前 Windows 的 WinRAR 也支持 .tar.gz 档名的解压缩

1
2
3
tar [-z|-j|-J] [cv] [-f 待建立的新檔名] filename... <==打包与压缩
tar [-z|-j|-J] [tv] [-f 既有的 tar 檔名] <==察看檔名
tar [-z|-j|-J] [xv] [-f 既有的 tar 檔名] [-C 目录] <==解压缩

选项与参数:
-c :建立打包文件,可搭配 -v 来察看过程中被打包的档名(filename)
-t :察看打包文件的内容含有哪些档名,重点在察看『档名』就是了;
-x :解打包或解压缩的功能,可以搭配 -C (大写) 在特定目录解开
特别留意的是, -c, -t, -x 不可同时出现在一串指令列中。
-z :透过 gzip的支持进行压缩/解压缩:此时档名最好为 *.tar.gz
-j :透过 bzip2 的支持进行压缩/解压缩:此时档名最好为 *.tar.bz2
-J :透过 xz的支持进行压缩/解压缩:此时档名最好为 *.tar.xz
特别留意, -z, -j, -J 不可以同时出现在一串指令列中
-v:在压缩/解压缩的过程中,将正在处理的文件名显示出来!
-f filename:-f 后面要立刻接要被处理的档名!建议 -f 单独写一个选项啰!(比较不会忘记)
-C 目录:这个选项用在解压缩,若要在特定目录解压缩,可以使用这个选项。

其他后续练习会使用到的选项介绍:
-p(小写) :保留备份数据的原本权限与属性,常用于备份(-c)重要的配置文件
-P(大写) :保留绝对路径,亦即允许备份数据中含有根目录存在之意;
–exclude=FILE:在压缩的过程中,不要将 FILE 打包!

其实最简单的使用 tar 就只要记忆底下的方式即可:

  • 压缩:tar -jcv -f filename.tar.bz2 要被压缩的文件或目录名称
  • 查 询:tar -jtv -f filename.tar.bz2
  • 解压缩:tar -jxv -f filename.tar.bz2 -C 欲解压缩的目录

9.vim的使用

一般指令模式

h 或 向左箭头键(←) 光标向左移动一个字符
j 或 向下箭头键(↓) 光标向下移动一个字符
k 或 向上箭头键(↑) 光标向上移动一个字符
l 或 向右箭头键(→) 光标向右移动一个字符
[Ctrl] + [f] 屏幕『向下』移动一页,相当于 [Page Down]按键 (常用)
[Ctrl] + [b] 屏幕『向上』移动一页,相当于 [Page Up] 按键 (常用)

一般指令模式切换到编辑模式

i,I 进入插入模式(Insert mode):i 为『从目前光标所在处插入』, I 为『在目前所在列的第一个非空格符处开始插入
a,A 进入插入模式(Insert mode):a 为『从目前光标所在的下一个字符处开始插入』, A 为『从光标所在列的最后一个字符处开始插入』。(常用)
o,O 进入插入模式(Insert mode):这是英文字母 o 的大小写。 o 为『在目前光标所在的下一列处插入新的一列』; O 为在目前光标所在处的上一列插入新的一列!(常用)
r,R 进入取代模式(Replace mode):r 只会取代光标所在的那一个字符一次; R 会一直取代光标所在的文字,直到按下 ESC为止;(常用)

一般指令切换到指令列模式

:W 将编辑的数据写入硬盘文件中(常用)
:w! 若文件属性为『只读』时,强制写入该文件。不过,到底能不能写入, 还是跟你对该文件的文件权限有关啊!
:q 离开 vi (常用)
:q! 若曾修改过文件,又不想储存,使用 ! 为强制离开不储存文件。
:wq 储存后离开,若为 :wq! 则为强制储存后离开 (常用)
ZZ 这是大写的 Z 喔!若文件没有更动,则不储存离开,若文件已经被更动过,则储存后离开!
:w[filename] 将编辑的数据储存成另一个文件(类似另存新档)
:r[filename] 在编辑的数据中,读入另一个文件的数据。亦即将 『filename』 这个文件内容加到游标所在列后面