十年网站开发经验 + 多家企业客户 + 靠谱的建站团队
量身定制 + 运营维护+专业推广+无忧售后,网站问题一站解决
本文整理自 My 5 Favorite Linux Shell Tricks for SPEEEEEED (and efficiency) 。这里列出的小技巧可以让你在使用shell的时候更加高效~
创新互联公司是专业的饶阳网站建设公司,饶阳接单;提供网站设计制作、成都网站建设,网页设计,网站设计,建网站,PHP网站建设等专业做网站服务;采用PHP框架,可快速的进行饶阳网站开发网页制作和功能扩展;专业做搜索引擎喜爱的网站,专业的做网站团队,希望更多企业前来合作!
设想这样一个场景:你输入了 apt-get update ,然后发现需要 sudo 权限才能运行。除了通常的按下向上箭头,然后移动到行首添加 sudo 再运行,你可以输入
按下回车后,shell会生成 sudo apt-get update ,也就是说, !! 被替换为上一条命令的内容。
翻译过来可以理解为截断命令,并且重新粘贴截断内容。这个操作类似于emacs中的快捷键。我们可以使用 ctrl + K 来截断光标后方的命令内容,然后用 ctrl + Y 来重新粘贴截断的内容。
例如:
注意 ctrl + Y 可以多次粘贴。
而如果想要截断光标之前的内容,可以用 ctrl + U 。(事实上很多emacs的快捷键都可以直接在shell环境下使用)
在开发和调试过程中,我们常常会使用 tail -f 命令来追踪日志的输出。这种方式有一个问题,即我们无法回溯更早的日志内容。因此我推荐之后都使用 less +F 命令来追踪日志内容。这个命令同样是从文件的尾部开始输出,然后在文件内容更新时输出更新内容。在使用这个命令时,可以按下 ctrl + C 组合键,然后用上下箭头就可以遍历整个文件了。之后按下 shift + F 来回到尾部追踪的模式。
ctrl + x + e (按住ctrl,然后先按下x,再按下e),就可以弹出一个编辑器来编辑你当前的命令。
设想如下的情形:
我们要对一个host进行多次操作,而每次我们都要重新输入一遍这个host的!这在调试和维护过程中是非常繁琐的。 alt + . 就为我们提供了一个非常便捷的功能!按下这个命令可以粘贴上一条命令的参数。
命令很多的,一下子学了也会忘记的,只能慢慢积累,很多一般都用不上的1、文件查看和连接命令
将文件连接到一起,用“”操作将几个文件组合成一个新的文件,或者是用“”把文件追加到已存文件的后面。
语法:
cat[参数]filelist
-n或--number:由1开始对所有输出的行数进行编号
-b或--number-nonblank:和n相似,但对空行不编号
-s:遇到两行空白,替换为一行空白
-v:显示不可打印的字符
filelist:用于结合文件的可选列表。2、分屏显示命令
类似于cat,但它是每次显示一页,按空格显示下一页,按q键退出,按h〉键给出帮助信息。该命令还有搜索字符的功能。
语法
more [选项] file...
-num:指定每屏显示的行数
-d:在屏幕下面提示信息
-l:more默认遇到送纸符^L会暂停,使用该选项可以取消该功能
-f:计算实际行数
-p:不是以卷动的方式显示每页,而是先清屏再显示
-s:遇到两行空白,替换为一行空白
-u:不显示下划线
+/string:在文件中搜索字符串string,并显示字符串所在页的内容
+/num:从第num行开始显示
file用于显示的文件
3、按页显示文件。类似于more,但允许在文件中前后移动。
语法:
less [参数]文件名
-i:查询时忽略大小写。
-num:指定每页显示的行数
-pstring:在文件中搜索字符串string,并从第一个符合条件的地方开始显示
-S:当某列的内容超过显示画面的宽度时,直接将超出的部分截断舍弃,默认情况下会把超出的部分折回来显示复制、删除和移动命令
1、拷贝文件。
语法:
cp[选项]sourcedest
cp[选项]source....directory
-r递归拷贝目录
-f删除已存在的目标文件再复制
-a在备份中尽可能的保留源文件的结构和属性。
2、删除
rm [选项] name....
该命令用于逐个删除指定的文件或目录。默认清苦下,name为文件名,rm命令不删除目录,只有指定-d选项时候,才能删除目录
语法:
-f强制删除,包括只读文件,并且不给用户任何提示
-i在删除每个文件时提示用户
-r递归删除目录下的内容移动或更名文件和目录
语法:
mv [参数]源文件目标文件
-f强制复盖已有文件。
-i在复盖已有文件前提示用户。
-u在目标文件的时间比原文件新时不复盖目标文件。
-v在移动文件时输出相关信息。创建和删除目录命令
1、创建目录命令
mkdir[参数]目录名
-p如果父目录不存在,创建所有的父目录。2、删除空目录。
语法:
rmdir[参数]目录列表
-p 表示删除指定目录后,如果该目录的父目录为空,则将一并删除切换工作目录和显示目录命令
1、改变当前工作目录。
语法:
cd 目录名
如果后面不加目录名,则返回用户的根目录,此外用户必须拥有进入该目录的权限。另外cd ~ 指切换到自己的主目录,cd ../.. 可以切换到单前目录的上上目录2、显示正在工作或当前的目录名。
pwd [参数]3、列出目录中的内容。
语法:
ls [参数][目录]
-A 显示所有文件,包括隐藏文件(以“.”开头的文件,但不列出当前目录“.”和上级目录“..”
-a 显示所有文件,包括“.”和“..”目录。
-d 只列出目录名;不列出它的内容。
-l 给出文件的长列表。包括权限、所有权、大小、文件名、最后修改时间等等。
-t 按时间顺序显示
-F 在列出的文件名后以符号表示文件类型,一般文件不加符号,可执行文件“*”,目录加“/”
-R 若目录下有文件,则递归地列出目录下的文件查找与定位命令
1、查找文件或目录命令
格式
find [path....] [expression]
该命令在目录树层次中从path开始向下查找文件,将符合expression要求的文件列出来。输入命令中第一个以-、(、)、,、!开始的参数作为expression的部分,在这些符号之前的参数都被认为是要搜索的路径,在这些符号之后的才被认为是expression的部分,如果不给出path,则使用当前工作的目录,如果不给出expression,则使用-print作为预设expression
expression的参数有二三十个之多,这里只提几个常用的
-aminn 在过去n分钟内被访问过的文件
-anewerfile 比文件file更晚被访问过的文件
-atimen 在过去n天被访问过的文件
-cminn 在过去n分钟内修改过的文件
-cnewerfile 比文件file更新的文件
-ctimen 在过去n天内修改过的文件
-empty 内容为空的文件
-gidn或-groupname gid是n或是group名是name的文件
-ipathp,-pathp 路径名称符合p的文件,ipath表示忽略大小写
-namename,-inamename 文件名称符合name的文件,iname表示忽略大小写
-sizen单位 文件大小是n个单位
-type文件类型〉文件类型的含义与名利ls的选型一样
-pidn 进程id是n的文件
exp1 exp2 或者exp1 -a exp2 或者exp1 -and exp2 含义相同,表示同时满足这两个条件
!expr或者-not expr 表示expr的否定
exp1 -o exp2 或者exp1 -or exp2 表示满足其中一个条件就可以2、文件定位命令
locate 让使用者可以很快速的搜寻档案系统内是否有指定的档案。其方法是先建立一个包括系统内所有档案名称及路径的资料库,之后当寻找时就只需查询这个资料库,而不必实际深入档案系统之中了。在一般的distribution 之中,资料库的建立都被放在 contab 中自动执行。一般使用者在使用时只要用locate [选项] search string-u 建立资料库,-u 会由根目录开始
-U 建立资料库,-U 则可以指定开始的位置。-e 将排除在寻找的范围之外。-l 如果 是 1.则启动安全模式。在安全模式下,使用者不会看到权限无法看到的档案。这会始速度减慢,因为 locate 必须至实际的档案系统中取得档案的权限资料。-f 将特定的档案系统排除在外,例如我们没有到理要把 proc 档案系统中的档案放在资料库中。-q 安静模式,不会显示任何错误讯息。-n 至多显示 个输出。-r 使用正规运算式 做寻找的条件。-o 指定资料库存的名称。-d 指定资料库的路径-h 显示辅助讯息-v 显示更多的讯息-V 显示程式的版本讯息连接命令
ln [选项] source dest
Linux/Unix 档案系统中,有所谓的连结(link),我们可以将其视为档案的别名,而连结又可分为两种 : 硬连结(hard link)与软连结(symbolic link),硬连结的意思是一个档案可以有多个名称,而软连结的方式则是产生一个特殊的档案,该档案的内容是指向另一个档案的位置。硬连结是存在同一个档案系统中,而软连结却可以跨越不同的档案系统。 ln source dist 是产生一个连结(dist)到 source,至于使用硬连结或软链结则由参数决定。 不论是硬连结或软链结都不会将原本的档案复制一份,只会占用非常少量的磁碟空间。-f : 链结时先将与 dist 同档名的档案删除
-d : 允许系统管理者硬链结自己的目录
-i : 在删除与 dist 同档名的档案时先进行询问
-n : 在进行软连结时,将 dist 视为一般的档案
-s : 进行软链结(symbolic link)
-v : 在连结之前显示其档名
-b : 将在链结时会被覆写或删除的档案进行备份
改变文件或目录的时间命令
touch [选项] file1 [file2....]
-a 改变档案的读取时间记录。
-m 改变档案的修改时间记录。
-c 假如目的档案不存在,不会建立新的档案。与 --no-create 的效果一样。
-f 不使用,是为了与其他 unix 系统的相容性而保留。
-r 使用参考档的时间记录,与 --file 的效果一样。
-d 设定时间与日期,可以使用各种不同的格式。
-t 设定档案的时间记录,格式与 date 指令相同。
--no-create 不会建立新档案。
备份命令
tar 主选项 [辅选项] 文件或目录
tar可以为文件和目录创建档案。利用tar,用户可以为某一特定文件创建档案(备份文件),也可以在档案中改变文件,或者向档案中加入新的文件。tar最初被用来在磁带上创建档案,现在,用户可以在任何设备上创建档案,如软盘。利用tar命令,可以把一大堆的文件和目录全部打包成一个文件,这对于备份文件或将几个文件组合成为一个文件以便于网络传输是非常有用的。Linux上的tar是GNU版本的。
主选项:
c 创建新的档案文件。如果用户想备份一个目录或是一些文件,就要选择这个选项。
r 把要存档的文件追加到档案文件的未尾。例如用户已经作好备份文件,又发现还有一个目录或是一些文件忘记备份了,这时可以使用该选项,将忘记的目录或文件追加到备份文件中。
t 列出档案文件的内容,查看已经备份了哪些文件。
u 更新文件。就是说,用新增的文件取代原备份文件,如果在备份文件中找不到要更新的文件,则把它追加到备份文件的最后。
x 从档案文件中释放文件。
辅选项:
b 该选项是为磁带机设定的。其后跟一数字,用来说明区块的大小,系统预设值为20(20*512 bytes)。
f 使用档案文件或设备,这个选项通常是必选的。
k 保存已经存在的文件。例如我们把某个文件还原,在还原的过程中,遇到相同的文件,不会进行覆盖。
m 在还原文件时,把所有文件的修改时间设定为现在。
M 创建多卷的档案文件,以便在几个磁盘中存放。
v 详细报告tar处理的文件信息。如无此选项,tar不报告文件信息。
w 每一步都要求确认。
z 用gzip来压缩/解压缩文件,加上该选项后可以将档案文件进行压缩,但还原时也一定要使用该选项进行解压缩。
tar的最基本的用法举例
tar -cf all.tar *.jpg
这条命令是将所有.jpg的文件打成一个名为all.tar的包。-c是表示产生新的包,-f指定包的文件名。
tar -rf all.tar *.gif
这条命令是将所有.gif的文件增加到all.tar的包里面去。-r是表示增加文件的意思。
tar -uf all.tar logo.gif
这条命令是更新原来tar包all.tar中logo.gif文件,-u是表示更新文件的意思。
tar -tf all.tar
这条命令是列出all.tar包中所有文件,-t是列出文件的意思
tar -tvf all.tar |more
这条命令是列出all.tar包中所有文件,并以分屏方式压缩和解压命令
gzip命令是用来压缩文件的。它不仅可以用来压缩大的、较少使用的文件以节省磁盘空间,还可以和tar命令一起构成Linux操作系统中比较流行的压缩文件格式。据统计,gzip命令对文本文件有60%~70%的压缩率。
gzip [选项] [文件名]
-c 输出并保留原文件
-d 将压缩文件解压,默认情况下为压缩
-l 显示压缩文件的压缩的提示信息
-r 递归的压缩或解压
-t,可以用来测试压缩文件的完整性。如果文件正常,gzip不会给出任何显示。如果想看到OK这两个字母,可以在测试某个文件时使用-tv参数。
-v 对每个操作的文件,显示文件名和压缩比例
unzip 命令位于/usr/bin目录中,它们和MS DOS下的pkzip、pkunzip及MS Windows中的Winzip软件功能一样,将文件压缩成.zip文件,以节省硬盘空间,当需要的时候再将压缩文件用unzip命令解开。该命令使用权限是所有用户。
unzip [选项] [压缩文件名]
-d目录 知道解压的某个目录下,默认为当前目录
-n:解压缩时不要覆盖原有的文件。
-o:不必先询问用户,unzip执行后覆盖原有文件
-j:不处理压缩文件中原有的目录路径,把所有文件解压到同一目录
-v:察看压缩文件的内容,但不解压
-t:检查压缩文件是否正确,但不解压显示文字命令
echo [-n] 字符串〉
在屏幕上显示字符串,-n表示不换行显示日立命令
cal [选项] [[月]年]
- j 显示出给定月中的每一天是一年中的第几天(从1月1日算起)。
- y 显示出整年的日历。
-1 显示当月的日历
-3显示前一月,本月,下月的日历
-s以星期天作为一周的第一天
-m以星期一作为一周的第一天如cal 5 2006
显示2006年5月份的日历
日期时间命令
date [选项] [+FormatString] 显示日期时间
date setstring 设置日期时间
它的选项比较多,一凡在此就不一一列出来了清屏命令clear软件包管理
RPM全称是 Red Hat Package Manager(Red Hat包管理器)。几乎所有的 Linux 发行版本都使用这种形式的软件包管理安装、更新和卸载软件。
01、安装
rpm -i ( or --install) options file1.rpm ... fileN.rpm
-h (or --hash) 安装时输出hash记号 (``#'')
--test 只对安装进行测试,并不实际安装。
--percent 以百分比的形式输出安装的进度。
--excludedocs 不安装软件包中的文档文件
--includedocs 安装文档
--replacepkgs 强制重新安装已经安装的软件包
--replacefiles 替换属于其它软件包的文件
--force 忽略软件包及文件的冲突
--noscripts 不运行预安装和后安装脚本
--prefix 将软件包安装到由 指定的路径下
--ignorearch 不校验软件包的结构
--ignoreos 不检查软件包运行的操作系统
--nodeps 不检查依赖性关系
--ftpproxy 用 作为 FTP代理
--ftpport 指定FTP的端口号为
通用选项
-v 显示附加信息
-vv 显示调试信息
--root 让RPM将指定的路径做为"根目录",这样预安装程序和后安装程序都会安装到这个目录下
--rcfile 设置rpmrc文件为
--dbpath 设置RPM 资料库存所在的路径为02、删除
命令格式:
rpm -e ( or --erase) options pkg1 ... pkgN
参数
pkg1 ... pkgN :要删除的软件包
详细选项
--test 只执行删除的测试
--noscripts 不运行预安装和后安装脚本程序
--nodeps 不检查依赖性
03、升级
命令格式
rpm -U ( or --upgrade) options file1.rpm ... fileN.rpm
参数
file1.rpm ... fileN.rpm 软件包的名字
详细选项
-h (or --hash) 安装时输出hash记号 (``#'')
--oldpackage 允许"升级"到一个老版本
--test 只进行升级测试
--excludedocs 不安装软件包中的文档文件
--includedocs 安装文档
--replacepkgs 强制重新安装已经安装的软件包
--replacefiles 替换属于其它软件包的文件
--force 忽略软件包及文件的冲突
--percent 以百分比的形式输出安装的进度。
--noscripts 不运行预安装和后安装脚本
--prefix 将软件包安装到由 指定的路径下
--ignorearch 不校验软件包的结构
--ignoreos 不检查软件包运行的操作系统
--nodeps 不检查依赖性关系
--ftpproxy 用 作为 FTP代理
--ftpport 指定FTP的端口号为04、查询
命令格式:
rpm -q ( or --query) options
参数:
pkg1 ... pkgN :查询已安装的软件包
详细选项
-p (or ``-'') 查询软件包的文件
-f 查询属于哪个软件包
-a 查询所有安装的软件包
--whatprovides 查询提供了 功能的软件包
-g 查询属于 组的软件包
--whatrequires 查询所有需要 功能的软件包
信息选项
示软件包的全部标识
-i 显示软件包的概要信息
-l 显示软件包中的文件列表
-c 显示配置文件列表
-d 显示文档文件列表
-s 显示软件包中文件列表并显示每个文件的状态
--scripts 显示安装、卸载、校验脚本
--queryformat (or --qf) 以用户指定的方式显示查询信息
--dump 显示每个文件的所有已校验信息
--provides 显示软件包提供的功能
--requires (or -R) 显示软件包所需的功能
05、校验已安装的软件包
命令格式:
rpm -V ( or --verify, or -y) options
参数
pkg1 ... pkgN 将要校验的软件包名
软件包选项
-p Verify against package file
-f 校验所属的软件包
-a Verify 校验所有的软件包
-g 校验所有属于组 的软件包
详细选项
--noscripts 不运行校验脚本
--nodeps 不校验依赖性
--nofiles 不校验文件属性
06、校验软件包中的文件
语法:
rpm -K ( or --checksig) options file1.rpm ... fileN.rpm
参数:
file1.rpm ... fileN.rpm 软件包的文件名连接帮助命令
man command
info command 该功能比man强大,但目前只在Linux中有,其他的UNIX中没有该命令
help command
tail -n 20 filename
说明:显示filename最后20行。
Linux下tail命令的使用方法。
linux tail命令用途是依照要求将指定的文件的最后部分输出到标准设备,通常是终端,通俗讲来,就是把某个档案文件的最后几行显示到终端上,假设该档案有更新,tail会自己主动刷新,确保你看到最新的档案内容。
一、tail命令语法
tail [ -f ] [ -c Number | -n Number | -m Number | -b Number | -k Number ] [ File ]
参数解释:
-f 该参数用于监视File文件增长。
-c Number 从 Number 字节位置读取指定文件
-n Number 从 Number 行位置读取指定文件。
-m Number 从 Number 多字节字符位置读取指定文件,比方你的文件假设包括中文字,假设指定-c参数,可能导致截断,但使用-m则会避免该问题。
-b Number 从 Number 表示的512字节块位置读取指定文件。
-k Number 从 Number 表示的1KB块位置读取指定文件。
File 指定操作的目标文件名称
上述命令中,都涉及到number,假设不指定,默认显示10行。Number前面可使用正负号,表示该偏移从顶部还是从尾部开始计算。
tail可运行文件一般在/usr/bin/以下。
二、tail命令使用方法演示例子
1、tail -f filename
说明:监视filename文件的尾部内容(默认10行,相当于增加参数 -n 10),刷新显示在屏幕上。退出,按下CTRL+C。
2、tail -n 20 filename
说明:显示filename最后20行。
3、tail -n +20 filename
说明:显示filename前面20行。
4、tail -r -n 10 filename
说明:逆序显示filename最后10行。
补充:
跟tail功能相似的命令还有:
cat 从第一行开始显示档案内容。
tac 从最后一行开始显示档案内容。
more 分页显示档案内容。
less 与 more 相似,但支持向前翻页
head 仅仅显示前面几行
tail 仅仅显示后面几行
n 带行号显示档案内容
od 以二进制方式显示档案内容