Linux基础

1.系统操作

1.1(shutdown)关机

shutdown -h now  //立即关机
shutdown -r //重启

1.2(LANG)当前终端语系

//查看当前终端语系
echo $LANG
//改变为C语系(仅当前终端有效)
export LANG=C 

1.3(data/cal)显示时间/日历

1.4(sudo apt-get install …)安装软件

2.文件夹操作

2.1(mkdir/rmdir)创建或删除目录

2.2(mv)移动目录或文件

2.3(cd)改变工作目录

cd 文件名   //移动到该文件夹下
cd ..    //返回上一个目录

2.4(pwd)显示当前所在目录

2.5(ls)显示文件夹中的内容

ls -l   //除文件名称外,亦将文件型态、权限、拥有者、文件大小等资讯详细列出
ls-l  /etc | grep '^l'  //找出etc文件夹中文件类型为连接文件属性的文件名

3.文件操作

3.1(find)寻找文件

find 文件名

3.2(touch)创建新文件

4.文件内容操作

4.1(正则表达式)按字符串查找特定行

例如在文件‘jzz.txt’中,查找‘jzz’

//查找连续含 'jzz' 的字符串
grep -n  'jzz'  --color=auto jzz.txt
(-n显示行号 --color=auto颜色高亮)
//反向查找 'jzz'  不含’jzz'的行信息
grep -vn  'jzz' --color=auto jzz.txt
//不分大小写查找 'jzz'
grep -in 'jzz'  --color=auto jzz.txt

查找不连续的字符串,例如在文件‘jzz.txt’中,查找‘jaz’或‘jbz’

grep -n 'j[ab]z' jzz.txt
//查找形式为 ‘j?z' 的字符
grep -n 'j.z' jzz.txt
//'jzz'前不要 ’g'
grep -n '[^g]jzz' jzz.txt
//jzz前不要小写字母
grep -n '[^a-z]jzz' jzz.txt
或
grep -n '[^[:lower:]]jzz' jzz.txt

查找所有含数字的行

grep -n '[0-9]' jzz.txt
或
grep -n '[[:digit:]]' jzz.txt

查找每行首字符串

//每行开头为 'jzz'
grep -n '^jzz' jzz.txt
//每行开头为小写字母
grep -n '^[[:lower:]]' jzz.txt

查找行尾

//行尾为小数点 ‘.’
grep -n '\.$' jzz.txt 
//空白行
grep -n '^$' jzz.txt

不要空白行与#开头的行

grep  -v  '^$'  jzz.txt | grep -v  '^#'

查找含两个以上连续o 的字符串

//o*表示0个以上的o
grep -n 'ooo*' jzz.txt
或
grep -n 'o\{2,\}' jzz.txt
//数量限定:查找含两个o的字符串
grep -n 'o\{2\}' jzz.txt
//数量限定:查找含两到五个o的字符串
grep -n 'o\{2,5\}' jzz.txt

4.2(vim)编辑文件内容

一般模式():

:q 退出
i   从当前字符进入编辑模式
a  从下一字符进入编辑模式
o  从下一行进入编辑模式
u     撤销操作

vim的复制粘贴

一般模式下:
 按v开始选择,方向键选择要操作的内容
 y键复制
 p键粘贴

vim的跨文件复制粘贴

1、用vim打开一个文件,例如:a.cpp
2、在普通模式下,输入:":sp"(不含引号)横向切分一个窗口,或者":vsp"纵向切分一个窗口,敲入命令后,你将看到两个窗口打开的是同一个文件
3、在普通模式下,输入:":e b.cpp",在其中一个窗口里打开另一个文件
4、切换到含有源文件(a.cpp)的窗口,在普通模式下,把光标移到你需要复制内容的起始行,然后输入你想复制的行的数量(从光标所在行往下计算),在行数后面接着输入yy,这样就将内容复制到临时寄存器里 了(在 普通模式下ctrl+w,再按一下w,可以在两个窗口之间切换)
5、切换到目标文件( b.cpp )窗口,把光标移到你接收复制内容的起始行,按一下p,就完成复制了。

4.3(nl)显示文件内容,加行号

//显示全部内容
nl 文件名

//以行为单位新增或删除(只更改限制,不修改实际内容)
nl /etc/passwd | sed '2,5d'   //删除2~5行
nl /etc/passwd | sed '2,$d'   //删除2到最后一行
nl /etc/passwd | sed '2a next'  //在第二行后增加显示next
nl /etc/passwd | sed '2i next'   //在第二行前增加显示next
nl /etc/passwd | sed '2a the\
end'                                        //在第二行后面增加显示两行the和end

4.4(evince)查看PDF文件

5.(g++)编译器

g++ -o hello hello.c  //将hello.c生成可执行文件hello

6.(cmake)cross platform make

6.1使用步骤:

1.安装cmake:  sudo apt-get install cmake 
2.编写核心文件CMakeLists.txt
3.指令cmake根据CMakeLists.txt生成makefile
4.指令cmake根据makefile生成可执行文件

6.2CMakeLists.txt基本语句

说明:
CMakeLists.txt语句不区分大小写
参数之间用空格或分号隔开
IF控制语句中可直接用变量名,不用${ }取用
cmake_minimum_required(VERSION 2.6)   //最低版本要求
PROJECT(demo)  //工程名称,以demo为例
//定义工程名称demo后,自动生成  demo_BINARY_DIR(编译目录)与demo_SOURCE_DIR(工程目录)
SET(NAME1  a.cpp b.cpp a.h b.h)  //设置外部库文件,用NAME1代表其后的文件
SET(NAME2 a.so)
MESSAGE(${变量名}) //${ }为取变量符号
INCLUDE_DIRECTORIES(目录名) //在所给目录名下寻找头文件(.h文件)
ADD_EXECUTABLE(demo2 ${NAME2})  //由源文件NAME2生成可执行文件demo2
MESSAGE(STATUS "This is binary dir" ${demo_BINARY_DIR}) 
MESSAGE(STATUS "This is source dir" ${demo_BINARY_DIR})
MESSAGE(FATAL_ERROR "error")  //终止当前所有操作并输出error
TARGET_LINK_LIBRARIES(demo2 ${NAME2})  //给可执行文件链接库
SET(EXECUTABLE_OUTPUT_PATH ${CMAKE_BINARY_DIR}/bin}  //更改可执行文件输出目录,CMAKE_BINARY_DIR与demo_BINARY_DIR相同
AUX_SOURCE_DIRECTORY(directory VAR)    //将directory下的所有源文件添加到变量VAR中
ADD_SUBDIRECTORY(目录名) //添加子文件夹,子文件下要有CMakeLists.txt

6.3 IF指令说明

假的条件: 变量为 空 0  N  NO  OFF FALSE  NOTFOUND
取反:IF(NOT A)
与:IF(A AND B)
或:IF(A OR B)
文件或文件夹是否存在:IF(EXISTS dir or file)
IF(exoression)
    COMMEND1()
    COMMEND2()
ELSE(expression)
ENDIF

6.4 FIND.cmake(模块)

对于系统预定义的FIND.cmake模块,每一个模块都会定义以下几个变量:

<name>_FOUND
<name>_INCLUDE_DIR or <name>_INCLUDES
<name>_LIBRARY or <name>_LIBRARIES

系统预定义模块的使用:

FIND_PACKGE(CURL)
INCLUDE_DIRECTORIES(${CURL_INCLUDE_DIR)
TARGET_LINK_LIBRARIES(exename ${CURL_LIBRARY})
FIND_PACKGE(NAME REQUIRED)  //NAME链接库是必须的,没有的话工程不能编译

自定义FIND.cmake的编写,以FINDHELLO.CMAKE为例

准备文件:libhello.a或者libhello.so以及hello.h
FIND_PATH(HELLO_INCLUDE_DIR hello.h /home/jzz/include)  //变量名+文件名+路径
FIND_LIBRARY(HELLO_LIBRARY hello.so /home/jzz/lib)  //变量名+文件名+路径
IF(HELLO_INCLUDE_DIR AND HELLO_LIBRARY)
    SET(HELLO_FOUND TRUE)
ENDIF(HELLO_INCLUDE_DIR AND HELLO_LIBRARY)
IF(HELLO_FOUND)
    IF(NOT HELLO_FIND_QUIETLY)
        MESSAGE(STATUS "Found Hello: ${HELLO_LIBRARY}")
    ENDIF(NOT HELLO_FIND_QUIETLY)
ELSE(HELLO_FOUND)
    IF(HELLO_FOUND_REQUIRED)
        MESSAGE(FATAL_ERROR "Could not find hello library")
    ENDIF(HELLO_FIND_REQUIRED)
ENDIF(HELLO_FOUND)

自定义模块的调用:

SET(CMAKE_MODULE_PATH ${PROJECT_SOURCE_DIR}/cmake)
FIND_PACKAGE(HELLO REQUIRED)

7.进程与程序

ps -l     //查阅自己bash的进程信息
ps aux    //查阅所有系统运作的进程

8.快捷键

//打开桌面终端
Ctrl+Shift+T
//停止当前运行的程序
Ctrl+c
//键盘输入结束
Ctrl+d
//选择任务窗口
Ctrl+Alt+Tab
//补全命令
[Tab]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值