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

目录信息解析如下
在这里插入图片描述
每个文件的属性由左边第一部分的 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.mzph.cn/news/628053.shtml

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

相关文章

Python新年文字烟花简单代码

简单的Python新年烟花代码示例&#xff1a; import random import timedef create_firework():colors [红色, 橙色, 黄色, 绿色, 蓝色, 紫色]flashes [爆裂, 闪光, 旋转, 流星, 喷射]color random.choice(colors)flash random.choice(flashes)print(f"发射一枚{color…

redis之单线程和多线程

目录 1、redis的发展史 2、redis为什么选择单线程&#xff1f; 3、主线程和Io线程是怎么协作完成请求处理的&#xff1f; 4、IO多路复用 5、开启redis多线程 1、redis的发展史 Redis4.0之前是用的单线程&#xff0c;4.0以后逐渐支持多线程 Redis4.0之前一直采用单线程的主…

GUI编程(函数解析以及使用)

1.介绍 AWT&#xff08;Abstract Window Toolkit&#xff09;和Swing 是 Java 提供的用于创建图形用户界面&#xff08;GUI&#xff09;的类库。 AWT&#xff1a;AWT 是 Java 最早提供的 GUI 类库&#xff0c;它基于本地平台的窗口系统&#xff0c;使用操作系统的原生组件进行…

文件的创建时间可以修改吗,怎么改?

文件的创建时间可以修改吗&#xff0c;怎么改&#xff1f;文件的创建时间是由操作系统自动生成并记录的&#xff0c;通常情况下无法直接修改。创建时间是文件的属性之一&#xff0c;它反映了文件在文件系统中的生成时间。一旦文件被创建&#xff0c;其创建时间就被确定下来&…

Vulnhub-tr0ll-1

一、信息收集 端口收集 PORT STATE SERVICE VERSION 21/tcp open ftp vsftpd 3.0.2 | ftp-anon: Anonymous FTP login allowed (FTP code 230) |_-rwxrwxrwx 1 1000 0 8068 Aug 09 2014 lol.pcap [NSE: writeable] | ftp-syst: | STAT: | FTP …

分布式搜索——Elasticsearch

Elasticsearch 文章目录 Elasticsearch简介ELK技术栈Elasticsearch和Lucene 倒排索引正向索引倒排索引正向和倒排 ES概念文档和字段索引和映射Mysql与Elasticsearch 安装ES、Kibana安装单点ES创建网络拉取镜像运行 部署kibana拉取镜像部署 安装Ik插件扩展词词典停用词词典 索引…

Linux 内核大转变:是否将迈入现代 C++ 的时代?

Linux开发者 H. Peter Anvin 在邮件列表中重启了关于 Linux内核C代码转换为C的讨论&#xff0c;并陈述了自己的观点。说之前先看一下这个话题的历史背景。 早在2018年4月1日&#xff0c;Andrew Pinski提议将 Linux 内核源码转为 C&#xff0c;在文中写道之所以引入是由于以下优…

centos7配置时间同步网络时间

centos7配置时间同步网络时间 1、安装 NTP 工具。 sudo yum install -y ntp2启动 NTP 服务。 sudo systemctl start ntpd3、将 NTP 服务设置为开机自启动。 sudo systemctl enable ntpd4、验证 date

Xmind 网页端登录及多端同步

好久没用 Xmind 了&#xff0c;前几天登录网页端突然发现没办法登录了&#xff0c;总是跳转到 Xmind AI 页面。本以为他们不再支持网页端了&#xff0c;后来看提示才知道只是迁移到了新的网址&#xff0c;由原来的 xmind.works 现在改成了的 xmind.ai。又花费好长时间才重新登录…

JAVAEE——request对象(三)

1. request对象 1.1 知识点 &#xff08;1&#xff09;乱码问题的两种解决方式 &#xff08;2&#xff09;post和get提交的区别 &#xff08;3&#xff09;request接收同名参数的问题 1.2 具体内容 使用request接收参数 <%page contentType"text/html; charsetut…

探索2023年大模型与AIGC峰会:程序员的学习之旅与未来展望

在2023年的技术前沿&#xff0c;大模型与AIGC峰会无疑是一个备受瞩目的盛会。 作为程序员&#xff0c;你将从这次大会中学到什么&#xff1f;这次峰会将为你揭示哪些前沿科技趋势&#xff1f;让我们一起来探讨这个问题。 一、理解大模型与AIGC 大模型和AIGC是人工智能领域中两…

离线数据仓库-关于增量和全量

数据同步策略 数据仓库同步策略概述一、数据的全量同步二、数据的增量同步三、数据同步策略的选择 数据仓库同步策略概述 应用系统所产生的业务数据是数据仓库的重要数据来源&#xff0c;我们需要每日定时从业务数据库中抽取数据&#xff0c;传输到数据仓库中&#xff0c;之后…

x-cmd pkg | mermaid - 流程图、时序图等图表绘制工具

简介 mermaid-cli 是由 Mermaid 官方提供的命令行工具&#xff0c;用于将 Mermaid 语法的文本转换为 SVG / PNG / PDF。 Mermaid 是一个基于 JavaScript 的图表绘制工具&#xff0c;它使用简单的文本描述语法&#xff0c;就可以绘制出流程图、时序图、甘特图等多种图表。 首次…

C++标准学习--智能指针

shared_ptr和weak_ptr的配合使用是个问题。unique_ptr的使用场合似乎比较局限。 文章C 智能指针详解&#xff08;一&#xff09;——unique_ptr - 知乎 (zhihu.com) 介绍了unique_ptr的使用。它可以由shared_ptr转来&#xff0c;主要用到了std::move。 主要场景其中提到&#…

ES数据聚合

1.数据聚合 聚合&#xff08;aggregations&#xff09;可以让我们极其方便的实现对数据的统计、分析、运算。例如&#xff1a; 什么品牌的手机最受欢迎&#xff1f; 这些手机的平均价格、最高价格、最低价格&#xff1f; 这些手机每月的销售情况如何&#xff1f; 实现这些…

【JaveWeb教程】(24) Mybatis入门之Mybatis配置与SQL语句编写 详细代码示例讲解(最全面)

目录 Mybatis入门前言1. 快速入门1.1 入门程序分析1.2 入门程序实现1.2.1 准备工作1.2.1.1 创建springboot工程1.2.1.2 数据准备 1.2.2 配置Mybatis1.2.3 编写SQL语句1.2.4 单元测试 1.3 解决SQL警告与提示 Mybatis入门 前言 在前面我们学习MySQL数据库时&#xff0c;都是利用…

解决文库系统 本地转码 libreoffice中文乱码的问题(mkfontscale mkfontdir fc-cache -fv命令)

安装搭建好的文库系统在使用Linux系统libreoffice时&#xff0c;如果系统安装时没有安装中文字体库或者中文字体字库不全&#xff0c;将会导致无法正常生成和显示中文 文库系统中文乱码 转码问题处理好之后的效果&#xff1a; 现在中文显示就正常了 1、要查看系统中已经安…

Vue学习笔记3--全局事件总线

Vue学习笔记3—全局事件总线 1.全局事件总线可以实现任意组件间通信 X需具备的条件&#xff1a; 所有的组件都要能看见X可以调用$on $off $emitVue.prototype.x {a:1, b:2} 可以被所有组件看见VueComponent.protoype.proto Vue.prototype组件实例对象(vc)可以访问到Vue原型上…

Java重修第六天—面向对象3

通过学习本篇文章可以掌握如下知识 1、多态&#xff1b; 2、抽象类&#xff1b; 3、接口。 之前已经学过了继承&#xff0c;static等基础知识&#xff0c;这篇文章我们就开始深入了解面向对象多态、抽象类和接口的学习。 多态 多态是在继承/实现情况下的一种现象&#xf…

Python+Django+MySQL的图书馆管理系统【附源码,运行简单】

PythonDjangoMySQL的图书馆管理系统【附源码&#xff0c;运行简单】 总览 1、《图书馆管理系统》1.1 方案设计说明书设计目标需求分析工具列表 2、详细设计2.1 登录2.2 注册2.3 程序主页面2.4 图书新增界面2.5 图书信息修改界面2.6 其他功能贴图 3、下载 总览 自己做的项目&am…