首页 > 其他分享 >Lecture 5 命令行环境

Lecture 5 命令行环境

时间:2023-04-04 11:45:04浏览次数:28  
标签:shell 环境 别名 alias tmux sleep ls 命令行 Lecture

课后练习

任务控制

  1. 我们可以使用类似 ps aux | grep 这样的命令来获取任务的 pid ,然后您可以基于pid 来结束这些进程。但我们其实有更好的方法来做这件事。在终端中执行 sleep 10000 这个任务。然后用 Ctrl-Z 将其切换到后台并使用 bg来继续允许它。现在,使用 pgrep 来查找 pid 并使用 pkill 结束进程而不需要手动输入pid。(提示:: 使用 -af 标记)。
sleep 10000
ctrl+z
bg
pgrep sleep #列出包含关键字sleep的进程id
pkill -af sleep #杀死包含关键字sleep的进程

解释:

pkill 杀死进程的命令
-a 用于匹配进程名和命令行参数
-f 强制匹配整个命令行参数,而不仅仅是匹配进程名
  1. 如果您希望某个进程结束后再开始另外一个进程, 应该如何实现呢?在这个练习中,我们使用 sleep 60 & 作为先执行的程序。一种方法是使用 wait 命令。尝试启动这个休眠命令,然后待其结束后再执行 ls 命令。但是,如果我们在不同的 bash 会话中进行操作,则上述方法就不起作用了。因为 wait 只能对子进程起作用。之前我们没有提过的一个特性是,kill 命令成功退出时其状态码为 0 ,其他状态则是非0。kill -0 则不会发送信号,但是会在进程不存在时返回一个不为0的状态码。请编写一个 bash 函数 pidwait ,它接受一个 pid 作为输入参数,然后一直等待直到该进程结束。您需要使用 sleep 来避免浪费 CPU 性能。
sleep 60 &
pgrep sleep | wait; 
ls

解释:

  • sleep 60 & 中&表示后台运行
  • wait 接收pgrpe sleep的输出,等待其结束之后再执行ls命令给
pidwait(){
    while kill -0 $1 do
        sleep 1
    done
}

解释:

  • kill -0 $1 判断进程是否存在,存在则返回0,不存在则返回1
    • $1表示第一个参数
    • kill -0 表示不会发送信号,但是会在进程不存在时返回一个不为0的状态码

终端多路复用

  1. 请完成这个 tmux 教程 参考这些步骤来学习如何自定义 tmux。
    当您在使用命令行时,您通常会希望同时执行多个任务。举例来说,您可以想要同时运行您的编辑器,并在终端的另外一侧执行程序。尽管再打开一个新的终端窗口也能达到目的,使用终端多路复用器则是一种更好的办法。
    像 tmux 这类的终端多路复用器可以允许我们基于面板和标签分割出多个终端窗口,这样您便可以同时与多个 shell 会话进行交互。
    tmux 的快捷键需要我们掌握,它们都是类似 <C-b> x 这样的组合,即需要先按下Ctrl+b,松开后再按下 x,但是一般使用CTRL+a重新映射为前缀键。
常用快捷键:
会话:
tmux 开始新会话
tmux new -s session_name #新建一个会话
tmux ls #查看会话
tmux a -t session_name #进入会话,不加name默认连接最后一个会话
窗口:
<C-b> c 创建一个新的窗口,使用 <C-d>关闭
<C-b> N 跳转到第 N 个窗口,注意每个窗口都是有编号的
<C-b> p 切换到前一个窗口
<C-b> n 切换到下一个窗口
<C-b> , 重命名当前窗口
<C-b> w 列出当前所有窗口
面板:
<C-b> " 水平分割
<C-b> % 垂直分割
<C-b> <方向> 切换到指定方向的面板,<方向> 指的是键盘上的方向键
<C-b> z 切换当前面板的缩放
<C-b> [ 开始往回卷动屏幕。您可以按下空格键来开始选择,回车键复制选中的部分
<C-b> <空格> 在不同的面板排布间切换

别名

输入一长串包含许多选项的命令会非常麻烦。因此,大多数 shell 都支持设置别名。shell 的别名相当于一个长命令的缩写,shell 会自动将其替换成原本的命令。例如,bash 中的别名语法如下:

alias alias_name="command_to_alias arg1 arg2"

注意, =两边是没有空格的,因为 alias 是一个 shell 命令,它只接受一个参数。
别名有许多很方便的特性:

# 创建常用命令的缩写
alias ll="ls -lh"

# 能够少输入很多
alias gs="git status"
alias gc="git commit"
alias v="vim"

# 手误打错命令也没关系
alias sl=ls

# 重新定义一些命令行的默认行为
alias mv="mv -i"           # -i prompts before overwrite
alias mkdir="mkdir -p"     # -p make parent dirs as needed
alias df="df -h"           # -h prints human readable format

# 别名可以组合使用
alias la="ls -A"
alias lla="la -l"

# 在忽略某个别名
\ls
# 或者禁用别名
unalias la

# 获取别名的定义
alias ll
# 会打印 ll='ls -lh'

值得注意的是,在默认情况下 shell 并不会保存别名。为了让别名持续生效,您需要将配置放进 shell 的启动文件里,像是.bashrc 或 .zshrc,下一节我们就会讲到。

配置文件

让我们帮助您进一步学习配置文件:

  1. 为您的配置文件新建一个文件夹,并设置好版本控制
  2. 在其中添加至少一个配置文件,比如说您的 shell,在其中包含一些自定义设置(可以从设置 $PS1 开始)。
  3. 建立一种在新设备进行快速安装配置的方法(无需手动操作)。最简单的方法是写一个 shell 脚本对每个文件使用 ln -s,也可以使用专用工具在新的虚拟机上测试该安装脚本。将您现有的所有配置文件移动到项目仓库里。将项目发布到GitHub。
    做的时候GitHub报错暂未解决,先不写了。

远端设备

进行下面的练习需要您先安装一个 Linux 虚拟机(如果已经安装过则可以直接使用),如果您对虚拟机尚不熟悉,可以参考这篇教程 来进行安装。

  1. 前往 ~/.ssh/ 并查看是否已经存在 SSH 密钥对。如果不存在,请使用ssh-keygen -o -a 100 -t ed25519来创建一个。建议为密钥设置密码然后使用ssh-agent 这里;
  2. 在.ssh/config加入下面内容:
 Host vm #ssh连接的别名
    User username_goes_here #用户名
    HostName ip_goes_here #ip地址
    IdentityFile ~/.ssh/id_ed25519 #密钥文件
    LocalForward 9999 localhost:8888  #本地端口转发

标签:shell,环境,别名,alias,tmux,sleep,ls,命令行,Lecture
From: https://www.cnblogs.com/viewoverlooking/p/17285900.html

相关文章

  • OpenGL是什么?Win10+VS2019下搭建glfw+glad开发环境
    1、什么是OpenGL什么是OpenGLOpenGL是一套API接口。学习这套接口,就可以在那些支持OpenGL的机器上正常使用这些接口,在屏幕上看到绘制的结果。显卡厂商的支持这套接口是Khronos(科纳斯)这个组织在维护,怎么维护呢?就是写一个说明书,指导各个GPU厂家,如果他们要支持OpenGL的话,要怎......
  • Chisel3 使用 DPI-C,发现在 Chisel 环境下 printf 没问题,但是 set_pc 死活传不到 cpp
    大概率是因为你使用了SignExt之类的封装这类封装只会把”值“传给DPI-C,而不会把线连给DPIC,即,传过去的是调用set_pc时的值,而不是引用这样会造成CPP获取不了相应线路的指针 如下图     这些也是错的......
  • 虚拟机ubuntu22.04搭建esp-matter环境
    一. 安装esp-idfStep1:编译ESP-IDF需要以下软件包。请根据使用的Linux发行版本,选择合适的安装命令。Ubuntu和Debian: sudoapt-getinstallgitwgetflexbisongperfpython3python3-venvpython3-setuptoolscmakeninja-buildccachelibffi-devlibssl-devdf......
  • nginx hyperf ssl https 环境。hyperf-https-ssl
     usernginxnginx;worker_processes 8;#error_log logs/error.log;#error_log logs/error.log notice;#error_log logs/error.log info;#pid       logs/nginx.pid;events{   worker_connections 1024;}http{   include      mime.ty......
  • 2-nacos运行环境部署
    1、下载nacos最新的二进制压缩包;下载地址:https://github.com/alibaba/nacos/releases 2、解压下载下来的nacos最新的二进制压缩包;tar-zxvfnacos-server-1.3.1.tar.gzcdnacos/bin3、启动nacosserver./startup.sh-mstandalone 注:单机环境必须带-mstandalone参数启动......
  • XXL-JOB Linux环境部署安装实战
    一、下载XXL-JOB 下载源码: https://github.com/xuxueli/xxl-job 以2.3.0的版本为例:https://github.com/xuxueli/xxl-job/archive/refs/tags/2.3.0.tar.gz xxl-job文档: https://www.xuxueli.com/xxl-job/二、依赖环境 因为需要打包,所以要有Maven环境 因为部署的是jar......
  • vue脚手架创建与环境安装
    1.安装Node.jsDownload|Node.js   在这里......
  • 大数据之—HUE环境搭建
    官网:https://gethue.com/mysql环境dockerrun-d-p3306:3306--restart=always--namemysql-eMYSQL_ROOT_PASSWORD=rootmysql:5.6#下载配置文件dockercp容器:容器内文件绝对路径宿主机路径dockercphue8888:/usr/share/hue/desktop/conf/opt/hue_confdockerru......
  • Flask 学习笔记(1)--环境安装
    Flask学习笔记(1)--环境安装Flask官网:http://flask.pocoo.org/Flask文档:http://docs.jinkan.org/docs/flask/0x01安装方式A、第一种安装步骤很简单,就是这个样子安装python安装flaskpipinstallflaskB、第二种:虚拟环境D:\test>pipinstallvirtualenv#安装vir......
  • Appium移动端自动化环境搭建
    一、JDK安装    1.先下载好jdk,下载地址:http://download.oracle.com/otn-pub/java/jdk/8u101-b13/jdk-8u101-windows-x64.exe    2.傻瓜式进行安装    3.配置环境变量     a.先新建JVAV_HOME         b.编辑path   ......