Linux下编译c++
c++98
g++ -o 可执行文件名 文件名.cpp
当出现如下报错信息的时候,请使用c++11版本的编译
in C++98 ‘arr’ must be initialized by constructor, not by ‘{...}’
vector<int>arr={ 0, 13, 24, 35, 46, 57, 60, 72, 87};
c++11
g++ -std=c++11 文件名.cpp -o 可执行文件名
查看系统CPU数量
grep 'model name' /proc/cpuinfo | wc -l
运行脚本 ./hello.sh
用/hello.sh而不是 hello.sh,是为了告诉系统,可执行文件在当前目录中去寻找。否则Linux系统会去PATH里寻找有没有叫 hello.sh的。
shell变量
Shell编程中一般分为三种变量:
1、我们自己定义的变量(自定义变量): 仅在当前 Shell 实例中有效,其他 Shell 启动的程序不能访问局部变量。
2、Linux已定义的环境变量(环境变量, 例如:$PATH, $HOME 等..., 这类变量我们可以直接使用),使用 env
命令可以查看所有的环境变量,而set命令既可以查看环境变量也可以查看自定义变量。
3、Shell变量 :Shell变量是由 Shell 程序设置的特殊变量。Shell 变量中有一部分是环境变量,有一部分是局部变量,这些变量保证了 Shell 的正常运行
常用的环境变量:
PATH 决定了shell将到哪些目录中寻找命令或程序
HOME 当前用户主目录
HISTSIZE 历史记录数
LOGNAME 当前用户的登录名
HOSTNAME 指主机的名称
SHELL 当前用户Shell类型
LANGUGE 语言相关的环境变量,多语言可以修改此环境变量
MAIL 当前用户的邮件存放目录
PS1 基本提示符,对于root用户是#,对于普通用户是$
使用 Linux 已定义的环境变量:
比如我们要看当前用户目录可以使用: echo $HOME
命令;如果我们要看当前用户Shell类型 可以使用 echo $SHELL
命令。可以看出,使用方法非常简单。
使用自己定义的变量:
#!/bin/bash
#自定义变量hello
hello="hello world"
echo $hello
echo "helloworld!"
Shell 字符串入门
字符串是shell编程中最常用最有用的数据类型(除了数字和字符串,也没啥其它类型好用了),字符串可以用单引号,也可以用双引号。
单引号字符串:
#!/bin/bash
name='SnailClimb'
hello='Hello, I am '$name'!'
echo $hello
输出内容:
Hello, I am SnailClimb!
双引号字符串:
#!/bin/bash
name='SnailClimb'
hello="Hello, I am "$name"!"
echo $hello
输出内容:
Hello, I am SnailClimb!
Shell 字符串常见操作
拼接字符串:
#!/bin/bash
name="SnailClimb"
# 使用双引号拼接
greeting="hello, "$name" !"
greeting_1="hello, ${name} !"
echo $greeting $greeting_1
# 使用单引号拼接
greeting_2='hello, '$name' !'
greeting_3='hello, ${name} !'
echo $greeting_2 $greeting_3
输出结果:
获取字符串长度:
#!/bin/bash
#获取字符串长度
name="SnailClimb"
# 第一种方式
echo ${#name}
#输出 10
# 第二种方式
expr length "$name";
输出结果:
10
10
使用 expr 命令时,表达式中的运算符左右必须包含空格,如果不包含空格,将会输出表达式本身:
expr 5+6 // 直接输出 5+6
expr 5 + 6 // 输出 11
对于某些运算符,还需要我们使用符号"\"进行转义,否则就会提示语法错误。
expr 5 * 6 // 输出错误
expr 5 \* 6 // 输出30
截取子字符串:
简单的字符串截取:
#从字符串第 1 个字符开始往后截取 10 个字符
str="SnailClimb is a great man"
echo ${str:0:10} #输出:SnailClimb
根据表达式截取:
#!bin/bash
#author:amau
var="http://www.runoob.com/linux/linux-shell-variable.html"
s1=${var%%t*}
#h
s2=${var%t*}
#http://www.runoob.com/linux/linux-shell-variable.h
s3=${var%%.*}
#http://www
s4=${var#*/}
#/www.runoob.com/linux/linux-shell-variable.html
s5=${var##*/}
#linux-shell-variable.html