bash shell基础命令(一)

news/2024/2/23 14:53:34/文章来源:https://blog.csdn.net/supernova_TOP/article/details/135540328

1.shell启动

shell提供了对Linux系统的交互式访问,通常在用户登录终端时启动。系统启动的shell程序取决于用户账户的配置。
/etc/passwd/文件包含了所有用户的基本信息配置,

$ cat /etc/passwd
root:x:0:0:root:/root:/bin/bash
...

例如上述root账户信息配置包含7个数据字段,字段之间用冒号分隔。每个字段的含义后续会展开介绍,其中最后一个字段指定了用户使用的shell程序,即/bin/bash。

2. shell提示符

登录终端后会看到shell提示符$,也是默认bash shell的提示符,它表示shell在等待用户输入命令。

3. bash手册

shell中使用man命令访问Linux系统的手册,man + [命令名]显示相应命令的手册页。
例如:使用man查询拷贝(copy)命令的介绍

$ man cp
CP(1)                                               User Commands                                               CP(1)
#命令名加简短描述
NAMEcp - copy files and directories
#命令语法
SYNOPSIScp [OPTION]... [-T] SOURCE DESTcp [OPTION]... SOURCE... DIRECTORYcp [OPTION]... -t DIRECTORY SOURCE...
#命令一般性描述
DESCRIPTIONCopy SOURCE to DEST, or multiple SOURCE(s) to DIRECTORY.Mandatory arguments to long options are mandatory for short options too.-a, --archivesame as -dR --preserve=all--attributes-onlydon't copy the file data, just the attributes--backup[=CONTROL]make a backup of each existing destination file-b     like --backup but does not accept an argument--copy-contentscopy contents of special files when recursive...#手动上下键滚动手册,h键查看帮助,空间键翻页,q键退出手册Manual page cp(1) line 1 (press h for help or q to quit)

man命令页支持关键词搜索,例如:

#我想查找renam(e)重命名命令手册
$ man -k renam
docker-container-rename (1) - Rename a container
docker-rename (1)    - Rename a container
dpkg-name (1)        - rename Debian packages to full package names
git-mv (1)           - Move or rename a file, a directory, or a symlink
lvrename (8)         - Rename a logical volume
mmove (1)            - move or rename an MSDOS file or subdirectory
mren (1)             - rename an existing MSDOS file
mv (1)               - move (rename) files
rename.ul (1)        - rename files
rename (2)           - change the name or location of a file
renameat (2)         - change the name or location of a file
renameat2 (2)        - change the name or location of a file
vgrename (8)         - Rename a volume group
zipnote (1)          - write the comments in zipfile to stdout, edit comments and rename files in zipfile

3.1 man手册解读

Linux手册页常用段名

描述
Name显示命令名和简短描述
Synopsis命令语法
Configuration命令配置信息
Description命令的一般性描述
Options命令选项描述
Exit Status命令的推出状态
Return Value命令的返回值
Errors命令的错误消息
Environment命令使用的环境变量
Files命令用到的文件
Versions命令的版本信息
Conforming To遵循的命令标准
Notes其他有帮助的资料
Bugs提交Bug的途径
Example命令的用法示例
Authors命令的开发人员信息
Copyright命令源码的版权信息
See Also与该命令类似的其他命令

如上手册页左上角和右上角CP(1)表示CP命令所在Linux的手册的第一节,为可执行程序或shell命令。
Linux手册页节

节号所涵盖的内容
1可执行程序或shell命令
2系统调用
3库调用
4特殊文件
5文件格式与约定
6游戏
7概览、约定及杂项
8超级用户和系统管理员命令
9内核例程(routine)

man支持查看命令特定节

$ man 2 rename
RENAME(2)                                     Linux Programmer's Manual                                     RENAME(2)NAMErename, renameat, renameat2 - change the name or location of a fileSYNOPSIS#include <stdio.h>int rename(const char *oldpath, const char *newpath);#include <fcntl.h>           /* Definition of AT_* constants */#include <stdio.h>int renameat(int olddirfd, const char *oldpath,int newdirfd, const char *newpath);int renameat2(int olddirfd, const char *oldpath,int newdirfd, const char *newpath, unsigned int flags);Feature Test Macro Requirements for glibc (see feature_test_macros(7)):renameat():Since glibc 2.10:_POSIX_C_SOURCE >= 200809LBefore glibc 2.10:_ATFILE_SOURCErenameat2():_GNU_SOURCEManual page rename(2) line 1 (press h for help or q to quit)

4. 浏览Linux文件系统

Linux系统部分虚拟目录文件路径如下
请添加图片描述
由根目录(/)出发,访问其他目录,如上test.txt文件路径为/home/zhangsan/Doucuments/test.txt。
Linux文件通常存储在根驱动器中,而用户文件则存储在其他驱动器中。Linux会将根驱动器上一些特别的目录作为挂载点(将虚拟目录中分配额外存储设备的目录),其文件结构如下:
请添加图片描述
硬盘Disk2挂载在硬盘Disk1 /home目录。
Linux常见目录(基于FHS标准)及用途如下:

目录用途
/虚拟目录的根目录,通常不会在这里放置文件
/bin二进制文件目录,存放了很多用户级的GNU实用工具
/boot引导目录,存放引导文件
/dev设备目录,Linux在其中创建设备节点
/etc系统配置文件目录
/home主目录,Linux在其中创建用户目录
/lib库目录,存放系统和应用程序的库文件
/libname库目录,存放替代格式的系统和应用程序的库文件
/media媒介目录,可移动存储设备的常用挂载点
/mnt挂载目录,用于临时挂载文件系统的常用挂载点
/opt可选目录,存放第三方软件包
/proc进程目录,存放现有内核、系统以及进程相关的信息
/rootroot用户的主目录
/run运行目录,存放系统的运行时数据
/sbin系统二进制文件目录,存放很多管理级的GNU实用工具
/srv服务目录,存放本地服务的相关文件
/sys系统目录,存放设备、驱动程序以及部分内核特性信息
/temp临时目录,可以在其中创建和删除临时工作文件
/usr用户目录,一个次目录层级结构
/var可变目录,存放经常变化的文件,比如日志文件

4.1 遍历目录

Linux文件系统中,使用cd命令进行目录切换

$ cd / 或 cd		#切换到根目录
$ cd ~		#切换到当前用户目录
$ cd ..		#切换到上一级目录
$ cd -		#返回上一次目录

文件目录有两种表达方式:

  • 绝对路径:定义了在虚拟目录结构中,从根目录开始的准确位置。
  • 相对路径:基于当前位置的目标路径。

4.1.1 绝对路径

绝对路径总是以根目录(/)作为起始,可以准确的表明用户想切换到的确切位置,例如

$ cd /usr/bin

查看当前目录,可以使用pwd(print work direction)命令

$ pwd
/home/zhangsan

4.1.2 相对路径

相对路径不以/开头,而是以目录名或特殊字符起始,例如

$ cd bin/		#切换至当前目录下的bin文件下
bin$
$ cd ./bin		#切换当前目录(./)下的bin目录下
$ cd ..			#切换至当前目录的上一层目录
$ cd ../../test	#切换至上上一层目录下的test目录下

4.2 列出目录和文件

通过ls命令可以列出目录及文件,常见用法如下

$ ls			#ls命令基本形式显示当前目录下的文件和目录
bin  ohos$ ls -F		#以文件类型显示当前目录下的文件和目录;目录名后接/, 可执行文件名后接*
bin/  ohos/  test.txt my_script*$ ls -a		#显示当前目录下所有目录和文件,包含隐藏目录和文件
.	.bash_logout	.ccache	...
..	.cache	.config	...$ ls -R 		#显示当前目录所包含的子目录中的文件$ ls -l		#以长列表格式显示当前目录下的文件和目录
total 8	#该目录文件锁分配的总块数
drwxrwxr-x 2 zhangsan zhangsan 4096 Dec  5 09:57 bin
drwxr-xr-x 4 zhangsan zhangsan 4096 Dec  4 14:57 ohos
-rw-r--r-- 1 zhangsan zhangsan    0 Jan 14 00:48 test.txt

目录信息解析如下
在这里插入图片描述
每个文件的属性由左边第一部分的 10 个字符来确定:
在这里插入图片描述

Linux中常见的文件类型包括:

  • 普通文件(Regular file)- 用于存储文本、数据等信息。简写为 “-”(连字符)。
  • 目录文件(Directory file)- 用于存储其他文件和目录的信息。简写为 “d”。
  • 符号链接文件(Symbolic link file)- 指向另一个文件或目录的快捷方式。简写为 “l”。
  • 套接字文件(Socket file)- 用于进程间通信的文件。简写为 “s”。
  • 块设备文件(Block device file)- 用于访问存储设备(如硬盘、U盘等)的文件。简写为 “b”。
  • 字符设备文件(Character device file)- 用于访问系统设备(如键盘、鼠标等)的文件。简写为 “c”。
  • 管道文件(FIFO file)- 用于进程间通信的文件。简写为 “p”。

ls 后面可以根特殊字符或模式通配符进行过滤

$ ls test.txt		#显示当前目录下,文件或目录名为test.txt的文件或目录
test.txt$ ls test*			#显示当前目录下,以test开头的文件或目录
test.txt test/ test1.doc$ ls te[!s]t		#!将不需要的内容排除在外
tet/ teat.doc tebt.txt

4.3 处理文件

4.3.1创建文件

使用touch命令创建文件,文件以当前用户名作为该文件的属主

$ touch file.text
$ ls -l file.txt
-rw-r--r-- 1 zhangsan zhangsan 0 Jan 14 01:34 file.text$ touch 1.doc 2.doc			#touch支持同时创建多个文件
$ls -l *.doc
-rw-r--r-- 1 zhangsan zhangsan 0 Jan 14 01:36 1.doc
-rw-r--r-- 1 zhangsan zhangsan 0 Jan 14 01:36 2.doc

4.3.2 复制文件

使用cp命令复制/拷贝文件或目录,将文件或目录从一个路径复制到另外一个路径。

$ cp ./test.txt ../		#将当前目录下的test.txt拷贝至上一层目录

需要注意

  • 新路径的文件是一个全新的文件
  • 如果新路径已经存在该文件,cp会覆盖新路径的原文件,但不会提醒你,如需提醒可加上-i选项
$ cp -i ./test.txt ../test.txt
cp: overwrite '../test.txt'?		#y,覆盖;n,不覆盖
  • 目标路径为目录,则需要加/,否则表示文件
$ cp test.txt ./test			#若./test不存在,则会将原文件拷贝成目标文件名的文件
$ tree
.
├── test			#创建了新的test文件,内容与test.txt一致
└── test.txt$ cp test.txt ./test/		#若./test不存在,则报错
cp: cannot create regular file './test/': Not a directory$ cp test.txt ./test		#若./test目录存在,则将test.txt拷贝至./test目录下
$ tree -a
.
├── test
│   └── test.txt
└── test.txt

cp命令的其他常见用法:

$ cp ./test/test.txt .		# 将./test/test.txt文件拷贝至当前目录$ cp -R test/ test1/		#将test目录全部文件拷贝至test1目录中$cp -rf test/ test1/		#将test目录全部文件强制拷贝至test1目录中

4.3.3 链接文件

链接:是目录中指向文件真实位置的占位符。

4.3.3.1.软链接

软件链接是一个真实存在的文件,该文件指向存放在虚拟目录结构中的另一个文件,这两个以符号方式链接在一起的文件彼此的内容并不相同。
通过ln命令为一个文件创建链接文件

$ ln -s test.txt slink_test.txt
ls -l *test.txt
lrwxrwxrwx 1 zhangsan zhangsan 8 Jan 14 20:11 slink_test.txt -> test.txt
-rw-r--r-- 1 zhangsan zhangsan 0 Jan 14 01:45 test.txt

注意:slink_test.txt与test.txt的文件大小并不相同,着说明它们是两个完全不同的文件。

4.3.3.2 硬链接

硬链接创建的是一个独立的虚拟文件,包含了原文件的信息及位置,本质是同一个文件。

$ ln test.txt hlink_test.txt
$ ls -l *test.txt
-rw-r--r-- 2 huzhou huzhou 0 Jan 14 01:45 hlink_test.txt
-rw-r--r-- 2 huzhou huzhou 0 Jan 14 01:45 test.txt

注意硬链接不能跨文件系统,而软链接可以。

4.3.4 文件重命名

使用mv命令,进行文件重命名与文件移动相同,将文件或目录移动到另一个位置或者重新命名。

#将当前目录的test.txt重命名为test_bak.txt
$ mv ./test.txt ./test_bak.txt
$ ls -l test*.txt
-rw-r--r--  2 zhangsan zhangsan     0 Jan 14 01:45 test_bak.txt

mv命名只影响文件名

4.3.5 删除文件

使用rm命令删除文件或文件夹,常见使用方式如下:

$ rm ./test.txt			#删除当前目录下test.txt文件
$ rm -i ./test.txt		#删除文件前先询问是否真的要删除文件。
rm: remove regular empty file './test_.txt'?
$ rm -rf ./test			#强制删除当前目录下test文件夹(所有文件)
$ rm -rf test*.txt		#强制删除以test开头,.txt结尾的文件

4.3.6 创建目录

使用mkdir命令创建目录

$ mkdir test		#在当前目录下创建test文件夹
$ mkdir -p testA/testB/testC	#根据需要创建确实的父目录

4.3.7 删除目录

使用rm -r 或rm -R删除目录

$ rmdir test		# rmdir只能删除空目录
rmdir: failed to remove 'test': Directory not empty
$ rm -r test		#递归删除test目录内容

4.3.8 查看文件

4.3.8.1查看文件类型

使用file命令查看文件类型

$ file test.txt			#查看文件类型,test.txt是ASCII文本文件
test.txt: ASCII text$ file test/			#查看目录文件类型,test是目录
test/: directory$ file /usr/bin/ls
/usr/bin/ls: ELF 64-bit LSB shared object, x86-64, version 1 (SYSV), dynamically linked, interpreter /lib64/ld-linux-x86-64.so.2, BuildID[sha1]=2f15ad836be3339dec0e2e6a3c637e08e48aacbd, for GNU/Linux 3.2.0, stripped
4.3.8.2 查看文件内容

使用cat查看文件详细内容

$ cat test.txt			#查看test.txt文件所有内容
this is a test file$ cat -n test.txt		#查看test.txt文件所有内容,并显示行号1  this is a test file

对于大文件而言,cat在查看文件内容时会一闪而过,可以使用more命令(分页工具+),按页显示文本内容

$ more /etc/profile

more命令还有一个升级版本,即less,它比more提供了前后翻页和搜索等功能。

$ less /etc/profile

head命令,查看文件的最开始几行内容,默认10行

$ head ./test.txt		#查看./test.txt文件的前10行
$ head -n -2 ./test.txt	#查看./test.txt文件的前2行

tail命令,查看文件的最后几行内容,默认10行

$ tail /etc/profile			#查看/etc/profile文件的最后10行内容
$ tail -n 2 /etc/profile	#查看/etc/profile文件的最后2行内容

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.luyixian.cn/news_show_926046.aspx

如若内容造成侵权/违法违规/事实不符,请联系dt猫网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

多级缓存架构(二)Caffeine进程缓存

文章目录 一、引入依赖二、实现进程缓存1. 配置Config类2. 修改controller 三、运行四、测试 通过本文章&#xff0c;可以完成多级缓存架构中的进程缓存。 一、引入依赖 在item-service中引入caffeine依赖 <dependency><groupId>com.github.ben-manes.caffeine…

热门护眼台灯深度测评,飞利浦、米家、书客护眼灯哪家强?

或许大家已经留意到了&#xff0c;如今佩戴眼镜的儿童越来越多&#xff0c;近视的发生呈现出越来越低龄化的趋势。这一现象与电子设备的广泛应用密切相关。除了天生的近视倾向和频繁使用电子设备外&#xff0c;我们还可能忽略了光照问题对视力的潜在影响&#xff0c;护眼台灯的…

postman自动化接口测试

背景描述 有一个项目要使用postman进行接口测试&#xff0c;接口所需参数有&#xff1a; appid: 应用标识&#xff1b;sign&#xff1a;请求签名&#xff0c;需要使用HMACSHA1加密算法计算&#xff0c;签名串是&#xff1a;{appid}${url}${stamp}&#xff1b;stamp&#xff1…

肯尼斯·里科《C和指针》第6章 指针(5)概念的练习

肯尼斯里科《C和指针》第6章 指针&#xff08;1&#xff09;-CSDN博客 肯尼斯里科《C和指针》第6章 指针&#xff08;2&#xff09;-CSDN博客 肯尼斯里科《C和指针》第6章 指针&#xff08;3&#xff09;-CSDN博客 肯尼斯里科《C和指针》第6章 指针&#xff08;4&#xff09…

云原生分布式多模架构:华为云多模数据库 GeminiDB 架构与应用实践

文章目录 前言一、GeminiDB 总体介绍1.1、华为云数据库全景图1.2、GeminiDB 发展历程1.3、GeminiDB 全球分布情况 二、GeminiDB 云原生架构2.1、核心设计&#xff1a;存算分离&多模扩展2.2、存算分离&多模扩展核心优势2.3、高可用&#xff1a;秒级故障接管2.4、弹性扩展…

Angular系列教程之单向绑定与双向绑定

文章目录 介绍单向绑定双向绑定在自定义组件中实现双向绑定属性总结 介绍 在Angular开发中&#xff0c;数据的绑定是非常重要的概念。它允许我们将应用程序的数据与用户界面进行交互&#xff0c;实现数据的动态更新。在本文中&#xff0c;我们将探讨Angular中的两种数据绑定方…

jmeter-线程数设置为1,循环10次没问题,循环100次出现异常

一、多次尝试&#xff0c;发现出现异常的接口大致相同。 解决办法&#xff1a;在第一个出现异常的接口下添加超时时间&#xff0c;固定定时器&#xff1a;2000ms&#xff0c;再次运行就没问题了。 二、压力机自身存在的问题 1&#xff09;在网络编程中&#xff0c;特别是在短…

计算机三级(网络技术)——应用题

第一题 61.输出端口S0 &#xff08;直接连接&#xff09; RG的输出端口S0与RE的S1接口直接相连构成一个互联网段 对172.0.147.194和172.0.147.193 进行聚合 前三段相同&#xff0c;将第四段分别转换成二进制 11000001 11000010 前6位相同&#xff0c;加上前面三段 共30…

Debian(Linux)局域网共享文件-NFS

NFS (Network File system) 是一种客户端-服务器文件系统协议&#xff0c;允许多个系统或用户访问相同的共享文件夹或文件。最新版本是 NFS-V4&#xff0c;共享文件就像存储在本地一样。它提供了中央管理&#xff0c;可以使用防火墙和 Kerberos 身份验证进行保护。 本文将指导…

基于grpc-java开发的普通工程在k8s内部署多实例,如何实现客户端流量的负载均衡

文章目录 1. 前言2.实现方案要点3.具体实现步骤3.1 编写一个grpc服务端程序(详细实现步骤在此忽略&#xff0c;网上很多例子)3.2 编写grpc客户端程序&#xff0c;注意指定负载均衡策略和dns:///这个URI前缀&#xff0c;如下图所示3.3 在k8s中部署服务端和客户端3.3.1 服务端部署…

Spark---累加器和广播变量

文章目录 1.累加器实现原理2.自定义累加器3.广播变量 1.累加器实现原理 累加器用来把 Executor 端变量信息聚合到 Driver 端。在 Driver 程序中定义的变量&#xff0c;在Executor 端的每个 Task 都会得到这个变量的一份新的副本&#xff0c;每个 task 更新这些副本的值后&…

5个99%的人可能不知道的实用程序库!

前言 作为一名前端开发者,这些 JavaScript 库极大地提高了我的工作效率,如格式化日期、处理 URL 参数和调试移动网页。朋友们,我想和你们分享这些库。 1. 使用 “Day.js” 来格式化日期和时间 链接 作为开发者,我已经厌倦了在 JavaScript 中操作日期和时间,因为它太麻烦了。…

WDS服务企业安装Win10

计算机 操作系统 系统服务 软件安装 WDS Windows Sserver2019STD AD&#xff0c;DNS,DHCP,WDS WADK10.0 MDT2013 Update 1 Preview 1.基础配置 域控配置静态IP 域控制器&#xff1a;需要安装AD域服务&#xff0c;DHCP和DNS三个角色 默认配置 默认配置 安装完成我们将此…

微信小程序快速入门02(含案例)

&#x1f3e1;浩泽学编程&#xff1a;个人主页 &#x1f525; 推荐专栏&#xff1a;《深入浅出SpringBoot》《java项目分享》 《RabbitMQ》《Spring》《SpringMVC》 &#x1f6f8;学无止境&#xff0c;不骄不躁&#xff0c;知行合一 文章目录 前言一、页面导航1.…

HarmonyOS自学-Day5(使用List、Stack、RelativeContainer相关组件实现的小案例)

目录 文章声明⭐⭐⭐让我们开始今天的学习吧&#xff01;小案例 文章声明⭐⭐⭐ 该文章为我&#xff08;有编程语言基础&#xff0c;非编程小白&#xff09;的 HarmonyOS自学笔记&#xff0c;此类文章笔记我会默认大家都学过前端相关的知识&#xff0c;并常常以实现相关小案例…

2024“华数杯”(A题)|放射性废水扩散|国际大学生数学建模竞赛建模解析,小鹿学长带队指引全代码文章与思路

我是小鹿学长&#xff0c;就读于上海交通大学&#xff0c;截至目前已经帮200人完成了建模与思路的构建的处理了&#xff5e; 完整内容可以在文章末尾领取&#xff01; 这回带大家体验一下2024“华数杯”国际大学生数学建模竞赛呀&#xff01; 此题涉及到放射性废水从日本排放…

mac快捷创建文件的方法

mac快捷创建文件的方法 在macbook的使用中&#xff0c;当我们在桌面或访达等地方使用右键时&#xff0c;可以看到新建文件夹的选项&#xff0c;却怎么也找不到创建文件的选项。这种情况有时候会带来不便。这篇文章给大家带来一个非常简单解决这个问题。 下载 在App Store中搜索…

使用numpy处理图片——90度旋转

大纲 左旋转90度向右旋转90旋转180度 代码地址 在《使用numpy处理图片——镜像翻转和旋转》一文中&#xff0c;我们介绍了如何将图片旋转的方法。本文将使用更简单的方法旋转图片90度。 左旋转90度 import numpy as np import PIL.Image as Imagedata np.array(Image.open(t…

5.3 Verilog 带参数例化

5.3 Verilog 带参数例化 分类 Verilog 教程 关键词&#xff1a; defparam&#xff0c;参数&#xff0c;例化&#xff0c;ram 当一个模块被另一个模块引用例化时&#xff0c;高层模块可以对低层模块的参数值进行改写。这样就允许在编译时将不同的参数传递给多个相同名字的模块…

获取本地IP网卡信息

提示&#xff1a;文章写完后&#xff0c;目录可以自动生成&#xff0c;如何生成可参考右边的帮助文档 文章目录 前言一、获取本地IP&#xff0c;以及全部网卡信息总结 前言 一、获取本地IP&#xff0c;以及全部网卡信息 const os require(node:os) function getIPAdress(){/…