一、Linux基础知识
1、Linux命令结构
[IC@IC ~]$ command [-option] parameter1 parameter2
命令 选项 参数1 参数2
上述命令详细说明如下:
一行命令中第一个输入的部分(command)绝对是命令或可执行文件;
command为命令的名称,例如变换工作目录的命令为cd等;
中扩号[ ]并不存在于实际的命令中,表示是可选的,而加入选项设置时,通常选项前会带-号,
例如 -h;有时候会使用选项的完整全名,则选项前带有--符号,例如--help;
parameter1 parameter2为依附在选项后面的参数,或是command的参数;
命令、选项、参数等这几个东西中间以空格来区分,不论空几格shell都视为一格,所以空格
是很重要的特殊字符。
按下回车键后,该命令就立即执行,回车键代表着一行命令的开始启动。
命令太长的时候,可以使用反斜杠(\)来转义回车键,使命令连续到下一行,注意,反斜杠
后就立刻接着特殊字符才能转义。
其他:
a.在Linux系统中,英文大小写字母是不一样的,举例来说,cd与CD并不同。
2、重要按键
[Tab]按键:(1)[Tab]接在一串命令的第一个字段(command)后面,则为【命令补全】;
(2)[Tab]接在一串命令的第二个字段(command后面的后面),则为【文件补齐】;
若安装了Bash-completion 软件,则在某些命令后面使用[Tab]按键时,可以进行【选项/参数的补齐】功能;
善用[Tab]按键真得是个很好的习惯,可以让你避免很多输入错误的情况发生。
Ctrl+c:中断目前运行的程序。
Ctrl+d:离开命令行模式(相当于输入exit)或退出root身份。
↑箭头:呼出之前的命令到命令行。
在命令行用鼠标左键选中代码,再点鼠标中键即可粘贴选中内容到鼠标光标处。
3、注意事项
通常出现【command not found 】的可能原因为:
(1)这个命令不存在,因为该软件没有安装之故,解决方法就是安装该软件;
(2)这个命令所在的目录目前的用户并没有将它加入命令查找路径中;
(3)很简单,因为你打错字了。
(1)使用--help查看某命令的信息及用法
eg:[IC@IC ~]$ cal --help
查看cal命令的信息及用法。
(2)使用man page查看某命令的详细信息及用法
eg:[IC@IC ~]$ man date
或[IC@IC ~]$ man page date
查看date命令的详细信息及用法。
正确的关机方法
在Windows(非NT内核)系统中,由于是单人假多任务的情况,所以即使你的计算机关机,对于
别人应该不会有影响才对。不过,在Linux下面,由于每个程序(或说是服务)都是在后台执行,因此,
在你看不到的屏幕背后其实可能有相当多人同时在你的主机上面工作,例如浏览网页、发送邮件以及FTP
传输文件等,如果你直接按下电源开关来关机时,则其他人的数据可能就此中断,那可就伤脑筋了。此
外,最大的问题是,若不正常关机,则可能造成文件系统的毁损(因为来不及将数据回写到文件中,所以
有些服务的文件会有问题)。所以正常情况下,要关机时需要注意下面几件事。
(1)观察系统的使用状态
如果要看目前有谁在线,可以执行【who】这个命令,而如果要看网络的联机状态,可以执行【netstat
-a】这个命令,而要看后台执行的程序可以执行【ps -aux】这个命令,使用这些命令可以让你稍微了
解主机目前的使用状态。当然,就可以让你判断是否可以关机。
(2)通知在线用户关机的时刻
要关机前总得给在线的用户一些时间来结束它们的工作,所以,这个时候你可以使用 shutdown
的特别命令来达到此功能。
(3)正确的关机命令使用:例如 shutdown 与 reboot 两个命令。
(4)将数据同步写入硬盘中的命令:sync
(5)常用的关机命令:shutdown
[IC@IC ~]$ shutdown -h now
立刻关机,其中now相当于时间为0的状态。
[IC@IC ~]$ shutdown -h 20:25
系统在今天的20:25分会关机,若在21:25才执行此命令,则隔天才关机。
[IC@IC ~]$ shutdown -h +10
系统再过十分钟后自动关机。
[IC@IC ~]$ shutdown -r now
系统立刻重新开机。
[IC@IC ~]$ shutdown -r +30 'The system will reboot'
再过三十分钟系统会重新启动,并显示后面的信息给所有在线的使用者。
[IC@IC ~]$ shutdown -k now 'This system will reboot'
仅发出警告邮件的参数,系统并不会关机,吓唬人。
(6)重新启动、关机:reboot、poweroff
二、Linux常用命令
[IC@IC ~]$ ls
查看当前目录下的非隐藏文件。
[IC@IC ~]$ ls -al ~
或[IC@IC ~]$ ls -a -l ~
以Is这个【命令】列出【自己家目录(~)】下的【所有隐藏文件与相关的文件属性】。
[IC@IC ~]$ clear
清除所有命令。
[IC@IC ~]$ date
显示当前日期与时间。
[IC@IC ~]$ cal 1 2023
显示特定年月日历(此处为2023年1月)。
[IC@IC ~]$ su -
让身份变成root(一些命令只有root才能执行)。
[IC@IC ~]$ cd .
切换到当前目录。
[IC@IC ~]$ cd ..
切换到目前目录的上一层目录。
[IC@IC ~]$ cd ~
或[IC@IC ~]$ cd
切换到目前使用者身份所在的家目录。
[IC@IC ~]$ cd /var/spool/mail
切换到指定目录(绝对路径)。
[IC@IC mail]$ cd ../postfix
切换到指定目录(相对路径,由/var/spool/mail到/var/spool/postfix)。
[IC@IC ~]$ cd -
显示前一个工作目录。
[IC@IC ~]$ pwd
显示当前目录(链接路径)。
[IC@IC ~]$ pwd -P
显示当前目录(完整路径)。
[IC@IC ~]$ mkdir [-mp] 目录路径及名称
建立新目录。可选项:(1)-m:设置文件权限。
(2)-p:帮助你直接将所需要的目录(你输入路径中的所有目录)依次创建。
[IC@IC ~]$ rmdir [-p] 目录路径及名称
删除空目录。可选项:-p:你输入的路径中的空目录都删除。
[IC@IC ~]$ mv [-fiu] 源路径及名称 目标路径及名称(改名:目标路径最后一个名称可自己定,与源
路径最后一个名称可同可不同)
(1)-f:force强制的意思,如果目标文件已经存在,不会询问而直接覆盖。
(2)-i:若目标文件(destination)已经存在时,就会询问是否覆盖。
(3)-u:若目标文件已经存在,且source比较新,才会更新(update)。
移动前者目录文件到后者目录。
[IC@IC ~]$ cp [-adfilprsu] 源路径及名称 目标路径及名称(改名:目标路径最后一个名称可自
己定,与源路径最后一个名称可同可不同)
(1)-a:相当于-dr --preserve=all的意思,至于dr请参考下列说明(常用)。
(2)-d:若源文件为链接文件的属性(link file),则复制链接文件属性而非文件本身。
(3)-f:为强制(force)的意思,若目标文件已经存在且无法开启,则删除后再尝试一次。
(4)-i:若目标文件(destination)已经存在时,在覆盖时会先询问操作的进行(常用)。
(5)-l:进行硬链接(hard link)的链接文件建立,而非复制文件本身。
(5)-p:连同文件的属性(权限、用户、时间)一起复制过去,而非使用默认属性(备份常用)。
(7)-r:递归复制,用于目录的复制操作(常用)。
(8)-s:复制成为符号链接文件(symbolic link),亦即“快捷方式”文件。
(9)-u:destination 比source 旧才更新destination,或destination不存在的情况下才复制。
(10)--preserve=all:除了-p的权限相关参数外,还加入SELinux的属性,links、xattr等也复制。
复制前者目录文件到后者目录。
[IC@IC ~]$ rm [-fir] 路径及名称
(1)-f:就是force的意思,忽略不存在的文件,不会出现警告信息。
(2)-I:交互模式,在删除前会询问使用者是否操作。
(3)-r:递归删除,最常用于目录的删除,这是非常危险的选项。
删除指定的文件或目录。
超简单的文本编辑器:nano
eg:[IC@IC A_TEST]$ nano test.txt
在A_TEST目录下打开test.txt文件,若没有则在此目录下创建test.txt文件,直接在命令行输入想输入的
文本,之后按Ctrl+x,离开nano,根据提示选y/n/Ctrl+c(即^c),最后若不改名,直接按Enter即可
保存并退出nano。
注:压缩文件的扩展名:
.Z:compress程序压缩的文件。
.zip:zip程序压缩的文件。
.gz:gzip程序压缩的文件。
.bz2:bzip2程序压缩的文件。
.xz:xz程序压缩的文件。
.tar:tar程序打包的文件,并没有压缩过。
.tar.gz:tar程序打包的文件,并且经过gzip的压缩。
.tar.bz2:tar程序打包的文件,并且经过bzip2的压缩。
.tar.xz:tar程序打包的文件,并且经过xz的压缩。
(1)gzip可以说是应用最广的压缩命令了,目前gzip可以解开compress、zip与gzip等软件所压缩 的文件。
格式:[IC@IC A_TEST]$ gzip [-cdtv#] 文件名
-c:将压缩的数据输出到屏基上,可通过数据流重定向来处理。
-d:解压缩。
-t:可以用来检验一个压缩文件的一致性,看看文件有无错误。
-v:可以是示中原文件/压缩文件的压缩比等信息。
-#:为数字的意思,代表压缩等级,-1最快,但是压缩比最差,-9最慢,但是压缩比最好,默认是-6。
eg:[IC@IC A_TEST]$ gzip test.txt
压缩A_TEST目录下的test.txt文件。
注:当你使用gzip 进行压缩时,在默认的状态下原本的文件会被压缩成为.gz后缀的文件,源文件就
不再存在了。此外,使用gzip压缩的文件在Windows系统中,可以被WinRAR或7zip这些软件解压缩。
(2)若说gzip是为了替换compress并提供更好的压缩比而成立的,那么bzip2则是为了替换gzip
并提供更佳的压缩比而来。bzip2真是很不错的东西,这玩意的压缩比竟然比 gzip 还要好,至于bzip2
的用法几乎与gzip相同。
格式:[IC@IC A_TEST]$ bzip2 [-cdkzv#] 文件名
-c:将压缩的过程产生的数据输出到屏幕上。
-d:解压缩。
-k:保留原始文件,而不会删除原始的文件。
-z:压缩的参数(默认值,可以不加)。
-v:可以显示出源文件/压缩文件的压缩比等信息。
-#:与gzip同样的,都是计算压缩比的参数,-9最佳,-1最快。
(3)虽然bzip2已经具有很棒的压缩比,不过显然某些自由软件开发者还不满足,因此后来还推出了
xz 这个压缩比更高的软件。这个软件的用法也跟gzip/bzip2几乎一模一样,那我们就来看一看。
格式:[IC@IC A_TEST]$ xz [-dtlkc#] 文件名
-d:解压缩。
-t:测试压缩文件的完整性,看有没有错误。
-l:列出压缩文件的相关信息。
-k:保留原本的文件不删除。
-c:同样的,就是将数据在屏幕上输出的意思。
-#:同样的,都是计算压缩比的参数,-9最佳,-1最快。
注:压缩时间:xz>bzip2>gzip,压缩比:xz>bzip2>gzip。
打包命令:tar
前一小节谈到的命令大多仅能针对单一文件来进行压缩,虽然gzip、bzip2、xz也能够针对目录
来进行压缩,不过,那些命令对目录的压缩指的是将目录内的所有文件分别进行压缩。而不像在
Windows的系统,可以使用类似WinRAR这一类的压缩软件来将好多数据包成一个文件的
样式。这种将多个文件或目录包成一个大文件的命令功能,我们可以称它是一种打包命令,那Linux有
没有这种打包命令?有,那就是鼎鼎大名的tar,tar可以将多个目录或文件打包成一个大文件,同时
还可以通过gzip、bzip2、xz的支持,将该文件同时进行压缩。更有趣的是,由于tar的使用太广泛
了,目前 Windows 的WinRAR 也支持.tar.gz 文件名的解压缩。
常用格式:打包与压缩:[IC@IC A_TEST]$ tar -j(j也常改为z或J)cv -f 目标路径及文件名.tar.bz2 要被压缩的文件路径及名称
查看文件名:[IC@IC A_TEST]$ tar -jtv -f 路径及文件名.tar.bz2
解压缩:[IC@IC A_TEST]$ tar -jxv -f 源路径及文件名.tar.bz2 -C 解压缩的目录路径
-c:建立打包文件,可搭配-v来查看过程中被打包的文件名(filename)。
-t:查看打包文件的内容含有哪些文件名,重点在查看文件名。
-x:解包或解压缩的功能,可以搭配-C(大写)在特定目录解压,特别留意的是,-c、-t、-x不可同时出现在一串命令行中。
-z:通过gzip 的支持进行压缩/解压缩:此时文件名后缀最好为.tar.gz。
-j:通过bzip2的支持进行压缩/解压缩:此时文件名后缀最好为.tar.bz2。
-J:通过xz的支持进行压缩/解压缩:此时文件名后缀最好为.taz.xz,特别留意,-z、-j、-J不可以同时出现在一串命令行中。
-v:在压缩/解压缩的过程中,将正在处理的文件名显示出来。
-f filename:-f后面要立刻接要被处理的文件名,建议-f单独写。
-C+目录:这个选项用在解压缩,若要在特定目录解压缩,可以使用这个选项。
-p(小写):保留备份数据的原本权限与属性,常用于备份(-c)重要的配置文件。
-P(大写):保留绝对路径,亦即允许备份数据中含有根目录存在之意。
--exclude=FILE:在压缩的过程中,不要将FILE打包。