Linx常用指令
Linux基础
1. Linux启动
内核引导。
运行 init。
系统初始化。
建立终端 。
用户登录系统。
2. 常用文件管理命令
ls
: 列出当前目录下所有文件,蓝色的是文件夹,白色的是普通文件,绿色的是可执行文件ls -a
:查看所有文件包括隐藏文件(以.开头的文件就是隐藏文件)ls -l
:查看当前路径下文件的读、写、执行权限ls | wc -l
:查看ls
下有多少个文件pwd
: 显示当前路径cd XXX
: 进入XXX目录下,cd ..
返回上层目录.
:当前目录;..
:上级目录~
:家目录,回到路径/home/acs
下cd -
:返回改变路径前的路径cp XXX YYY
: 将XXX文件复制成YYY,XXX和YYY可以是一个路径mkdir XXX
: 创建目录XXXmkdir -p
:如果文件夹不存在,则创建rm XXX
: 删除普通文件;rm XXX -r
: 删除文件夹;rm *./txt
:删除所有同类文件比如txt格式rm *
:删除所有文件(不包括文件夹)rm * -r
:删除所有文件夹rmkdir
:删除一个空的目录mv XXX YYY
: 将XXX文件移动到YYY,和cp命令一样,XXX和YYY可以是一个路径;重命名也是用这个命令touch XXX
: 创建一个文件cat XXX
: 展示文件XXX中的内容tac
最后一行开始显示 ;nl
显示同时带行号复制文本:windows/Linux下:
Ctrl + insert
,Mac下:command + c
粘贴文本:windows/Linux下:
Shift + insert
,Mac下:command + v
clear
清屏history
:查看历史输入指令tree
:以树形显示文件目录结构file xxx
:查看文件属性where/which xxx
:查看xxx在哪
3. 环境变量
环境变量类似于全局变量,可以被各个进程访问到。我们可以通过修改环境变量来方便地修改系统配置。
查看
列出当前环境下的所有环境变量:
|
|
输出某个环境变量的值:
|
|
修改
为了将对环境变量的修改应用到未来所有环境下,可以将修改命令放到~/.bashrc
文件中。
修改完~/.bashrc
文件后,记得执行source ~/.bashrc
,来将修改应用到当前的bash
环境下。
declare
设置环境变量 declare [+/-][选项] [变量名=变量值]
unset <待清除环境变量>
常见环境变量
HOME
:用户的家目录。PATH
:可执行文件(命令)的存储路径。路径与路径之间用:分隔。当某个可执行文件同时出现在多个路径中时,会选择从左到右数第一个路径中的执行。下列所有存储路径的环境变量,均采用从左到右的优先顺序。LD_LIBRARY_PATH
:用于指定动态链接库(.so文件)的路径,其内容是以冒号分隔的路径列表。C_INCLUDE_PATH
:C语言的头文件路径,内容是以冒号分隔的路径列表。CPLUS_INCLUDE_PATH
:CPP的头文件路径,内容是以冒号分隔的路径列表。PYTHONPATH
:Python导入包的路径,内容是以冒号分隔的路径列表。JAVA_HOME
:jdk的安装目录。CLASSPATH
:存放Java导入类的路径,内容是以冒号分隔的路径列表。
module
工具箱
常用命令 | 说明 |
---|---|
module av | avail | 显示可使用模块 |
module li | list | 显示已加载模块 |
module load |add [modulefile] | 加载模块 |
module unload |rm [modulefile] | 卸载模块 |
module purge | 清理说有已加载模块 |
module show|display [modulefile] | 查询配置信息 |
module use [modulefile] | 使用其他module path |
module switch|swap [modulefile1] [modulefile2] | 切换modulefile |
4. 常用命令
常用终端快捷键
ctrl c
: 取消命令,并且换行ctrl d
:关闭终端crtl l
: 清空终端 (也可输入clear
)ctrl u
: 擦除从当前光标位置到行首的全部内容ctrl k
: 擦除从当前光标位置到行尾的全部内容crtl w
: 擦除光标位置前的单词crtl y
: 粘贴使用前三种查出方式的文本。(误删的时候派上用场)crtl a
: 移动光标到行首crtl e
: 移动光标到行尾tab
键:可以补全命令和文件名,如果补全不了快速按两下tab键,可以显示备选选项
4.1 系统状况
top
:查看所有进程的信息(Linux的任务管理器)打开后,输入M:按使用内存排序
打开后,输入P:按使用CPU排序
打开后,输入q:退出
df -h
:查看硬盘使用情况free -h
:查看内存使用情况du -sh
:查看当前目录占用的硬盘空间du -shc *
:查看当前子目录占用的硬盘空间du -h --max-depth=1 ~/
:home 目录下的所有文件和文件夹的大小,但只显示一层目录深度du -h -d 1 /var/lib/docker/overlay2 | grep -E "G\b"
:只显示大小中包含以G
结尾的整个单词ps aux
:查看所有进程ps aux | grep xxx
:使用管道查看具体xxx进程ps -ef | grep xxx
:更详细kill -9 pid
:杀死编号为pid
的进程传递某个具体的信号:
kill -s SIGTERM pid
netstat -nt
:查看所有网络连接netstat -nlp | grep 22
:查看22端口号是否被占用查看网络设置:
netsh wlan show profiles
具体设置:
wlan show profiles wifi名称 key=clear
w
:列出当前登陆的用户ping www.baidu.com
:检查是否连网
4.2 文件权限
chown
:更改文件属性chown bin xxx
:将xxx的拥有者改为bin账号chown root:root xxx
:将xxx拥有者与群组改回rootchmod
:修改文件权限drwxrwxrwx
10位第一位d是不是文件夹,超链接
第一组rwx:自己——可读,可写,可执行 二进制(rwx 111对应7)
第二组rwx:同组——可读,可写,可执行
第三组rwx:其他——可读,可写,可执行
chmod +x xxx
:给xxx添加可执行权限chmod -x xxx
:去掉xxx的可执行权限chmod 777 xxx
:将xxx的权限改成777chmod 777 xxx -R
:递归修改整个文件夹的权限chgrp
:更改文件属组file
: 查看文件类型stat
:查看文件属性
4.3 文件检索
find /path/to/directory/ -name '*.py'
:搜索某个文件路径下的所有*.py
文件find . -path "./envs" -prune -o -name "libatomic.a" -print
:同时排除特定的目录envsgrep xxx
:从stdin中读入若干行数据,如果某行中包含xxx,则输出该行;否则忽略该行。find XXX/ -name '*.cpp' | xargs cat | grep xxx
在XXX文件夹的cpp文件搜索xxxwc
:统计行数、单词数、字节数既可以从stdin中直接读入内容;也可以在命令行参数中传入文件名列表;
wc -l
:统计行数wc -w
:统计单词数wc -c
:统计字节数tree
:展示当前目录的文件结构tree /path/to/directory/
:展示某个目录的文件结构tree -a
:展示隐藏文件ag xxx
:搜索当前目录下的所有文件,检索xxx字符串cut
:分割一行内容从stdin中读入多行数据
echo $PATH | cut -d ':' -f 3,5
:输出PATH
用:
分割后第3、5列数据echo $PATH | cut -d ':' -f 3-5
:输出PATH
用:
分割后第3-5列数据echo $PATH | cut -c 3,5
:输出PATH
的第3、5个字符echo $PATH | cut -c 3-5
:输出PATH
的第3-5个字符sort
:将每行内容按字典序排序可以从stdin中读取多行数据
可以从命令行参数中读取文件名列表
xargs
:将stdin中的数据用空格或回车分割成命令行参数find . -name '*.py' | xargs cat | wc -l
:统计当前目录下所有python文件的总行数
4.4 查看文件内容
more
:浏览文件内容回车:下一行
空格:下一页
b:上一页
q:退出
less
:与more类似,功能更全回车:下一行
y:上一行
Page Down:下一页
Page Up:上一页
q:退出
head -3 xxx
:展示xxx的前3行内容同时支持从stdin读入内容
tail -3 xxx
:展示xxx末尾3行内容同时支持从stdin读入内容
tail -n 5 xxx
:查看xxx尾部5行内容 (常用于日志)tail -f xxx
:实时追踪该xxx文档的所有更新 (常用于 flume 采集数据)
4.5 用户相关
history
:展示当前用户的历史操作。内容存放在~/.bash_history
中- 终端中粘贴字符时头尾出现“0~“和“1~“的特殊字符 :
printf
"\e[?2004l"
4.6 工具
md5sum
:计算md5哈希值可以从stdin读入内容
也可以在命令行参数中传入文件名列表;
time command
:统计command命令的执行时间ipython3
:交互式python3环境。可以当做计算器,或者批量管理文件。! echo "Hello World"
:!表示执行shell脚本watch -n 0.1 command
:每0.1秒执行一次command命令tar
:压缩文件tar -zcvf xxx.tar.gz /path/to/file/*
:压缩tar -zxvf xxx.tar.gz
:解压缩tar -zxvf xxx.tar.gz -C yyy
:解压到指定目录 yyy 中diff xxx yyy
:查找文件xxx与yyy的不同点rpm2cpio demo.rpm | cpio -idmv
:解压demo.rmp
文件ln -s /usr/home/file /usr/home/abc
:软连接: 在目录/usr/home
下建立一个符号链接文件abc
,使它指向目录/usr/home/file
scp source@host:filename targt@host:filename
:远程拷贝文件 [源文件] [目标文件]sz demo
:下载文件strace ./demo
:用于跟踪进程的系统调用以及接收和发送到内核的信号
4.7 安装软件
sudo command
:以root身份执行command命令apt-get install xxx
:安装软件pip install xxx --user --upgrade
:安装python包yum
常用命令- 列出所有可更新的软件清单命令:
yum check-update
- 更新所有软件命令:
yum update
- 仅安装指定的软件命令:
yum install <package_name>
- 仅更新指定的软件命令:
yum update <package_name>
- 列出所有可安裝的软件清单命令:
yum list
- 删除软件包命令:
yum remove <package_name>
- 查找软件包命令:
yum search <keyword>
- 列出所有可更新的软件清单命令:
5. 管道
管道类似于文件重定向,可以将前一个命令的stdout重定向到下一个命令的stdin。
管道命令仅处理stdout,会忽略stderr。
管道右边的命令必须能接受stdin。
多个管道命令可以串联。
与文件重定向的区别
文件重定向左边为命令,右边为文件。
管道左右两边均为命令,左边有stdout,右边有stdin。
|
是管道链接符 用于两个管道之间的链接与通信
|
|
6. 用户组的管理
添加新的用户账号 :useradd 选项 用户名
删除帐号:userdel 选项 用户名
修改帐号:usermod 选项 用户名
增加一个新的用户组:groupadd 选项 用户组
删除一个已有的用户组:groupdel 用户组
修改用户组的属性:groupmod 选项 用户组
7. 定时任务
atd
一次性定时任务配置
at <options> <time>
1 2 3 4
at now +2 minutes # 2分钟执行ls命令并把命令执行结果输出到/tmp/ls.txt文件 at> ls -al > ~/temp/ls.txt crtl + d atq # 查询
cron
周期性定时任务配置
crontab <options> <file>
1 2 3
crontab -e ***** /test.sh crontab -l
常用情况
- windows换行符
\r
对应的显示^M
;转换为unix格式的\n
方法1:
dos2unix filename
方法2:
vi filename
打开文件,执行:set ff=unix
设置文件为unix,然后执行:wq
,保存成unix格式。方法3:使用sed命令
sed -i "s/\r//" filename
或sed -i "s/^M//" filename
直接替换结尾符
常用C++指令
readelf
readelf -d ./demo
:查看动态段信息,比如共享库依赖、动态符号、重定位信息、程序入口点等readelf -a ./demo
:显示 ELF 文件的 所有 可用信息,依次输出所有的 ELF 文件头、节区头、符号表、动态段、重定位信息等内容。readelf –h ./demo
:显示 ELF 文件的 文件头信息readelf --segments ./demo
:显示 ELF 文件的 程序头信息readelf -s --wide ./demo
:显示 ELF 文件的 符号表信息,--wide
选项用于避免输出被截断readelf -S ./demo
: 显示 ELF 文件的 节区头信息,查看demo是否是debug模式编译文件,看section
里有没有.debug_info
也可用--sections
c++filt
解析C++符号工具反汇编操作
1 2 3
llvm-objdump -d # 反汇编命令,默认cpu, extractkernel -i # 反汇编命令,dcu llvm-amdgpu-objdump --inputs= # 反汇编命令,amdgpu