bash shell基础命令

news2024/11/20 11:28:11

请添加图片描述

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)
#命令名加简短描述
NAME
       cp - copy files and directories
#命令语法
SYNOPSIS
       cp [OPTION]... [-T] SOURCE DEST
       cp [OPTION]... SOURCE... DIRECTORY
       cp [OPTION]... -t DIRECTORY SOURCE...
#命令一般性描述
DESCRIPTION
       Copy SOURCE to DEST, or multiple SOURCE(s) to DIRECTORY.

       Mandatory arguments to long options are mandatory for short options too.

       -a, --archive
              same as -dR --preserve=all

       --attributes-only
              don'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-contents
              copy 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)

NAME
       rename, renameat, renameat2 - change the name or location of a file

SYNOPSIS
       #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 >= 200809L
           Before glibc 2.10:
               _ATFILE_SOURCE
       renameat2():
           _GNU_SOURCE

 Manual 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.coloradmin.cn/o/1384234.html

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

相关文章

WorkPlus领先企业即时通信软件,提升团队沟通效率的利器

在企业工作中&#xff0c;高效沟通是推动团队协作和工作效率的关键。而企业即时通信软件成为了实现高效沟通的利器。作为一款领先的企业即时通信软件&#xff0c;WorkPlus以其卓越的性能和独特的功能&#xff0c;提升团队沟通效率&#xff0c;助力企业实现高效协作。 为什么选择…

Netty-Netty实现自己的通信框架

通信框架功能设计 功能描述 通信框架承载了业务内部各模块之间的消息交互和服务调用&#xff0c;它的主要功能如下&#xff1a; 基于 Netty 的 NIO 通信框架&#xff0c;提供高性能的异步通信能力&#xff1b; 提供消息的编解码框架&#xff0c;可以实现 POJO 的序列化和反…

QT上位机开发(usb设备访问)

【 声明&#xff1a;版权所有&#xff0c;欢迎转载&#xff0c;请勿用于商业用途。 联系信箱&#xff1a;feixiaoxing 163.com】 利用usb接口访问底层下位机&#xff0c;这是一种很常见的方式。目前比较简单的做法有两种&#xff0c;一种是usb转串口&#xff0c;另外一种是利用…

【期末考试】数据库综合复习宝典

目录 第一章 数据库系统概述 第二章 关系代数 第四章 关系数据库理论 第五章 数据库设计 第六章 数据库管理系统 第八章 事务管理 第一章 数据库系统概述 1.1三级模式 ①外模式&#xff1a;它为特定的应用程序或用户群体提供了一个数据视图&#xff0c;这个视图是独立于…

Qt编译OpenCV

1.CMake下载安装 官网地址&#xff1a;CMake - Upgrade Your Software Build System &#xff08;1&#xff09;下载后双击安装 &#xff08;2&#xff09;进入安装界面&#xff0c;点击【Next】 &#xff08;3&#xff09;同意协议&#xff0c;点击【Next】 &#xff08;4&a…

illustrator脚本 018 自动角线-1

这是一个自动加角线的脚本,来源于网络。 运行方式,先选择对象再执行脚本,无对话框。脚本不在好坏,你觉得对你有用最重要。 脚本中部分可修改选项: //初始化自定义标线的长度,宽度,离岸,出血等参数,可自行修改 lw=0.1*2.834646; //标线宽度 0.1 mm od=3*2.834646; //…

嵌入式软件开发人员有必要学习系统移植的知识吗?【ppt获取见文末】

《从零开始学ARM》的配套视频说明 为了让粉丝更好的学习我的新书里面的知识&#xff0c; 一口君特地录制了配套学习视频&#xff0c; 《从0学ARM第一期》 《从0学ARM第一期》 视频已经免费发布在B站&#xff0c; 而书中除了ARM汇编、裸机开发等知识&#xff0c;还涉及到…

HuiYong.Online 私有化博客系统

HuiYong.Online 私有化博客系统 一站式支持MarkDown、Drawio、XMind 免费、简单、强大... 用思维导图、流程图、写文章、做笔记、记录生活;搭建自己 / 组织 / 公司的知识储备系统;这里就是你所寻找的。 链接 官网&#xff1a;https://huiyong.onlineGithub&#xff1a;http…

【Docker】centos中及自定义镜像,并且上传阿里云仓库可提供使用

&#x1f389;&#x1f389;欢迎来到我的CSDN主页&#xff01;&#x1f389;&#x1f389; &#x1f3c5;我是平顶山大师&#xff0c;一个在CSDN分享笔记的博主。&#x1f4da;&#x1f4da; &#x1f31f;推荐给大家我的博客专栏《【Docker】centos中及自定义镜像&#xff0c;…

【DB】MySQL版本5.7和8的区别,以及升级的注意事项

文章目录 1、MySQL版本5.7和8的区别2、MySQL 5.7升级8 1、MySQL版本5.7和8的区别 在数据库管理系统中&#xff0c;MySQL是一个广泛使用、开源的解决方案。它提供了强大的功能&#xff0c;同时具有优秀的性能和可扩展性。 MySQL 5的发布于2005年&#xff0c;在MySQL数据库的发…

配置CentOS系统以支持静态HTTP服务

CentOS是一个流行的Linux发行版&#xff0c;广泛应用于服务器环境。要配置CentOS系统以支持静态HTTP服务&#xff0c;您可以按照以下步骤进行操作&#xff1a; 安装Web服务器软件&#xff1a;CentOS自带了Apache HTTP服务器软件&#xff0c;您可以使用以下命令安装它&#xff1…

17_网络编程

文章目录 网络数据传输的基本原理UDP发送端步骤接收端步骤DatagramSocketDatagramPacket举例版本1&#xff1a;发送端发送消息,接收端接收并打印版本2&#xff1a;创建一个NetworkUtils工具类优化版本1版本3&#xff1a;发送端接收端相互发送版本4&#xff1a;使用多线程 TCP客…

SOLID 原则

单一功能原则 单一功能原则&#xff08;Single responsibility principle&#xff09;规定每个类都应该有一个单一的功能&#xff0c;并且该功能应该由这个类完全封装起来。所有它的&#xff08;这个类的&#xff09;服务都应该严密的和该功能平行&#xff08;功能平行&#x…

【GitHub项目推荐--13 个 Python 学习资源】【转载】

近些年&#xff0c;人工智能应用铺天盖地。人脸识别、老照片复活、换脸等应用都得益于人工智能算法。 许多人工智能算法封装的框架基于 Python 语言&#xff0c;这也导致了 Python 的热度只增不减。 Python 简单易学&#xff0c;根据 2020 年 StackOverflow 开发者调查报告显…

Spring boot - Task Execution and Scheduling @Async

SpringBoot的任务执行器 Spring Boot通过auto-configuration机制自动创建了任务执行器Task Execution&#xff0c;因此在SpringBoot项目中&#xff0c;你不需要任何配置、也不需要自己创建Task Execution就可以直接使用它。 Spring Boot通过auto-configuration机制创建的任务…

学会这个技巧,制作电子杂志SOEASY

​电子杂志是一种非常流行的传播方式&#xff0c;它能够以更加生动、直观的方式展示你的品牌和产品。通过电子杂志&#xff0c;你可以将文字、图片、视频等多种元素有机地结合起来&#xff0c;创造出令人难忘的视觉效果。 如果你想制作一本电子杂志&#xff0c;但不知道从何入…

Apache POI 导出Excel报表

大家好我是苏麟 , 今天聊聊Apache POI . Apache POI 介绍 Apache POI 是一个处理Miscrosoft Office各种文件格式的开源项目。简单来说就是&#xff0c;我们可以使用 POI 在 Java 程序中对Miscrosoft Office各种文件进行读写操作。 一般情况下&#xff0c;POI 都是用于操作 E…

相对原子质量的定义是什么,为什么要引入相对原子质量,相对原子质量是一个比值吗,单位是1吗?和原子实际质量的关系。

问题描述&#xff1a;相对原子质量的定义是什么&#xff0c;为什么要引入相对原子质量&#xff0c;相对原子质量是一个比值吗&#xff0c;单位是1吗&#xff1f;和原子实际质量的关系。 问题解答&#xff1a; 定义&#xff1a;相对原子质量是指元素的一个原子质量相对于碳-12…

街机模拟游戏逆向工程(HACKROM)教程:[1]数据的存储与读取

简介 在计算机中&#xff0c;数据存储的介质一直在变化&#xff0c;从最早的穿孔纸带&#xff0c;到现在的固态硬盘。但存储的原理是一直没有变化的&#xff0c;在计算机中&#xff0c;我们所存储的数据&#xff0c;一直都是以二进制的形式被存储存在不同的介质中。 计算机用…

数据在AI任务中的决定性作用:以图像分类为例

人工智能的学习之路非常漫长&#xff0c;不少人因为学习路线不对或者学习内容不够专业而举步难行。不过别担心&#xff0c;我为大家整理了一份600多G的学习资源&#xff0c;基本上涵盖了人工智能学习的所有内容。点击下方链接,0元进群领取学习资源,让你的学习之路更加顺畅!记得…