bash shell基础命令

请添加图片描述

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

第一条目录信息解析如下
请添加图片描述
其中文件类型包括:

  • 目录:d
  • 文件:-
  • 链接文件:l
  • 字符设备:c
  • 块设备:b

文件权限:rwxrwxr-x为775

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.mzph.cn/news/623777.shtml

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

相关文章

【外汇天眼】误入假冒Ctrl Investments无法出金,投资者:太相信网友了!

在当下这个互联网迅速发展的时代&#xff0c;各类交友类APP成为人们拓展社交圈的新渠道。一方面这样的交友软件在满足了用户基础的社交要求&#xff0c;另一方面网络世界所交往的朋友能给用户带来的神秘感和新鲜感&#xff0c;所以导致一部分年轻人离不开这些交友软件。然而&am…

Python 两种多值参数

有时可能需要一个函数中处理的参数的个数是不确定的&#xff0c;就需要使用多值参数 参数名前加上*&#xff0c;代表可以接收元组参数名前加上**&#xff0c;代表可以接收字典 代码&#xff1a; def demo(*args, **kwargs):print(args)print(kwargs)demo(1, 2, 3, 4, 5, nam…

两个数组的交集 II

题目链接 两个数组的交集 II 题目描述 注意点 返回结果中每个元素出现的次数&#xff0c;应与元素在两个数组中都出现的次数一致&#xff08;如果出现次数不一致&#xff0c;则考虑取较小值&#xff09;可以不考虑输出结果的顺序 解答思路 使用哈希表存储nums1中的元素及出…

“语言服务40人论坛2023年年会”在北京举行

为充分发挥区域合作优势&#xff0c;深度推进翻译专业学位研究生培养模式和路径建设&#xff0c;提升翻译人才培养质量&#xff0c;推动京津冀地区教育协同发展&#xff0c;为中国高质量发展提供语言服务智慧和方案&#xff0c;1月13日至14日&#xff0c;“语言服务40人论坛202…

2.IHRM人力资源 - 登录

一、登录页结构与表单开发 我们要实现的登录界面 目前的登录界面 1.1 登录页结构 复制下面的代码到views/login/index.vue页面下 <template><div class"login-container"><div class"logo"/><div class"form"><h1&…

CANFD数据记录仪在新能源汽车复杂路测下的应用

CANFD数据记录仪在新能源汽车复杂路测下的应用 汽车制造商在生产预批量阶段的耐久性测试中,为了检测潜在故障,必须让车辆在严酷的路况和环境下接受测试。为确保能回溯故障发生的现场情况,我们需要对测试数据精准记录与储存。这些数据是新车型优化迭代的关键,也是确保产品质量的…

【2023我的编程之旅】系统学习C语言easyx图形库心得体会

目录 引言 C语言基础知识回顾 easyx图形库介绍 如何快速学习easyx图形库 学习笔记积累 学习成果展示 学习拓展 总结 引言 首先说一下我为什么要学习C语言easyx图形库。我接触C语言easyx图形库是在我今年一月份的时候&#xff0c;也是机缘巧合之下偶然在B站上看到了鸣人…

C++力扣题目669--修剪二叉搜索树

给你二叉搜索树的根节点 root &#xff0c;同时给定最小边界low 和最大边界 high。通过修剪二叉搜索树&#xff0c;使得所有节点的值在[low, high]中。修剪树 不应该 改变保留在树中的元素的相对结构 (即&#xff0c;如果没有被移除&#xff0c;原有的父代子代关系都应当保留)。…

Win10不用U盘重装系统教程

在Win10电脑中&#xff0c;用户想重装电脑系统&#xff0c;但是自己没有U盘&#xff0c;想知道不用U盘要怎么完成Win10系统的重装&#xff1f;接下来小编给大家介绍Win10系统不用U盘重装的步骤&#xff0c;帮助大家轻轻松松完成系统Win10的重新安装&#xff0c;体验Win10系统的…

CF1446C Xor Tree 题解 DP Trie树

Xor Tree 传送门 题面翻译 给定你一个非负整数序列 a a a&#xff0c;保证其中每个数两两不同。 对于每个 a i a _ i ai​&#xff0c;它会向 j ≠ i j \ne i ji 且 a i ⊕ a j a_i\oplus a_j ai​⊕aj​&#xff08; ⊕ \oplus ⊕ 代表异或&#xff09;最小的 a j a…

React18-树形菜单-递归

文章目录 案例分析技巧通信展示效果实现代码技巧点技巧点 Refer to 案例分析 https://github.com/dL-hx/manager-fe/commit/85faf3b1ae9a925513583feb02b9a1c87fb462f7 从接口获取城市数据,渲染出一个树形菜单 要求: 可以展开和收起 技巧 学会递归渲染出一个树形菜单, 并点击后…

gramine运行nodejs例程

首先&#xff0c; 修改js例程代码&#xff1a; const { Web3 } require(web3); const rpcURL "https://sepolia.infura.io/v3/40b89bc0f5584056b19626b521ee5874"; const web3 new Web3(rpcURL); const address "0xde51E698b4585Af1C8322cc084ABbdbDcfe533…

C++力扣题目450--删除二叉搜索树中的节点

给定一个二叉搜索树的根节点 root 和一个值 key&#xff0c;删除二叉搜索树中的 key 对应的节点&#xff0c;并保证二叉搜索树的性质不变。返回二叉搜索树&#xff08;有可能被更新&#xff09;的根节点的引用。 一般来说&#xff0c;删除节点可分为两个步骤&#xff1a; 首先…

Generalized Focal Loss论文个人理解

论文地址&#xff1a;Generalized Focal Loss: Towards Efficient Representation Learning for Dense Object Detection 论文解决问题 研究人员最近更加关注边界框的表示(representation)及其定位质量估计&#xff08;LQE&#xff0c;本论文中指的是IoU score&#xff09;&a…

MtimeMtimecmp

Mtime: 实时time计数器&#xff0c;可读可写&#xff1b;mtime必须按照一个固定的频率递增&#xff1b;如果count overflow了&#xff0c;则mtime的值需要卷绕&#xff1b;对于32/64的系统来说&#xff0c;mtime的值都是64bits的&#xff1b; 与mtime对应的&#xff0c;还有一…

项目中使用iframe引入html 解决路由错乱问题以及父子组件传值调用方法

iframe与外部之间传值 父组件 <iframeid"iframe"src"luckysheet/index.html"frameborder"0"scrolling"no"style"width: 100%; height: 60vh; border: 0"/>const frame document.getElementById(iframe);frame.onloa…

Python综合练习之图表

文章目录 文件目录如下图标效果timeline_bar_with_graphic.htmltable_base.html articles.jsonarticlesData.pyarticlesEchartsEntity.pyarticlesEntity.py Python学习了约一个月的时间&#xff0c;这是一篇综合练习的文章。主要做的内容是通过封装对象、实现抽象方法生成统计图…

不可预测的市场中,为何有人持续胜出?

为什么经济学家和证券分析师难以预测经济或股价走势&#xff0c;而少数投资大师却能几十年持续复利&#xff1f;这两个问题看似矛盾&#xff0c;既然无法预测&#xff0c;为何又能产生确定性的赚钱结果呢&#xff1f; 有人认为这是因为幸存者偏差。然而&#xff0c;三十年以上连…

优优嗨聚集团:债务逾期,如何应对与解决?

在现代社会&#xff0c;债务问题已成为越来越多人面临的难题。债务逾期不仅会给个人带来巨大的经济压力&#xff0c;还会影响个人信用记录&#xff0c;甚至可能引发法律纠纷。那么&#xff0c;当债务逾期时&#xff0c;我们应该如何应对与解决呢&#xff1f; 一、了解债务情况 …

C# ObjectArx 绘制表格并设置单元格合并

第一行默认是标题&#xff0c;可设置行【RowType】进行设置类型 Document doc Application.DocumentManager.MdiActiveDocument;using (Transaction tr doc.TransactionManager.StartOpenCloseTransaction()){BlockTable bt tr.GetObject(doc.Database.BlockTableId, OpenMo…