Linux必学命令(持续更新)

一、 常用命令

1. &

​ 在命令后面加上 & 会使该命令在后台运行,注意需要用户交互的命令不要放在后台运行,常配合输出重定向符 > 将该命令的输出重定向到某个文件中,如

java -jar test.jar > log.file &

java -jar test.jar > log.file 2>&1 &

在shell脚本中,默认情况下,总是有三个文件处于打开状态,标准输入(键盘输入)、标准输出(输出到屏幕)、标准错误(也是输出到屏幕),它们分别对应的文件描述符是0,1,2 。

2>&1 表示将错误输出也重定向合并到标准输出中

附:输入重定向符 < , 输出重定向符 > , 追加输出重定向符 >>

2. nohup

nohup 是 no hang up 的缩写,意为不挂起,经常与 & 一起使用,当仅使用 & 命令使程序在后台运行时,一旦退出登陆shell所在的用户,该程序或命令也会停止运行,这时候就可以使用nohup 命令使程序挂起,即退出登陆后程序依旧运行,如

nohup java -jar test.jar > log.file 2>&1 &

如果没有设置输出参数,则默认输出到当前目录的 nohup.out 文件中

3. |

| 称为管道命令,它会将左侧命令的标准输出作为右侧命令的标准输入,如

cat .zshrc | grep alias

# 等同于
grep alias .zshrc

4. xargs

​ 然而,很多命令都不接受标准输入作为参数,这时就需要用到 xargs 命令了,xargs 命令作用就是通过管道接收字符串,并将接收到的字符串通过空格分割成许多参数(默认情况下是通过空格符和换行符分割) 然后将参数传递给其后面的命令,作为后面命令的命令行参数,如

# echo 命令不接受标准输入,所以不会有结果
echo "hello world!" | echo

# xargs 将标准输入转化为命令行参数,这时就会有输出了
echo "hello worod!" | xargs echo

注:xargs 后面有一个默认命令 echo ,即 xargs 单独使用 等同于 xargs echo

参数:

-d 修改分隔符,如

echo "1 | 2 | 3" | xargs -d "|"
# 输出:1 2 3

-p-t 输出实际执行的命令

-p 会打印出实际执行都命令并需要用户手动输入 y 来确认执行,-t 会打印出实际执行命令并立即执行,不需要确认,如

echo "1 | 2 | 3" | xargs -d "|" -p
echo 1   2   3
 ?...y
1   2   3

echo "1 | 2 | 3" | xargs -d "|" -t
echo 1   2   3
 
1   2   3

-L 指定行数分隔

​ 如果标准输入包含多行,-L 参数指定多少行作为一个命令行参数,每分隔一次就执行一次命令,如

~> echo "hello
		world
		and
		you" | xargs
hello world and you
~> echo "hello
		world
		and
		you" | xargs -L 1
hello
world
and
you
~> echo "hello
		world
		and
		you" | xargs -L2
hello world
and you

-n 指定项数分隔

​ 如果标准输入包含多行,-n 参数指定多少项作为一个命令行参数,每分隔一次就执行一次命令,如

~$ echo {0..9}
0 1 2 3 4 5 6 7 8 9
~$ echo {0..9} | xargs -n1
0
1
2
3
4
5
6
7
8
9

5. find

find命令用来查找文件,格式为 find <目录>. <条件>. <动作>,其中目录默认为当前目录(包括子目录)

条件有:

-name 最常使用的条件,根据文件名来查找文件,如

# 查找家目录下以rc结尾的隐藏文件
find ~ -name ".*rc" -maxdepth 1 

# ! 取反
find ~ ! -name ".*rc" -maxdepth 1

# i 忽略大小写
find ~ -iname ".*RC" -depth 1

注:-maxdepth 1 意思是最大查找深度为 1 ,即仅查找一层目录,不递归查找子文件夹;同理,-depth 指定查找深度,如 -depth 2 指定查找第二层目录(会忽略掉第一层目录);还有 -mindepth 。。。

-perm 根据权限来查找文件,如

find ~ -perm 644 -maxdepth 1

-type 根据类型来查找,如

# b - 块设备文件
# d - 目录
# c - 字符设备文件
# p - 管道文件
# l - 符号链接文件
# f - 普通文件

find ~ -type d -depth 1

-prume 指定忽略查找的目录,如

# 这是个蛇皮参数,还没搞明白,待修改
find . -path ./download -prune -o -name test.file

​ 其它不常用参数,如

# -delete     删除查找到的文件
# -user       按照文件属主来查找文件
# -nouser     查找无主文件,即原属主已不存在
# -group      按照文件所属的组来查找文件
# -nogroup    查找无组文件
# -size       按照文件大小来查找,如 -size 10k, -size +10k
# -follow     如果find命令遇到符号链接文件,就跟踪至链接所指向的文件
# -empty      列出所有长度为零的文件
# -atime      访问时间,-7 表示7天内
# -mtime      修改时间
# -ctime      变化时间,如权限修改不会导致修改时间变化,但会导致变化时间变动

6. cut

cut用于从文本中取出某些列,这里的列有三种模式,如

-b     # 以字节作为标准取出列
-c     # 以字符作为标准取出列
-f     # 以域(field)作为标准取出列

-b以字节为单位,一个英文字符或数字占一个字节,空格一般也算一个字节,如

$ jobs -l              
[1]    54412 running    vue ui
[2]  - 54448 running    vue ui
[3]  + 54489 running    vue ui > vue.log

# 取出8-12列的进程id
# 用途:jobs -l | cut-b 8-12 | xargs kill -9
$ jobs -l | cut -b 8-12
 54412
 54448
 54489

注:在不确定空格的情况下可以首先测试一下,如 jobs -l | cut -b 8

-c 以字符为单位,有中文时使用,一般中文为1个字符,3个字节,如

$ cat test.file  
春眠不觉晓,
处处闻啼鸟,
夜来风雨声,
花落知多少。

# 以字节为单位,终端为UTF-8编码
$ cut -b 1-6 test.file
春眠
处处
夜来
花落

# 以字符为单位
$ cut -c 1-6 test.file
春眠不觉晓,
处处闻啼鸟,
夜来风雨声,
花落知多少。

-f 域模式可以指定输出哪几个域,常配合-d(指定分隔符) 使用,注意分隔符也会被输出,如

~$ jobs -l
[1]- 11370 Stopped (tty output)    vim .profile
[2]+ 11371 Stopped (tty output)    vim .profile

# 以空格为分隔符输出第2个域
~$ jobs -l | cut -d ' ' -f 2
11370
11371

--complement 取补集,如

$ jobs -l
[1]- 11370 Stopped (tty output)    vim .profile
[2]+ 11371 Stopped (tty output)    vim .profile

$ jobs -l | cut -d ' ' -f 2
11370
11371

$ jobs -l | cut -d ' ' -f 2 --complement
[1]- Stopped (tty output)    vim .profile
[2]+ Stopped (tty output)    vim .profile

注:-d. --complement 参数在mac上不适用

附:

1,ASCII码:一个英文字母(不分大小写)占一个字节的空间,一个中文汉字占两个字度节的空间。

2,UTF-8编码:一个英文字符等于一个字节,一个中文(含繁体)等于三个字节。中文标点占三个字节,英文标点占一个字节

3,Unicode编码:一个英文等于两个字节,一个中文(含繁体)等于两个字节。中文标点占两个字节,英文标点占两个字节

二、随缘命令

  1. echo $0 查看当前shell
  2. jsbs -l查看当前终端的后台进程,常配合 & 使用
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

华仔哦

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值