linux 常用命令
linux 命令 shell 基本语法
进程相关
-
杀掉进程
kill `ps -efww | grep 项目名 | grep -v grep | grep -v less | awk '{print $2}'`
-
查看进程号
ps -efww | grep 项目名 | grep -v grep | grep -v less | awk '{print $2}'
IP 相关
-
获取本机ip
ifconfig # 基本方法 hostname -I # 获取所有ip hostname -I | awk '{print $1}' # 获取ip
sed 相关命令
-
查看第几行的文字
sed -n '2,5p' nowcoder.txt sed -n '5p' nowcoder.txt # -n 不可缺少
-
打印空行的行号:
sed -n '/^$/=' nowcoder.txt
-
打印非空的行
sed -n '/[^$]/p' nowcoder.txt grep -v '^$' nowcoder.txt grep -v # 取非 cat nowcoder.txt | awk NF
打印相关
-
echo 打印换行
echo -e "\n=== desc ===" # 比 Python 语法多一个 -e
cat 相关
-
过滤长度小于8的单词
cat nowcoder.txt | xargs -n 1 | awk 'length($1)<8 {print $1}'
-
统计单词出现次数,并排序
cat nowcoder.txt | xargs -n 1 | sort | uniq -c | sort | awk '{print $2 " " $1}'
查找并删除文件
-
find 和 xargs 配合
find / -name file_name | xargs rm -rf
xargs 命令
-
特点
-
命令传递参数的一个过滤器,也是组合多个命令的一个工具
-
一个强有力的命令,它能够捕获一个命令的输出,然后传递给另外一个命令
-
可以将单行或多行文本输入转换为其他格式,例如多行变单行,单行变多行
-
一般是和管道一起使用
-
-
应用示例
# cat test.txt a b c d e f g h i j k l m n o p q r s t u v w x y z
-
多行输入单行输出: 默认输出在同一行
cat test.txt | xargs a b c d e f g h i j k l m n o p q r s t u v w x y z
-
-n 限制每行输出的数量
cat test.txt | xargs -n 3 a b c d e f g h i j k l m n o p q r s t u v w x y z
-
uname 相关命令
-
基本用法
-a或--all 显示全部的信息。 -m或--machine 显示电脑类型 -n或--nodename 显示在网络上的主机名称。 -r或--release 显示操作系统的发行编号。 -s或--sysname 显示操作系统名称。 -v 显示操作系统的版本。 --help 显示帮助。 --version 显示版本信息。
tail 命令
-
tail -n +10 file.txt 从第10行开始显示
-
tail -n -10 file.txt 显示最后10行
-
tail -f file.txt 持续显示
tail -n +10 file.txt | head -1 # 显示第10行
head命令
- head -n file.txt 显示前n行
- 不指定n的话,显示前10行
grep 正则匹配
-
基本用法
选项与参数: -a :将 binary 文件以 text 文件的方式搜寻数据 -c :计算找到 '搜寻字符串' 的次数 -i :忽略大小写的不同,所以大小写视为相同 -n :顺便输出行号 -v :反向选择,亦即显示出没有 '搜寻字符串' 内容的那一行! --color=auto :可以将找到的关键词部分加上颜色的显示喔!
-
grep -E 或者 egrep, 扩展正则功能
grep -E '^([0-9]{3}-|\([0-9]{3}\) )[0-9]{3}-[0-9]{4}$' file.txt 正则的使用要求: []限定范围 {}表示次数 ()分组,注意匹配括号时转义 ^、$严格限定首尾
循环、wc、head、seq
columns=$(cat file.txt | head -n 1 | wc -w)
for i in $(seq 1 $columns)
do
awk '{print $'''$i'''}' file.txt | xargs
done
ll 命令不生效
-
修改.bashrc文件
alias ll='ls -l'
-
使.bashrc文件生效
source .bashrc
获取当前目录
current_dir=$(pwd)
echo "current_dir is $current_dir"
seq 命令
-
基本参数
seq [选项]... 尾数 seq [选项]... 首数 尾数 seq [选项]... 首数 增量 尾数 -f, --format=格式 使用printf 样式的浮点格式 -s, --separator=字符串 使用指定字符串分隔数字(默认使用:\n) -w, --equal-width 在列前添加0 使得宽度相同 seq -f "%3g" 9 11 # 默认空格补齐 seq -f "str%03g" 9 11 # 默认0补齐 seq -w 98 101 # 同宽输出 seq -s "=" 9 11 # 指定分隔符 # 用于for循环 for i in $(seq 1 10) do echo $i done
单引号、双引号、反引号
- 单引号
- 单引号将其中的内容都作为了字符串来,忽略所有的命令和特殊字符,类似于一个字符串的用法
- 双引号
- 双引号与单引号的区别在于其可以包含特殊字符(单引号直接输出内部字符串,不解析特殊字符;双引号内则会解析特殊字符),包括
', ", $, \
,如果要忽略特殊字符,就可以利用\
来转义
- 双引号与单引号的区别在于其可以包含特殊字符(单引号直接输出内部字符串,不解析特殊字符;双引号内则会解析特殊字符),包括
- 反引号
- 反引号用来包含一个命令字符串的,其中的命令会先执行;
$(cmd)
类似
- 反引号用来包含一个命令字符串的,其中的命令会先执行;
myname="$name its me"
echo $myname
VBird its me
myname='$name its me'
echo $myname
$name its me
快速创建 if、for 结构
-
pycharm 中写if、for后停止,等pycharm提示,回车即可获取 if 、for的标准结构
if [ ]; then fi for (( i = 0; i < n; i++ )); do done for i in {1..5} ; do done
uniq 命令
-
主要功能:用于检查及删除文本文件中重复出现的行列,一般与 sort 命令结合使用
-
参数解释
-c或--count 在每列旁边显示该行重复出现的次数。 -d或--repeated 仅显示重复出现的行列。 -f<栏位>或--skip-fields=<栏位> 忽略比较指定的栏位。 -s<字符位置>或--skip-chars=<字符位置> 忽略比较指定的字符。 -u或--unique 仅显示出一次的行列。 -w<字符位置>或--check-chars=<字符位置> 指定要比较的字符。 --help 显示帮助。 --version 显示版本信息。 [输入文件] 指定已排序好的文本文件。如果不指定此项,则从标准读取数据; [输出文件] 指定输出的文件。如果不指定此选项,则将内容显示到标准输出设备(显示终端
-
示例,最好搭配 sort 命令
uniq -c testfile.txt # 统计每行出现的次数 3 test #前面的数字的意义为该行共出现了3次 4 Hello #前面的数字的意义为该行共出现了4次 2 Linux
sort 命令
-
主要功能:sort命令以行为单位对文本进行排序
sort [-b/d/f/g/i/M/n/r] [InFile]
-
参数解释
-b: ignore-leading-blanks,忽略前面空格符部分 -d: data-order,仅考虑空格和字母数字字符 -f: ignore-case,忽略大小写 -g: general-numeric-sort,根据一般数值进行排序 -i: ignore-nonprinting,忽略不可打印的字符,比如换行符、回车符 -M: month-sort,以月份进行排序 -n: numeric-sort,根据字符串数值进行排序 -r: reverse,反向输出排序结果 -k N: key,以第N列进行排序
-
示例
sort -nr
awk 语法
-
常用的情况
awk '{print $2 " " $1}' # 打印指定列的信息
wget
-
参数 避免验证
wget https://mirrors.aliyun.com/xxxx/.4.12.tar.gz --no-check-certificate
chown、 chgrp
-
修改所属用户
chown -R zhangsan ./* # 修改文件所属用户
-
修改所属组
chgrp -R zhangsan ./* # 修改文件所属组