现在的主流linux发行版中,默认使用Bash解释器作为Shell终端,而Bash作为主流Linux系统的Shell解释器具有相当大的优势。
1.可以使用方向键的上下键调取过去执行的命令;
2.可以使用Tab补全功能,即手动打出前几个字母,若以此字符串进行查询只有一个命令或文件匹配,则补全此命令或文件名;若以此字符串查询有多个命令或文件,则显示查询到的命令列表或文件列表;
3.可以使用glob通配符功能:
*:任意个任意字符;?:单个任意字符;[list]:匹配list中的任意字符;[!list]:不匹配list中的任意字符;[c1-c2]:匹配c1-c2中的任意单个字符,如[0-9],[a-z];{string1,string2,...}:匹配{}中的任意一个字符串;{c1..c2}:匹配c1-c2的全部字符,如{1..10};
4.可以自定义环境变量以满足需求;
5.强大的批处理脚本;
帮助命令
作为自学者,首先需要学会的就是能看懂每个命令的帮助文档,那么第一个需要掌握的Linux命令就应该是man。
man命令
Linux下的帮助指令,通过man命令可以查看Linux中的命令帮助,配置文件帮助和编程帮助等信息。
语法:
man [options...]
常用选项:
-a:在所有的man手册中搜索;
-f:等价于whatis,显示给定关键字的简短信息;
-M:指定man手册搜索的路径;
-#:指定从#号man手册中进行搜索;
系统相关命令
echo命令
在终端上显示字符串或变量提取出来的值。
语法:
echo [options...] [$variable|string]
例如:
echo "Hello Linux"echo $PATH
date命令
显示或设置Linux系统时间与日期。
语法:
date [options...] [+dateformat]
常用选项:
-d<字符串>:显示字符串所指的时间与日期;
-s<字符串>:根据字符串设置系统时间与日期;
--help:在线帮助;
常用日期格式:
%H:小时,24小时制(00-23)
%I:小时,12小时制(01-12)
%M:分钟,(00-59)
%S:秒钟,(00-59)
%p:显示am或pm
%Y:完整年份
%y:两位年份
%m:月份
%d:一个月的第几天(00-31)
%Z:显示时区
%B:完整月份(January-December)
%b:缩写月份(Jan-Dec)
%A:完整星期几(Sunday- Saturday)
%a:缩写星期几(Sun-Sat)
%j:一年的第几天(001-365)
%W:一年的第几个星期(00-53)
%w:一个星期的第几天(0代表星期天)
%X:显示的时间格式相当于%H:%M:%S
%F:相当于%Y:%m:%d
%T:24小时制hh:mm:ss
例如:
date -d "1 day ago" +"%Y:%m:%d"(显示一天前的日期)date -d "2017-06-18" +"%Y/%m/%d %H:%M:%S"(日期格式转换,结果为:2017/06/18 00:00:00)date -s "2020-01-01 00:00:00" (设置系统全部时间)
ps命令
查看当前系统的进程状态。
常用选项:
-a:显示所有进程;
-u:用户以及其他信息;
-x:显示所有程序,不以终端机区分;
Linux进程常见的状态
R:运行,正在运行的进程;
S:中断,可中断的睡眠进程;
U:不可中断,不可中断的睡眠进程;
Z:僵死,进程已终止,但父进程未询问其状态情况;
T:停止,当进程收到SIGSTOP,SIGTIN,SIGTSTP,SIGTOU信号时,停止运行;
kill命令
根据指定进程号来删除执行中的程序或工作。
常用选项:
-l:列出所有的kill可发送的信号
-s:指定要发送的信号
例如:
使用ps查询相应的进程,并使用kill结束进程
ps | grep vimkill 3268
killall命令
根据指定进程名杀死进程,此命令可杀死跟指定进程相关的所有进程。
常用选项:
-i:交互式杀死进程,对每个要杀死的进程进行询问;
-s:指定要发送的信号
例如:
killall vim
poweroff命令
用于系统关机。
reboot命令
用于系统重启。
目录和文件相关命令
pwd命令
以绝对路径的形式显示用户当前的工作目录。
mkdir命令
用来创建目录。如果在目录名的前面没有加任何路径名,则在当前目录下创建由dirname指定的目录;如果给出了一个已经存在的路径,将会在该目录下创建一个指定的目录。在创建目录时,应保证新建的目录与它所在目录下的文件没有重名。
常用选项:
-p:递归创建目录
例如:
mkdir -p a/b/c
ls命令
用来显示目标列表。Linux中最常用的命令之一。
语法:
ls [options...] file
常用选项:
-a:显示所有文件,包括隐藏文件;
-l:以长格式显示目录下的文件列表,输出的信息从左到右代表的依次为:文件类型,权限模式,硬连接数,属主,属组,文件大小,文件最后修改时间,文件名;
例如:
ls -la root(以长格式显示root目录下所有文件列表)
cd命令
切换用户的工作目录至指定目录。cd -为Linux中最常用的命令之一。
语法:
cd [options...] dir
常见选项:
-:当前工作目录将被切换到环境变量"OLDPWD"所表示的工作目录中;
例如:
cd(进入当前用户的家目录)cd -(进入上一个工作目录)cd !$(将上一个命令的参数作为cd的参数使用)
mv命令
用来移动文件或对文件进行重命名
语法:
mv [options...] source target
例如:
mv /etc/fstab /etc/fstab.bak(将etc目录下的fstab文件进行重命名为fstab.bak)mv /etc/fstab /tmp(将etc目录下的fstab文件移动到tmp目录下)
cp命令
将指定文件复制到指定目录中。(若源文件有多个文件,则目标文件必须是目录)
常用选项:
-r/R:递归出来,源文件为目录时使用;
-f:强制复制;
-v:显示详细信息;
例如:
cp /etc/fstab /tmp(将fstab文件复制到tmp目录下)cp /etc/* /tmp/etc.bak/(将etc目录下所有文件复制到tmp的etc.bak目录下)
tree命令
以树状形式显示目录结构
touch命令
用于创建新文件或设置文件的时间戳。
常用选项:
-a:仅修改文件的“访问时间”(atime)
-m:仅修改文件的“修改时间”(mtime)
tar命令
用于文件的打包和压缩。
常用选项:
-c:创建新的备份文件;
-x:从备份文件中还原文件;
-f:指定备份文件;
-v:显示文件打包或还原详细过程;
-z:使用gzip程序对文件进行压缩或解压;
-j:使用bzip2程序对文件进行压缩或解压;
-t:列出备份文件中的文件列表;
例如:
tar -cvf log.tar log.log(仅打包,不压缩)tar -zcvf log.tar.gz log.log(打包后使用gzip工具进行压缩)tar -jcvf log.tar.bz log.log (打包后使用bzip2工具进行压缩)tar -zxvf log.tar.gz (解压缩)tar -ztvf log.tar.gz(查询log.tar.gz中所包含的所有文件列表)
其他压缩工具:
gzip,bzip2,zip
对应的解压缩工具:
gunzip,bunzip2,unzip
grep命令
global search regular and print out the line
强大的文本搜索工具,可以使用标准正则表达式,并把匹配的行打印出来。
语法:
grep [options] match_pattern file
常用选项:
-n:不仅显示所匹配的行,而且显示所匹配的行号;
-v:反转查找;
-i:忽略字符大小写;
-o:只显示匹配到的字符;
--color=auto:查询到的字符颜色高亮显示;
-e:使用扩展正则表达式进行搜索;
例如:
grep /sbin/nologin /etc/passwd(显示默认bin为/sbin/nologin的所有用户信息)grep -v /sbin/nologin /etc/paswd(显示默认bin不是/sbin/nologin的所有用户信息)
find命令
用于在指定目录下查找文件。
-name:匹配文件名;
-perm:匹配权限;
-user:匹配属主;
-group:匹配属组;
-atime [-n|+n]:匹配访问时间,“-”代表n天以内,“+”代表n天以前;
-mtime [-n|+n]:匹配修改时间,“-”代表n天以内,“+”代表n天以前;
--type :匹配文件类型;
-exec {} ;:若find命令执行返回true,这执行该命令,{}代表find命令搜索到的所有文件,结尾;为固定形式;
例如:
find /home -name "*.txt"(搜索home目录下所有的txt文件)find . -type f -atime -7(搜索7天内被访问过的所有文件)find . -user root -type f(搜索属主为root的所有文件)find . -type f -mtime +30 -name "*.log" -exec cp {} old ;(将30天前的.log文件移动到old目录中)