0
点赞
收藏
分享

微信扫一扫

香港裸机云多IP服务器都有哪些配置?

互联网码农 2024-04-21 阅读 5
linux

1 read 从键盘读取变量的值

read 后面不带变量,那么默认会给REPLY变量赋值

#!/bin/bash
echo -n "请输入你的名字:"
read name
echo "欢迎您 $name"
echo "----------------"

echo -n "请输入你的名字2:"
read 
echo "欢迎您 $REPLY"

#!/bin/bash
#echo -n "请输入你的名字:"
#read name
read -p  "请输入你的名字:" name  #上面注释两行等于这一行
echo "欢迎您 $name"

内置变量

 

2 定义一个数组和取值

declare -r liu=888  #定义一个只读的变量liu

readonly hello   #定义一个只读的变量hello  

echo "$x" #双引号会输出变量x的值

echo '$x'  #在使用单引号输出$x时,变量将不起效果,当作字符串输出

在Bash中,一旦你使用declare -r命令将变量声明为只读,就不能使用常规的unset命令来取消或删除该变量

只读变量是设计为不可更改和不可删除的,这是为了防止它们的值在脚本执行期间被意外修改。

然而,有一种高级技术可以通过使用gdb(GNU调试器)来解除变量的只读属性,但这通常不推荐,因为它涉及到对shell进程的内存进行操作,这可能会导致不稳定或不可预测的行为。如果你决定使用这种方法,请确保你完全理解可能的后果,并且在一个安全的环境中进行,例如在一个不重要的临时shell会话中1。

如果你想避免使用只读变量,最好的做法是在声明变量之前仔细考虑,确保你以后不需要更改或删除它。如果你发现自己需要修改一个只读变量,你可能需要重新考虑你的脚本设计或重新启动一个新的shell会话。

ulimit -a

3 变量内容的删除与替换

r=${xx-"abcdefg"}
r=${xx:-"abcdefg"}
r=${xx:?"abcdefg"}
r=${xx:+"abcdefg"}

在Linux中,这四个命令是参数扩展的例子,它们用于处理变量和提供默认值或其他操作。下面是每个命令的具体含义:

  • r=${xx-"abcdefg"}:如果变量xx未设置或为空,r将被赋值为"abcdefg"。如果xx已设置并且非空,r将取xx的值。
  • r=${xx:-"abcdefg"}:这与第一个命令类似,但即使变量xx被设置为空(即声明了变量但没有值),r也将被赋值为"abcdefg"。
  • r=${xx:?"abcdefg"}:如果变量xx未设置或为空,将打印出"abcdefg"并退出当前命令或脚本。如果xx已设置并且非空,r将取xx的值。
  • r=${xx:+"abcdefg"}:如果变量xx已设置并且非空,r将被赋值为"abcdefg"。如果xx未设置或为空,r将不被设置。

4 别名设置alias,unalias

ifconfig eth0 #如果觉得命令太长了,可以为其取一个别名
#取别名
alias aa="ifconfig eth0"

通过alias 命令可以查看目前shell下存在哪些别名

unalias 取消别名

unalias aa

 echo -n "123456"  #这样输出后就不会换行了

alias echo='echo -n' #这样设置后,每次使用echo输出就不会换行了

type -a echo #可以查看目前echo命令生效的是哪个echo命令

命令的查找顺序:type -a echo

5 历史命令history

在Linux系统中,history命令用于列出用户在当前终端会话中输入过的命令历史。如果你想重新执行历史列表中的某个命令,可以使用感叹号!后跟该命令在历史列表中的编号。这是一种快速重复执行先前命令的方法。

例如,如果你输入!314,它将执行历史列表中编号为314的命令。

6 bash的登录与欢迎信息

Linux登录前的提示信息存储在/etc/issue文件中

登录后显示的信息则存储在/etc/motd(Message of the Day)文件中

更简洁的描述是:

例如,可以在/etc/issue中添加安全警告

                  在/etc/motd中添加系统维护通知。

可以通过编辑/etc/issue.net文件来自定义登录前的消息。在文件中添加您想要的文本,然后保存并关闭文件。

可以使用以下转义代码来扩展文本:

\\d:插入当前日期。
\\t:插入当前时间。
\\n:插入机器的节点名称(也称为主机名)。
其他转义代码,如插入操作系统的版本、系统名称等。

7 Bash的环境配置文件

login-shell

 在Linux系统中,login-shell 是用户登录时启动的shell,它会读取一系列配置文件来设置用户环境。这些配置文件包括:


登录shell读取完上述文件后,会进入用户的家目录,并执行.bash_profile文件。

.bash_profile文件用于设置用户特定的环境变量和启动程序,这些设置只在登录时执行一次,以便在用户的整个会话中保持。

no-login shell

相比之下,no-login shell 是在用户已经登录后启动的shell,通常不需要再次输入用户名和密码。这种shell不会读取/etc/profile或.bash_profile,而是读取.bashrc文件。.bashrc文件包含了特定于交互式shell会话的配置,如别名和函数,这些配置每次打开新的shell时都会被加载4。

总结来说,login-shell在用户登录时启动并读取一系列配置文件来设置环境,而no-login shell在用户已登录后启动,通常只读取.bashrc文件来加载shell会话的配置。

终端机的环境设置stty,set

stty -a
ctrl+c  #取消命令
ctrl+? #删除命令


set -u 是Linux中的一个内置shell命令,用于设置或取消设置shell选项和位置参数的值。

它就像一个主控面板,允许您设置或取消设置shell环境的值。

让我们来看一个简单的例子:

name="Anton"
echo $name
unset name
echo $name

在这个例子中,我们首先将变量name设置为“Anton”,然后打印它。接着,我们取消了变量name的设置,并尝试再次打印它。

因为我们在脚本开头使用了set -o nounset,所以尝试打印一个未设置的变量会导致shell退出。这是使用set命令的基本用法,但实际上它还有更多功能。

举报

相关推荐

0 条评论