常用shell指令

一、概述

对 Shell 有个最简单的认识之后,我们立刻来学习日常生活中最最需要用到的最重要的Shell 命令,以下挑出 30 个命令详解,这三十个命令要是都掌握了,你基本上对 Linux 系统的普通的日常操作就游刃有余了.

命令功能示例备注
alias给命令起别名alias c=’clear‘clear 的别名为 c
cat显示文本内容cat file显示 file 的内容
cd修改当前路径cd /etc转到 /etc 中去
chmod修改文件访问权限chmod 644 filefile 的权限为 644
chown修改文件所有者chown foo filefile 的所有者为 foo
clear清屏clear清屏
cp拷贝文件1: cp file1 file2
2: cp dir1.0/ dir2.0/ -r
1: 拷贝 file1file2
2: 拷贝 dir1.0/dir2.0/
df查看文件系统信息df -h显示文件系统信息
diff比较两文件的异同1: diff file1 file2 -uN
2: diff dir1/ dir2/ -urN
1: 比较 file1file2
2: 比较 dir1/dir2/
dpkg手工安装软件包dpkg -i example.deb安装 example.deb
echo显示字符串echo “hello!”显示 “hello!”
find查找文件find / -name “*.c”找出/下的所有 .c 文件
grep查找字符串grep “abc” ./ -rwHn*./* 中找字符串 “abc”
ifconfig查看或修改网络ifconfig eth0查看 eth0 的网络信息
kill发送信号kill -s SIGKILL 1234给进程 1234 发送信号 SIGKILL
ln创建链接文件1: ln apple a
2: ln apple a -s
1: 取 apple 别名为 a
2: 创建一个符号链接 a 指向 apple
ls列出文件信息ls -l列出当前文件信息
man查找帮助信息man ls查找关于 ls 的帮助
mount挂载或卸载分区mount /dev/x /mnt/dev/x 挂接到 /mnt
more分屏显示信息ps -ef | more分屏显示 ps -ef 的信息
mkdir创建目录1: mkdir dir/
2: mkdir -p -m 777 dir/
创建新目录 dir/
-p: 允许创建目录及子目录
-m: 创建指定权限的目录
mv移动或重命名文件1: mv file1 file2
2: mv file dir/
1:file1 名字为 file2
2:file 移动到 dir/
pwd显示当前路径pwd显示当前路径
ps查看系统进程信息ps -ef 或者 ps ajx查看系统进程信息
rm删除文件1: rm file
2: rm dir/ -r
1: 删除 file
2: 递归地删除 dir/
sort排序sort filefile 排序后打印到屏幕
tar归档或释放
压缩或解压
**1: tar cjf a.tar.bz2
2: tar xjf a.tar.bz2
3: tar czf a.tar.gz
4: tar xzf a.tar.gz
1: 将所有文件压缩为 .bz2
2: 解压 .bz2 文件
3: 将所有文件压缩为 .gz
4: 解压 .gz 文件
uniq去掉相邻重复的行uniq file去除 file 中相邻的重复行
wc计数器wc a计算 a 的行、单词和字符
which查找所在路径which ls显示命令 ls 所在路径

二、命令详解

在这里插入图片描述

1. sed

​ awk 是一种用于处理文本的编程语言工具,他扫描文件中的每一行,查找与命令行中所给定内容相匹配的模式,如果发现匹配内容,则进行下一个编程步骤。如果找不到匹配内容,则继续处理下一行。

语法:
sed [-hnV][-e<script>][-f<script文件>][文本文件]

参数说明:

-e <script>或--expression=<script> 以选项中指定的script来处理输入的文本文件。

-f <script文件>或--file=<script文件> 以选项中指定的script文件来处理输入的文本文件。

-h 或--help 显示帮助。

-n 或--quiet或--silent 仅显示script处理后的结果。

-V 或--version 显示版本信息。

动作说明:

a :新增, a 的后面可以接字串,而这些字串会在新的一行出现(目前的下一行)~

c :取代, c 的后面可以接字串,这些字串可以取代 n1,n2 之间的行!

d :删除,因为是删除啊,所以 d 后面通常不接任何咚咚;

i :插入, i 的后面可以接字串,而这些字串会在新的一行出现(目前的上一行);

p :打印,亦即将某个选择的数据印出。通常 p 会与参数 sed -n 一起运行~

s :取代,可以直接进行取代的工作哩!通常这个 s 的动作可以搭配正规表示法!例如 1,20s/old/new/g 就是啦!

元字符集:

^ 指定行的开始

$ 指定行的结尾

. 匹配一个非换行符的字符

* 匹配零个或多个字符

[] 匹配指定字符内的任一字符

[^] 匹配不在指定字符内的任一字符

.. 保存已匹配的字符

&  s/super/YY&yy/   super变成YYsuperyy   & 保存搜索字符用来替换其他字符

\< 词首定位符 /\<my/  匹配包含以my开头的单词的行

\> 词尾定位符 /my\>/  匹配包含以my结尾的单词的行

x\{m\} 连续m个x /9\{5\}/ 匹配包含连续5个9的行

x\{m,\} 至少m个x /9\{5,\}/  匹配包含至少连续5个9的行

x\{m,n\} 至少m个,但不超过n个x /9\{5,7\}/  匹配包含连续5到7个9的行

2. PS1

PS1命令是linux系统中的一个全局变量,用于定义用户命令行的字符显示。

# 命令行中可以通过命令获得PS1结果
echo $PS1
# 默认值为
'[\u@\h \W]\$ '

PS1默认值对应命令行样式为:
sevan@sevan-vm:~$

Linux系统中PS1命令详解

3. pwd & PWD 命令

一句话解释: 都指某个进程运行时所在的 目录.

$PWD 是个系统变量
pwd 是linux 自带的命令.  全称: pathname of the current working directory.
cwd: 不是系统自带的命令, 但是属于 系统的属性 .   全称: current working directory .  
不但在 /proc/{id} 这个目录下可以看到cwd, 在很多其他的编程语言中也可以看到( 例如grunt )
有时候 pwd$PWD  给出的结果不同.

4. echo命令

显示转义字符
选项:

-n 不换行输出
-e 启用反斜线转义解释
-E 禁用反斜线转义解释(默认)

5. useradd

创建用户并设置密码的命令:useradd -m -g 组名 新建的用户名 & passwd 用户名

删除用户的命令:userdel -r 用户名
在这里插入图片描述
在这里插入图片描述

  • -c<备注>  加上备注文字。备注文字会保存在passwd的备注栏位中。
  • -d<登入目录>  指定用户登入时的起始目录。
  • -D  变更预设值.
  • -e<有效期限>  指定帐号的有效期限。
  • -f<缓冲天数>  指定在密码过期后多少天即关闭该帐号。
  • -g<群组>  指定用户所属的群组。
  • -G<群组>  指定用户所属的附加群组
  • -p, --password PASSWORD 加密后的新账户密码
  • -m  制定用户的登入目录。
  • -M  不要自动建立用户的登入目录
  • -n  取消建立以用户名称为名的群组.
  • -r  建立系统帐号。
  • -s   指定用户登入后所使用的shell。
  • -u  指定用户ID。

6. grep

​ 在文件里查找字符串。例如要在 example.c 中查找字符串”abc”,则可以写成:

sun@ubuntu:~$ grep “abc” example.c
sun@ubuntu:~/100ask_imx6ull-sdk/Linux-4.9.88/drivers/char$ grep "module_init" * -rn //*代表在当前文件夹下所有的文件中搜索

下面是 grep 常用的选项:

-r :如果有子目录,则递归地查找。
-w :严格匹配指定的单词(比如指定查找”apple”,”appletree”将被剔除)
-n :打印行号
-H :打印文件名

例如,递归地在/opt/src 下查找所有包含单词”apple”的.c 文件,并打印出含有该单词的文件名称和该单词在文件中的行号,命令是:

vincent@ubuntu:~$ grep “apple” /opt/src/*.c -rwnH

我们通常需要查找某一类文件,再在这些文件中查找我们需要的字符串或者单词,这时我们可以将 find 和 grep 命令通过管道‘|’连接起来一起用,实现更加强大的功能,比如:要在/opt/src 的所有普通文件中查找单词”apple”,要求剔除像”appletree”这样的单词:

vincent@ubuntu:~$ find /opt/src -type f | xargs grep “apple” -wnH

xargs 代表 find 的输出作为 grep 的参数(否则 grep 只会在 find 找出来的文件列表名称中查找”apple”,而不会进入文件内部查找)。

grep  [选项]  “模式” [文件]
其中常用的选项参数有:
-E :开启扩展(Extend)的正则表达式。  
-i :忽略大小写(ignore case)。   
-v :反过来(invert),只打印没有匹配的,而匹配的反而不打印。   
-n :显示行号   
-w :被匹配的文本只能是单词,而不能是单词中的某一部分,如文本中有woman,而我搜寻的只是man,就可以使用-w选项来避免匹配woman   
-c :显示总共有多少行被匹配到了,而不是显示被匹配到的内容,注意如果同时使用-cv选项是显示有多少行没有被匹配到。   
-o :只显示被模式匹配到的字符串。   
--color=auto :将匹配到的内容以颜色高亮显示。   
-A  n:显示匹配到的字符串所在的行及其后n行,after   
-B  n:显示匹配到的字符串所在的行及其前n行,before   
-C  n:显示匹配到的字符串所在的行及其前后各n行,context 

man grep的时候有一个-P,文档上的英文:

man grep的时候有一个-P,文档上的英文:

-P, --perl-regexp

              Interpret PATTERN as a Perl regular expression.  This is highly experimental and grep -P may warn of  nimplemented features.

这意思是,-P 可以让grep使用perl的正则表达式语法,因为perl的正则更加多元化,能实现更加复杂的场景。

最典型的用法是,匹配指定字符串之间的字符。 比如,我们想在一句话(Hello,my name is aming.)中匹配中间的一段字符串(my name is) 可以这样写正则表达式。

echo "Hello, my name is aming." | grep -P '(?<=Hello, ).*(?= aming.)'

如果只需要匹配到的部分,还可以加上-o选项

echo "Hello, my name is aming." | grep -P -o '(?<=Hello, ).*(?= aming.)'
  • 判断文件中是否包含字符串

grep -wq “hello world” a.txt && echo “contain”||echo “not contain”

说明:

-w 全匹配某一列

-q 不打印信息

#install git
if (echo "${install_software_list[@]}" | grep -wq "git");then
	apt-get -y install git && echo -e "${BLUE_COLOR}git install completed.${END_COLOR}"
fi

7. tail

tail命令是linux中一个很实用的应用命令,该命令可以显示一个或多个文件或管道数据的最后一部分。tail命令最常见的用途之一是监视和分析随时间变化的日志和其他文件,通常与grep等其他工具结合使用。

7.1 tail命令语法

首先我们了解一下tail命令的语法,格式如下:

tail [OPTION]... [FILE]...
  • OPTION - tail命令可以使用的选项,可以参看tail options这里。
  • FILE - 零个或多个输入文件名。 如果未指定文件,或者当文件为-时,tail将读取标准输入。

7.2 如何使用tail命令

如果不使用任何选项,tail命令将以最简单的形式显示最后10行。

tail filename.txt

7.3 显示指定数量的行

如果要显示指定文件中指定行数内容,我们可以使用-n (--lines)选项指定要显示的行数,命令格式如下:

tail -n <NUMBER> filename.txt

您也可以省略字母n,而只使用连字符(-)和数字(它们之间没有空格)。

要显示名为filename.txt的文件的最后50行,请使用:

tail -n 50 filename.txt

下面的命令将和上面的命令执行效果一样。

tail -50 filename.txt

7.4 显示指定数量的字节

显示指定数量文件内容可以使用-c (--bytes)选项,命令格式如下:

tail -c 500 filename.txt

您还可以在数字后面使用乘数后缀来指定要显示的字节数。 b乘以512,kB乘以1000,K乘以1024,MB乘以1000000,M乘以1048576,依此类推。

tail -c 2k filename.txt

7.5 查看文件中的更改

要监视文件中的更改,请使用-f(--follow)选项:

tail -f filename.txt

此选项对于监视日志文件特别有用。 例如,要显示/var/log/nginx/error.log文件的最后10行,并监视文件中的更新,请使用:

tail -f /var/log/nginx/error.log

要在查看文件时中断tail命令,请按Ctrl + C

要在重新创建文件时继续监视文件,请使用-F选项。

tail -F filename.txt

tail命令跟随旋转的日志文件时,此选项很有用。 与-F选项一起使用时,tail命令将在文件再次可用后立即重新打开它。

7.6 同时显示多个文件

如果提供了多个文件作为tail命令的输入,它将显示每个文件的最后十行。

tail filename1.txt filename2.txt

您可以使用与显示单个文件时相同的选项。 此示例显示文件filename1.txtfilename2.txt的最后20行:

tail -n 20 filename1.txt filename2.txt

7.7 结合其他命令使用tail

通过使用管道将标准输出从其他实用程序重定向到其他实用程序,可以将tail命令与其他命令结合使用。

例如,要监视apache访问日志文件并仅显示包含IP地址192.168.42.12的行,可以使用:

tail -f /var/log/apache2/access.log | grep 192.168.42.12

以下ps命令将显示按CPU使用率排序的前十个正在运行的进程:

ps aux | sort -nk +3 | tail -5

tail 命令是head命令`的补充;

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

Engineer-Jaylen_Sun

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

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

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

打赏作者

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

抵扣说明:

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

余额充值