Linux常用命令

变量自增

a=1

a=$((a+1))

a=$(($a+1))

a=$[a+1]vim

a=$[$a+1]

grep

history
$grep程序, 在没有参数的情况下, 输出包含RE字符串的句子

$ grep 搜索的文字 文件或目录
$ grep -r 搜索的文字 文件或目录                # 以递归的方式查找符合条件的文件
$ grep -v 搜搜的文字 文件或目录                # 反向查找,找出不符合条件的文件

# 搜索含有文字1或者文字2的文件
$ grep -e 搜索的文字1 -e 搜索的文字2 文件或目录  
$ grep -o 只输出符合RE的字符串.

head

$ head -n 1 test.txt      # 输出前一行
$ head -c 20 test.txt     # 输出前20字节

less

less 与 more 类似,less 可以随意浏览文件,支持翻页和搜索,支持向上翻页和向下翻页。

# less 与 more 类似
# less 可以随意浏览文件,支持翻页和搜索,支持向上翻页和向下翻页。

ctrl + F           # 向前移动一屏
ctrl + B           # 向后移动一屏
ctrl + D           # 向前移动半屏
ctrl + U           # 向后移动半屏

j                  # 下一行
k                  # 上一行

G                  # 移动到最后一行
g                  # 移动到最前一行

h                  # 帮助

n p                # 打开多个文件切换

wc

wc file     # 等同于 wc -clw file
wc -c file  # 显示文件字节数
wc -l file  # 显示文件行数
wc -w file  # 显示文件字数

tldr

tldr是简化版的使用手册,并不会像man一样把所有的使用参数和说明都列出来,而是只显示常用的几个使用Sample和说明。

# too long, didn't read

$ pip install tldr # 安装

uniq

sort | uniq  # 排序后去重

find

find .
find . -name ".sh"

# 查找 test1.sh 和 test2.sh
find . -name "test1.sh" -o -name "test2.sh"

# 找出当前目录下不是以.png结尾的文件
find . ! -name "*.png"

# 按照路径查找: 找test目录下的文件和目录
find . -path "test"

# 高阶用法,查找结果 只获取文件名而去除路径
find /bin/ -name "b*" -exec basename {} \;

# 通过文件类型查找
find . -type 
    f 普通文件
    l 符号连接
    d 目录
    c 字符设备
    b 块设备
    s 套接字
    p Fifo

更多参考

xargs

find /sbin -perm +700 | ls -l         #错误
find /sbin -perm +700 | xargs ls -l   #正确

# 理解
xargs 把参数放在命令后面
管道把参数放在命令前面

# 命令格式
somecommand |xargs -item  command

#########################指定每行参数个数###########################
# 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

# cat test.txt | xargs -n3
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
#####################指定分割符号##############################
# echo "nameXnameXnameXname" | xargs -dX
name name name name

#######################类似与python的print.format#############
# cat arg.txt
aaa
bbb
ccc

#!/bin/bash
#sk.sh命令内容,打印出所有参数。
echo $*

# cat arg.txt | xargs -I {} ./sk.sh -p {} -l
-p aaa -l
-p bbb -l
-p ccc -l

更多参考

tee

tee      # 重定向,相当于 >
tee -a   # 重定向,相当于 >>

# 重定向遇到的坑,shell脚本切换到/bin目录
# 然后在这个目录下重定向.....肯定没权限

重定向

# shell上:

0表示标准输入
1表示标准输出
2表示标准错误输出

# 理解 "1>&2" 和 "2>&1". 
1>&2 正确返回值传递给2输出通道 &2表示2输出通道
如果此处错写成 1>2, 就表示把1输出重定向到文件2中.
2>&1 错误返回值传递给1输出通道, 同样&1表示1输出通道.

& 是一个描述符,如果1或2前不加&,会被当成一个普通文件。
1>&2>&2,意思是把标准输出重定向到标准错误.
2>&1 意思是把标准错误输出重定向到标准输出。
&>filename 意思是把标准输出和标准错误输出都重定向到文件filename中


[root@redhat box]# ls
a.txt
[root@redhat box]# ls a.txt b.txt 

[root@redhat box]# ls a.txt b.txt
# 由于没有b.txt这个文件, 于是返回错误值, 这就是所谓的2输出
ls: b.txt: No such file or directory 
# 而这个就是所谓的1输出
a.txt 


[root@redhat box]# ls a.txt b.txt 1>file.out 2>file.err
[root@redhat box]# cat file.out   
a.txt                                 # 标准输出
[root@redhat box]# cat file.err   
ls: b.txt: No such file or directory  # 标准错误输出

sh -c

# 利用 "sh -c" 命令,它可以让 bash 将一个字串作为完整的命令来执行
# 这样就可以将 sudo 的影响范围扩展到整条命令。具体用法如下:
$ sudo sh -c 'echo "test" >> test.asc'

shell中没有true false

true is true
false is true
True is true
False is true
1 is true
0 is true

sort

# 默认升序
$ sort      # 按字符排序        1 11 2
$ sort -n   # 字符串数值进行排序  1 2 11
$ sort -g   # general-numeric-sort,根据一般数值进行排序
$ sort -r   # reverse,反向输出排序结果
$ sort -k 3 # 以指定列进行排序
$ sort -u   # 排序结果去重

export

# Linux export 可新增,修改或删除环境变量

$ export -p       # 列出当前的环境变量值
$ export MYENV    # 定义环境变量
$ export MYENV=7  # 定义环境变量并赋值

paste

cat nums.txt | paste -sd+ | bc | factor

wget

# 下载单个文件
wget http://www.example.com/testfile.zip

# 下载并以不同的文件名保存
wget -O myfile.zip http://www.example.com/testfile.zip

# 断点续传
wget -c http://www.example.com/testfile.zip

curl 命令

  1. curl命令是一个利用URL规则在命令行下工作的文件传输工具。
  2. 它支持文件的上传和下载,所以是综合传输工具,
  3. 但按传统,习惯称curl为下载工具。作为一款强力工具,
  4. curl支持包括HTTP、HTTPS、ftp等众多协议,
  5. 还支持POST、cookies、认证、从指定偏移处下载部分文件、用户代理字符串、限速、文件大小、进度条等特征。做网页处理流程和数据检索自动化,curl可以祝一臂之力。

wget是个专职的下载利器,简单,专一,极致;而curl可以下载,但是长项不在于下载,而在于模拟提交web数据,POST/GET请求,调试网页,等等。

在下载上,也各有所长,wget可以递归,支持断点;而curl支持URL中加入变量,因此可以批量下载。

个人用途上,我经常用wget来下载文件,加 -c选项不怕断网;使用curl 来跟网站的API 交互,简便清晰。

# 单个文件下载
curl [-o 自定义文件名|-O] http://www.example.com/index.html
-o 自定义文件名:把服务器响应输出到指定文件
-O:与-o选项作用一样,区别在于以 url 路径最后一个"/"之后的部分作为文件名

参考:

wget 与 curl 命令详解

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值