shell 学习

Posted longjmp

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了shell 学习相关的知识,希望对你有一定的参考价值。

获取本机IP

/sbin/ifconfig -a|grep inet|grep -v 127.0.0.1|grep -v inet6|awk ‘{print $2}‘|tr -d "addr:"

 

获取本机外网ip

如果是MAC,则用浏览器访问 百度 搜索 ip

如果是服务器,则登录上去后curl http://members.3322.org/dyndns/getip

 

查看那个进程占用了xxx端口

lsof -i:xxx

 

netstat -ntupl

n表示不查询dns

t表示tcp协议

u表示udp协议

p表示查询占用的程序

l表示查询正在监听的程序

 

netstat -nltp |grep 端口号或服务名

 

后台运行

nohup python manage.py runserver 121.43.145.85:30006 &

(python manage.py runserver 121.43.145.85:30006 &)

 

 

 

[[email protected] programming]$ cat /etc/passwd|head -n 5
root:x:0:0:root:/root:/bin/bash
bin:x:1:1:bin:/bin:/sbin/nologin
daemon:x:2:2:daemon:/sbin:/sbin/nologin
adm:x:3:4:adm:/var/adm:/sbin/nologin
lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin
[[email protected] programming]$ cat /etc/passwd|head -n 5|cut -d : -f 1
root
bin
daemon
adm
lp

 

 

.tar

解包:tar xvf FileName.tar

打包:tar cvf FileName.tar DirName

(注:tar是打包,不是压缩!)

———————————————

.gz

解压1:gunzip FileName.gz

解压2:gzip -d FileName.gz

压缩:gzip FileName

.tar.gz 和 .tgz

解压:tar zxvf FileName.tar.gz

压缩:tar zcvf FileName.tar.gz DirName

 

显示文件夹颜色

ls -G

 

显示CPU的核数

# 总核数 = 物理CPU个数 X 每颗物理CPU的核数
# 总逻辑CPU数 = 物理CPU个数 X 每颗物理CPU的核数 X 超线程数

# 查看物理CPU个数
cat /proc/cpuinfo| grep "physical id"| sort| uniq| wc -l

# 查看每个物理CPU中core的个数(即核数)
cat /proc/cpuinfo| grep "cpu cores"| uniq

# 查看逻辑CPU的个数
cat /proc/cpuinfo| grep "processor"| wc -l

 

显示grep颜色

grep --color=auto

 

查看可执行命令路径

which python

 

用find复制带空格的文件

find . -type f -not -regex ".*bad.*" -print0 | xargs -0 -I{} cp {} ../tensorflow_classify/unknown/

关键是在find中用正则表达式找到需要的东西,然后配合-print0和xargs -0来拷贝

如果是

find . -type f | grep -v bad | xargx -I{} cp {} ../tensorflow_classify/unknown/

则无法复制带空格的文件

另外注意,在find的-regex中匹配bad必须用".*bad.*",而不能用”bad”,这和一般的正则表达式不太一样

 

将find找到的 DIR + _bad 的文件全部移动到DIR中

find . -maxdepth 1 -type dir | grep -v bad | xargs -IDIR find DIR_bad -type f -exec mv {} DIR ;

 

删除所有带_bad后缀的文件夹

find . -depth 1 -type dir -regex .*_bad | xargs -ID rm -rf D

 

将find找到的 DIR + _bad 的文件夹重命名为DIR

find . -maxdepth 1 -type dir -not -regex ".*bad.*" | xargs -I{} ../mv.sh {} ;

其中mv.sh:

#!/bin/sh

echo "$1"

mv `find "$1"_bad -type f` "$1"

之所以要这样做,是因为本来想这样写:

find . -maxdepth 1 -type dir -not -regex ".*bad.*" -exec mv {}_bad {} ;

但在find的exec中不能连续使用两次{}

 

用find找到所有的DIR_bad的文件夹,去掉后缀“_bad”并创建不带后缀的文件夹(如果存在则SHELL自动不创建)

比如在如下路径执行:

/Users/Rokey/ledongli_proj/scrapy_prog/food_crawler/img_folder/full/supplement/蚕豆

find . -maxdepth 1 -type dir -regex ".*bad.*"| cut -d_ -f1 | xargs -IDIR mkdir DIR

 

用find找到指定深度的文件/文件夹

find . -depth 2 -type dir

 

 

MAC查看CPU核数

sysctl machdep.cpu | grep core

 

查看各个文件夹中的文件数量

for k in $(ls);

do

  echo $k;

  find $k -type f -not -regex .*bad.* | wc -l;

done

 

累加某一列的和

awk ‘{sum += $1};END {print sum}‘ test

 

for循环

#!/bin/bash

DIR="/var"

cd $DIR

for k in $(ls $DIR)

do

  [ -d $k ] && du -sh $k

done

 

ls命令按文件大小排序

ls -Sl

 

查看操作系统版本、操作系统名称

cat /proc/version

 

以下二种方法适用于RedHat,CentOS 系统

[email protected] ~ # cat /etc/redhat-release

 

homebrew 不要自己更新

vi ~/.bash_profile,并添加下面两句话

# brew 不自动更新

export HOMEBREW_NO_AUTO_UPDATE=true

 

手动更新homebrew

brew update

 

mac解压缩 zip

unzip xxxfile

 

mac解压rar

unrar x yourfile

如果加密则输入命令敲完回车后,再输入密码

 

发送 POST 请求

curl -d "param1=value1&param2=value2" "url"

 

kill对应端口

kill -9 $(lsof -t -i:30007)

 

查询线程

1。 使用ps命令,具体用法是 ps -xH

这样可以查看所有存在的线程,也可以使用grep作进一步的过滤。

 

2。 使用ps命令,具体用法是 ps -mq PID

这样可以看到指定的进程产生的线程数目。

 

 

查看gcc版本

gcc -v

cat /proc/version






















以上是关于shell 学习的主要内容,如果未能解决你的问题,请参考以下文章

shell学习

Linux学习笔记-Shell教程

linux学习day04(shell学习)

Linux之Shell学习笔记

Shell脚本(学习笔记1)

shell的学习