@[TOC] linux基础知识
echo>和ehco>>的区别:
前者:输出重定向,覆盖之前的内容
后者:输出追加重定向,不会覆盖之前的内容,即追加
linux基本指令与操作
①esc下按u:撤销
②在xshell输入rz:可以从window传文件
cat<<EOF
cat<<EOF的意思是以EOF输入字符为标准输入结束,就是当你输入cat<<EOF的时候,你可以随意输入字符,但是当输入EOF的时候就结束了。
#cat<<EOF>text.log
>hello
>hi
>EOF //输入结束
查看版本信息
lsb_release -a
查看用户
su - username 切换用户(切换了shell)
su username 切换用户(不切换shell)
who am i 查看当前登录用户
whoami 查看当前操作用户
who -H或–heading 输出时显示各列的标题
who -u:显示闲置时间,若该用户在前一分钟之内有进行任何动作,将标示为"."号,
如果该用户已超过24小时没有任何动作,则标示出“old”字符串
w(直接输入w):w比who输出的信息更丰富(w更好,显示ip也显示闲置时间)
linux的/与~
/:表示根目录,所有的目录,文件,设备都在跟目录(/)之下,/就是Linux文件系统的组织者,也是最上级的领导者
:①如果在root用户下,的pwd为/root
②如果在普通用户下,~的pwd为/home/当前用户
例:esec@ubuntu:~$:pwd 为 /home/esec
read -p 后面加提示
例:read -p “请输入一个数”
没有-p则不能加提示
shell注意事项
①等号两边不能直接接空格符,若变量中本身就包含了空格,则整个字符串都要用双引号或单引号括起来
②双引号与单引号的区别
双引号:可以解析变量的值
单引号:不能解析变量的值
例:echo 'num=KaTeX parse error: Expected 'EOF', got '#' at position 15: num1' #̲num1当成字符串处理
shell提供了无需定义的变量
$# 代表传入参数的个数
$@ 代表传入参数的列表
$0 代表脚本本身,例:./test.sh 01 02, $0就是test.sh
$1 代表传入的第一个参数,$2,$3…以此类推(最多到$9)
$* 以字符串方式显示所有传入的参数
$$ 脚本运行的进程ID
$? 显示最后命令的退出状况,0表示没有错误
vim test.cpp +3 //进去后光标在第3行
或vim +3 test.cpp(与上面等同)
编译g++程序
参考
touch test.cpp //创建C++程序
vim test.cpp //编写C++程序
g++ test.cpp //直接生成可执行程序
g++ -E test.cpp -o test.i //预处理
g++ -S test.i //编译
g++ -c test.s //汇编 (小写的c)
g++ test.o -o test (不能用g++ test.o -o test.cpp, 否则test.cpp乱码) //生成可执行程序
./test (不是./test.cpp, 由上一步的-o test决定的) //执行可执行程序
或者一步解决:g++ test.cpp -o test
C++编程模板
#include
using namespace std;
int main()
{
cout << “Hello g++” << endl;
}
vim显示行号(暂时)
:set number(或 :nu)
:行号 //跳至这一行
chown命令
chown user 文件名: 更改文件的拥有者为user
chown :group 文件名:更改文件的属组为group
ll或ls -l后出现带*的文件代表这些文件是可执行文件(即加上了可执行权限)
ls后文件显示的颜色
白色:表示普通文件
蓝色:表示目录
绿色:表示可执行文件
红色:表示压缩文件
浅蓝色:链接文件
红色闪烁:表示链接的文件有问题
黄色:表示设备文件
灰色:表示其他文件
在vim中查看man手册
光标放在函数上,然后shift + k,即可跳转
vim自动补全
ctrl + n :当你输入第一字母时,再ctrl+n,自动出现下拉菜单,单词默认选中第一个,继续ctrl+n,ctrl+p可以上下切换,或者用方向键(太慢了)
ctrl+p:同上,只是默认的选中的是列表中最后一个单词
vim查找
/键查找时,执行正向扫描,?键查找时,执行反向扫描。
输入完字符后,记得要回车,这样才可以跳转到目标字符
回车后,按下n往上查找,按下N往下查找
按下Esc键后,/后再输入要查找的字符
清空文件
<1>vim命令模式下
①gg: //跳转到文件首行,G://跳转到文件末尾
dG://删除光标所在行到末尾行的内容,d代表删除
②:%d
<2>终端命令
echo > 文件名
cat > /usr/local/mysql/my.cnf << EOF 与cat << EOF> /usr/local/mysql/my.cnf是一样的
清除终端的命令:
ctrl+u:清除光标到行首的字符
ctrl+w:清除光标之前一个单词
vim替换(下面的g表示全部的意思)
:s/foo/bar/g 当前行将foo替换为bar
:%s/foo/bar/g 全文行将foo替换为bar
:5,12s/foo/bar/g 第5到12行将foo替换为bar
:.,+2s/foo/bar/g当前行.与接下来两行+2将foo替换为bar
:5,12s/k.*g/aaaa/g 第5行12行把k开头g结尾的字符串替换为aaaa
//.(元字符)表示匹配任意一个字符 //*(表示数量的元字符)表示匹配0-任意个
查看历史命令以及执行历史命令
ctrl+r 搜索历史命令
history + 数字:显示最新的n条命令
!100: 执行命令行号为100的命令
!-3 : 执行倒数的第三条命令
history -c :清除历史命令
vim删除指定行—关键字d
:开始行,结束行d
%表示所有行
.表示当前行
/etc/hosts : ip映射,域名解析
查看剩余空间
df -h
查看服务器设备硬盘的大小
sudo fdisk -l :一般看/dev/sda3
df -h看到的空间未必是设备的物理空间
如果fdisk -l的空间大于df -h的空间,可以通过resize2fs /dev/sda3扩容扩大空间
vim注释
方法一:块注释模式
<1>加注释
①首先按键盘上的ESC进入命令行模式
②再按ctrl+v进入VISUAL BLOCK模式
③利用上下左右键调整需要注释多少行以及行的宽度
④再按shift+i或s进入插入模式
⑤输入代表注释的符号,比如#
⑥再次按ESC键,这时就可完成多行注释(可能需要当上一会,不要着急)
<2>去注释
前三步与加注释相同
①首先按键盘上的ESC进入命令模式
②再按ctrl+v进入VISUAL BLOCK模式
③利用上下左右键调整需要注释多少行以及行的宽度
④再按d即可完成去注释
方法二:替换命令
<1>加注释
①首先按键盘上的ESC进入命令行模式
②再在底行输入以下命令
:起始行号,结束行号s/^/注释符/g
例->:10,20s/^/#/g //在10-20行添加#注释
<2>去注释
①首先按键盘上的ESC进入命令行模式
②再在底行输入以下命令
:起始行号,结束行号s/^注释符//g
例->:10,20s/^#//g //在10-20行删除#注释
du命令查看文件夹大小(h表示显示单位的意思)
du -h 文件夹 //列出所有文件的大小(不建议用这个,太多了)
du -h --max-depth=N //指定遍历深度
du -h --max-depth=0 //只列出当前目录的大小
du -h --max-depth=1 //只列出当前目录下的所有子目录,即只遍历一层
du -h 文件名 //查看文件的大小
find查找文件
find pathname -name 文件名;
例:~/ldc/ldc.txt //目录下来有一个ldc目录,ldc目录下面有一个ldc.txt文件
find -name ldc* //不写文件名,默认在当前路径(及所有子路径);(当前操作目录为~);
输出:./ldc
find -name “ldc*” //最好带上引号,单引号也可以;
在根目录(表示在整个硬盘)下面查找: find / -name “ldc.txt”
输出:./ldc
./ldc/ldc.txt
find -type f -name “ldc.*” //指定文件类型(f表示普通文件)
本地与服务器传输文件用scp命令
查看之前的执行命令记录
在~目录下的.bash_history(用ll命令显示隐藏文件)