Linux命令基础
shell命令解释器
Linux 命令的执行必须依赖于 Shell 命令解释器。Shell 实际上是在 Linux 操作系统中运行的一种特殊程序,它位于操作系统内核与用户之间,负责接收用户输入的命令并进行解释,将需要执行的操作传递给系统内核执行,Shell 在用户和内核之间充当了“翻译官”的角色。当用户登录到 Linux 系统时,会自动加载一个 Shell 程序,以便给用户提供可以输入命令的操作系统。具体过程为系统接收用户输入的命令,shell解析用户输入的命令,交给系统内核执行。
Bash 是 Linux 操作系统中默认使用的 Shell 程序,文件位于/bin/bash。
Linux命令分类
Linux系统中命令分为:内部命令和外部命令:
- 内部命令
是指集成于 Shell 解释器程序(如 Bash)内部的一些特殊指令,也称为内建(Built-in)指令。内部命令属于 Shell 的一部分,所以没有单独对应的系统文件,只要 Shell 解释器被运行,内部指令也就自动载入内存了,用户可以直接使用。内部命令无须从硬盘中重新读取文件,因此执行效率较高。 - 外部命令
是指 Linux 操作系统中能够完成特定功能的脚本文件或二进制程序,每个外部命令对应系统中的一个文件,是属于 Shell 解释器程序之外的命令,所以称为外部命令。Linux 操作系统必须知道外部命令对应的文件位置,才能够由 Shell 加载并执行。
Linux 操作系统默认会将存放外部命令、程序的目录(如/bin、/usr/bin 等)添加到用户的“搜索路径”中,当使用位于这些目录中的外部命令时,用户不需要指定具体的位置。因此在大多数情况下,不用刻意去分辨内部命令和外部命令,其使用方法是基本类似的。
Linux命令格式
在使用内部命令或外部命令时,参照一个通用的命令行使用格式,可方便理解 Linux 命令的作用和工作方式。通用的命令行使用格式如下:
- 命令字 [选项] [参数]
其中,命令字、选项、参数之间用空格分开,多余的空格将被忽略。[ ]括起来的部分表示可以省略,即命令行可以只有命令字,也可以只有命令字、选项,或者只有命令字、参数。
命令字
命令字即命令名称,是整条命令中最关键的一部分。在 Linux 的字符操作界面中,使用命令字唯一确定一条命令,因此在输入命令时一定要确保输入的命令字正确。并且,在 Linux 的命令环境中,无论是命令名还是文件名,对英文字符的处理是区分大小写的,操作时需要细心。
选项
选项的作用是调节命令的具体功能,决定这条命令如何执行。同一个命令字配合不同的 选项使用时,可以获得相似但具有细微差别的功能。命令使用的选项有如下一些特性。
- 不同的命令字能够使用的选项也会不同(选项的个数和内容)。
- 选项的数量可以是多个,也可以省略。同时使用多个选项时,选项之间使用空格分 隔。若不使用选项,将执行命令字的默认功能。
- 使用单个字符的选项时,一般在选项前使用“-”符号(半角的减号符)引导,称为短 格式选项,如“-l”。多个单字符选项可以组合在一起使用,如“-al”等同于“-a -l”。
- 使用多个字符的选项时,一般在选项前使用“–”符号(两个半角的减号符)引导, 称为长格式选项,如“–help”。
参数
命令参数是命令字的处理对象,通常情况下命令参数可以是文件名、目录(路径)名 或用户名等内容。根据所使用命令字的不同,命令参数的个数可以是零到多个。在输 入一条 Linux 命令时,应根据该命令字具体的格式提供对应的命令参数,以确保命令的正常运行。
注意:在实际使用 Linux 命令行的过程中,“选项”和“参数”的称谓经常混淆,甚至前后顺序也允许颠倒,但一般不会影响命令的执行效果,所以很多时候并不做严格区分。
在按照上述格式输入一条 Linux 命令后,按 Enter 键表示输入结束并提交给系统执行。
在没有按 Enter 键之前,命令行中的字符内容都处于编辑状态,可以进行任意编辑修改。编辑 Linux 命令行时,可以使用以下几个辅助操作,以提高输入效率。
- Tab 键:可以将输入的不完整命令字或文件、目录名自动补齐,如输入“ifcon”后按Tab 键,即可自动补齐为“ifconfig”命令字。该功能只能向后补齐,且必须以已输入的部分字符开头,能够唯一定位一个命令字或文件、目录名,否则可按两次 Tab 键,系统将输出可用的名称列表。
- 反斜杠“\”:如果输入的一行命令内容太长,终端会自动换行。有时候为了显示美观 及方便查看,也可以插入“\”符号强制换行,在下一行出现的“>”提示符后可以继续输入内容,作为上一行命令的延续。
- Ctrl+U 组合键:快速删除当前光标处之前的所有字符内容。
- Ctrl+K 组合键:快速删除从当前光标处到行尾的所有字符内容。
- Ctrl+L 组合键:快速清空当前屏幕中的显示内容,只在左上角显示命令提示符。
- Ctrl+C 组合键:取消当前命令行的编辑,并切换为新的一行命令提示符。
获得命令帮助
使用 help 命令
help 命令本身是 Linux Shell 中的一个内建指令,其用途是查看各 Shell 内部命令的帮助信息。
[root@localhost ~]# help pwd
pwd: pwd [-LP]
打印当前工作目录的名字。
选项:
-L 打印 $PWD 变量的值,如果它命名了当前的
工作目录
-P 打印当前的物理路径,不带有任何的符号链接
默认情况下,`pwd' 的行为和带 `-L' 选项一致
退出状态:
除非使用了无效选项或者当前目录不可读,否则
返回状态为0。
[root@localhost ~]#
使用“–help”选项
对于大多数 Linux 外部命令,可以使用一个通用的命令选项“–help”来显示对应命令字的格式及选项等帮助信息。
[root@localhost ~]# ls --help
用法:ls [选项]... [文件]...
List information about the FILEs (the current directory by default).
Sort entries alphabetically if none of -cftuvSUX nor --sort is specified.
Mandatory arguments to long options are mandatory for short options too.
-a, --all 不隐藏任何以. 开始的项目
-A, --almost-all 列出除. 及.. 以外的任何项目
--author 与-l 同时使用时列出每个文件的作者
-b, --escape 以八进制溢出序列表示不可打印的字符
--block-size=SIZE scale sizes by SIZE before printing them; e.g.,
'--block-size=M' prints sizes in units of
....省略部分内容
使用 man 手册页
man 手册页(Manual Page)是 Linux 操作系统中最为常用的一种在线帮助形式,绝大部分的外部软件在安装时为执行程序、配置文件提供了详细的帮助手册页。
[root@localhost ~]# man ls
...省略部分内容
NAME
ls, dir, vdir - 列目录内容
提要
ls [选项] [文件名...]
POSIX 标准选项: [-CFRacdilqrtu1]
...省略部分内容
-C 多列输出,纵向排序。
-F 每个目录名加“ / ”后缀,每个 FIFO 名加“ | ”后缀, 每个可运行名加“ * ”后缀。
-R 递归列出遇到的子目录。
在阅读 man 手册页时将以全屏的文本方式显示,并且提供了交互式的操作环境。按↑、↓方向键可以向上、向下滚动一行文本内容;按 Page Up 键和 Page Down 键可以向上、向下翻页显示;按 Q 键或 q 键可以随时退出手册页的阅读环境;按/键后可以对手册内容进行查找,如输入“/-v”可以查找到“-v”选项的帮助信息,若找到的结果有多个,还可以按 n 键或N 键分别向下、向上进行定位选择。
如果需要将 man 手册页的内容保存成文本文件以便在其他系统中查看,可以结合 col 命令去除手册页中的格式控制字符,并将显示结果保存为新的文件。例如,以下操作可以将 ls 命令的帮助手册保存为文本文件 lshelp.txt。
[root@localhost ~]# man ls | col -b > lshelp.txt
在这个例子中,col 是一个命令程序,用于过滤文本中的一些特殊控制字符;另外还使用了“|”和“>”符号,这是 Shell 环境中的两种特殊功能应用,分别称为管道、重定向输出。其含义及作用如下所述。
- 管道:用竖杠符号“|”表示,用于将前面命令的屏幕输出结果作为后面命令的操作对象(输入)。就好像一根管道一样,从这头塞入内容,从另一头出来。
- 重定向输出:用大于符号“>”表示,前面的命令成功执行以后,其屏幕输出结果将保存到“>”号后边指定的文件中,而不是直接输出到屏幕,因此称为重定向。
Linux基础命令1
pwd-查看当前的工作目录
用来查看当前工作的目录
[root@localhost ~]# pwd
/root
[root@localhost ~]#
cd-切换工作目录
cd是用来切换目录的
- cd ~ 切换到家目录,根目录下
- cd … 切换到上一层目录
- cd - 切换到上一次工作的目录
如:我们先输入了“cd /etc/sysconfig/network-scripts/”可以切换到该目录下;
然后输入了“cd”切换到了根目录下;
之后输入“cd -”又回到了之前工作的/etc/sysconfig/network-scripts/目录下;
最后输入了“cd … ”切换到了/etc/sysconfig/network-scripts/的上一层/etc/sysconfig/
[root@localhost ~]# cd /etc/sysconfig/network-scripts/
[root@localhost network-scripts]# cd
[root@localhost ~]# cd -
/etc/sysconfig/network-scripts
[root@localhost network-scripts]# cd ..
[root@localhost sysconfig]#
ls-显示目录内容
ls 命令主要用于显示目录中的内容,包括子目录和文件的相关属性信息等。使用的参数可以是目录名,也可以是文件名,允许在同一条命令中同时使用多个参数。
ls 命令可以使用的选项种类非常多,这里只列出几个最常用的选项以供参考。
- -l:以长格式(Long)显示文件和目录的列表,包括权限、大小、最后更新时间等 详细信息。不使用-l 选项时,ls 命令默认以短格式显示目录名或文件名信息。
- -a:显示所有(All)子目录和文件的信息,包括名称以点号“.”开头的隐藏目录和隐藏文件。
- -A:与-a 选项的作用基本类似,但有两个特殊隐藏目录不会显示,即表示当前目录的“.”和表示父目录的“…”。
- -d:显示目录(Directory)本身的属性,而不是显示目录中的内容。
- -h:以更人性化(Human)的方式显示目录或文件的大小,默认的大小单位为字节(B),使用-h 选项后将显示为 KB、MB 等单位。此选项需要结合-l 选项一起使用。
- -R:以递归(Recursive)的方式显示指定目录及其子目录中的所有内容。
执行不带任何选项、参数的 ls 命令,可显示当前目录中包含的子目录、文件列表信息(不包括隐藏目录、文件),如以下操作:
[root@localhost ~]# ls
anaconda-ks.cfg initial-setup-ks.cfg 公共 模板 视频 图片 文档 下载 音乐 桌面
[root@localhost ~]#
执行“ls -ld”命令可以只显示当前目录的详细属性,而不显示目录下的内容,如以下操作:
[root@localhost ~]# ls -ld
dr-xr-x---. 16 root root 4096 7月 12 20:45 .
du命令-统计目录及文件的空间占用情况
du 命令可用于统计指定目录(或文件)所占用磁盘空间的大小,使用目录或文件的名称作为参数。du 命令常用的几个选项如下。
- -a:统计磁盘空间占用时包括所有的文件,而不仅仅只统计目录。
- -h:以更人性化的方式(默认以 KB 计数,但不显示单位)显示出统计结果,使用-h 选项后将显示出 KB、MB 等单位。
- -s:只统计每个参数所占用空间总的(Summary)大小,而不是统计每个子目录、 文件的大小。
[root@localhost opt]# du -ah
0 ./rh
0 .
[root@localhost opt]# du -sh
0 .
mkdir 命令-创建新的目录
mkdir 命令用于创建新的空目录,使用要创建的目录位置作为参数(可以有多个)。
[root@localhost ~]# mkdir /opt/wwwroot
[root@localhost ~]# cd /opt
[root@localhost opt]# ls
rh wwwroot
[root@localhost opt]#
如果需要一次性创建嵌套的多层目录,必须结合“-p”选项
[root@localhost ~]# mkdir -p /sb/sd/nmb
[root@localhost ~]# ls -R /sb
/sb:
sd
/sb/sd:
nmb
/sb/sd/nmb:
[root@localhost ~]#
touch- 创建新文件
touch 命令本来用于更新文件的时间标记,但在实际使用中经常用于创建新的测试文件。该命令使用文件名作为参数,可以同时创建多个文件。当目标文件已存在时,将更新该文件 的时间标记,否则将创建指定名称的空文件。
用来创建新文件,如touch bb
echo “123456” >bb 可向bb中写入相应内容,“cat”命令可以查看文件中的内容
ln-创建链接文件
它的功能是为某一个文件在另外一个位置建立一个同步的链接。当我们需要在不同的目录,用到相同的文件时,我们不需要在每一个需要的目录下都放一个必须相同的文件,我们只要在某个固定的目录,放上该文件,然后在 其它的目录下用ln命令链接(link)它就可以,不必重复的占用磁盘空间。分为软连接和硬连接
- 软连接
ln -s aa linkaa
- 硬连接(不能为目录创建硬连接)
ln aa linkaa2
关于软硬链接其他相关知识,可参考软硬链接部分
rm-删除(Remove)文件或目录
用于删除文件或目录,后可跟选项如下
- -i 删除前逐一询问确认。
- -f 即使原档案属性设为唯读,亦直接删除,无需逐一确认。
- -r 将目录及以下之档案亦逐一删除。
cp-复制文件或目录
cp 命令用于复制文件或目录,将需要复制的文件或目录(源)重建一份并保存为新的文件或目录(可保存到其他目录中)。cp 命令的基本使用格式如下:
- cp [选项]… 源文件或目录… 目标文件或目录
需要复制多个文件或目录时,目标位置必须是目录,且目标目录必须已经存在。cp 命令较常用到的几个选项如下。 - -f:覆盖目标同名文件或目录时不进行提醒,而直接强制(Force)复制。
- -i:覆盖目标同名文件或目录时提醒用户确认(Interactive,交互式)。
- -p:复制时保持(Preserve)源文件的权限、属主及时间标记等属性不变。
- -r:复制目录时必须使用此选项,表示递归复制所有文件及子目录。
cp -p /root/bb /var/可以将root下的bb复制到/var下,–p表示相应权限也复制过去
mv-移动文件或目录
mv 命令用于将指定的文件或目录转移位置,如果目标位置与源位置相同,则效果相当于为文件或目录改名。mv 命令的基本使用格式如下:
- mv [选项] … 源文件或目录… 目标文件或目录
mv命令是move的缩写,可以用来移动文件或者将文件改名
mv 2222.txt 2222.dox可以将文件改名
mv 2222.dox 2 可以将2222.dox移动到2下
which-查找用户所执行的命令文件存放的目录
which 命令用于查找 Linux 命令程序并显示所在的具体位置,其搜索范围主要由用户的环境变量 PATH 决定(可以执行“echo $PATH”命令查看),这个范围也是 Linux 操作系统在执行命令或程序时的默认搜索路径。
which 命令使用要查找的命令或程序名作为参数,查找Linux命令程序并显示所在的具体位置,搜索范围“echo $PATH”查看
find-查找文件或目录
find 命令是 Linux 操作系统中功能非常强大的查找命令,可以根据目标的名称、类型、大小等不同属性进行精细查找。find 命令在查找时采用递归的方式,其使用形式相当灵活, 也可以相当复杂。这里只介绍最常用的几种用法。find 命令的基本使用格式如下:
- find [查找范围] [查找条件表达式]
其中,查找范围对应的是在其中查找文件或子目录的目录位置(可以有多个),而查找条件则决定了 find 命令根据哪些属性、特征进行查找。
目录与文件管理
Linux 目录结构
Linux 操作系统中的目录和文件数据被组织为一个树形目录结构,所有的分区、目录、文件等都具有一个相同的位置起点——根目录,如图 所示。Linux 操作系统中只有一个根目录,而 Windows 操作系统中每个分区都有一个根目录,这点需要加以区别。
Linux 操作系统在定位文件或目录位置时,使用斜杠“/”进行分隔(区别于 Windows 操作系统中的反斜杠“\”)。整个树形目录结构中,使用独立的一个“/”表示根目录,根目录是Linux 操作文件系统的起点,其所在的分区称为根分区。在根目录下,Linux 操作系统将默认建立一些特殊的子目录,分别具有不同的用途。下面简单介绍一下其中常见的子目录及其作用。
- /boot:此目录是系统内核存放的目录,同时也是系统启动时所需文件的存放目录, 如 vmlinuz 和 initrd.img。在安装 Linux 操作系统时,为 boot 目录创建一个分区, 有利于对系统进行备份。
- /bin:bin 是 binary 的缩写。这一目录存放了所有用户都可执行的且经常使用的命令,如 cp、ls 等。
- /dev:此目录保存了接口设备文件,如/dev/hda1、/dev/cdrom 等。
- /etc:系统主要的配置文件几乎都放置到这个目录内,例如人员的账号密码文件、各 种服务的起始文件等。
- /home:存放所有普通系统用户的默认工作文件夹(即宿主目录、家目录),如用户账号“teacher”对应的宿主目录位于“/home/teacher/”。如果服务器需要提供给大量的普通用户使用,建议将“/home”目录也划分为独立的分区,以方便用户数据的备份。
- /root:该目录是 Linux 操作系统管理员(超级用户)root 的宿主目录,默认情况下只有 root 用户的宿主目录在根目录下而不是在“/home”目录下。
- /sbin:存放 Linux 操作系统中最基本的管理命令,一般管理员用户才有权限执行。
- /usr:存放其他的用户应用程序,通常还被划分成很多子目录,用于存放不同类型 的应用程序。
- /var:存放系统中经常需要变化的一些文件,如系统日志文件、用户邮箱目录等, 在实际应用系统中,“/var”目录通常也被划分为独立的分区。
Linux基础命令2
cat-显示并连接(Concatenate)文件的内容
该命令用于显示文件内容
cat /etc/hosts //ip地址和主机对应关系
cat /etc/redhat-release //查看Linux系统版本
cat /proc/version //查看系统内核版本
more-分页查看文件内容
查看文件内容,可以分屏显示信息和提供交互式操作
more命令交互式界面,左下角会显示百分比,且一旦达到百分百便退出界面,不能再向上翻页
less-分页查看文件内容
与more命令类似,交互界面不显示百分百且到达最底部时不退出界面,按q退出,提供搜索功能“/usr”可以搜索usr
head-查看文件开头的部分内容
可用来查看文件开头的一部分信息
head -n 文件 n表示行数,可自己设定
tail-查看文件末尾的部分内容
用来查看文件结尾的少部分内容,默认为十行信息
tail -n 文件 -n表示显示几行可自己替换
tail -f 文件 -f表示可以显示尾部十行信息,且不断更新
wc-统计文件内容信息
用于统计文件内容
wc 选项 文件
- -l :统计行
- -w: 统计单词数
- -c: 统计字节数
grep-检索、过滤文件内容
grep 命令用于在文件中查找并显示包含指定字符串的行,可以直接指定关键字符串作为查找条件,也可以使用复杂的条件表达式(例如,“^word”表示以 word 开头,“wordKaTeX parse error: Expected group after '^' at position 15: ”表示以 word 结尾,“^̲”表示空行)。使用 grep 命令的基本格式如下:
- grep [选项]… 查找条件 目标文件
grep 命令的常用选项如下所示。
- -i:查找内容时忽略大小写(Ignore Case)。
- -v:反转查找(Invert),即输出与查找条件不相符的行。
grep过滤其他搜索22578端口的信息
以下操作可以显示/etc/yum.conf 文件中以“#”开头的行和空行以外的内容。
[root@localhost etc]# grep -v "^#" /etc/yum.conf |grep -v "^$" > /opt/aa
[root@localhost etc]# cat /opt/aa
[main]
cachedir=/var/cache/yum/$basearch/$releasever
keepcache=0
debuglevel=2
logfile=/var/log/yum.log
exactarch=1
obsoletes=1
gpgcheck=1
plugins=1
installonly_limit=5
bugtracker_url=http://bugs.centos.org/set_project.php?project_id=23&ref=http://bugs.centos.org/bug_report_page.php?category=yum
distroverpkg=centos-release
[root@localhost etc]#
gzip-压缩与解压缩文件
gzip * //对文件进行压缩,后缀名.gz
gzip - 9 文件 //对文件进行高压缩比压缩
gzip -d 文件 //对文件解压缩
bzip2-压缩与解压缩文件
bzip2 * //对文件进行压缩,后缀名.bz2
Bzip2 - 9 文件 //对文件进行高压缩比压缩
Bzip2 -d 文件 //对文件解压缩
zip和unzip-压缩与解压缩文件
zip -r opt.zip /opt //-r表示递归,目录下的所有文件和子目录;以opt.zip保存在opt下
unzip
unzip opt.zip 将opt.zip解压在当前文件夹
unzip -n opt.zip -d /root //表示将opt.zip解压到/root下,-n表示解压缩时不要覆盖原有文件,-d表示解压后存储的目录
unzip -v 30.zip //表示查看解压文件中的内容
tar-归档
tar 命令主要用于对目录和文件进行归档。在实际的备份工作中,通常在归档的同时也会将包文件进行压缩(需要调用前面的 gzip 或 bzip2 命令),以节省磁盘空间。使用 tar 命令时,选项前的“-”号可以省略。常用的几个选项如下所述。
- -c:创建(Create).tar 格式的包文件。
- -C:解压时指定释放的目标文件夹。
- -f:表示使用归档文件。
- -j:调用 bzip2 程序进行压缩或解压。
- -p:打包时保留文件及目录的权限。
- -P:打包时保留文件及目录的绝对路径。
- -t:列表查看包内的文件。
- -v:输出详细信息(Verbose)。
- -x:解开.tar 格式的包文件。
- -z:调用 gzip 程序进行压缩或解压。
tar - jcvf 123.tar.bz2 30.txt //表示将30.txt压缩为123.tar.bz2
tar -jxvf 123.tar.bz2 -C /root //表示将压缩文件解压到/root目录下
tar -ztvf opt.tar.gz //查看压缩包内容不解压
三、vi编辑器
用来创建或修改配置文件
工作模式:命令模式、输入模式和末行模式
- 命令模式
在命令模式下的操作
vi 文件名 可以进入命令模式,如:vi /opt/30.txt
可以使用命令:
dd:删除一行
u:撤回
yy:复制一行
p:将复制的行粘贴到光标所在行的下一行
P:将复制的行粘贴到光标所在行的上一行
x:删除光标所在处字符
r:可以替换
ZZ:保存退出 shift+z+z
g:按两次,光标移动到文本首行
G:按一次,光标移动到文本末行 - 输入模式
输入模式下的操作
在命令模式下按a、i、o等键进入输入模式
a:在光标所在位置之后插入文本
A:表示在光标所在行末尾插入文本
i:表示在光标所在位置之前加入文本
I:表示在光标所在行的第一个非空字节前插入文本
o:表示在光标所在下一行插入文本
O:表示在光标所在行的上一行插入文本 - 末行模式
命令模式下输入“:”冒号就可以进入末行模式
:q退出编辑
:w 保存退出
:wq 保存退出
:q! 强制退出
:set nu 显示行号
:/可以查找内容
:#,# s/old/new/g 在行号“#,#”范围内替换所有的字符串“old”为“new”