linux常用命令笔记
常用 | |
ifconfig | 查看网卡命令 |
shutdown -h now 或者 halt | 立刻关机 |
shutdown -r now 或者 reboot | 立刻重新启动计算机 |
logout | 注销 |
exit | 注销当前用户 |
Kill | |
kill -9 1345 | kill 参数 进程号 杀死单个进程,通常配合ps -ef查询到的指定进程号使用,-9:强制 |
killall -9 httpd |
killall 参数 进程名 杀死httpd的所有进程 |
pkill -9 httpd |
pkill 参数 进程名 和killall一样,杀死httpd的所有进程 |
上传下载和安装 | |
rpm -ivp apache.rpm | rpm可以安装软件,但是后缀必须是rpm的 |
yum -y install lrzsz | yum后可以使用sz和rz命令(yum是傻瓜式安装) |
sz 文件名 | 下载文件 |
rz | 上传 |
vi命令 | |
:q | 退出vi |
:q! 不保存退出 | 强制退出 |
:wq 或者 :x | 保存退出 |
:w | 保存 |
:wq! | 强制保存退出 |
vi中的光标定位 | |
M | 移动光标到页面中央 |
L | 移动光标到页面尾处 |
H | 移动光标到页面开始处 |
Ctrl+f 或者 pgon | 向后翻页 (个人习惯键盘的pgon) |
Ctrl+b 或者 pgup | 向前翻页 (个人习惯键盘的pgup) |
0 | 移动光标到行首 |
$ | 移动光标到行尾 |
/: | 从上往下开始查找,然后按n寻找下一个 |
?: | 从下往上开始查找,然后按n寻找下一个 |
/xxx | 从上往下开始查找 |
?xxx | 从下往上开始查找 |
u | 撤销 |
. | 重复前一个动作 |
shift + g | 到文件末尾 |
gg | 到文件头部 |
dd | 删除整行 |
yy | 复制行 |
p | 黏贴 |
shift + 6 / home | 到行头部 |
shift + 4 / end | 到行尾部 |
set nu 或者 set number | 显示行号 |
ls 或者 dir | 查看当前目录下文件 |
-a | 查看目录下的所有文件(包括隐藏文件) |
-C | 多列显示输出结果。这是默认选项 |
-i | 显示目录或文件的inode索引号 |
-h | 在ls –l的输出中,把文件大小的显示改变为用KB表示(默认为字节) |
-1 | 与“C”选项功能相反,所有输出信息用单列格式输出,不输出为多列 |
-d | 仅显示目录名,而不显示目录下的内容列表 |
-l |
以长格式显示目录下的内容列表。输出的信息从左到右依次包括文件名,文件类型、权限模式、硬连接数、所有者、组、文件大小和文件的最后修改时间等 通常可以写成' ll ' |
-R | 递归处理,将指定目录下的所有文件及子目录一并处理 |
javac helloworld.java | 编译 |
java helloworld.java | 运行 |
sh a ./a | 运行 |
pwd | 当前在哪个目录下 |
cat file | 只查看文件内容,不能修改 |
-n | -n 显示文件行号 |
-b | -b 显示不为空行的行号 |
-s | -s 去除多余空行 |
-A | -A 显示文件所有内容,包括换行符($)等 |
cat >>/usr/local/tomcat.txt << EOF | cat追加文字到文件,保留当前格式,当敲完该命令会进入持续输入模式,再输入EOF结束操作并保持 |
rm | c |
-f | 过滤不存在的文件,并忽略删除提示 |
-r | 递归 |
-i | 添加提示 |
-v | 显示信息 |
ls | grep -v xxx.log | xargs -i rm -rf {} | 在当前目录下除了xxx.log外全部删除 |
cp 被复制的文件 黏贴的文件 | cp(选项) (参数) |
-a | 此参数的效果和同时指定“-dpR”参数相同; |
-d | 当复制符号连接时,把目标文件或目录也建立为符号连接,并指向与源文件或目录连接的原始文件或目录; |
-f | 强行复制文件或目录,不论目标文件或目录是否已存在 |
-i | 覆盖既有文件之前先询问用户,默认下因别名,cp=cp -i |
-p | 保留源文件或目录的属性 |
-R/-r | 递归处理,将指定目录下的所有文件及子目录一并处理 |
-v | 详细显示命令执行的操作 |
cp a.txt b.txt c.txt /usr/local/ | 复制多个文件 |
cp [a-c].txt /usr/local/ | 简易化复制 |
scp 命令 | 只针对linux之间数据传递,其基于ssh连接 |
|
|
实例: scp a.txt rainbol@192.168.1.1:/usr/local | 将本机的a.txt文件拷贝到其他linux服务器的/usr/local路径下,当然不指定用户名,需要之后输入用户名和密码 |
useradd aaa | 添加用户 |
passwd aaa | 为用户aaa设置密码 |
userdel aaa | 删除用户 -r参数表示删除家目录下该用户文件 |
usermod -g group_name user_name | 修改或者添加用户所在组 |
usermod -a -G group_name user_name | 追加用户所在组,原组不变 |
su - user | 切换用户,-表示重新加载用户的环境变量 su user表示切换用户,不加载用户的环境变量 |
who | 查看当前已登录用户 |
whoami | 查看当前用户 |
grep | 查看文件内容 |
grep "helloworld" aaa.txt | 查看文件中的关键字 |
grep -v "helloworld" aaa.txt | 排除这个 |
grep -n 22567 error_log httpd.pid | -n 搜索的内容在第几行 |
ps -ef|grep tomcat|grep -v grep|awk '{print $2}'|xargs kill -9 | 删除tomcat所有进程,注意这里awk的引号必须单引号 |
xargs | 可以理解为一个一个传递 |
uniq | 去重 |
cat b.txt |sort|uniq -c | 查看b.txt|sort 排序|去重 重复的有多少数量 |
cat access.log |awk '{print $1}'|sort|uniq -c | uniq的应用场景 |
wc | 计数 |
cat b.txt |uniq|wc | wc的应用场景 |
查看系统信息 | |
cat /etc/redhat-release | 查看内核版本 |
cat /proc/version | 查看正在运行内核版本 |
cat /etc/issue | 查看发型版本 |
uname -a | 显示系统信息 |
cat /proc/cpuinfo | 查看cpu信息 |
cat /proc/meminfo | 查看内存信息 |
解压,打包 | |
tar -xzvf a.tar | tar解压(差不多这个就通用了) |
tar czvf a.tgz b | 把b这个文件夹压缩并打包成为a.tgz |
zip |
|
unzip a.zip 或者 ungzip a.gz | zip解压 |
|
打zip包 |
环境变量 | |
env | 查看环境变量 |
vi /etc/profile | 配置系统环境变量 |
source /etc/profile | 启动环境变量 |
path = $PATH:/usr/new/a.txt | 如果有多个值用:linux中环境变量用分号间隔,如果新定义PATH记得增加$PATH导入系统的环境变量,不然会被覆盖导致系统环境变量不能使用 |
vi ~/.bashrc 或者 vi ~/.bash_profile | 配置用户环境变量 |
防火墙 | |
service iptables start | 打开防火墙 |
service iptables stop | 关闭防火墙 |
systemctl stop firewalld | 关闭防火墙 |
systemctl start firewalld | 打开防火墙 |
systemctl启动/禁止/自启动 | |
systemctl is-enabled xxx.service | 查看服务是否开机启动 |
systemctl list-unit-files|grep enabled | 查看已启动的服务列表 |
systemctl --failed | 查看启动失败的服务列表 |
systemctl disable xxx.service | 在开机时禁用服务 |
systemctl enable xxx.service | 在开机时启用服务 |
systemctl status xxx.service | 显示服务的状态 |
systemctl restart xxx.service | 重启服务 |
systemctl stop xxx.service | 关闭服务 |
systemctl start xxx.service | 启动服务 |
linux时间详解 | |
hwclock --set --date="06/18/14 14:55" | 系统时间 |
date 0618141614.30 | 硬件时间 |
clock --show 或者 date | 查看系统时间 |
/sbin/hwclock | 查看硬件时间 |
hwclock --hctosys | 硬件时间同步系统时间 |
hwclcok --systohc | 系统时间同步硬件时间 |
linux查看进程: | ps,aux快照 top实时刷新 |
ps: | |
ps -ef | less 或者 ps aux | 显示所有运行进程(两者看个人喜爱) |
ps -ef|grep httpd|grep -v grep | 查看httpd进程并且把本身grep本身排除掉 |
-A | 所有进程 |
-a 或者 -e | 显示终端中包括其他用户的所有进程 |
-x | 显示无控制终端的进程 |
-u vivek | 查看用户vivek运行进程 |
-eLf | 获取线程信息 |
UID | 用户进程 |
PID | 父进程 |
PPID | 守护进程 ***每次看到ppid 不为1的这种 代表一定是有父进程的,杀掉父进程 子进程就不会启动了 |
STIME | 运行时间 |
? | 代表在哪个终端运行 如果没有终端就用?代替 |
pstree | 以树桩显示与运行进程 |
pgrep 进程名 | 查看此进程号 |
which java | 查看环境变量中的路径 |
uptime | 快速查看cpu的负载情况 |
管道符 | |
| | 可以理解为一个通道,前面命令查到的内容传递给管道符的后面的命令去操作 |
查看网络端口状况: | |
netstat -lanp | (多一点) |
netstat -tunple | (少一点) |
netstat -lanp | grep 3306 | 用grep进行过滤得到查看mysql的端口号情况 |
ss | |
ss 命令可以用来获取 socket 统计信息,它显示的内容和 netstat 类似。 |
-h, --help 帮助 -V, --version 显示版本号 -t, --tcp 显示 TCP 协议的 sockets -u, --udp 显示 UDP 协议的 sockets -x, --unix 显示 unix domain sockets,与 -f 选项相同 -n, --numeric 不解析服务的名称,如 "22" 端口不会显示成 "ssh" -l, --listening 只显示处于监听状态的端口 -p, --processes 显示监听端口的进程(Ubuntu 上需要 sudo) -a, --all 对 TCP 协议来说,既包含监听的端口,也包含建立的连接 -r, --resolve 把 IP 解释为域名,把端口号解释为协议名称 |
ss -tnl |
查看主机监听的端口 |
|
|
权限 | 给文件/文件夹修改权限 |
chmod加权限有两种方式,数字方式和文本方式 | 如 -rw-rw-r-- 第1个位置:表示d表示文件夹,-表示文件,第2-4位表示当前用户,第5-7位表示本组用户,第8-10位表示其他用户 |
r:读,数字是4 w:写,数字是2 x:执行,数字是1 | |
chmod 777 a.sh | 7 = 4+2+1就是可读可写可执行的权限,数字就是把那几位加起来 |
chmod +x a.sh | 所有用户加上执行权限 |
chmod +wrx a.sh | 加上可读可写可执行的权限,也就是777(rwx不需要按照顺序) |
三个777表示: | 第一位代表这个文件所属的用户的权限,第二位代表本组的用户的权限,第三位代表其他用户的权限 |
chmod -R a+x abc | 为文件abc及其子目录底下的所有文件的全体用户增加x权限 |
r:4 w:2 x:1 | 通过任意相加来表示对应的数字来增加权限 |
chmod u-x abc | 为abc文件的用户拥有者去除x权限 |
u | 所有者(当前用户) |
g | 同组 |
o | 其他以外的人 |
a | 所有 |
+ | 增加权限 |
- | 去掉权限 |
-R | 递归,目录下所有文件赋予权限 |
chown | |
find命令详解 linux三剑客之一 | |
-or | 或者 |
find / -name "*.jpg" or -name "*.png" | |
-name | 名字查询 |
find / -name "*.jpg" | 以jpg结尾匹配查询 |
find / ! -name "*.jpg" | 除了这个以外的所有文件 |
find / -name *tomcat* | 模糊查找文件 |
find / -name tomcat | 直接查找 |
find / |grep tomcat | 全局搜索 |
-type | |
find / -type d | 搜索所有其子目录路径 |
f | 文件 |
c | 字符设备 |
b | 块设备 |
s | 嵌套字 |
l | 链接 |
find /usr/local/tomcat1 -maxdepth 2 -type f | 按最大层数查找 |
- mindepth +层数 -type d | 按最小层数查找 |
-size | 按文件大小查找 |
find / -type f -size -100k | 查找小于100k的文件 |
-size +100k | 大于100k |
-size 100k | 等于100k |
-size 100M | 等于100M兆 注意是大写M |
find /usr/local/tomcat/ -type f -size -100k -size +90k| xargs ls -l | 查询之间大小范围并且查看 |
-perm | 文件权限指数 |
find /usr/local/tomcat1/apache-tomcat-7.0.82/ -type f -perm 777 | 查询权限 |
-exec | 对匹配的文件执行该参数所给出的shell命令 |
find . -type f -exec ls -l {} \; | |
find test/ -name "*.log" -exec cp {} test5/ \; | 部分指定文件的迁移 {}后面放指定路径 |
find . -type f -exec ls -l {} \; | find 命令匹配到了当前目录下的所有普通文件,并在 -exec 选项中使用 ls -l 命令将它们列出(后面是固定格式) |
-mtime | |
find /usr -mtime +10 | 表示修改时间大于10天的文件 |
-mtime 1 | 表示文件修改时间距离当天为1天的文件 (24小时-48小时之间) |
-mtime 0 | 表示文件修改时间距离当天为一天不到的文件(24小时以内) |
-mtime -1 | 和-mtime 0一样 |
sed命令详解 linux三剑客之一 | sed是只打印命令,不能修改文件,除非重定向>> |
sed 'p' 文件名 | 打印文件所有(sed命令自带打印,所有输出两行) |
sed -n 'p' | -n忽略默认输出 |
nl 文件名 | nl命令打印行号 |
nl -ba 文件名 | 把空白行的行号也写进文件中 |
sed -n '/sad/p' 文件名 | '/字符串/p'正则表达式,打印字符串的那一行 |
sed -n '1,10p' 文件名 | 打印第一行到第十行 |
sed -n '1,10!p' 文件名 | !表示第一行和第十行都不要,其他打印 |
sed -n '4~3p' | 4表示从第四行开始,波浪线表示叠加,3表示空三行 整体意思是从第四行开始每隔3个打印一次 |
sed '2a----' 文件名 | 第二行后插入---- |
sed '2i----' 文件名 | 第二行前插入---- |
sed '1,3a---' 文件名 | 在第一行到第三行后面都添加--- |
sed '5c----' 文件名 | 把第五行变成---- |
sed '2,5c----' 文件名 | 把2到5行不包括第5行变成'----' |
sed '2d' 文件名 | 把第二行去除 |
sed '2,5' 文件名 | 把2到5行去除 |
sed '$a xxxxxxxxxxx' 文件名 | $代表最后一行a代表增加xxxxxxxxxxx |
sed '$a \ xxxxxxxx' 文件名 | 命令和字符串中间可以有无限空格用\可以表示真实的空格 |
sed -n '$a xxxx' 文件名 >> 另一个文件名 | >>重定向(用追加的方式)这个内容(注意-n可以忽略默认输出) |
sed -i '$a xxxx' 文件名 | -i可以直接修改文件 |
sed -i.bak '$a xxxx' 文件名 | -i.bak可以在修改文件之前保存之前的文件防止修改错误,在当前目录下出现了.bak文件 |
sed '/^$d/' 文件名 | ^表示开头$表示结尾//正则d删除 意思是所有空白行都删除 |
sed 's/old/new/' 文件名 | 替换 |
sed '1s#123#456#' 文件名 | 行替换, 把第一行的123替换为456,看到这次我使用了#号,这个是个人习惯,想用什么特殊字符定义都可以,不一样使用'/',保持一致就行了 |
sed '1s#$#123#' 文件名 |
行替换 加入$为在第一行行尾插入123 如果是行首那么添加^ |
sed '5,$s#^#abc#' |
行替换 从5行到最后一行的行首插入abc |
sed 's/old/new/g' 文件名 | g全局(全部改) |
sed反向引用 | |
例: |
抓取ip地址 |
ifconfig eth0 |sed -n '2p' | sed -r 's#(.*)inet (.*)netmask(.*)#\2#p' | sed -n '1p' | -r参数表示使用正则扩展 \2表示取(.*)中的第几组数据 |
awk详解(处理文本) linux三剑客之一 | -F 字段的分隔符,默认为空格(不写为空格), |
awk -F ':' '{print $3}' 文件名 | ':'按冒号区分 '{print $3}'打印第三列 (用冒号区分,打印第三列文本内容)可用"and' |
awk -F ':' '{print $1,$3}' 文件名 | 同理以冒号为区分,打印第一列和第三列(中间自动空格) |
awk -F ':' '{print $1"/t"$3}' 文件名 | "/t"拼接字符串 |
awk -F ':' '{printf("User:%s UID:$s",$1,$3)}' 文件名 | user和uid可以为任意字符(意义就是显示好看)后面$1对应第一个%s,%3对应第二个%s |
awk -F ':' '{print "User:"$1"\tUID:"$3}' 文件名 | print直接后面拼接也可以 |
awk '{OFS="|"}{print $1,$2}' test001.txt | 将默认值字段分割符改为| |
awk -F ':' '{print NR,NF,FILENAME}' 文件名 |
NR:每行的行号 NF:字段数量 FILENAME:正在处理的文件名 |
awk -F ":" '{if ($3>100) print $1,$3}' 文件名 |
显示uid大于100的用户名 |
awk -F ":" '{print substr($4,2)}' 文件名 | substr函数意思截断字符串,截断(到)第四列中的第一个字符 比如a|bc bc保留a截断 |
awk '/asdads/{print substr($4,2)}' 文件名 |
awk在{}外引号里也可以用正则表达式
|
awk的逻辑判断式 | |
awk -F ':' '$1~/^m.*/{print $1}' 文件名 | $1~ 表示第一个字符匹配的 //正则表达式 前面正则意思是 (没有以m开头的字符) |
awk -F ':' '$1>100{print $1}' 文件名 | 如果$1这一列(肯定是数字)大于100的 输出 |
awk扩展(制表显示) | |
awk -F ':' 'BEGIN{print "USERS LINE COL"}{print $1,$2,$5}END{print "---"FILENAME"----"}' 文件名 | |
打印出来一下: | |
USERS LINE COL 1 213 2 23 23 2 213 23 2 213 23 3 213 1 1 213 2 4 |
|
---FILENAME---- | |
ls -l | -l查看文件大小 -a显示隐藏文件 |
ls -al | awk 'BEGIN{count=0}{count+=$5}END{print count}' | 显示打印列表的总累加文件大小 |
磁盘分区 | |
sfdisk -l | 显示每个设备的分区表信息 |
df | 查看挂载磁盘空间大小 |
df -h | 显示成换算后的G、M |
du -h | 带有子目录文件 全部展现出来 |
du -sh * |sort -rn -s 文件大小的单位是k | 查看当前目录下所有文件占用的空间 -s显示总计 -h以k,M,G单位显示,增加可读性 |
如果哪个文件大,继续cd、 df-sh * 进一步查看 | |
fdisk -l | 查看硬盘状态 |
定时任务cron | |
yum install vixie-cron 或者 yum install crontabs | 用yum安装定时任务命令 |
service crond start | 开启服务 |
service crond stop | 关闭服务 |
service crond restart | 重启服务 |
service crond reload | 重新载入配置 |
service crond status | 查看cronttab服务状态 |
chkconfig crond on | 设置crond服务开机自动启动服务 |
chkconfig crond off | 设置crond服务开机自动关闭服务 |
chkconfig --list crond | 查看crond的运行状况 |
chkconfig 或者 chkconfig --list | 查看所有服务状态 |
crontab | |
-u: | 只有root才能进行这个任务,也即帮其他用户新建/删除crontab工作调度; |
-e: | 编辑crontab 的工作内容; |
-l: | 查阅crontab的工作内容; |
-r: | 删除所有的crontab的工作内容,若仅要删除一项,请用-e去编辑。 |
特殊字符意义 | |
*(星号) | 代表任何时刻都接受的意思。举例来说,范例一内那个日、月、周都是*,就代表着不论何月、何日的礼拜几的12:00都执行后续命令的意思 |
,(逗号) | 代表分隔时段的意思。举例来说,如果要执行的工作是3:00与6:00时,就会是: 0 3,6 * * * command 时间还是有五列,不过第二列是 3,6 ,代表3与6都适用 |
-(减号) | 代表一段时间范围内,举例来说,8点到12点之间的每小时的20分都进行一项工作 |
20 8-12 * * * command | 仔细看到第二列变成8-12.代表 8,9,10,11,12 都适用的意思 |
/n(斜线) | 那个n代表数字,即是每隔n单位间隔的意思,例如每五分钟进行一次,则: */5 * * * * command 用*与/5来搭配,也可以写成0-59/5,意思相同 |
注释: | 可以查看ps -ef |grep cron |
run-parts /etc/cron.daily | [ 注:run-parts参数表示,执行后面目录中的所有可执行文件。 ] |
实战: | |
/etc/cron.d/ | 这个目录用来存放任何要执行的crontab文件或脚本 |
第一步:写cron脚本文件,命名为crontest.cron | |
15,30,45,59 * * * * echo "xgmtest....." >> xgmtest.txt | 表示,每隔15分钟,执行打印一次命令 |
第二步:添加定时任务。执行命令 “crontab crontest.cron” | |
第三步:"crontab -l" | 查看定时任务是否成功或者检测/var/spool/cron下是否生成对应cron脚本 |
第四步 service crond start | 启动成功 |
每个域之间使用空格或者制表符 | |
合法值 00-59 00-23 01-31 01-12 0-7 (0 or 7 is sunday) minute hour day-of-month month-of-year day-of-week commands |
|
案例 | |
06 * * * * root run-parts /opt/lampp/logs/access_log | 每6个小时执行此文件 |
02 4 * * * root run-parts /etc/cron.daily | 每天执行脚本 |
清空文件 | |
:> 文件名 或者 > 文件名 或者 echo"">文件名 或者 echo > 文件名 或者 cat /dev/null >文件名 或者 truncate -s 0文件 | |
反引号`` | |
反引号``是命令替换 | 命令替换是指Shell可以先执行``中的命令,将输出结果暂时保存,在适当的地方输出。语法:`command` 就是``里面有linux命令的结果表达出来 |
sed -i 's/aaa/AAA' `grep AAA -rl` | 意思是``出来的linux结果保存下来,作为前面输出下来找一遍 |
排序 | |
head -n 5 | 显示第一行到五行的数据 |
-c | 指定显示头部内容的字符数 head -c 88 a.txt |
-v | 总是显示文件名的头信息,显示多个文件时默认选项 |
-q | 不显示文件名的头信息,显示单个文件时默认选项 |
head a.txt b.txt | 显示这两个文件的头部内容 |
sort | 降序 -r 升序 |
软连接 | |
ln -s /opt/lampp/bin/ ~/lbin | 软链接到用户根目录,可以通过那样就可以通过~/来执行 |
~/lbin/mysql -uroot -p | (lbin为自己起的名字 ) |
linux终端命令快捷键 | |
history | 查看历史命令,linux会存到~/.bash_history文件中 |
history 10 | 打印最近10条历史命令 |
-c | 清空当前历史命令 |
-d | 清除指定行号的历史输入命令 |
-a | 将历史命令缓冲区中的命令写入历史命令文件中 |
-r | 将历史命令文件中的命令读入当前历史命令缓冲区 |
-w | 将当前历史命令缓冲区命令写入历史命令文件中 |
!10 | 执行历史序号为10的命令 |
!! | 执行上一条命令 |
!num | 执行历史命令num为数字 |
!! | 执行上一条命令 |
ctrl+r | 历史搜索 |
↑(Ctrl+p) | 显示上一条命令 |
↓(Ctrl+n) | 显示下一条命令 |
→(ctrl+f) | 光标右移 |
←(ctrl+b) | 光标左移 |
ctrl+j或者m | 执行命令 |
ctrl+l 或者 clear | 清屏 |
ctrl+k | 删除选中光标和之后的所有 |
ctrl+h | 删除光标前面的字符 |
ctrl+d | 删除光标选中的字符 |
ctrl+n | 删除整行 |
ctrl+a | 移动到当前行开头 |
ctrl+e | 移动到当前行结尾 |
ctrl+t | 当前光标所在位置,与前面一个字符位置对调 |
linux后台运行命令 | |
nohup | |
如:nohup python helloworld.py | 不挂起:如果我们链接服务器使用ssh起一个进程,当我们关闭ssh,系统将所有相关进程杀掉,再次打开执行中的任务就取消了,原因是网络断开或终端窗口关闭后,也就是SSH断开以后,控制进程收到SIGHUP信号退出,会导致该会话期内其他进程退出.所以使nohup就能解决问题 |
& | |
如:python hellpworld.py & | 意思是运行程序直接后台运行 |
nohup python helloworld.py & | 两者结合,不挂起加后台运行比较实用 |
alias(类似于js中的var存变量) | 注意这里介绍的alias都是生成临时变量,如果想要永久生效需要设置在bash_profile或者profile中 |
alias -p | 显示所有别名 |
alias aaa='vi /etc/profile' | 设置完之后输入aaa就可以进入修改环境变量 |
unalias aaa | 删除aaa |
type aaa | 显示aaa变量的类型 |
curl [option] [url]
-I/--head 只显示传输文档,经常用于测试连接本身
-o/--output 把输出写到该文件中,必须输入保存文件名
-O/--remote-name 把输出写到该文件中,保留远程文件的文件名
-F/--form 模拟表单提交
-s/--silent 静默模式,不输出任何东西
-S/--show-error 显示错误,在选项 -s 中,当 curl 出现错误时将显示
-L/--location 跟踪重定向
-f/--fail 不输出错误
-n/--netrc 从netrc文件中读取用户名和密码
--netrc-optional 使用 .netrc 或者 URL来覆盖
-n --ntlm 使用 HTTP NTLM 身份验证
-N/--no-buffer 禁用缓冲输出
-p/--proxytunnel 使用HTTP代理
--proxy-anyauth 选择任一代理身份验证方法
--proxy-basic 在代理上使用基本身份验证
--proxy-digest 在代理上使用数字身份验证
--proxy-ntlm 在代理上使用ntlm身份验证
-P/--ftp-port 使用端口地址,而不是使用PASV
-M/--manual 显示全手动
-Q/--quote 文件传输前,发送命令到服务器
-r/--range 检索来自HTTP/1.1或FTP服务器字节范围
--range-file 读取(SSL)的随机文件
-R/--remote-time 在本地生成文件时,保留远程文件时间
--retry 传输出现问题时,重试的次数
--retry-delay 传输出现问题时,设置重试间隔时间
--retry-max-time 传输出现问题时,设置最大重试时间
--socks4 用socks4代理给定主机和端口
--socks5 用socks5代理给定主机和端口
-t/--telnet-option Telnet选项设置
--trace 对指定文件进行debug
--trace-ascii Like 跟踪但没有hex输出
--trace-time 跟踪/ 详细输出时,添加时间戳
-T/--upload-file 上传文件
-u/--user 设置服务器的用户和密码
-U/--proxy-user 设置代理用户名和密码
-V/--version 显示版本信息
-w/--write-out [format] 什么输出完成后
-x/--proxy 在给定的端口上使用HTTP代理
-X/--request 指定什么命令 -y/--speed-time 放弃限速所要的时间。默认为30
-Y/--speed-limit 停止传输速度的限制,速度时间'秒
-z/--time-cond 传送时间设置
-0/--http1.0 使用HTTP 1.0
-1/--tlsv1 使用TLSv1(SSL)
-2/--sslv2 使用SSLv2的(SSL)
-3/--sslv3 使用的SSLv3(SSL)
--3p-quote like -Q for the source URL for 3rd party transfer
--3p-url 使用url,进行第三方传送
--3p-user 使用用户名和密码,进行第三方传送
-4/--ipv4 使用IP4
-6/--ipv6 使用IP6
-#/--progress-bar 用进度条显示当前的传送状态
|
curl常用: curl http://127.0.0.1 >a.html 将网页的信息保存在linux服务器上 curl -m 30 --retry 3 https://proxy.mimvp.com/ip.php curl 爬取网页,获取本机外网ip curl -m 30 --retry 3 -x https://xxx.xxx.xx.xx:8888 https://proxy.mimvp.com/ip.php curl 通过代理IP爬取网页,获取本机外网ip curl -c ./cookie_c.txt -F log=aaaa -F pwd=****** http://xxx.com/login.php 模拟表单信息,模拟登录,保存cookie信息 curl -D ./cookie_D.txt -F log=aaaa -F pwd=****** http://blog.mydomain.com/login.php 模拟表单信息,模拟登录,保存头信息 curl -b ./cookie_c.txt http://blog.mydomain.com/wp-admin 使用cookie文件 |
xargs
|
xargs本质就是把竖排数据变成横排数据: linux中换行一般为\n,所有的数据为了显示方便,在末尾加了\n,那一些聚集过来的数据我要进行批量处理怎么办呢,一般是管道加xargs使用,xargs会把\n去了,变成空格,然后一些rm,kill等命令本来就有群删功能,就可以批量删除了,所以会用xargs对文件批处理效果很好 |
cat url-list.txt | xargs wget -c
|
假如你有一个文件包含了很多你希望下载的 URL,你能够使用 xargs下载所有链接 |
find . -type f -name "*.jpg" -print | xargs tar -czvf images.tar.gz
|
在当前目录查找所有的 jpg 文件,并且压缩它们 |
find . -type f -name "*.log" -print0 | xargs -0 rm -f
|
用 rm 删除太多的文件时候,可能得到一个错误信息:/bin/rm Argument list too long. 用 xargs 去避免这个问题 |
ls *.jpg | xargs -n1 -I {} cp {} /data/images
|
复制所有图片文件到 /data/images 目录下 |
cd - | 回到上一次使用过的目录 |
more file_name | 分屏查看文件内容 |
head -n 10 file_name | 看前面n行 |
tail -f /usr/local/nginx/access.log | 动态查看文件 |
tail -20f /usr/local/nginx/access.log | 先打印20行数据再动态查看文件 |
mkdir | |
mkdir <file> | 在当前路径创建一个文件夹 |
mkdir -p /usr/local/a/b/c | -p 在指定目录创建文件夹,如果中间不存在会新建 |
mv | |
-f 或者 --force | 覆盖前不询问 |
-i | 覆盖前询问 |
-n | 不覆盖已存在文件 如果您指定了-i、-f、-n 中的多个,仅最后一个生效。 |
-S | 替换常用的备份文件后缀 |
-t | 将所有参数指定的源文件或目录 移动至 指定目录 |
-v | 详细步骤 |
-u | 只在源文件文件比目标文件新,或目标文件不存在时才进行移动 |
mv a.txt b.txt /www/root/ | mv 被移动的文件01 被移动的文件02 /移动到的地方 |
mv a.txt b.txt | 将a.txt文件重名成b.txt |
stat 命令 | 查看文件情况命令 |
[root@rainbol local]# stat nginx-1.6/ |
可以查看文件的改变时间等信息,通常是系统管理员使用,但是可以通过touch -t '031033' nginx-1.6/ 来修改该文件时间,管理员也看不到 |