lv3 嵌入式开发-3 linux shell命令(权限、输入输出)

news2025/3/10 18:00:56

1 Shell概述

随着各式Linux系统的图形化程度的不断提高,用户在桌面环境下,通过点击、拖拽等操作就可以完成大部分的工作。 然而,许多Ubuntu Linux功能使用shell命令来实现,要比使用图形界面交互,完成的更快、更直接。

英文单词shell可直译为“贝壳”。“贝壳”是动物作为外在保护的一种工具。 可以这样认为,Linux中的shell就是Linux内核的一个外层保护工具,并负责完成用户与内核之间的交互

Shell是一个命令行解释器,它为用户提供一个向Linux内核发送请求以便运行程序的界面系统级程序。用户可以用Shell来启动、挂起、停止、编程等操作。  

Shell 是指一种应用程序,这个应用程序提供了一个界面,用户通过这个界面访问操作系统内核的服务。  Shell还是一个功能强大的编程语言、编写方面、调试方便、灵活性强。  

Shell是解释执行的脚本语言,在Shell中可以直接调用Linux系统命令。

补充:像C语言是需要编译器编译通过后才能执行,而Shell脚本可以一条条执行,直到报错。

1.1 Shell分类

1.2 查看当前系统的Shell

#查看当前系统有哪些shell

cat /etc/shells 

#查看当前是什么shell

echo $SHELL 

可以看到此ubuntu使用得是bash

#立即关机
linux@ubuntu:~$ sudo shutdown -h now
#立即重启
linux@ubuntu :~$ sudo shutdown -r now
linux@ubuntu :~$ sudo reboot now
#定时关机
linux@ubuntu:~$ sudo shutdown -h +45 “That is all, game over.”
#定时重启
linux@ubuntu:~$ sudo shutdow -r +60

2 权限相关命令

2.1 切换用户

用户,又称使用者,是指使用电脑或网络服务的人,通常拥有一个用户账号,并以用户名识别。用户有时也泛指没有充分技术经验的人。

Linux下分为:  超级用户(根目录、安装软件等)     普通用户

su 使用命令替换用户和组ID

命令参数:

-c  变更为帐号为 USER 的使用者并执行指令(command)后再变回原来使用者 

-l   重新 login 为该使用者一样,大部份环境变数(HOME SHELL USER等等)都是以该使用者(USER)为主,并且工作目录也会改变,如果没有指定 USER ,内定是 root,不加-l不会切换环境变量

--help 显示说明文件

--version 显示版本资讯

切换root用户

linux@linux:~$ su -l root
Password: 
su: Authentication failure

解决方法:可能没有创建root密码

2.2 设置用户密码

passwd  修改自己的密码

passwd  [username]  修改指定用户的密码 

linux@linux:~$ sudo passwd root
[sudo] password for linux: 
Enter new UNIX password: 
Retype new UNIX password: 
passwd: password updated successfully

exit退出用户

linux@linux:~$ su -l root
Password: 
root@linux:~# exit
logout
linux@linux:~$ 

 环境变量 包括shell类型 也会跟着用户切换,

linux@linux:~$ echo $PATH
/usr/local/bin:/usr/bin:/bin:/usr/local/games:/usr/games
linux@linux:~$ su -l root
Password: 
root@linux:~# echo $PATH
/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
root@linux:~# su root
root@linux:~# echo $PATH
/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games
root@linux:~# 

su什么都不加默认是root用户下

2.3 修改文件权限

查看文件权限ls -l

r代表读 w代表写 x代表可执行,一共有三组,最后一组没有可执行权限

第一组代表当前用户u

第二组代表同组(几个用户)

第三组代表其他用户

修改权限方法

字母法:chmod  (u g o a)   (+ – =)   (r w x)   (文件名)  

数字法:chmod + 数字组合 + 文件名

root@linux:~# touch file
root@linux:~# ls
file
root@linux:~# ls -l
total 0
-rw-r--r-- 1 root root 0 Sep  2 02:14 file
root@linux:~# chmod u+x file
root@linux:~# ls -l
total 0
-rwxr--r-- 1 root root 0 Sep  2 02:14 file
root@linux:~# chmod a+x file
root@linux:~# ls -l
total 0
-rwxr-xr-x 1 root root 0 Sep  2 02:14 file
root@linux:~# chmod g=rw file
root@linux:~# ls -l
total 0
-rwxrw-r-x 1 root root 0 Sep  2 02:14 file
root@linux:~# 
root@linux:~# chmod 777 file
root@linux:~# ls -l
total 0
-rwxrwxrwx 1 root root 0 Sep  2 02:14 file

3 基本命令

3.1 常用

pwd    //查看当前路径
ls     //查看目录
cd     //进入文件夹
mkdir  //创建目录
rmdir  //删除空目录
cp     //复制拷贝
mv     //移到重命名
touch  //创建文件

3.2 man命令 

man帮助信息:

NAME:命令的名称

SYNOPSIS:命令的语法格式

DESCRIPTION:命令的一般描述以及用途

OPTIONS:描述命令所有的参数或选项

SEE ALSO:列出联机帮助页中与该命令直接相关或功能相近的其他命令

BUGS:解释命令或其输出中存在的任何已知的问题或缺陷

EXAMPLES:普通的用法示例

AUTHORS:联机帮助页以及命令的作者

man使用

1   Executable programs or shell commands        

2   System calls (functions provided by the kernel)        

3   Library calls (functions within program libraries)        

4   Special files (usually found in /dev)        

5   File formats and conventions, e.g. /etc/passwd        

6   Games        

7   Miscellaneous (including macro packages and conventions), e.g. man(7), groff(7)        

8   System administration commands (usually only for root)        

9   Kernel routines [Non standard]

示例:

man 3 printf

man ls

 

 3.3 date命令

查看文档

man date
date - print or set the system date and time

date +%T
date +%Y/%m/%d
date +%H:%M
date +"当前时间为:%Y/%m/%d %H:%M:%S"
date +"三个月之后:%Y/%m/%d %H:%M:%S" -d "+3 month"
date +"三天前:%Y/%m/%d  %H:%M:%S" -d "-3 day"
date -s "20300111 19:43:44"

3.4 clear命令

clear - clear the terminal screen
ctrl + l(字母L的小写)

3.5 df命令

df - report file system disk space usage

常用参数:
	-a :列出所有文件系统
 	-k :列出磁盘的分配情况(KB)
 	-h :同-k, 但大小以G、M,K单位显示
    -l :仅列出本地文件系统

3.6 du命令

du - estimate file space usage

常用参数:
	-a :仅列出空闲的文件数 
 	-h :列出磁盘的使用情况(KB) 
 	-s :列出总的空闲空间(KB)

4 输入输出相关操作

4.1 输出命令

echo - display a line of text

       Echo the STRING(s) to standard output.

       -n     do not output the trailing newline  不带换行符

       -e     enable interpretation of backslash escapes 使能转译

       -E     disable interpretation of backslash escapes (default) 不使能转译

示例

linux@linux:~$ echo "hello world"  
hello world                              
linux@linux:~$ echo -n "hello world"
hello worldlinux@linux:~$ echo "hello world\n"
hello world\n
linux@linux:~$ echo -e "hello world\n"
hello world

linux@linux:~$ echo -E "hello world\n"
hello world\n
linux@linux:~$ a=5
linux@linux:~$ echo $a
5
linux@linux:~$ echo "$a"
5
linux@linux:~$ echo '$a'           //单引号原样输出
$a
linux@linux:~$ 

4.2 输入输出重定向

什么是重定向?

输入/输出重定向是改变shell命令或程序默认的标准输入/输出目标,重新定向到新的目标。

默认的输入输出位置是哪里?

linux中默认的标准输入定义为键盘,标准输出定义为终端窗口。

标准输入:(stdin,文件描述符为0):默认从键盘输入

标准输出:(stdout,文件描述符为1):默认输出到屏幕。

标准出错:(stderr,文件描述符为2):默认输出到屏幕。

为什么要使用重定向?

1.当屏幕输出的信息很重要时,而且希望保存重要的信息时

2.后台执行中的程序,不希望它干扰屏幕正常的输出结果时

3.系统的例行命令,例如定时任务的执行结果,希望他可以存下来

4.一些执行命令,我们已经知道他可能出现错误信息,想把它直接丢掉时

5.执行一个命令,可能报错和正确的输出并序,类似错误日志与标准正确日志需要分别输出至不同的文件。

输出重定向

 示例:

因为标准出错默认输出到屏幕,所以直接使用>无法写入log,这时候需要使用出错重定向将2> log。如果想标准输出和标准出错都输出到log中,那么先将标准输出重定向到log,再将标准出错重定向到标准输出。

输入重定向

示例:

<功能,不加也能有对应功能,使用频率少

 

 <<功能,遇到分界停止

 

< >查看并输出到另一个文件 

 

4.3 通配符、管道

通配符是一种特殊语句,通配符是用来代替字符的

linux@ubuntu:~/mywork$ ls  file_*.txt
file_liu.txt   file_wang.txt   file_lee.txt   file_song.txt

linux@ubuntu:~/mywork$ ls  file_?.txt
file_1.txt   file_2.txt   file_3.txt   file_4.txt   file_5.txt

linux@ubuntu:~/mywork$ ls   file_[1-5].txt
file_1.txt   file_2.txt   file_3.txt   file_4.txt   file_5.txt

linuxx@ubuntu:~/mywork$ ls   file_[^245].txt
file_1.txt   file_3.txt

管道

管道可以把一系列命令连接起来,意味着第一个命令的输出将作为第二个命令的输入,通过管道传递给第二个命令,第二个命令的输出又将作为第三个命令的输入,以此类推。就像通过使用“|”符连成了一个管道。

示例

wc是统计,-l多少行,-w多少单词,-c多少字符

管道细节要求,前面得命令必须要有结果,没有结果无法使用

管道结合查找

4.4 历史查询、补齐功能

历史补齐 history 或者!

history

示例 

编译常用!g,因为gcc编译经常命令很长

tab 补齐

4.5 命令置换

用法:把终端输出得结果置换保存到变量

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

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

相关文章

系列五、Java操作RocketMQ简单消息之同步消息

一、概述 同步消息的特征是消息发出后会有一个返回值&#xff0c;即RocketMQ服务器收到消息后的一个确认&#xff0c;这种方式非常安全&#xff0c;但是性能上却没有那么高&#xff0c;而且在集群模式下&#xff0c;也是要等到所有的从机都复制了消息以后才会返回&#xff0c;适…

【vue2第九章】组件化开发和根组件以及style上的scoped作用

组件化开发和根组件 什么是组件化开发&#xff1f; 一个页面可以拆分为多个组件&#xff0c;每个组件有自己的样式&#xff0c;结构&#xff0c;行为&#xff0c;组件化开发的好处就是&#xff0c;便于维护&#xff0c;利于重复利用&#xff0c;提升开发的效率。 便于维护&…

输出归一化位置式PID(完整梯形图代码)

SMART PLC单自由度和双自由度位置式PID的完整源代码,请参看下面文章链接: 位置式PID(S7-200SMART 单自由度、双自由度梯形图源代码)_RXXW_Dor的博客-CSDN博客有关位置型PID和增量型PID的更多详细介绍请参看PID专栏的相关文章,链接如下:SMART PLC增量型PID算法和梯形图代码…

已解决‘jupyter‘ 不是内部或外部命令,也不是可运行的程序或批处理文件报错

本文摘要&#xff1a;本文已解决‘jupyter‘ 不是内部或外部命令&#xff0c;也不是可运行的程序或批处理文件的相关报错问题&#xff0c;并系统性地总结提出了几种可用解决方案。同时结合人工智能GPT排除可能得隐患及错误。 &#x1f60e; 作者介绍&#xff1a;我是程序员洲洲…

利用frps搭建本地自签名https服务的透传

nginx的搭建就不介绍了&#xff0c;教程很多&#xff0c;基本上油手就会。 在本例中&#xff0c;frp服务器的域名是 www.yourfrp.com&#xff0c;同时也是反向代理nginx服务器; 本地网站要用的域名&#xff1a; test.abcd.com 请事先将 test.abcd.com 解析到 frp所在服务器…

java.sql.SQLException: com.mysql.cj.jdbc.Driver

这篇文章分享一下Springboot整合Elasticsearch时遇到的一个问题&#xff0c;项目正常启动&#xff0c;但是查询数据库的时候发生了一个异常java.sql.SQLException: com.mysql.cj.jdbc.Driver java.sql.SQLException: com.mysql.cj.jdbc.Driverat com.alibaba.druid.util.JdbcU…

docker-compose 部署 Seata整合nacos,Postgresql 为DB存储

docker-compose 部署 Seata整合nacos,Postgresql 为DB存储 环境 详情环境可参考 https://github.com/alibaba/spring-cloud-alibaba/wiki/%E7%89%88%E6%9C%AC%E8%AF%B4%E6%98%8E 我这里 <spring.cloud.alibaba-version>2021.1</spring.cloud.alibaba-version>所…

【前端入门案例1】HTML + CSS

案例一 <!DOCTYPE html> <html lang"en-US"><head><meta charset"utf-8"><meta name"viewport" content"widthdevice-width"><title>My test page</title> </head><body><…

浅析Linux SCSI子系统:错误恢复

文章目录 概述SCSI错误恢复处理添加错误恢复命令错误恢复线程scsi_eh_ready_devs IO超时处理相关参考 概述 IO路径是一个漫长的过程&#xff0c;从SCSI命令请求下发到请求完成返回&#xff0c;中间的任何一个环节出现问题都会导致IO请求的失败。从SCSI子系统到低层驱动&#x…

002图的基本概念与表示方法

文章目录 一. 图的组成二. 本体图2.1 什么是本体图2.2 怎么设计本体图 三. 图的种类3.1 按连接是否有向分3.2 按本体图分3.3 按连接是否带权重分 四. 节点连接数&#xff08;节点的度&#xff09;4.1 无向图节点的度4.2 有向图节点的度 五. 图的表示方法5.1 邻接矩阵5.2 连接列…

图:有向无环图(DAG)

1.有向无环图的定义 有向无环图:若一个有向图中不存在环&#xff0c;则称为有向无环图。 简称DAG图(Directed Acyclic Graph) 顶点中不可能出现重复的操作数。 2.有向无环图的应用 1.描述算数表达式 用有向无环图描述算术表达式。 解题步骤&#xff1a; 把各个操作数不重…

【研究开源机器臂】(1):参加机器人展览,突然来了兴趣要做个机器臂来研究下,先进行产品调研。研究其他人的方案,进行技术调研。

1&#xff0c;关于 6 轴机器人开源项目 使用步进电机做的开源机器人项目&#xff1a; https://github.com/SkyentificGit/SmallRobotArm 按照这个关键字进行搜索&#xff0c;已经有很多人研究成功了。 3D打印6轴机械臂-自制 2&#xff0c;然后是小点的 3 轴机器人 github项…

2023年03月 C/C++(六级)真题解析#中国电子学会#全国青少年软件编程等级考试

C/C编程&#xff08;1~8级&#xff09;全部真题・点这里 第1题&#xff1a;波兰表达式 波兰表达式是一种把运算符前置的算术表达式&#xff0c;例如普通的表达式2 3的波兰表示法为 2 3。波兰表达式的优点是运算符之间不必有优先级关系&#xff0c;也不必用括号改变运算次序&am…

async的用法

有以下几种形式 //从c11到c17有 template< class Function, class... Args > std::future<typename std::result_of<typename std::decay<Function>::type(typename std::decay<Args>::type...)>::type>async( Function&& f, Args&…

el-select 选择一条数据后,把其余数据带过来

1. 案例&#xff1a; ps: 票号是下拉框选择&#xff0c;风险分类、场站名称以及开始时间是选择【票号】后带过来的。 2. 思路: 使用官网上给的方法&#xff0c;选择之后&#xff0c;触发change方法从而给其余字段赋值 3. 代码 <el-form-itemlabel"票号&#xff1a;&…

C++网狐服务器引入开源日志库spdlog

很多人对日志库不以为然&#xff0c;包括网狐这种十几年的公司都不重视&#xff0c;其实日志库记录的东西能在线上出问题时高效解决&#xff0c;特别是别人写的东西&#xff0c;人又走了&#xff0c;出了问题&#xff0c;还可以用日志分析快速解决。要是没有日志记录&#xff0…

嵌入式开发-串口通信介绍

串口通信&#xff08;Serial Communications&#xff09;是一种串行数据传输方式&#xff0c;它将数据一位一位地顺序传输&#xff0c;而不是并行传输。这种方式相比并行传输更为节省空间和成本&#xff0c;因此在现代工业和嵌入式系统中得到广泛应用。 串口通信通常使用RS-23…

代码随想录算法训练营第五十三天 | 1143.最长公共子序列,1035.不相交的线,53. 最大子序和 动态规划

代码随想录算法训练营第五十三天 | 1143.最长公共子序列&#xff0c;1035.不相交的线&#xff0c;53. 最大子序和 动态规划 1143.最长公共子序列1035.不相交的线53. 最大子序和 动态规划 1143.最长公共子序列 题目链接 视频讲解 给定两个字符串 text1 和 text2&#xff0c;返回…

Qt使用Json

包含目录&#xff1a; #include <QJsonObject> #include <QJsonDocument> #include <QByteArray> #include <QFile> #include <QJsonArray>基本结构&#xff1a; 写json QJsonObject studentobj;QJsonArray arrarydata;QJsonObject subdata;…

【Java核心知识】ThreadLocal相关知识

ThreadLocal 什么是ThreadLocal ThreadLoacal类可以为每个线程保存一份独有的变量&#xff0c;该变量对于每个线程都是独占的。实现原理为每个Thread类中包含一个ThreadHashMap&#xff0c;key为变量的name&#xff0c;value为变量的值。 在日常使用中&#xff0c;我们可以通…