基本的 bash shell 命令

发布于 2024-12-09 12:35:05 字数 5460 浏览 7 评论 0

1. 遍历目录

1.0 切换目录

destination 参数用以指定想切换到的目录名,如果没有为 cd 命令指定目标路径,它将切换到用户主目录。destination 参数可以用两种方式表示:一种是使用绝对文件路径,另一种是使用相对文件路径。

cd destination

1.1 绝对文件路径

绝对文件路径总是以正斜线 / 作为起始,指明虚拟文件系统的根目录。

该绝对文件路径指向 usr 目录所包含的 bin 目录下的用户二进制文件

/usr/bin

使用绝对文件路径可以清晰表明用户想切换到的准确位置。只需在 cd 命令后面指定相应的全路径名就可以进入到该目录中。

cd /usr/bin

1.2 pwd 命令

pwd 命令可以显示出 shell 会话的当前目录,这个目录被称为当前工作目录。

1.3 相对文件路径

相对文件路径允许用户指定一个基于当前位置的目标文件路径。

有两个特殊字符可用户相对文件路径中:

  • 单点符(.): 表示当前目录
  • 双点符(..): 表示当前目录的父目录
# 切换到上级目录下的 downloads 目录
cd ../downloads
# 必要时用户可以用多个双点符来向上切换目录
cd ../../etc
# 上述情况使用绝对路径更方便
cd /etc

2. 文件和目录列表

2.1 ls 命令

ls 命令最基本的形式会显示当前目录下的文件和目录。 特别注意: ls 命令输出的列表是按字母排序的(按列排序而不是按行排序)。

# 可以使用带-F 参数的 ls 命令轻松区分文件和目录。-F 参数在目录名后加了正斜线(/),在可执行文件的后面加星号(*)。
ls -F
# Linux 经常采用隐藏文件来保存配置信息。在 Linux 上,隐藏文件通常是文件名以点号开始的文件。这些文件并没有在默认的 ls 命令输出中显示出来,称其为隐藏文件。可以使用带-a 参数的 ls 命令将隐藏文件和普通文件以及目录一起显示出来。
ls -a
# -R 参数叫作递归选项,会列出当前目录下包含的子目录中的文件。
ls -F -R 或者 ls -FR  可以这样合并写
# -l 参数表示显示长列表,会产生长列表格式的输出,包含了目录中每个文件的更多相关信息。
ls -l
#-d 表示显示目录自身的属性,而不是目录中的内容
ls -d

2.2 过滤输出列表

ls 命令还支持在命令行中定义过滤器。这个过滤器就是一个进行简单文本匹配的字符串。

  • 问号 ? : 代表一个字符
  • 星号 * : 代表零个或多个字符
#只显示 my_test 文件的信息
ls -l my_test
#问号可用于过滤器字符串中替代任意位置的单个字符
ls -l my_te?t
#星号可匹配零个或多个字符
#匹配以 my 开头的文件
ls -l my*
#中括号表示一个字符位置并给出多个可能的选择。
#my_te[sy]t  表示 s 或者 y
#my_te[a-z]t  表示字母范围 a-z
ls -l my_te[sy]t
ls -l my_te[a-z]t
#可以使用感叹号(!) 将不需要的内容排除在外
ls -l my_te[!a]t

3. 处理文件

3.1 创建文件

#touch 命令用来创建空文件
touch test_one

3.2 复制文件

#cp 命令用来完成将文件和目录从一个位置复制到另一个位置。
#cp 命令需要两个参数:源对象和目标对象
#当 source(源对象) 和 destination(目标对象) 参数都是文件名时,cp 命令将源文件复制成一个新文件,并且以 destination 命名。
cp source(源对象) destination(目标对象)

#如果目标文件已经存在,cp 命令可能并不会提醒这一点。最好加上-i 选项,强制 shell 询问是否需要覆盖已有文件。
cp -i test_one test_two

#也可以将文件复制到现有目录中
cp -i test_one /home/download

#将 demo 目录中的所有文件复制到 demo2 目录中。demo2 目录可以不存在,它可以随着 cp -R 命令被创建。
cp -R demo/ demo2

#cp 命令中使用通配符,将所有以 test 结尾的文件复制到 demo 目录中
cp .test demo/

3.3 制表键自动补全(tab 键)

3.4 重命名文件

在 Linux 中,重命名文件称为移动。 mv 命令可以将文件和目录移动到另一个位置或重新命名。

#移动文件会将文件名从 demo 更改为 demos,因为 mv 只影响文件名。
mv demo demos

#mv 也可以用来移动文件的位置,将 test.txt 文件移动到 demo/目录下
mv test.txt demo/

#也可以使用 mv 命令移动文件位置并修改文件名称
#将 demo 目录下的 test.txt 文件移动到 demo2 目录下,并重命名为 test2.txt
mv /demo/test.txt /demo2/test2.txt

#移动整个目录及其内容,移动 demo 目录下所有文件和目录到 demo2 目录下
mv demo demo2

3.5 删除文件

#rm 命令用来删除文件,-i 参数提示是不是要真的删除该文件
#bash shell 中没有回收站,文件一旦删除就没法再找回。因此,在使用 rm 命令时,加入-i 参数是个好习惯。
rm -i test.txt

#使用通配符删除成组的文件
rm -i de?o

rm 命令相关参数:

  • -d:直接把欲删除的目录的硬连接数据删除成 0,删除该目录;
  • -f:强制删除文件或目录;
  • -i:删除已有文件或目录之前先询问用户;
  • -r 或-R:递归处理,将指定目录下的所有文件与子目录一并处理;
  • --preserve-root:不对根目录进行递归操作;
  • -v:显示指令的详细执行过程。

4. 处理目录

4.1 创建目录

#创建目录
mkdir demo

#同时创建多个目录和子目录,需要加入-p 参数
mkdir -p demo/demo_test

#删除目录(只能删除空目录,如果目录不为空需要先删除目录下的文件)
rmdir demo

#删除目录及其所有内容
rm -rf demo(危险)

5. 查看文件内容

5.1 查看文件类型

#查看文件是什么类型
file test.txt
#查看整个文件内容
cat test.txt

#-n 参数会给所有行加上行号
#-b 参数给有文本的行加上行号
#-T 参数可以禁止制表符出现
cat -n test.txt

more 命令会显示文本文件的内容,但会在显示每页数据之后停下来。可以使用空格键或回车键以逐行向前的方式浏览文本文件。浏览完后,按 q 键退出。

more test.txt

less 命令和 more 命令基本一样,一次显示一屏的文件文本,但是支持更堵哦得选项。less 命令能够识别上下键以及上线翻页键。

5.2 查看部分文件

#tail 命令会显示文件最后几行的内容。默认情况下,会显示文件的末尾 10 行。
tail test.txt

#-n 参数用来修改所显示的行数
#只显示文件的最后两行
tail -n 2 test.txt

#-f 参数是 tail 命令的一个突出特性。允许在其他进程使用该文件时查看文件的内容
#head 命令会显示文件开头的那些行的内容,默认显示前 10 行的文本。
head test.txt

#类似 tail 命令,head 也支持-n 参数。这两个命令都允许在破折号后面输入想要显示的行数
head -5 test.txt (显示前 5 行)

6. 监测程序

6.1 探查进程

当程序运行在系统上时,我们称之为进程。

ps 命令。默认情况下, ps 命令只会显示运行在当前控制台下的属于当前用户的进程。

ps
# -e 参数指定显示所有运行在系统上的进程
# -f 参数则扩展了输出
ps -ef
  • UID: 启动这些进程的用户
  • PID(Process ID): 程序的进程 ID
  • PPID: 父进程的进程号
  • C: 进程生命周期中的 CPU 利用率
  • STIME: 进程启动时的系统事件
  • TTY: 进程启动时的终端设备
  • TIME: 运行进程需要的累计 CPU 时间
  • CMD: 启动的程序名称

6.2 实时监测进程

#top 命令跟 ps 命令相似,能够显示进程信息,但它是实时显示的。

7. 处理数据文件

7.1 搜索数据

#grep 命令会在输入或指定的文件中查找包含匹配指定模式的字符的行
#在 file 文件中搜索能匹配模式 three 的文本
grep three file

#反向搜索(输出不匹配该模式的行),加-v 参数
grep -v three file

#显示匹配模式行的行号,加-n 参数
grep -n three file

#显示有多少行含有匹配的模式,加-c 参数
grep -c three file

#指定多个匹配模式,加-e 参数(同时匹配 three 和 two)
grep -e three -e two file

#正则匹配(搜索包含 t 或者 f 字符的匹配)
grep [tf] file

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。
列表为空,暂无数据

关于作者

小苏打饼

暂无简介

0 文章
0 评论
24 人气
更多

推荐作者

马化腾

文章 0 评论 0

thousandcents

文章 0 评论 0

辰『辰』

文章 0 评论 0

ailin001

文章 0 评论 0

冷情妓

文章 0 评论 0

    我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
    原文