ls -a 列出目录所有文件,包含以.开始的隐藏文件
ls -A 列出除.及..的其它文件
ls -r 反序排列
ls -t 以文件修改时间排序
ls -S 以文件大小排序
ls -h 以易读大小显示
ls -l 除了文件名之外,还将文件的权限、所有者、文件大小等信息详细列出来
最常用的当属ls -l和ls -a了。
cd .. 当前文件的上一级目录
cd ~ 进入家目录
pwd 查看当前路径
mkdir -p /tmp/dub_dir 创建多级目录
rm -f file.txt 删除某文件
rm -rf dir 递归删除文件夹下的文件
慎用rm -rf *,尤其是在根目录或者家目录下,会删除所有东西,导致文件丢失,系统崩溃。
mv可以实现文件夹或者文件重命名,也可以移动文件到指定路径
mv src_dir dst_dir #修改文件夹名并移动到指定路径
cp -r src dst 递归拷贝文件夹下的文件夹以及文件到指定路径
cat > 1.txt #创建一个1.txt,然后进行编辑,编辑完后按ctrl+c键退出
cat 1.txt 2.txt > 3.txt 将两个文件合并为一个文件
cat -n 1.txt 打开1.txt并显示行号
tail -f 1.log #通常用于实时显示结尾日志
which #查看可执行文件的位置。
查找文件是否存在
find / -name '*.txt' #查找根目录下以txt结尾的文件
-c 当发生改变时,报告处理信息
-R 处理指定目录以及其子目录下所有文件
权限范围
u :目录或者文件的当前的用户
g :目录或者文件的当前的群组
o :除了目录或者文件的当前用户或群组之外的用户或者群组
a :所有的用户及群组
权限代号
r :读权限,用数字4表示
w :写权限,用数字2表示
x :执行权限,用数字1表示
- :删除权限,用数字0表示
s :特殊权限
chmod a+x t.log #增加文件 t.log 所有用户可执行权限
chmod u=r t.log -c #撤销原来所有的权限,然后使拥有者具有可读权限,并输出处理信息
chmod u+r,g+r,o+r -R text/ -c #将 test 目录及其子目录所有文件添加可读权限
-c 建立新的压缩文件
-f 指定压缩文件
-r 添加文件到已经压缩文件包中
-u 添加改了和现有的文件到压缩包中
-x 从压缩包中抽取文件
-t 显示压缩文件中的内容
-z 支持gzip压缩
-j 支持bzip2压缩
-Z 支持compress解压文件
-v 显示操作过程
tar -zcvf /tmp/etc.tar.gz /etc #将 /etc 下的所有文件及目录打包到指定目录,并使用 gz 压缩
tar -zxvf /tmp/etc.tar.gz #解压etc压缩文件
tar --exclude /home/dmtsai -zcvf myfile.tar.gz /home/* /etc #要压缩打包 /home, /etc ,但不要 /home/dmtsai
chown 将指定文件的拥有者改为指定的用户或组,用户可以是用户名或者用户 ID;组可以是组名或者组 ID;文件是以空格分开的要改变权限的文件列表,支持通配符。
-c 显示更改的部分的信息
-R 处理指定目录及子目录
chown -c mail:mail log2012.log #改变拥有者和群组 并显示改变信息
chown -c :mail t.log #改变文件群组
chown -cR mail: test/ #改变文件夹及子文件目录属主及属组为 mail
df -haT #以易读方式列出所有文件系统及其类型
-a 显示目录中所有文件大小
-k 以KB为单位显示文件大小
-m 以MB为单位显示文件大小
-g 以GB为单位显示文件大小
-h 以易读方式显示文件大小
-s 仅显示总计
-c或--total ?除了显示个别目录或文件的大小外,同时也显示所有目录或文件的总和
du -sh one --max-depth=1 #只显示one文件夹下深度为1的各文件夹及文件占用磁盘空间大小
可以减少相同文件的来回搬运复制,节省磁盘空间
ln -s src dst #dst链接地址指向src
软链接:
硬链接:
-b 删除,覆盖以前建立的链接
-s 软链接(符号链接)
-v 显示详细处理过程
xargs
是一个命令行实用程序,用于将标准输入数据转换成命令行参数。它通常与其他命令一起使用,以处理由标准输入传递的数据。
基本语法:
command | xargs [options] [command]
查找当前目录下以txt结尾的文件,并将这些文件拷贝到指定目录,对我们归纳文件和文件传输有很大帮助。
find ./ -name '*.txt'| xargs -n 1 sudo cp -t /home/min/one
grep
是一个用于在文本中搜索指定模式的命令行工具。把前一个命令原本要输出到屏幕的信息当作后一个命令的标准输入。它的基本语法如下:
grep [options] pattern [file...]
pattern
是要搜索的模式或正则表达式。file
是要在其中搜索模式的文件。-i:忽略大小写。
-r:递归搜索子目录。
-n:显示匹配行的行号。
-A n:显示匹配行以及之后的n行。
-B n:显示匹配行以及之前的n行。
-E:使用扩展正则表达式。
-o:仅显示匹配的部分。
从标准输入读取数据并搜索:
echo "some text" | grep "pattern"
awk是一种强大的文本处理工具,通常用于从文本文件中提取和处理数据。它以逐行方式扫描文件,并根据指定的模式和动作来处理每一行数据。
awk 'pattern { action }' file
pattern
定义了要匹配的条件或模式。action
定义了在匹配到模式时要执行的操作。打印文件的每一行:
awk '{ print }' file.txt
打印包含特定关键词的行:
awk '/keyword/ { print }' file.txt
计算并打印某列的总和:
awk '{ sum += $1 } END { print sum }' file.txt
使用自定义分隔符(比如逗号)进行处理:
awk -F',' '{ print $1, $2 }' file.csv
curl 是常用的命令行工具,用来请求 Web 服务器。它的名字就是客户端(client)的 URL 工具的意思。
不带有任何参数时,curl 就是发出 GET 请求
curl https://www.example.com
?-A
参数指定客户端的用户代理标头,即User-Agent
。
curl -A 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/76.0.3809.100 Safari/537.36' https://google.com
?也可以通过-H
参数直接指定标头,更改User-Agent
。
curl -H 'User-Agent: php/1.0' https://google.com
?-b
参数用来向服务器发送 Cookie。
curl -b 'foo=bar' https://google.com
?上面命令会生成一个标头Cookie: foo=bar
,向服务器发送一个名为foo
、值为bar
的 Cookie。?
?-c
参数将服务器设置的 Cookie 写入一个文件。
curl -c cookies.txt https://www.google.com
上面命令将服务器的 HTTP 回应所设置 Cookie 写入文本文件cookies.txt
。
?-d
参数可以读取本地文本文件的数据,向服务器发送。
curl -d '@data.txt' https://google.com/login
?上面命令读取data.txt
文件的内容,作为数据体向服务器发送。
?-o
参数将服务器的回应保存成文件,等同于wget
命令。
curl -o example.html https://www.example.com
?-u
参数用来设置服务器认证的用户名和密码。
curl -u 'bob:12345' https://google.com/login
?-x
参数指定 HTTP 请求的代理。
curl -x socks5://james:cats@myproxy.com:8080 https://www.example.com
?上面命令指定 HTTP 请求通过myproxy.com:8080
的 socks5 代理发出。
?-X
参数指定 HTTP 请求的方法。
curl -X POST https://www.example.com
是一个命令行程序,用于从 Web 站点下载文件。Wget 可以让您可以使用HTTP,HTTPS和 FTP 协议下载文件。
wget下载并解压与标准输出
这是非常节省时间的高级技巧,它允许你一边下载一边解压。除了解压之外还可以做你任何想做的事,只要管道右侧的命令允许从标准输入读取数据即可。
要做到边下载边解压,需要使用 wget 命令 -q 选项关闭下载状态的标准输出,然后组合使用 wget 命令?-O
?选项,指定标准输出作为文件。
在 wget 当使用连字符?-
?作为文件时,则使用标准输出作为写入的文件,最后通过管道?|
?传递给 tar 命令。
tar 将 wget 命令下载文件解压缩到指定目录。?-C
?选项指定写入的目标目录,参数?-
?选项表示从标准输入读取数据。
wget -q -O - "http://wordpress.org/latest.tar.gz" | tar -xzf - -C /var/www
拷贝本地文件。当SRC和DES路径信息都不包含有单个冒号":"分隔符时就启动这种工作模式。如:
rsync -a /data /backup
?使用一个远程shell程序(如rsh、ssh)来实现将本地机器的内容拷贝到远程机器。当DST路径地址包含单个冒号":"分隔符时启动该模式。如:
rsync -avz *.c foo:src
使用一个远程shell程序(如rsh、ssh)来实现将远程机器的内容拷贝到本地机器。当SRC地址路径包含单个冒号":"分隔符时启动该模式。如:?
rsync -avz foo:src/bar /data
从远程rsync服务器中拷贝文件到本地机。当SRC路径信息包含"::"分隔符时启动该模式。如:?
rsync -av root@192.168.78.192::www /databack
从本地机器拷贝文件到远程rsync服务器中。当DST路径信息包含"::"分隔符时启动该模式。如:
rsync -av /databack root@192.168.78.192::www
?列远程机的文件列表。这类似于rsync传输,不过只要在命令中省略掉本地机信息即可。如:
rsync -v rsync://192.168.78.192/www
?参数列表
-v, --verbose 详细模式输出。
-q, --quiet 精简输出模式。
-c, --checksum 打开校验开关,强制对文件传输进行校验。
-a, --archive 归档模式,表示以递归方式传输文件,并保持所有文件属性,等于-rlptgoD。
-r, --recursive 对子目录以递归模式处理。
-R, --relative 使用相对路径信息。
-b, --backup 创建备份,也就是对于目的已经存在有同样的文件名时,将老的文件重新命名为~filename。可以使用--suffix选项来指定不同的备份文件前缀。
--backup-dir 将备份文件(如~filename)存放在在目录下。
-suffix=SUFFIX 定义备份文件前缀。
-u, --update 仅仅进行更新,也就是跳过所有已经存在于DST,并且文件时间晚于要备份的文件,不覆盖更新的文件。
-l, --links 保留软链结。
-L, --copy-links 想对待常规文件一样处理软链结。
--copy-unsafe-links 仅仅拷贝指向SRC路径目录树以外的链结。
--safe-links 忽略指向SRC路径目录树以外的链结。
-H, --hard-links 保留硬链结。
-p, --perms 保持文件权限。
-o, --owner 保持文件属主信息。
-g, --group 保持文件属组信息。
-D, --devices 保持设备文件信息。
-t, --times 保持文件时间信息。
-S, --sparse 对稀疏文件进行特殊处理以节省DST的空间。
-n, --dry-run 显示哪些文件将被传输。
-w, --whole-file 拷贝文件,不进行增量检测。
-x, --one-file-system 不要跨越文件系统边界。
-B, --block-size=SIZE 检验算法使用的块尺寸,默认是700字节。
-e, --rsh=command 指定使用rsh、ssh方式进行数据同步。
--rsync-path=PATH 指定远程服务器上的rsync命令所在路径信息。
-C, --cvs-exclude 使用和CVS一样的方法自动忽略文件,用来排除那些不希望传输的文件。
--existing 仅仅更新那些已经存在于DST的文件,而不备份那些新创建的文件。
--delete 删除那些DST中SRC没有的文件。
--delete-excluded 同样删除接收端那些被该选项指定排除的文件。
--delete-after 传输结束以后再删除。
--ignore-errors 及时出现IO错误也进行删除。
--max-delete=NUM 最多删除NUM个文件。
--partial 保留那些因故没有完全传输的文件,以是加快随后的再次传输。
--force 强制删除目录,即使不为空。
--numeric-ids 不将数字的用户和组id匹配为用户名和组名。
--timeout=time ip超时时间,单位为秒。
-I, --ignore-times 不跳过那些有同样的时间和长度的文件。
--size-only 当决定是否要备份文件时,仅仅察看文件大小而不考虑文件时间。
--modify-window=NUM 决定文件是否时间相同时使用的时间戳窗口,默认为0。
-T --temp-dir=DIR 在DIR中创建临时文件。
--compare-dest=DIR 同样比较DIR中的文件来决定是否需要备份。
-P 等同于 --partial。
--progress 显示备份过程。
-z, --compress 对备份的文件在传输时进行压缩处理。
--exclude=PATTERN 指定排除不需要传输的文件模式。
--include=PATTERN 指定不排除而需要传输的文件模式。
--exclude-from=FILE 排除FILE中指定模式的文件。
--include-from=FILE 不排除FILE指定模式匹配的文件。
--version 打印版本信息。
--address 绑定到特定的地址。
--config=FILE 指定其他的配置文件,不使用默认的rsyncd.conf文件。
--port=PORT 指定其他的rsync服务端口。
--blocking-io 对远程shell使用阻塞IO。
-stats 给出某些文件的传输状态。
--progress 在传输时显示传输过程。
--log-format=formAT 指定日志文件格式。
--password-file=FILE 从FILE中得到密码。
--bwlimit=KBPS 限制I/O带宽,KBytes per second。
-h, --help 显示帮助信息。
列出当前系统打开文件的工具。通过lsof工具能够查看这个列表对系统监测以及排错将是很有帮助的。
用于查看你进程开打的文件,打开文件的进程,进程打开的端口(TCP、UDP)。找回/恢复删除的文件。是十分方便的系统监视工具,因为?lsof?需要访问核心内存和各种文件,所以需要root用户执行。
lsof打开的文件可以是:
1.普通文件
2.目录
3.网络文件系统的文件
4.字符或设备文件
5.(函数)共享库
6.管道,命名管道
7.符号链接
8.网络文件(例如:NFS?file、网络socket,unix域名socket)
9.还有其它类型的文件,等等
列出某个用户以及某个进程所打开的文件信息
lsof -u test -c mysql
?列出所有tcp?网络连接信息
lsof -i tcp
?列出谁在使用某个端口
lsof -i :3306
netstat命令是一个监控TCP/IP网络的非常有用的工具,它可以显示路由表、实际的网络连接以及每一个网络接口设备的状态信息。
-a或--all:显示所有连线中的Socket;
-A<网络类型>或--<网络类型>:列出该网络类型连线中的相关地址;
-c或--continuous:持续列出网络状态;
-C或--cache:显示路由器配置的快取信息;
-e或--extend:显示网络其他相关信息;
-F或--fib:显示FIB;
-g或--groups:显示多重广播功能群组组员名单;
-h或--help:在线帮助;
-i或--interfaces:显示网络界面信息表单;
-l或--listening:显示监控中的服务器的Socket;
-M或--masquerade:显示伪装的网络连线;
-n或--numeric:直接使用ip地址,而不通过域名服务器;
-N或--netlink或--symbolic:显示网络硬件外围设备的符号连接名称;
-o或--timers:显示计时器;
-p或--programs:显示正在使用Socket的程序识别码和程序名称;
-r或--route:显示Routing Table;
-s或--statistice:显示网络工作信息统计表;
-t或--tcp:显示TCP传输协议的连线状况;
-u或--udp:显示UDP传输协议的连线状况;
-v或--verbose:显示指令执行过程;
-V或--version:显示版本信息;
-w或--raw:显示RAW传输协议的连线状况;
-x或--unix:此参数的效果和指定"-A unix"参数相同;
--ip或--inet:此参数的效果和指定"-A inet"参数相同。
?常见用法
netstat -at # 列出所有TCP端口
netstat -lt # 显示监听TCP端口
netstat -antp | grep 22 #查看端口和服务
netstat -r #显示网络路由表状态信息
netstat -i #显示网卡当前状态信息
nc是netcat的简写,有着网络界的瑞士军刀美誉。因为它短小精悍、功能实用,被设计为一个简单、可靠的网络工具。比如大家很熟悉使用telnet测试tcp端口,而nc可以支持测试linux的tcp和udp端口,而且也经常被用于端口扫描,甚至把nc作为server以TCP或UDP方式侦听指定端口做简单的模拟测试。
nc的作用:
nc测试tcp和udp端口
# 测试tcp一般会想到使用telnet
telnet 192.168.12.10 22
# telnet不支持udp协议,所以我们可以使用nc,nc可以支持tcp也可以支持udp
yum install -y nc
nc -z -v 192.168.10.12 22 #tcp
nc -z -v -u 192.168.10.12 123 # udp
nc监听端口和扫描连接端口
# 监听端口
[root@localhost wangao]# nc -l 8888 -v
Ncat: Version 7.50 ( https://nmap.org/ncat )
Ncat: Listening on :::8888
Ncat: Listening on 0.0.0.0:8888
Ncat: Connection from 127.0.0.1.
Ncat: Connection from 127.0.0.1:56090.
# 连接端口
[root@localhost wangao]# nc -vz -w 5 127.0.0.1 8888
Ncat: Version 7.50 ( https://nmap.org/ncat )
Ncat: Connected to 127.0.0.1:8888.
Ncat: 0 bytes sent, 0 bytes received in 0.01 seconds.
是Linux上常用的防火墙软件,是netfilter项目的一部分。可以直接配置,也可以通过许多前端和图形界面配置。
-t, --table table 对指定的表 table 进行操作, table 必须是 raw, nat,filter,mangle 中的一个。如果不指定此选项,默认的是 filter 表。
# 通用匹配:源地址目标地址的匹配
-p:指定要匹配的数据包协议类型;
-s, --source [!] address[/mask] :把指定的一个/一组地址作为源地址,按此规则进行过滤。当后面没有 mask 时,address 是一个地址,比如:192.168.1.1;当 mask 指定时,可以表示一组范围内的地址,比如:192.168.1.0/255.255.255.0。
-d, --destination [!] address[/mask] :地址格式同上,但这里是指定地址为目的地址,按此进行过滤。
-i, --in-interface [!] <网络接口name> :指定数据包的来自来自网络接口,比如最常见的 eth0 。注意:它只对 INPUT,FORWARD,PREROUTING 这三个链起作用。如果没有指定此选项, 说明可以来自任何一个网络接口。同前面类似,"!" 表示取反。
-o, --out-interface [!] <网络接口name> :指定数据包出去的网络接口。只对 OUTPUT,FORWARD,POSTROUTING 三个链起作用。
# 查看管理命令
-L, --list [chain] 列出链 chain 上面的所有规则,如果没有指定链,列出表上所有链的所有规则。
# 规则管理命令
-A, --append chain rule-specification 在指定链 chain 的末尾插入指定的规则,也就是说,这条规则会被放到最后,最后才会被执行。规则是由后面的匹配来指定。
-I, --insert chain [rulenum] rule-specification 在链 chain 中的指定位置插入一条或多条规则。如果指定的规则号是1,则在链的头部插入。这也是默认的情况,如果没有指定规则号。
-D, --delete chain rule-specification -D, --delete chain rulenum 在指定的链 chain 中删除一个或多个指定规则。
-R num:Replays替换/修改第几条规则
# 链管理命令(这都是立即生效的)
-P, --policy chain target :为指定的链 chain 设置策略 target。注意,只有内置的链才允许有策略,用户自定义的是不允许的。
-F, --flush [chain] 清空指定链 chain 上面的所有规则。如果没有指定链,清空该表上所有链的所有规则。
-N, --new-chain chain 用指定的名字创建一个新的链。
-X, --delete-chain [chain] :删除指定的链,这个链必须没有被其它任何规则引用,而且这条上必须没有任何规则。如果没有指定链名,则会删除该表中所有非内置的链。
-E, --rename-chain old-chain new-chain :用指定的新名字去重命名指定的链。这并不会对链内部造成任何影响。
-Z, --zero [chain] :把指定链,或者表中的所有链上的所有计数器清零。
-j, --jump target <指定目标> :即满足某条件时该执行什么样的动作。target 可以是内置的目标,比如 ACCEPT,也可以是用户自定义的链。
-h:显示帮助信息;
?iptables -t 表名 <-A/I/D/R> 规则链名 [规则号] <-i/o 网卡名> -p 协议名 <-s 源IP/源子网> --sport 源端口 <-d 目标IP/目标子网> --dport 目标端口 -j 动作
?配置允许ssh端口连接
iptables -A INPUT -s 192.168.1.0/24 -p tcp --dport 22 -j ACCEPT
# 22为你的ssh端口, -s 192.168.1.0/24表示允许这个网段的机器来连接,其它网段的ip地址是登陆不了你的机器的。 -j ACCEPT表示接受这样的请求
创建一个名为的新目录112233
,并使用 echo 命令打印“the sea scenery is great”
cd 112233 || mkdir 112233 && echo "the sea scenery is great"
wtach -n 0.2 nviida-smi -i 1
cat anaconda-ks.cfg | tr [a-z] [A-Z]
command >> 文件 2>&1
或
command &>> 文件
ps -ef | grep python
find . -name "*.log" –mtime +30 –typef –size +100M | xargs rm –rf {};
for i in `find . –name "*.zip" –type f`
do
unzip –d $i /data/www/
done
if [ ! –d /data/backup/ ];then
mkdir –p /data/backup/
else
echo "目录已存在"
fi
?-d 代表目录
# 假如我们要监控一堆指定的IP和端口,可新建一个文件(第1列为服务器IP,第2列为监控的端口,中间用空格分隔)
[root@localhost ~]# vi ip-ports.txt
127.0.0.1 21
127.0.0.1 22
127.0.0.1 23
# 新建这样一个脚本来批量检测端口是否开放,成功会返回0值显示ok,失败会返回1值显示fail
[root@localhost ~]# vi ncports.sh
#!/bin/bash
cat ip-ports.txt | while read line
do
nc -w 10 -z $line > /dev/null 2>&1
if [ $? -eq 0 ]
then
echo $line:ok
else
echo $line:failed
fi
done
# 给脚本赋予可执行权限,并执行查看结果
[root@localhost ~]# chmod a+x ncports.sh
[root@localhost ~]# sh ncports.sh
127.0.0.1 21:failed
127.0.0.1 22:ok
127.0.0.1 23:failed
参考链接:
?第2章 新手必须掌握的Linux命令 | 《Linux就该这么学》
?作为web程序员,该掌握的linux命令有哪些,稍微高级点的? - 知乎
?https://www.cnblogs.com/peida/archive/2013/02/26/2932972.html
Verifying your browser... | myfreax?
https://wsgzao.github.io/post/nc/?
iptables 命令,Linux iptables 命令详解:Linux上常用的防火墙软件 - Linux 命令搜索引擎?