首页 > 系统相关 >认识终端和shell

认识终端和shell

时间:2024-07-07 13:30:41浏览次数:19  
标签:shell 认识 程序 echo 命令 终端 date open

【教程】在macOS上用VSCode写C++代码 4 认识终端和shell

内建程序与内建命令

打开终端,其实相当于打开了shell。shell 可以运行一些程序(例如 sayhello/bin/mkdir )。

shell自身也带着一些程序(二进制可执行文件),这些程序就叫内建程序。

特点:调用shell内建程序的时候只需要敲一个单词就行了。一个单词很短,所以把它们称作内建命令。

重要内建命令:which, echo, history, pwd, cd

Ps. 系统自带的程序如果也能用一个单词就调用那么也可以称它们为系统命令

与路径无关

which

查看shell如何解释后面的命令

which which
which echo
which history
which pwd
which cd

得到结果:which: shell built-in command

which /bin/date

得到结果:/bin/date 即一个二进制可执行文件

echo

将后面输入的东西返回。在显示变量的时候会显示变量的值而不是那个字符串

样例解释:

echo $SHELL

查看正在使用的 shell ,此时就是bin目录下的zsh程序。还有其他 shell,但是 macOS 默认的 shellzsh

history

显示输入命令的历史

可以带参数,表示最近几次

history
history -3

date

输入:

which date
which /bin/date

发现都返回 /bin/date ,说明shell用同种方式解析二者。

所以直接输入 dateshell 就会帮我解析这个单词,然后去调用在文件系统中的 /bin/date 这一个二进制程序,执行这个程序,然后返回当前的时间。

与shell当前工作目录相关

pwd

% 前的 ~ 表示当前所在的目录,用 pwd 可以返回shell当前所在的工作目录,即 ~

文件的绝对路径和相对路径

绝对路径:从根目录开始

相对路径:. 当前路径;.. 当前路径的上一级路径,即返回上一级文件夹;... 上级的上级;- 刚刚在的目录;~ 家目录

绝对路径和相对路径详解

cd

跳转 shell 的当前工作目录到指定的目录,参数不区分大小写

想回到上一层目录?用相对路径 cd ..

% 前是当前目录

shell常用命令

参考2020年清华大学电子系科协暑培|Linux

ls

列出当前文件夹下的所有文件,可有参数

ls
ls -a		#显示隐藏文件		
ls -l		

cat

打开文件,显示文件的内容

cat hello.txt

clear

清空终端中存在的已经执行过的命令( history 仍然可以查看)

mkdir

在当前目录下创建文件夹

touch

在当前目录下创建文件(一般是文本文件)

touch test.md
touch t		#没有后缀名的文本文件,可通过文本编辑打开,就是之前想要的纯文本!

rm

rm test.md		#移除某个文件(不是移动到废纸篓,而是直接抹掉!!!)
rm -d newFolder		#移除某个文件夹
rm -rf newFolder		#强制删除(使用一定慎重!!!)

Ps. 输入过程中点 tab 可以自动补全带后缀的文件名

mv/cp

移动文件与复制文件

移动文件到原地相当于重命名

mv final.c C_Xcode		#把final.c移动到C_Xcode文件夹中
mv newFolder/final.c newFolder/ffff.c 		#重命名

man

查看命令的帮助文档

man date

Q 退出

open

open foo.md
open -a Visual\ Studio\ Code.app foo.md 	
open $(pwd)
open .

-a 参数指定打开程序(需要使用程序全名)

$(pwd) 表示当前目录,open $(pwd) 表示用 Finder 打开 shell 当前的工作目录 ( open . 也可)

shell常用的操作

输出流重定向

echo "hello world" > my.txt
echo "hhhh" > my.txt					#发现文件内容只有hhhh,因为 > 表示覆盖
echo "hahaha" >> my.txt				# >> 实现追加

默认的输出是屏幕显示,现在重定向,不在终端中显示,而是直接写到my.txt文件中去

管道

| :上一个命令(程序)的输出作为下一个命令的输入

history -100 | grep "mkdir"		#最近100条中有哪些是带有mkdir的

grep相当于搜索,从给他的字符串中搜索带有关键词的行

⌃C

输入有误时,停止当前输入,退出

this is wrong

此时点 ⌃C ,可以不执行此行,重开一行

空格

shell通过空格来分辨命令与参数

如果参数中有空格,需要 \ (转义空格)或 "" (给参数加引号)

终端进阶与常用的终端操作

where

where 也是一个 shell 内建命令,和 which 的功能差不多,告诉我们一个命令如何被 shell 解析。

区别:where 能够告诉我们 shell 去解析这个命令的全部可能性,whichwhere 的第一行

vim极简入门

可以编辑文本

vim my.txt

i 进入编辑模式

退出插入模式并保存:⎋ > : > wq

Ps. ⎋是 esc

⌃D

⌃C 差不多,都是退出当前

chmod

修改文件权限

chmod a+x <filepath> 	#使一个文件有可执行权限

环境变量

shell 认识给它的命令(单词),所以它就用这个命令(单词)找到需要执行的程序,然后执行这个程序。那 shell 是怎么认识我们给它的单词呢???

查看环境变量:

echo $PATH

返回:

其中冒号是分隔符。当给 shell 扔了一个命令之后,shell 先在自己的内建程序中找有没有这个单词,没找到再到环境变量去找。

其他的工具

shell脚本--组合你的命令

shell脚本:就是把许多命令组合起来,完成一项任务

homebrew--macOS快速安装命令行程序

brew官网

zsh配置文件

想要在终端运行自己写的程序,需要给出路径。如果直接 % sayhello ,会得到 zsh: command not found: sayhello。如何让shell认识我们的单词 sayhello

先退回家目录 ~

open ~/.zshrc 		#返回The file /Users/chasetsai/.zshrc does not exist.说明没有这个文件
touch ~/.zshrc		#创建一个
echo "alias sayhello=~/desktop/sayhello" > ~/.zshrc		#设置别名
source .zshrc			#使该文件生效

此时我们直接输入 sayhello 就能得到预期输出!!!

查看所有的shell内建命令

man builtins 可以查看shell的所有内建命令

man zshbuiltins 可以查看zsh的所有内建命令

标签:shell,认识,程序,echo,命令,终端,date,open
From: https://www.cnblogs.com/chasetsai/p/18288404

相关文章

  • [终端安全]-1 总体介绍
    有朋友一直在和笔者研讨智驾安全这个热门话题,笔者十多年工作从不离终端安全这个核心话题(芯片安全、操作系统安全、应用安全),近来也一直在梳理终端安全体系;手机、汽车皆是我们生活中应用最普遍的智能终端,如何系统考量终端安全架构,从芯片-OS-应用-数据分层设计安全防护方案,全方位......
  • [终端安全]-2 移动终端之硬件安全(SE)
    本文主要介绍针对安全芯片的攻击和防护方案。1芯片攻击1)故障注入攻击故障注入攻击(FaultInjectionAttack,FIA)是一种通过人为引入故障,诱发系统或芯片在异常情况下产生错误结果,从而泄露机密信息或破坏系统安全的攻击方法。1.1)电压毛刺攻击(VoltageGlitching):快速改变电......
  • 这些 PowerShell 命令适用于清理 Windows 中更多不同组件和服务的日志。通过定期执行
    清理临时文件:powershellCopyCodeRemove-Item-Path"$env:TEMP\*"-Force-RecurseRemove-Item-Path"$env:LOCALAPPDATA\Temp\*"-Force-Recurse清理回收站:powershellCopyCodeClear-RecycleBin-Force清理浏览器缓存(例如清理Chrome缓存):powershellCopy......
  • 进程的初步认识
    目录一、硬件方面介绍1.冯诺依曼体系结构2.存储分级二、软件 方面1.操作系统是一款进行管理的软件,它可以管理硬件也可以管理软件2.操作系统如何管理?三、进程 1.概念总结四、linux中对进程的管理 1.task_struct内容分类2.查看进程 3.通过系统调用获取进程标......
  • 认识程序
    【教程】在macOS上用VSCode写C++代码3认识程序文件系统最基本的两种文件:文本文件:存字符ASCII码程序/二进制可执行文件程序/二进制可执行文件程序有输入,有输出,就算程序从计算机底层的角度来说,程序就是一堆机器码(0、1),就是二进制可执行文件,计算机底层硬件(处理器)可以读......
  • 编写 PowerShell 脚本来管理 Windows 防火墙可以帮助自动化配置和监控网络安全设置。
    编写PowerShell脚本来管理Windows防火墙可以帮助自动化配置和监控网络安全设置。以下是一个简单的大纲,涵盖了管理Windows防火墙的主要方面:1.导入模块和设置变量导入 NetSecurity 模块以访问防火墙cmdlet。设置需要使用的变量,如规则名称、端口号等。2.查询和列出......
  • windows下,用PowerShell安装fnm,并安装Node.js步骤
    1#installsfnm(FastNodeManager)/安装fnm2wingetinstallSchniz.fnm3#重新开启powershell4#!不确定是否需要此步骤!5$profile6#!不确定是否需要此步骤!按照上面的输出,创建缺失的文件夹7#创建$profile文件:粘贴到powershell后,按回车8if(!(Test-P......
  • 第1章 认识 Vite
    明白了,这里是第1章内容的详细展开版本:第1章认识Vite1.什么是ViteVite是一个由尤雨溪(Vue.js的创始人)开发的前端构建工具,旨在提供极快的开发体验。Vite的名字来源于法语,意为“快速”,这正是它的核心理念。1传统构建工具的挑战传统的构建工具(如Webpack、Parcel......
  • 【C++】认识使用string类
    【C++】STL中的string类C语言中的字符串标准库中的string类string类成员变量string类的常用接口说明成员函数string(constructor构造函数)~string(destructor析构函数)默认赋值运算符重载函数遍历string下标+[]迭代器范围for反向迭代器capacitysizelengthmax_sizeresi......
  • safe_shellcode
    [HNCTF2022Week1]safe_shellcode思路下载附件,名称为shellcoder,很明显的shellcode提示。判断题目解法可能是shellcode利用常规流程查看保护发现存在NX保护,但是让我们以shellcode的思路去解题,则可能存在修改权限的函数mprotectida打开分析分析代码,发现存在一个mprotect函......