pwd命令用于显示目录的绝对路径。
实例:
查看当前目录的绝对路径
[root@vmmaster bigdata]# pwd
/opt/bigdata
查看软链接的绝对路径
pwd -P
基本语法:cd [dirName] ,其中 dirName 表示法可为绝对路径或相对路径。
实例:
相对路径,进入dirName目录
cd dirName/
绝对路径,进入dirName目录
cd /dirName
进入根目录
cd /
返回上一级目录,可以嵌套
cd ../
返回当前用户的home目录(注意root用户的home目录为root ,其他为home )
cd ~
cd
进入当前目录(感觉毫无意义,没什么用)
cd .
find 命令查找命令,后面可接管道命令,进行进一步的处理
语法:find pathname -options
可选-options命令:
-name 按照文件名查找文件
-perm 按文件权限查找文件
-user 按文件属主查找文件
-group 按照文件所属的组来查找文件。
-type 查找某一类型的文件,诸如:
b - 块设备文件
d - 目录
c - 字符设备文件
l - 符号链接文件
p - 管道文件
f - 普通文件
举例:
#查找bigdata/java下的目录
find /opt -type d | grep bigdata/java
#查找jdk-8u111-linux-x64.tar.gz名字的文件或者目录
find /opt -name jdk-8u111-linux-x64.tar.gz
#查找’.log’结尾的文件
find -name ‘*.log’
locate 通过搜寻系统内建文档数据库达到快速查询文件或目录,相当于 find -name ,但是速度是非常快的。
注意:新建文件必须在update命令执行后方可查询
-l num(要显示的行数)
-f 将特定的档案系统排除在外,如将proc排除在外
-r 使用正则运算式做为寻找条件
-i 忽略大小写
举例:
快速查找jdk-8u111-linux-x64.tar.gz文件
locate jdk-8u111-linux-x64.tar.gz
which 命令查找可执行文件位置
举例:
which bash
whereis 命令查找二进制文件、源码文件
举例:
whereis bash
wc 命令是用来文本统计的命令
可选操作:
-w 单词数量
-l 行数
-L 最长行的长度
语法:
统计FILE/PATH中最长行的行数、单词数量、字节长度
wc -wlL PATH/FILE
语法: ls [-alrtAFR] [dirName…] 用于显示指定工作目录下之内容(列出目前工作目录所含之文件及子目录)。如果不含dirName 指的就是当前目录。
alrtAFR的选择如下(可嵌套使用):
-a 显示所有文件及目录 (ls内定将文件名或目录名称开头为"."的视为隐藏档,不会列出)
-l 除文件名称外,亦将文件型态、权限、拥有者、文件大小等资讯详细列出
-r 将文件以相反次序显示(原定依英文字母次序)
-t 将文件依建立时间之先后次序列出
-A 同 -a ,但不列出 "." (当前目录) 及 ".." (父目录)
-F 在列出的文件名称后加一符号;例如可执行档则加 "*", 目录则加 "/"
-R 若目录下有文件,则以下之文件亦皆依序列出
举例:
显示当前路径下所有的目录及文件的详细信息
ls -l
显示当前路径下的目录及文件的名字
ls
显示当前路径下所有的目录及文件的详细信息(包含隐藏文件)
ls -la
按易读方式按时间反序排序,并显示所有以"j"开头的文件详细信息
ls -lhrt j*
关于文件权限上图已经讲过了,下面我再简单介绍一下:
如上图所示,组成部分:[d-l]UGO[rwx]*3
chown 修改文件或目录权限的所有者
语法: chown [-R] USERNAME [:GROUPNAME] directory/file
chmod 修改所有者的文件或目录权限
语法:
chmod MODE FILENAME/DURNAME
chmod U/G/O+r/w/x FILENAME/DURNAME
举例:
修改a.txt 文件的权限为读写执行
chmod 777 a.txt
新增a.txt 使用者的写权限
chmod U+w a.txt
mkdir 命令用于创建文件夹。
可用选项:
-m: 对新建目录设置存取权限,也可以用 chmod 命令设置;
-p: 确保目录名称存在,不存在的就建一个。
举例:
-p 可以实现一次性创建多重目录,如果不加-p,会报错
[root@vmmaster ~]# mkdir a/b/c
mkdir: cannot create directory ‘a/b/c’: No such file or directory
[root@vmmaster ~]# mkdir -p a/b/c
[root@vmmaster ~]# cd a/b/
[root@vmmaster b]# ls
c
[root@vmmaster b]#
一次性创建多个并列的目录a 、b、c
mkdir a b c
语法:rm [options] name… 删除一个目录中的一个或多个文件或目录
options(可嵌套使用):
-i 删除前逐一询问确认。
-f 即使原档案属性设为唯读,亦直接删除,无需逐一确认。
-r 将目录及以下之档案亦逐一删除。
举例:
递归删除test目录下的所有文件
rm -rf test/
如果没有使用 -r 选项,则 rm 不会删除目录,会出现以下报错提示。如果使用 rm 来删除文件,通常无法恢复。
[root@vmmaster ~]# rm a/
rm: cannot remove ‘a/’: Is a directory
语法:cp [options] source dest ,cp命令主要用于复制文件或目录
options常用可选操作:
-i 提示
-r 复制目录及目录内所有项目
-a 复制的文件与原文件时间一样
-l 不复制文件,只是生成链接文件
举例:
将当前目录"test/"下的所有文件复制到新目录"newtest"下
cp –r test/ newtest
mv 命令移动文件或目录、兼有重命名
根据第二参数类型(如目录,则移动文件;如为文件则重命令该文件)。 当第二个参数为目录时,第一个参数可以是多个以空格分隔的文件或目录,然后移动第一个参数指定的多个文件到第二个参数指定的目录中。
可选操作:
-i: 若指定目录已有同名文件,则先询问是否覆盖旧文件;
-f: 在 mv 操作要覆盖某已有的目标文件时不给任何指示;
举例:
将文件 a.txt,b.txt,c.txt 移动到根的 test 目录中
mv a.txt b.txt c.txt test/
将文件 file1 改名为 file2,如果 file2 已经存在,则询问是否覆盖
mv -i a.txt b.txt
cat 命令用于连接文件并打印到标准输出设备上。
可选操作
-n 由 1 开始对所有输出的行数编号。
-b 和 -n 相似,只不过对于空白行不编号。
-s 当遇到有连续两行以上的空白行,就代换为一行的空白行。
-v 使用 ^ 和 M- 符号,除了 LFD 和 TAB 之外。
-E 在每行结束处显示 $。
-T 将 TAB 字符显示为 ^I。
-A 等价于 -vET。
-e 等价于"-vE"选项;
-t 等价于"-vT"选项;
举例:
把a.txt的文档内容加上行号后输入b.txt 这个文档里
cat -n a.txt > b.txt
把 a.txt 和 b.txt 的文档内容加上行号(空白行不加)之后将内容附加到 c.txt 文档里
cat -b a.txt b.txt >> c.txt
读取a.txt文档的所有内容
cat a.txt
语法:touch [-acfm][-d<日期时间>][-r<参考文件或目录>] [-t<日期时间>][–version][文件或目录…]
touch 命令最常用的就是创建新文件
参数可选:
a 改变档案的读取时间记录。
m 改变档案的修改时间记录。
c 假如目的档案不存在,不会建立新的档案。与 --no-create 的效果一样。
f 不使用,是为了与其他 unix 系统的相容性而保留。
r 使用参考档的时间记录,与 --file 的效果一样。
d 设定时间与日期,可以使用各种不同的格式。
t 设定档案的时间记录,格式与 date 指令相同。
--no-create 不会建立新档案。
--help 列出指令格式。
--version 列出版本讯息。
举例:
若a.txt存在,则修改a.txt的时间属性为当前系统时间,若a.txt不存在,就是创建新文件a.txt
touch a.txt
grep 是最常用的管道命令, 用于查找文件里符合条件的字符串和用于查找内容包含指定的范本样式的文件。
语法:grep [option] pattern file|dir
常用的可选option操作
-A n --after-context显示匹配字符后n行
-B n --before-context显示匹配字符前n行
-C n --context 显示匹配字符前后n行
-c --count 计算符合样式的列数
-i 忽略大小写
-l 只列出文件内容符合指定的样式的文件名称
-f 从文件中读取关键词
-n 显示匹配内容的所在文件中行数
-R 递归查找文件夹
-w 只匹配整个单词
-v 显示匹配行以外的内容
可选正则表达式pattern的操作:
^ #锚定行的开始 如:'^grep'匹配所有以grep开头的行。
$ #锚定行的结束 如:'grep$'匹配所有以grep结尾的行。
. #匹配一个非换行符的字符 如:'gr.p'匹配gr后接一个任意字符,然后是p。
* #匹配零个或多个先前字符 如:'*grep'匹配所有一个或多个空格后紧跟grep的行。
.* #一起用代表任意字符。
[] #匹配一个指定范围内的字符,如'[Gg]rep'匹配Grep和grep。
[^] #匹配一个不在指定范围内的字符,如:'[^A-FH-Z]rep'匹配不包含A-R和T-Z的一个字母开头,紧跟rep的行。
\(..\) #标记匹配字符,如'\(love\)',love被标记为1。
\< #锚定单词的开始,如:'\
\> #锚定单词的结束,如'grep\>'匹配包含以grep结尾的单词的行。
x\{m\} #重复字符x,m次,如:'0\{5\}'匹配包含5个o的行。
x\{m,\} #重复字符x,至少m次,如:'o\{5,\}'匹配至少有5个o的行。
x\{m,n\} #重复字符x,至少m次,不多于n次,如:'o\{5,10\}'匹配5--10个o的行。
\w #匹配文字和数字字符,也就是[A-Za-z0-9],如:'G\w*p'匹配以G后跟零个或多个文字或数字字符,然后是p。
\W #\w的反置形式,匹配一个或多个非单词字符,如点号句号等。
\b #单词锁定符,如: '\bgrep\b'只匹配grep。
more 分页读取文档内容,这里所说的分页默认为一屏幕的内容,可以通过 -num 指定行数。
常用可选命令操作:
-num 一次显示的行数
-f 计算行数时,以实际上的行数,而非自动换行过后的行数(有些单行字数太长的会被扩展为两行或两行以上)
-p 不以卷动的方式显示每一页,而是先清除萤幕后再显示内容
-s 当遇到有连续两行以上的空白行,就代换为一行的空白行
+/pattern 在每个文档显示前搜寻该字串(pattern),然后从该字串之后开始显示
+num 从第 num 行开始显示
fileNames 欲显示内容的文档,可为复数个数
读取内容时常用操作:
Enter 向下n行,需要定义。默认为1行
空格键 向下滚动一页
b 返回上一行
= 输出当前行的行号
:f 输出文件名和当前行的行号
V 调用vi编辑器
!命令 调用Shell,并执行命令
q 退出more
举例:
以每页两行的形式分页读取a.txt文档内容
more -2 a.txt
less 命令比more命令更强大,可以随意的浏览分页查询的内容。而 more 仅能向前移动,却不能向后移动,而且 less 在查看之前不会加载整个文件。
常用可选命令参数:
-b <缓冲区大小> 设置缓冲区的大小
-e 当文件显示结束后,自动离开
-g 只标志最后搜索的关键词
-i 忽略搜索时的大小写
-m 显示类似more命令的百分比
-N 显示每行的行号
-s 显示连续空行为一行
-S 行过长时间将超出部分舍弃
-x <数字> 将"tab"键显示为规定的数字空格
读取内容时常用操作:
/字符串:向下搜索"字符串"的功能
?字符串:向上搜索"字符串"的功能
n:重复前一个搜索(与 / 或 ? 有关)
N:反向重复前一个搜索(与 / 或 ? 有关)
b 向上翻一页
d 向后翻半页
h 显示帮助界面
Q 退出less 命令
u 向前滚动半页
y 向前滚动一行
空格键 滚动一页
回车键 滚动一行
[pagedown]: 向下翻动一页
[pageup]: 向上翻动一页
head默认分别显示文件的开头10行记录。
可选参数:
-n 输出的行数
-c 输出的字节数,后面直接跟数字,如5b、5m、5k、5g等
举例:
显示a.txt的前15行(3种方式)
head -n15 a.txt
head -n 15 a.txt
head -15 a.txt
显示a.txt除了最后15行以外的内容
head -n -15 a.txt
tail默认分别显示文件的结尾10行记录。和head相反
可选参数:
-n 输出的行数
-c 输出的字节数,后面直接跟数字,如5b、5m、5k、5g等
-f 循环读取(常用于查看递增的日志文件)
举例:
显示a.txt从第15行开始所有的内容
tail -n +15 a.txt
显示a.txt最后5m个的字节数
tail -c 5m a.txt #5*1048576
cut 命令为文本内容切割操作,只是显示具有分隔效果,实际内容没有变化。
语法:cut -d ‘切割符’ -fn[,n2,n3,…] /path/file
备注:
举例:
echo 'we are champion, we are the family' | cut -d ' ' -f2,5,6
结果:
are are the
ls -l | grep Aug | tr -s ' ' | cut -d ' ' -f3,5,6,9
结果:
root 0 Aug a.txt
root 34 Aug b.txt
root 6 Aug c
root 0 Aug c.txt
tr 命令用来删除替换文本的功能,和cut一样只是显示内容变化,实际内容没有变化。
举例:
1. 正则大小转换 echo 'hello kb08' |tr 'a-z' 'A-Z'
2. 删除指定符号 echo 'hello kb08' |tr -d '0-9'
3. 重复显示一个 echo 'hello we will thrill' |tr -s 'l'
sed 命令为文本编辑器,可以配合正则
举例1:
1. -n 只显示需要的内容 sed -n '2,6p' test.txt
2. 复制(显示) sed '2,6p' test.txt
3. 删除(不显示) sed '2,6d' test.txt 显示其他行
4. 替换 sed 's/world/family/g' test.txt
5.
#备注:sed ‘s/INFO/CONT/’ g:每行全部替换
结果:
[root@vmmaster b]# sed -n '2,6p' text.txt
we are family
the world is peaceful and beautiful
the family is our good home
we are happy
we hope we can live in the world
[root@vmmaster b]# sed '2,6p' text.txt
hello world
we are family
we are family
the world is peaceful and beautiful
the world is peaceful and beautiful
the family is our good home
the family is our good home
we are happy
we are happy
we hope we can live in the world
we hope we can live in the world
welcom to the world
welcome to our family
the world is our family
our family is the world
[root@vmmaster b]# sed '2,6d' text.txt
hello world
welcom to the world
welcome to our family
the world is our family
our family is the world
[root@vmmaster b]# sed 's/world/china/g' text.txt
hello china
we are family
the china is peaceful and beautiful
the family is our good home
we are happy
we hope we can live in the china
welcom to the china
welcome to our family
the china is our family
our family is the china
举例2:
1. 在指定内容后插入:sed -i ‘/REF_TXT/a\INSERT_TXT’ FILE
2. 在指定内容前插入:sed -i ‘/REF_TXT/i\INSERT_TXT’ FILE
3. 在指定行插入:sed -i ‘niINSERT_TXT’ FILE
#备注:REF_TXT为指定内容所在行,INSERT_TXT为插入文本,FILE为指定文件
下面举一个常见的jdk和Tomcat的安装发布来证明上述观点:
#!/bin/bash
INSTALL=/opt/install/java/
JDK=jdk-8u111-linux-x64.tar.gz
TOMCAT=apache-tomcat-8.5.57.tar.gz
BIGDATA=/opt/bigdata/java/
CMD=''
show(){
msg=''
for p in $*
do
msg=$msg' '$p
done
}
err(){
show $*
if [ $? -ne 0 ]
then
echo '异常:'$msg
exit 1
else
echo '成功:'$msg
fi
}
if [ -e $BIGDATA ]
then
echo "${BIGDATA} exist"
else
CMD="mkdir -p ${BIGDATA}"
$CMD
err "创建目录 ${BIGDATA}"
fi
CMD="cd ${INSTALL}"
$CMD
err "${CMD}"
CMD="tar -zxf ${JDK} -C ${BIGDATA}"
$CMD
err "${CMD}"
CMD="tar -zxf ${TOMCAT} -C ${BIGDATA}"
$CMD
err "${CMD}"
CMD="mv ${BIGDATA}apache-tomcat-8.5.57/ ${BIGDATA}tomcat85/"
$CMD
err "${CMD}"
CMD="mv ${BIGDATA}jdk1.8.0_111/ ${BIGDATA}jdk180/"
$CMD
err "${CMD}"
CMD=`sed -i "/unset i/i\export JAVA_HOME=${BIGDATA}jdk180" /etc/profile`
$CMD
err "create environment variable JAVA_HOME"
CMD=`sed -i "/unset i/i\export TOMCAT_HOME=${BIGDATA}tomcat85" /etc/profile`
$CMD
err "create environment variable TOMCAT_HOME"
CMD=`sed -i '/unset i/i\export PATH=$JAVA_HOME/bin:$TOMCAT_HOME/bin:$PATH' /etc/profile`
$CMD
err "create environment variable PATH"
CMD=`sed -i '/unset i/i\export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar' /etc/profile`
$CMD
err "create environment variable CLASSPATH"
CMD="source /etc/profile"
$CMD
err "${CMD}"
echo "发布 jdk && tomact 成功"
结果:
[root@vm03 ~]# ./deployloyjt.sh
成功: 创建目录 /opt/bigdata/java/
成功: cd /opt/install/java/
成功: tar -zxf jdk-8u111-linux-x64.tar.gz -C /opt/bigdata/java/
成功: tar -zxf apache-tomcat-8.5.57.tar.gz -C /opt/bigdata/java/
成功: mv /opt/bigdata/java/apache-tomcat-8.5.57/ /opt/bigdata/java/tomcat85/
成功: mv /opt/bigdata/java/jdk1.8.0_111/ /opt/bigdata/java/jdk180/
成功: create environment variable JAVA_HOME
成功: create environment variable TOMCAT_HOME
成功: create environment variable PATH
成功: create environment variable CLASSPATH
成功: source /etc/profile
发布 jdk && tomact 成功
[root@vm03 ~]# cat /etc/profile | tail -8
export JAVA_HOME=/opt/bigdata/java/jdk180
export TOMCAT_HOME=/opt/bigdata/java/tomcat85
export PATH=$JAVA_HOME/bin:$TOMCAT_HOME/bin:$PATH
export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
unset i
unset -f pathmunge
[root@vm03 ~]#
awk 是一种脚本语言命令,检索查询的功能
语法:awk [-F|-f|-v] ‘BEGIN{}//{COMMAND1;COMMAND2} END{}’ file
#显示每行的1和4列单词
awk '{print $1,$4}' test.txt
#计算第5列的sum
ls -l|awk 'BEGIN{sum=0} {sum+=$5} END{print sum}'
#检索第1和3列的内容
awk -F : '{print $1,$3}' etc/passwd
vi 命令进入文件的操作命令,只能是文件
默认进入命令模式
:w 保存不退出
:wq 保存退出
:x 保存退出
:q! 退出不保存
/... 检索...的内容
yy 复制所在行的内容
p 粘贴到下一行
dd 删除所在行的内容
shit+g 直接到最后一行
按i/a进入编辑模式
esc 进入命令模式
rpm 命令用于管理套件
rpm -ivh 包名(支持*):安装rpm包
rpm -e 包名(不支持*):卸载rpm包
rpm -qa | grep 包名(不支持*): 查看系统自带包
yum( Yellow dog Updater, Modified)是一个在Fedora和RedHat以及SUSE中的Shell前端软件包管理器。
基於RPM包管理,能够从指定的服务器自动下载RPM包并且安装,可以自动处理依赖性关系,并且一次安装所有依赖的软体包,无须繁琐地一次次下载、安装。
常用命令:
1.列出所有可更新的软件清单命令:yum check-update
2.更新所有软件命令:yum update
3.仅安装指定的软件命令:yum install <package_name>
4.仅更新指定的软件命令:yum update <package_name>
5.列出所有可安裝的软件清单命令:yum list
6.删除软件包命令:yum remove <package_name>
7.查找软件包 命令:yum search <keyword>
8.清除缓存命令:
yum clean packages: 清除缓存目录下的软件包
yum clean headers: 清除缓存目录下的 headers
yum clean oldheaders: 清除缓存目录下旧的 headers
yum clean, yum clean all (= yum clean packages; yum clean oldheaders) :清除缓存目录下的软件包及旧的header
systemctl命令是系统服务管理器指令
常用命令:
systemctl enable/start/stop/disable/restart service-name 启动、开启、关闭、禁用、重启service
systemctl status service-name 查看service状态:Active:running或者Inactive:dead
举例:
重启网络服务
systemctl restart network
关闭并禁用防火墙
关闭防火墙:systemctl stop firewalld
禁用防火墙:systemctl disable firewalld
ps aux
ps -ef
杀死进程
kill -9 PID(进程id)
所有的解压缩和压缩命令之后均可加 -C path 来指定解压缩和压缩后文件的位置。
常用参数:
-c 建立新的压缩文件
-f 指定压缩文件
-r 添加文件到已经压缩文件包中
-u 添加改了和现有的文件到压缩包中
-x 从压缩包中抽取文件
-t 显示压缩文件中的内容
-z 支持gzip压缩
-j 支持bzip2压缩
-Z 支持compress解压文件
-v 显示操作过程
语法:
文件解压
xxx.tar tar -xvf xxx.tar [-C path]
xxx.tar.gz tar -zxvf xxx.tar.gz [-C path]
xxx.tar.xz xz -d xxx.tar.xz => xxx.tar
文件压缩
tar -cvf destpath/xxx.tar srcpath
tar -zcvf destpath/xxx.tar.gz srcpath
gzip
压缩 gzip fileName filename.tar.gz filename.tgz
解压:gunzip filename.gz 或 gzip -d filename.gz
bz2实例
压缩 bzip2 -z filename filename.tar.bz2
解压:bunzip filename.bz2或bzip -d filename.bz2
clear命令用于清除屏幕(清除当前屏幕终端上的任何信息),向上翻页还是能查看到历史记录的。
a) 设置主机名 hostnamectl set-hostname HOSTNAME
b) 查看别名 hostname
c) 配置主机名 vi etc/hosts
d) 免密登录
i. 进入主机根目录: cd/root
ii. 生成秘钥 ssh-keygen -t rsa -P “”
iii.删除秘钥 ssh-keygen -R IP
iv. 拷贝秘钥(authorized_keys先创建)
1. cd .ssh/
2. cat id_rsa.pub >> authorized_keys
v. 远程拷贝秘钥:ssh-copy-id -i id_rsa.pub -p22 root@REMOTE_HOSTNAME/IP 输入密码授权拷贝
vi. 免密登录验证
1. ssh root@REMOTE_HOSTNAME/IP
2. 如果能够直接连上远程主机,则免密登录设置成功
vii. 退出免密登录 logout
用户
分组
netstat和top 命令一样为系统资源查看命令
常用命令:
netstat -t/u 协议类型 -tcp/-udp
netstat -I 网卡列表
日期格式化:date +"%Y-%m-%d %H:%M:%S %s"
日期计算:date -d “±n PART” +”FORMAT”
PART 日期形式,如:day、month、year
FORMAT 日期格式化,如:%Y-%m-%d %H:%M:%S %s
更改系统时间:date -s “00:00:00 1900-1-1”
修正系统时间:ntpdate -u ntp.api.bz
当前时间:date
格林威治时间:date-u
挂钟时间(虚拟机内部的脉冲时间):clock
在Linux中有硬件时钟与系统时钟等两种时钟:hwclock