第一部分 Linux命令行
1. 基本的bash shell命令
1.1 启动shell
/etc/passwd文件包含所有系统用户列表及基本配置信息:rich:x:501:501:Rich Blum:/home/rich:/bin/bash
- 用户名- 用户密码(占位符)- 用户的系统UID(用户ID)- 用户的系统GID(组ID)- 用户的全名- 用户的默认主目录- 用户的默认shell程序
1.2 shell提示符
$:bash shell的默认提示符
echo $PS1:显示当前默认提示符设置(PS1:控制默认命令行提示符的格式)
$ PS1="[\t][\u]\$":创建新的提示符,只需给PS1变量赋一个新的字符串
1.3 bash手册
man bash:man手册页面
1.4 浏览文件系统
常见Linux目录名称:
/:根目录/bin:GNU用户工具/boot:启动目录/dev:设备目录/etc:系统配置文件目录/home:主目录,创建用户目录/lib:库目录,存放系统和应用程序的库文件/media:媒体目录/mnt:挂载目录/opt:可选目录,存放可选软件包/root:根主目录/sbin:GNU管理员级工具/tmp:临时目录/usr:用户安装软件目录/var:可变目录,存放经常变化的目录
遍历目录
cd:切换目录
绝对文件目录:从根目录开始
相对文件目录:.:表示当前目录;..:表示当前目录的父目录
1.5 文件和目录列表
1.5.1基本列表功能
ls:显示当前目录下的文件和目录
-F:区分文件和目录-a:显示隐藏文件和目录-R:列出当前目录下包含的目录中的文件
1.5.2修改输出信息
ls -l:显示详细信息
- 文件类型- 文件的权限- 文件的硬链接总数- 文件属主的用户名- 文件属组的组名- 文件的大小- 文件的上次修改时间- 文件名或目录名
1.5.3 完整的参数列表
ls -sail: -a:列出所有文件 -i:列出索引节点
-l:产生一个长列表 -s:列出文件的块大小
1.5.4 过滤输出列表
ls -l 文件名:文件名中,?代表一个字符,*代表零个或者多个字符
1.6 处理文件
1.6.1 创建文件
touch 文件名:创建空文件,也可以更改文件的访问和修改时间
-a:只修改访问时间-m:只修改修改时间-t:指定特定的时间
1.6.2 复制文件
cp 源文件目录 目标文件目录:复制文件
cp -R:递归复制整个文件目录
1.6.3 链接文件
cp -l:创建硬链接,其中包含了源文件的信息及位置。
cp -s:创建软连接,一个符号链接。
1.6.4重命名文件
mv 文件名 新文件名:mv命令是用来移动文件的(moving),也可以用于重命名。
1.6.5 删除文件
rm:删除文件也就是移除(removing),加-f强制删除。
1.7 处理目录
1.7.1创建目录
mkdir:创建目录
1.7.2删除目录
rmdir:删除空目录,可以--ignore-fail-on-non-empty删除非空目录
rm -rf:强制递归删除目录
1.8 查看文件内容
1.8.1 查看文件统计信息
status:显示某个文件的所有状态信息
1.8.2 查看文件类型
file:查看文件类型
文本文件可执行文件数据文件
1.8.3 查看整个文件
1. `cat`:查看整个文件。`-n`添加行号,`-s`压缩空白行
more:显示文件的内容,但会在显示每页数据之后停下来
less:显示文件内容,功能上更高级
1.8.4 查看部分文件
tail:显示文件末尾部分内容
head:显示文件开头部分内容
2. 更多的bash shell命令
2.1 检测程序
2.1.1 探查进程
ps:显示运行在当前控制台的当前用户的进程
-ef:查看系统上运行的所有进程-H:把输出的进程组织成层级形式,即树状--forest:显示层级结构信息
1.Unix风格参数2.BSD风格参数3.GNU全字参数
2.1.2 实时监测进程
top:实时显示进程信息
2.1.3 结束进程
kill PID:结束进程号的进程
killall 进程名:结束相关进程
2.2 检测磁盘空间
2.2.1 挂载存储媒体
mount:显示当前系统挂载的设备列表
umount:卸载挂载的设备
2.2.2 使用df命令
df:挂载已挂载磁盘的使用的情况
-h:以人类可读的形式显示
2.2.3 使用du命令
du:显示某个特定目录的磁盘使用情况
2.3 处理数据文件
2.3.1 排序数据
sort:将文件数据默认按照标准的字符排序。
-n:将数字按照数字排序
-M:按月排序
-k:
-t:
n:
2.3.2 搜索数据
grep pattern file:搜索数据
-v:反向搜索,搜出不匹配的项目
-n:显示匹配数据所在的行数
-c:只显示所在行数
2.3.3 压缩数据
bzip2工具(.bz2)
bzip2:压缩文件bunzip2:解压.bz2文件bzcat:显示压缩的文本文件内容bziprecover:尝试修复损坏的压缩文件
gzip工具(.gz)
gzip:压缩文件gunzip:解压文件gzcat:查看压缩的文本文件内容
zip工具(.zip)
zip:压缩文件unzip:解压文件zipcloak:创建一个加密压缩文件,包含指定的文件和目录zipnote:从zip文件中提取批注
2.3.4 归档数据
tar:归档打包数据,常见加上-zxvf
tar命令选项:
-A:将一个已有的tar归档文件追加到另一个tar文件-c:创建一个新的tar归档文件-d:检查归档文件和文件系统的不同之处,或者是从已有的etar归档文件中删除-r:追加文件到已有的tar文件末尾-t:列出已有tar归档文件的内容-u:将比tar归档文件中已有的同名文件新的文件追加到该tar归档文件中-x:从已有的tar归档文件中提取文件-C dir:切换到指定目录-f file:输出结果到文件或设备-j:将输出重定向给bzip2命令来压缩内容-p:保留所有文件权限-v:在处理文件时显示文件-z:将输出重定向给gzip命令来压缩内容
3. 使用Linux环境变量
3.1 什么是环境变量
bash shell用环境变量的特性来存储有关shell会话和工作环境的信息。环境变量分为全局变量和局部变量。
全局变量不仅对shell会话可见,对所有shell创建的子进程也可见。
局部变量只对创建他们的shell可见。
printenv:查看全局变量
echo $全局变量名:显示单个变量值
set:显示某个特定进程设置的所有环境变量,包括全局变量。没有单独命令能显示局部变量。
3.2 设置环境变量
设置局部变量:
启动bash shell 即可为局部变量赋值。如:test=testing。但是在子shell和父shell中都不能使用。
设置全局变量:
创建全局变量的方法是先创建一个局部变量,再导出到全局环境中,通过export完成。
$test = testing$export test$bash$echo $testtesting
3.3删除环境变量
unset 环境变量名:删除环境变量,注意不要用$。
如果在子进程中删除了全局环境变量,那么只对当前子进程有效。
3.4 默认shell环境变量
不是所有的默认环境变量都会在运行set命令时列出。尽管是默认环境变量,但并不代表它们所有必须有一个值。
3.5 设置PATH环境变量
PATH环境变量是Linux系统上造成最多问题的变量。它定义了命令行输入命令的搜索路径。如果找不到,则会产生一个错误。
3.6 定位系统环境变量
3.6.1登陆shell
登陆shell会从以下4个不同启动文件读取命令。
/etc/profile//bash shell的主启动目录$HOME/.bash_profile$HOME/.bash_login$HOME/.profile
剩下三个$HOME启动文件都有同一个作用:提供一个用户专属的启动文件来定义用户专有环境变量。大多数发行版只有三个文件中的一个。
3.6.2交互式shell
如果bash shell不是登陆系统时启动,shell被称为交互式shell。交互式shell不会访问/etc/profile文件,而是只用寻找用户HOME目录的.bashrc是否存在。.bashrc文件有两个作用:查看/etc目录下共用bashrc文件,二是为用户提供一个定制自己的命令别名和私有脚本函数的地方。
3.7 可变数组
环境变量可以作为数组来使用:$ mytest=(one two three four)
$echo $mytest[2]
$echo $mytest[*]
3.8 使用命令别名
alias 别名='命令':设置别名
-p:显示已有别名列表
4. 理解Linux文件权限
4.1 Linux的安全性
4.1.1 /etc/passwd文件:包含与用户有关的信息
4.1.2 /etc/shadow文件:能对linux系统如何管理密码有更多的控制,只有root用户可以访问
4.1.3 添加新用户:
useradd:使用系统默认值及命令行参数来添加新用户
-D:查看系统默认值
-m:创建用户home目录
-c comment:-d home_dir:-e expire_date:-f inactive_days:
4.1.4 删除用户:
userdel:删除etc/passwd的用户信息,不会删除系统中的用户文件。
-r:同时删除用户的HOME目录及mail目录。
4.1.5 修改用户:
usermod:修改用户账户字段,并可以指定主要组以及附加组的所属关系。
-l:修改用户账户的登陆名
-L:锁定用户,无法登陆
-p:修改用户账户密码
-U:解除账户锁定
passwd:修改已有用户密码
chpasswd:从文件中读取登录名密码对,并更新密码
chsh chfn chage:用来修改特定的账户信息
4.2 使用Linux组
组权限允许多个用户共享一组共用的权限来访问系统上的对象,比如文件,目录和设备。
每个组都有唯一的GID。
/etc/group:包含系统上用到的每个组的信息。该文件有四个字段:组名;组密码;GID;用户列表。
不能通过修改该文件来实现添加用户到组,而是要用usermod命令。
创建新组:groupadd命令用来创建新组。
修改组:groupmod命令可以修改已有组的GID(-g)或组名(-n)。
4.3 理解文件权限
文件权限符:如-rw-rw-r--。
第一个字符代表文件的类型:
-代表文件d代表目录l代表链接c代表字符型设备
之后有三种三字符的码,每一种三字符码代表三种访问权限:
r:代表对象是可读的w:代表对象是可写的x:代表对象是可执行的-:代表没有权限
这三组字符码分别对应三个安全级别:文件属主;属组成员;其他用户
默认文件权限:
umask:用来设置用户创建文件和目录的默认权限
linux文件权限码
---:0--x:1-w-:2-wx:3r--:4r-x:5rw-:6rwx:7
4.4 改变安全性设置
改变权限:
chmod:改变文件和穆勒的安全性设置。chmod 760 file
改变所属关系:
chown:改变文件属主和属组。chown options owner[.group] file
chgrp:改变文件默认属组。chgrp group file
只有root用户能够改变文件的属主,任何属主都可以改变文件属组。
5. 管理文件系统
5.1 探索Linux文件系统
5.2 操作文件系统
创建分区:
fdisk:用来管理存储分区,是一个交互式程序。
p:显示存储设备详细信息n:创建新分区w:将更改保存到设备上
创建文件系统:
检查和修复:fsck命令用来检查和修复任意类型的linux文件系统。
5.3 逻辑卷管理器
使用Linux LVM
1.定义物理卷使用fdisk命令将物理分区转换成物理卷区段使用pvcreat命令来用分区创建真实的物理卷2.创建卷组vgcreate:创建卷组vgdisplay:查看新创建的卷组的细节3.创建逻辑卷lvcreate:创建逻辑卷lvdisplay:查看逻辑卷详细信息4.创建文件系统5.修改LVM
6. 安装软件程序
6.1包管理基础
6.2 基于Debian的系统
dpkg命令是基于Debian系PMS工具的核心。包含在PMS中的其它工具有:
apt-get
apt-cache
aptitude(最常用)
aptitude的使用:
管理软件包
aptitude:进入全屏模式,q键退出
aptitude show package_name:单个命令使用aptitude
dpkg -L package_name:显示某个特定软件包关联的所有文件列表
安装软件包
aptitude search package_name:搜索特定软件包,i:软件包已经安装;p:软件包未安装
aptitude install package_name:安装软件包
更新软件
aptitude safe-upgrade:更新系统上所有软件包
卸载软件
aptitude remove package_name:只删除软件包但不删除数据和配置文件
aptitude purge package_name:删除软件包和相关的数据和配置文件
aptitude库
库存储在/etc/apt/sources.list中。
6.3 基于Red Hat的系统
yum:在Red Hat和Fefora中使用(重点)urpm:在Mandriva中使用zypper:在openSUSE中使用
yum的使用
列出安装包
yum list installed:列出已安装的包,输出的信息可能一闪而过,最好重定向到一个文件中,如:yum list installed > installed_software。
yum list package_name:查看特定的软件包详细信息。
安装软件
yum install package_name:安装软件
更新软件
yum list updates:更新所有可用的软件
yum update package_name:更新特定软件
yum update:更新所有列在更新列表中的包
卸载软件
yum remove package_name:只删除软件包,保留配置文件和数据文件
yum erase package_name:删除软件包和它的所有文件
处理损坏的包依赖关系
yum clean all:清理放错文职的文件
yum deplist package_name:显示所有包的库依赖关系
yum软件库
yum repolist:查看正在从什么库中获取文件
6.4 从源码安装
解压tar包
tar -zxvf xxx.tar.gz
cd xxx
./configure:为系统配置systat
make:构建二进制文件
make install:安装软件
7. 使用编辑器
7.1 Vim编辑器
Vim编辑器
Vim有两种模式,普通模式和插入模式。Vim初始显示的是普通模式,按i后进入编辑模式,按Esc退回到普通模式。
h:左移一个字符j:下移一行k:上移一行l:右移一个字符PageDown(或Ctrl+F):下翻一屏数据PageUp(或Ctrl+B):上翻一屏数据G:移到缓冲区最后一行num G:移到缓冲区的第num行gg:移到缓冲区的第一行
Vim在普通模式下有个命令行模式。按:进入命令行模式。
q:如果未修改缓冲区数据,退出q!:取消所有对缓冲区数据的修改并退出w filename:将文件保存到另一个文件名下wq:将缓冲区的数据保存到文件中并退出
编辑数据
在插入模式下,可以向缓冲区插入数据。在普通模式下,vim也提供了一些命令来编辑缓冲区中的数据。
x:删除当前光标所在位置的字符dd:删除当前光标所在行dw:删除当前光标所在位置的单词d$:删除当前光标所在位置至行尾的内容J:删除当前光标所在行行尾的换行符u:撤销前一编辑命令a:在当前光标后追加数据A:在当前光标所在行行尾追加数据r char:用char替换当前光标所在位置的单个字符R text:用text覆盖当前光标所在位置的数据,知道按下Esc
复制和粘贴
编辑数据时删除数据实际上是将数据保存到单独的寄存器中(也就是剪切),可以使用p命令来取回数据,也就是粘贴。
复制相对复杂一点。复制的命令是y,可以与y使用与d命令相同的第二字符(yw,y$),然后用p粘贴光标所在的位置。复杂的是你不知道自己复制了什么。
于是vim还有一种可视模式。移动光标到要复制的开始位置,按下v键进入可视模式,移动光标复制想要复制的文本,然后按下y键激活复制,p键粘贴。
查找和替换
查找:按下斜线(/),输入要查找的内容回车。
1. 如果要查找的文本出现在光标当前位置之后,则光标会跳到该文本出现的第一个位置。2. 如果要查找的文本未在光标当前位置之后出现,则光标会绕过文件末尾,显示在该文本出现的第一个位置。3. 输出错误信息,说明未找到文本。4. 要继续查找同一单词,按下`/`键,然后回车。或者使用`n`键,表示下一个(next)。
替换:进入替换模式,必须在命令行模式下输入::s/old/new/。
vim编辑器会跳到old第一次出现的地方并用new替换。可以对替换命令做一些修改来多处替换。
:s/old/new/g一行命令替换所有old:n,ms/old/new/g替换行号n和m之间的所有old:%s/old/new/g替换整个文件中的所有old:%s/old/new/gc替换整个文件中的所有old,但在每次出现时提示
7.2 Emacs编辑器
7.3 KDE系编辑器
7.4 GNOME编辑器
(因为我自从接触到linux以来一直使用的都是vim,所以对于其他的编辑器以后了解的时候再补充吧。如果想要查看相关内容,建议阅读原书!)
(完)
技能树.IT修真院
“我们相信人人都可以成为一个工程师,现在开始,找个师兄,带你入门,掌控自己学习的节奏,学习的路上不再迷茫”。
这里是技能树.IT修真院,成千上万的师兄在这里找到了自己的学习路线,学习透明化,成长可见化,师兄1对1免费指导。快来与我一起学习吧 !
注册邀请码:99872160 注册链接:IT修真院