Linux shell 实用小技巧


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 为需要匹配删除的字符



持续更新中… …




评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值