1、文本多列变一列
cat urfile | xargs -n1
2、以树状详细列出所有进程及子进程信息:
ps axwef
3、以树状精简显示所有进程及子进程信息
pstree
4、同时创建多个目录
mkdir urfile{
1..10}
或者
mkdir -p /home/user/{
urfile,urfile1,urfile2}
5、同时创建多个文件
touch urfile{
1..1000}
或者
for i in `seq 1 1000`; do echo 0 > test$i; done
6、获取一段文本的 md5 值
echo -n "text" | md5sum
7、创建一个文件的备份(假设扩展名是.bak)
cp some_file_name{
,.bak}
8、清空 test.txt
> urfile
9、按递增顺序输出 100 个名字
seq -f 'urfile%03g' 100
10、生成随机密码 (16个字符长)
openssl rand -base64 16
或者
LANG=c < /dev/urandom tr -dc _A-Z-a-z-0-9 | head -c${1:-16};echo;
11、回到上次那个工作目录
cd -
12、按行将两个文件中的对应行合并输出显示
paste urfile1 urfile2
13、列出当前目录下的所有目录
ls -ld */
14、去除变量 str 字符串的首字符
${str:1}
15、去除变量 str 字符串的最后一个字符
${str%?}
16、shell两行合并成一行(去掉换行)
sed 'N;s/\n/ :/' urfile
或者
awk '{if(NR%2==0){printf $0 "\n"}else{printf "%s:",$0}}' urfile
17、Linxu 账号触发 lock 后解锁
// 解决 Account locked due to xxx failed logins 问题
pam_tally2 --user=testu --reset
18、查看 mysql 安装情况
rpm -qa | grep mysql
19、查看服务器型号
/usr/sbin/dmidecode | grep "Product"
20、修改账户密码
echo "root:xxxx" | /usr/sbin/chpasswd
21、锁住文件不给修改
chattr +i urfile
22、解锁文件可以修改
chattr -i urfile
23、封 ip x.x.x.x
/usr/sbin/iptables -I ETH0_TCP -p tcp -s x.x.x.x -j DROP
24、在 ps 命令用不了时,可以试试这个:
top -bn1
25、硬盘测速
hdparm -t /dev/sda
或者
dd if=/dev/zero of=/data1/test1 bs=1M count=8000 oflag=direct (生成8G文件,小心空间不够)
26、检查文件系统是否正常
fsck.ext3 -y /dev/sdb1
27、多行变一行
awk '{printf "%s",$0}' urfile
或者
paste -s -d "" urfile
或者
sed ':a;$!N;s/\n//;ta;P;D' urfile
或者
sed ':a;N;$!ba;s/\n//g' urfile
28、跳转到脚本所在目录
cd $(dirname "$0")
或者
cd `dirname $0`
29、重装系统的机器,如果换了硬盘,可能需要重做文件系统
mkfs.ext3 /dev/sdb
30、检查是否有符号未定义
ldd -d libnewmaillib.so
31、清理共享内存
ipcs -m | awk '{ if ($6 ==0 ) print "ipcrm -m "$2 }' | sh
32、每2行合并为一行
awk '{if (NR%2==0){print $0} else {printf "%s ",$0 } }' urfile
33、抓特定 ip x.x.x.x 的数据包
tcpdump -i eth0 -s 1024 -A host x.x.x.x
34、按原有顺序输出文件内容,但忽略已有行
awk '{cnt[$0]++;if ( cnt[$0] == 1){print $0 }}' urfile
35、端口流量统计
iptables -Z 清空计数
iptables -L -vn 查看流量更新
36、nmap 扫描死机
nmap -n -sP -v -iL myip.txt
37、输出整型时间
date +%s -d "2020-06-11 12:00:00"
38、生成随机的 16 进制数字, n是字符的数量
openssl rand -hex n
39、运行 history 中的编号为 100 的历史命令
!100
40、提取字符串的前5个字符
test=abcdesfhijk ; echo ${test:0:5}
41、不需要使用 vim ,直接创建 urfile 并输入多行文字 ( CTRL + d 退出)
cat > urfile
42、重复运行命令并显示它的输出 (默认每隔 2秒 执行一次)
watch uptime
43、显示 Linux 所有用户
getent passwd
44、打开vim并跳转到文件最后
vim + some_file_name
45、在bash中检查远程端口是否打开
echo >/dev/tcp/1.1.1.1/53 && echo "open"
或者
telnet 1.1.1.1 53
46、当 SSH 出错,可打开 SSH 调试模式查看 debug log
ssh -vvv user@ip_address
47、将tar.gz文件解压到指定目录
tar -zxvf test.tar.gz -C mydir
48、调整中断所在的 cpu
echo '00000000,00000000,00000000,00000001' > /proc/irq/233/smp_affinity
49、用 curl 获取 HTTP 头
curl -I http://www.qq.com
50、查询一个文件 urfile 的 inode
ls -i urfile
1649452 urfile
51、通过inode删除指定文件
find . -inum 7649452 | xargs rm
52、od 命令将字符与十六进制的对应关系打印出来
od -A x -t x1c -v urfile
53、执行状态输出
echo >/dev/tcp/1.1.1.1/36000 && echo "36000 open" || echo "36000 close"
54、 tar 加上 k 参数,避免已有同名文件被覆盖
ls -l 2019.log
-rw-r--r-- 1 xxx users 8 Jun 12 15:17 2019.log
tar -xkzvf 2019.tgz
2019.log
tar: 2019.log: Cannot open: File exists
tar: Exiting with failure status due to previous errors
55、 awk 输出单引号
cat urfile | awk '{ print "\47"$1"\47" }'
56、查看物理 CPU 个数
grep "physical id" /proc/cpuinfo | sort | uniq | wc -l
57、查看 CPU 核心数
grep "cpu cores" /proc/cpuinfo | uniq
58、查看逻辑 CPU 个数
cat /proc/cpuinfo | grep "processor" | wc -l
// Linux 下使用 top 然后按数字键 1 看到的 CPU 数量也是逻辑 CPU 个数
59、修改文件或目录的时间戳 ( YYMMDDhhmm )
touch -t 0712250000 urfile
60、解压缩到特定目录
unzip urfile.zip -d urdir
61、打印 history 中最后执行那个 touch 命令
!touch:p
62、运行 history 中的最后执行那个 touch 命令
!touch
63、输出 urfile 中第50到60行的内容
sed -n '50,60p' urfile
64、扫描网络,找出开放端口
nmap -p 8081 12.23.0.0/18
65、列出块设备
lsblk -f
66、获取文件的所有者
stat -c %U urfile
或者
ls -l urfile | awk '{print $3}'
67、切割文件,每 100 行放到一个文件
split -100 urfile
:~> wc -l urfile
310 urfile
:~> split -100 urfile
:~> wc -l xa*
100 xaa
100 xab
100 xac
10 xad
310 total
68、转换所有 tab 为 空格
expand urfile > urfile.tmp
69、计算 32/15 等于多少
echo "32/15" | bc
70、删除文本中的空行
sed '/^$/d' urfile
71、sed 精确匹配删除
sed '/^[ ]*dline$/d' urfile
//dline 为需要匹配删除的字符
持续更新中… …