https://www.tecmint.com/60-commands-of-linux-a-guide-from-newbies-to-system-administrator/
set -e
stops the execution of a script if a command or pipeline has an error - which is the opposite of the default shell behaviour, which is to ignore errors in scripts. Type help set in a terminal to see the documentation for this built-in command.
mkdir -p(如果父目录不存在则自动创建,不会报错)
echo
as the name suggest echoes a text on the standard output. It has nothing to do with shell, nor does shell reads the output of echo command. However in an interactive script, echo passes the message to the user through terminal. It is one of the command that is commonly used in scripting, interactive scripting.
‘#!/bin/bash‘
tells the shell that it is an script an it is always a good idea to include it at the top of script.
‘read‘ reads the given input.
cURL是一个利用URL语法在命令行下工作的文件传输工具,1997年首次发行。它支持文件上传和下载,所以是综合传输工具,但按传统,习惯称cURL为下载工具。cURL还包含了用于程序开发的libcurl。
CURL语法格式:curl [option] <URL>
- curl -L ——允许重定向。
eg:curl -L www.sina.com 会重定向到 www.sina.com.cn - curl -o filename <URL>——下载文件写入到文件中。
eg:curl -o index.html www.example.com/index.html
yum
YUM (Yellowdog Updater Modified) is an open source command-line as well as graphical based package management tool for RPM (RedHat Package Manager) based Linux systems. It allows users and system administrator to easily install, update, remove or search software packages on a systems.
https://www.tecmint.com/20-linux-yum-yellowdog-updater-modified-commands-for-package-mangement/
yum install xxx 如果安装的软件有询问会卡在询问页,如果希望安装过程自己很清楚的可以使用此命令
yum –y install xxx 使用这个就不会老询问你要不要yes他会自动的同意,也就不需要你老确认
-v:显示rsync过程中详细信息。可以使用"-vvvv"获取更详细信息。
-P:显示文件传输的进度信息。(实际上"-P"="--partial --progress",其中的"--progress"才是显示进度信息的)。
-n --dry-run :仅测试传输,而不实际传输。常和"-vvvv"配合使用来查看rsync是如何工作的。
-a --archive :归档模式,表示递归传输并保持文件属性。等同于"-rtopgDl"。
-r --recursive:递归到目录中去。
-t --times:保持mtime属性。强烈建议任何时候都加上"-t",否则目标文件mtime会设置为系统时间,导致下次更新
:检查出mtime不同从而导致增量传输无效。
-o --owner:保持owner属性(属主)。
-g --group:保持group属性(属组)。
-p --perms:保持perms属性(权限,不包括特殊权限)。
-D :是"--device --specials"选项的组合,即也拷贝设备文件和特殊文件。
-l --links:如果文件是软链接文件,则拷贝软链接本身而非软链接所指向的对象。
-z :传输时进行压缩提高效率。
-R --relative:使用相对路径。意味着将命令行中指定的全路径而非路径最尾部的文件名发送给服务端,包括它们的属性。用法见下文示例。
--size-only :默认算法是检查文件大小和mtime不同的文件,使用此选项将只检查文件大小。
-u --update :仅在源mtime比目标已存在文件的mtime新时才拷贝。注意,该选项是接收端判断的,不会影响删除行为。
-d --dirs :以不递归的方式拷贝目录本身。默认递归时,如果源为"dir1/file1",则不会拷贝dir1目录,使用该选项将拷贝dir1但不拷贝file1。
--max-size :限制rsync传输的最大文件大小。可以使用单位后缀,还可以是一个小数值(例如:"--max-size=1.5m")
--min-size :限制rsync传输的最小文件大小。这可以用于禁止传输小文件或那些垃圾文件。
--exclude :指定排除规则来排除不需要传输的文件。
--delete :以SRC为主,对DEST进行同步。多则删之,少则补之。注意"--delete"是在接收端执行的,所以它是在
:exclude/include规则生效之后才执行的。
-b --backup :对目标上已存在的文件做一个备份,备份的文件名后默认使用"~"做后缀。
--backup-dir:指定备份文件的保存路径。不指定时默认和待备份文件保存在同一目录下。
-e :指定所要使用的远程shell程序,默认为ssh。
--port :连接daemon时使用的端口号,默认为873端口。
--password-file:daemon模式时的密码文件,可以从中读取密码实现非交互式。注意,这不是远程shell认证的密码,而是rsync模块认证的密码。
-W --whole-file:rsync将不再使用增量传输,而是全量传输。在网络带宽高于磁盘带宽时,该选项比增量传 输更高效。
--existing :要求只更新目标端已存在的文件,目标端还不存在的文件不传输。注意,使用相对路径时如果上层目录不存在也不会传输。
--ignore-existing:要求只更新目标端不存在的文件。和"--existing"结合使用有特殊功能,见下文示例。
--remove-source-files:要求删除源端已经成功传输的文件。
命令行参数 - 和 -- 的区别
https://blog.csdn.net/moudaen/article/details/9209629
rsync命令一个冒号:和两个冒号::有什么不同
There are two different ways for rsync to contact a remote system: using a remote-shell program as the transport (such as ssh
or rsh) or contacting an rsync daemon directly via TCP. The remote-shell transport is used whenever the source or destina‐
tion path contains a single colon (:) separator after a host specification. Contacting an rsync daemon directly happens when
the source or destination path contains a double colon (::) separator after a host specification, OR when an rsync:// URL is
specified (see also the "USING RSYNC-DAEMON FEATURES VIA A REMOTE-SHELL CONNECTION" section for an exception to this latter
rule).
Linux系统中grep命令是一种强大的文本搜索工具,它能使用正则表达式搜索文本,并把匹 配的行打印出来。grep全称是Global Regular Expression Print,表示全局正则表达式版本,它的使用权限是所有用户
grep [options]
-c:只输出匹配行的计数。
-I:不区分大 小写(只适用于单字符)。
-h:查询多文件时不显示文件名。
-l:查询多文件时只输出包含匹配字符的文件名。
https://www.jianshu.com/p/36b4a710f718
shell如何判断文件or目录
主要用到两个shell命令:
-f "file" : 判断file是否是文件;
-d "file" : 判断file是否是目录(文件夹)。
如
!/bin/sh
filename="/home"
if [ -d "$filename" ]; then
echo "$filename is a directory "
elif [ -f "$filename" ]; then
echo "$filename is a file"
fi
echo -n 不换行输出
echo -e 处理特殊字符若字符串中出现以下字符,则特别加以处理,而不会将它当成一般文字输出。比如换行符\n, 则可以实现换行输出
/dev/null 2>&1
这条命令的意思就是在后台执行这个程序,并将错误输出2重定向到标准输出1,然后将标准输出1全部放到/dev/null文件,也就是清空.
所以可以看出" >/dev/null 2>&1 "常用来避免shell命令或者程序等运行中有内容输出。
https://www.jianshu.com/p/9684090d36a3
echo $!打印上一个后台进程的PID
ps -ef
ps -ef 是用标准的格式显示进程的、其格式如下
awk
awk工作流程是这样的:读入有’n’换行符分割的一条记录,然后将记录按指定的域分隔符划分域,填充域,1表示第一个域,1表示登录用户,$3表示登录用户ip,以此类推。
入门实例假设last -n 5的输出如下# last -n 5 仅取出前五行rootpts/1192.168.1.100TueFeb1011:21still loggedinrootpts/1192.168.1.100TueFeb1000:46-02:28(01:41)rootpts/1192.168.1.100MonFeb911:41-18:30(06:48)dmtsaipts/1192.168.1.100MonFeb911:41-11:41(00:00)root tty1 FriSep514:09-14:10(00:01)如果只是显示最近登录的5个帐号#last -n 5 | awk '{print $1}'rootrootrootdmtsairoot
链接:https://www.jianshu.com/p/57971d3c8856
ls -l | wc -l
用wc命令来统计当前目录下的文件数
Linux系统中的wc(Word Count)命令的功能为统计指定文件中的字节数、字数、行数,并将统计结果显示输出。命令功能是统计指定文件中的字节数、字数、行数,并将统计结果显示输出。
-c 统计字节数。
-l 统计行数。
-m 统计字符数。这个标志不能与 -c 标志一起使用。
-w 统计字数。一个字被定义为由空白、跳格或换行字符分隔的字符串。
gt是大于的意思。 -eq是等于的意思。 -ne是不等于的意思。 -ge是大于等于的意思。 -lt是小于的意思。 -le是小于等于的意思
.文件前 表示隐藏
查看一个文件每一行最后更改的详情(版本、作业)
svn blame filename
查看一个文件所有更改历史详情
svn log --diff filename
关闭防火墙
https://www.linuxidc.com/Linux/2016-12/138979.htm
'
root
sudo su
Mac mount nfs失败 增加 -o resvport
sudo mount -t nfs -o resvport,rw centos:/home /rhome
sudo find / -name tomcat
SVN
生成diff文件:
svn diff > xxx.diff
生成 patch:
svn diff > aaa.patch
应用 patch:
patch –p0 < ../aaa.patch
删除该 patch
patch –p0 -R < ../aaa.patch
重复patch相关
https://www.crifan.com/patch_error_reversed_or_previously_applied_patch_detected_assume_r_n/
svn回滚
svn revert FILE // 单个文件回滚
svn revert DIR --depth=infinity // 整个目录进行递归回滚
svn revert . --depth=infinity // 当前目录进行递归回滚
SCP
scp -r /home/space/a/ root@www.runoob.com:/home/root/b/
从a复制到b
VI中的多行删除与复制
法一:
单行删除,:1(待删除行)d
多行删除 ,:1,10d
法二:
光标所在行,dd
光标所在行以下的N行,Ndd
tail 命令从指定点开始将文件写到标准输出·
tail -n 5 log2014.log
-f 循环读取
-q 不显示处理信息
-v 显示详细的处理信息
-c<数目> 显示的字节数
-n<行数> 显示行数
SSH免密码登录
https://blog.csdn.net/furzoom/article/details/79139570
假设要登录的机器为192.168.1.100,当前登录的机器为192.168.1.101。
首先在101的机器上生成密钥(如果已经生成可以跳过):
$ ssh-keygen -t rsa
一路回车即可。
然后在将生成的公钥复制到机器100上的~/.ssh/authorized_keys中,使用如下命令:
$ ssh-copy-id -i ~/.ssh/id_rsa.pub root@192.168.1.100
root为需要登录到机器100上的身份,需要替换成需要的用户名。
最后,测试免密码登录:
$ ssh root@192.168.1.100
shift+pgup或pgdown=终端上下翻页滚动
vi编辑
http://www.cnblogs.com/baichuanhuihai/p/7928404.html
Linux下批量Kill多个进程
ps -ef|grep httpd|grep -v grep|cut -c 9-15|xargs kill -9
管道符“|”用来隔开两个命令,管道符左边命令的输出会作为管道符右边命令的输入。下面说说用管道符联接起来的
几个命令:
“ps - ef”是linux 里查看所有进程的命令。这时检索出的进程将作为下一条命令“grep mcfcm_st”的输入。
“grep httpd”的输出结果是,所有含有关键字“httpd”的进程,这是Oracle数据库中远程连接进程的共同特点。
“grep -v grep”是在列出的进程中去除含有关键字“grep”的进程。
“cut -c 9-15”是截取输入行的第9个字符到第15个字符,而这正好是进程号PID。
“xargs kill -9”中的xargs命令是用来把前面命令的输出结果(PID)作为“kill -9”命令的参数,并执行该令
查找固定行数日志
显示5-10行
sed -n '5,10p' access.log
执行历史命令中的特定命令
在下面的例子中,如果你想再次执行第四条命令,执行!4即可
history | more
1 service network restart
2 exit
3 id
4 cat /etc/redhat-release
!4 cat /etc/redhat-release
Fedora release 9 (Sulphur)