1>命令帮助
1)--help
命令 --help #命令+参数--help 查看命令帮助
#示例: hostname --help
2)man
man man
#man一共9卷 不同卷中可能有相同的函数名
1 可执行程序或shell命令
2 系统调用(内核提供的函数)
3 库调用(程序库中的函数)
4 特殊文件(通常位于 /dev)
5 文件格式和规范,如 /etc/passwd
6 游戏
7 杂项(包括宏包和规范,如 man(7),groff(7))
8 系统管理命令(通常只针对root用户)
9 内核例程(非标准)
2>补齐
单击Tab #如果键入的单词只有一个相对应的命令,shell会自动给出相应的命令
双击Tab #如果键入的单词后有多个相对应的命令,shell会自动给出所有命令
ctrl+a #将光标移动到命令的最前
ctrl+e #将光标移动到最后面
ctrl+u #将该行已输入的代码清空
1)关机
shutdown -h now # 立刻关机
shutdown -h 5 #5分钟后关机
poweroff #立刻关机
2)重启
shutdown -r now #立刻重启
shutdown -r 5 #5分钟后重启
reboot # 立刻重启
du #显示磁盘大小
df #查看磁盘使用情况
#解压tar.xz文件需两步:
xz -d xxx.tar.xz #1.将 xxx.tar.xz解压成 xxx.tar
tar xvf xxx.tar #2.解压xxx.tar
tar是Unix和类Unix系统上的压缩打包工具。
可以将多个文件合并为一个文件,打包后的文件后缀亦为“tar”。
tar代表未压缩的tar文件。
已压缩的tar文件则附加压缩文件的扩展名,如经过gzip压缩后的tar文件,扩展名为“.tar.gz”。
由于受到DOS8.3文件名格式的限制,常使用下列缩写:
.tgz等价于.tar.gz
.tbz与tb2等价于.tar.bz2
.taz等价于.tar.Z
.tlz等价于.tar.lzma
.txz等价于.tar.xz
linux自带压缩的格式: gzip 、bZip2
命令格式是:tar 功能 选项 文件
功能
-c,--create 创建新的tar文件
-x,--extract,--get 解开tar文件
-t,--list 列出tar文件中包含的文件的信息
-r,--append 附加新的文件到tar文件中
-u,--update 用已打包的文件的较新版本更新tar文件
-A,--catenate,--concatenate 将tar文件作为一个整体追加到另一个tar文件中
-d,--diff,--compare 将文件系统里的文件和tar文件里的文件进行比较
--delete 删除tar文件里的文件。注意,这个功能不能用于已保存在磁带上的tar文件。
常用选项
-v,--verbose 列出每一步处理涉及的文件的信息,只用一个“v”时,仅列出文件名,使用两个“v”时,列出权限、所有者、大小、时间、文件名等信息。
-k,--keep-old-files 不覆盖文件系统上已有的文件。
-f,--file [主机名:]文件名 指定要处理的文件名。可以用“-”代表标准输出或标准输入。
-P,--absolute-names 使用绝对路径。
-j,--bzip2 调用bzip2执行压缩或解压缩。注意,由于部分老版本的tar使用-I实现本功能,因此,编写脚本时,最好使用--bzip2。
-J,--xz,--lzma 调用XZ Utils执行压缩或解压缩。依赖XZ Utils。
-z,--gzip,--gunzip,--ungzip 调用gzip执行压缩或解压缩。
-Z,--compress,--uncompress 调用compress执行压缩或解压缩。
1.默认tar压缩
tar -cvf home_backup.tar /home #将/home目录下的所有文件打包入home_backup.tar文件中
# “home_backup.tar”实际上是-f选项的参数
2.以gzip格式压缩
tar zcvf '指定的生成压缩包名' file1 dir2 #将文件file1和文件夹dir2一起以gzip格式压缩,
3.bZip2格式压缩
tar jcvf '指定的生成压缩包名' file1 dir2 #将文件file1和文件夹dir2一起以bZip2格式压缩.
tar -xvf home_backup.tar #在当前目录下解压home_back.tar
tar -xvf home_backup.tar home/test.c #指定解压出test.c这个文件。解压过程中会自动创建home这个子目录。
tar zxvf '指定的压缩包名'
tar jxvf '指定的压缩包名'
tar jxvf a.gz -C test #解压到test文件夹下
①rar
1.安装
sudo apt-get install rar #ubuntu
yum install rar #centos
2.参数及命令
参数:
a :压缩参数 必填项
-r :递归
x :解压参数
压缩:
rar a -r '指定压缩名' dir1 file2 #将文件夹dir1和文件file2打包压缩
解压:
unrar x '指定压缩名'
unrar x '指定压缩名' test #解压到test文件夹下
1.参数
-r :递归
2.命令
压缩:
zip -r x.zip dir1 a.c #将文件夹dir1和文件a.c一起压缩为x.zip
解压:
unzip x.zip #解压文件x.zip
-d #指定解压目录
unzip x.zip -d test #将x.zip文件解压到test文件夹下
扩展名.zst表示存档由zstd压缩。
1.安装
sudo apt install zstd
2.解压:
可以按照如下命令进行解压:
tar -I zstd -xvf xxxx.tar.zst
1)常用查找
ls #显示当前文件夹下所有文件及文件夹
ll 等同于 ls -l #显示当前文件夹下所有文件及文件夹 以及相应权限
ls -a #显示当前文件夹下所有文件,包含隐藏文件
ls -l 文件或文件夹名 #显示指定文件或文件夹名下文件的详细信息
ls -dl 文件夹名 #显示指定文件夹的详细信息
ls -R 文件夹名 #递归显示指定文件夹内的信息 必须是大写R。 R代表递归 recursion
ls -Rl 文件夹名 #递归显示指定文件夹内的详细信息
pwd #显示当前目录
2)目录增删改及移动
①切换目录
cd 文件夹名
cd . #代表当前目录
cd .. #回退到上级目录
cd - #回退到上次打开的目录
cd ~ #跳转到当前用户的家目录
②创建目录
mkdir aaa #在当前目录下创建一个名为aaa的目录
mkdir usr/aaa #在指定目录下创建一个名为aaa的目录,前提usr必须已经存在
mkdir -p aaa/bbb/ccc #创建多及目录
③删除目录
#使用rm命令要小心。因为一旦文件被删除,它是不能被恢复的。为了防止这种情况的发生,可以使用“i”选项来逐个确认要删除的文件。如果用户输入“y”,文件将被删除
#rm不仅可以删除目录,也可以删除其他文件或压缩包
参数:
-f #忽略不存在的文件,强制删除,不给出提示。
-r #指示rm将参数中列出的全部目录和子目录均递归地删除。
-i #进行交互式删除。
命令:
rmdir 文件夹 #删除空目录 非空会报错
rmdir -r 文件夹 #递归删除目录无论该文件夹是否为空,
rm -rf aaa #递归删除当前目录下的aaa目录(不询问)
rm -ri temp #递归删除当前目录下的aaa目录(询问)
④修改目录名
mv old new #将目录名old改为new
⑤移动目录
cp -r 目录名称 目录拷贝的目标位置 #-r代表递归
cp -a 目录名称 目录拷贝的目标位置 #-a代表所有文件
cp 文件名a 文件名b #以文件a创建文件b,b中数据同a
3)文件增删改
#linux系统文件类型:7+1
- #普通文件
d #目录文件
c #字符设备文件
b #块设备文件
l #链接文件,类似于windows下的快捷方式
p #表示该文件为命令管道文件。与shell编程有关的文件。
s #表示该文件为sock文件。与shell编程有关的文件,套接字。
未知文件类型。
#权限解读
#r表是读 (Read) 、w表示写 (Write) 、x表示执行 (eXecute)
#三个一组,例如:rwx(Owner)r-x(Group)r-x(Other)
#硬链接解读详见下二
①创建文件
touch 文件名 #创建文件
touch 'x y' #文件名带特殊字符的创建方法1
touch x\ y #文件名带特殊字符的创建方法2 ,转义字符
cp 文件名a 文件名b #以文件a创建文件b,b中数据同a
②文件权限设置
1)权限相关参数
chmod #设置文件权限
u:user
g:group
o:others
a:all
+ :追加权限
- :去掉相应权限,其他保留
= :附上权限,并去掉其他权限
2)文字设定法:
chmod u+x a.c #给文件a.c加上用户的执行权限
chmod go+wx a.c #给文件a.c加上组别和其他的写和执行权限
chmod u+r,g+rwx,o+x a.c #给文件a.c加上相应权限
-、=的用法和上面的+一致,不做赘述。
3)数字设定法
r :4
w : 2
x : 1
chmod 471 a.c #相当于命令:chmod u+r,g+rwx,o+x a.c
chmod 777 a.c 等同于 chmod a=rwx a.c
相关用户组设置参照下4.
③查看文件内容
cat 文件名 #显示文件中内容输出到到终端
cat 不加文件名 #读标准输入,遇到\n后输出到终端,输入ctrl+d结束cat命令
more 文件名 #分屏显示文件内容(显示百分比),空格翻页 回车 往下显示一行 q 退出
less 文件名 #分屏显示文件内容(不显示百分比),空格翻页 q 退出
head 文件名 #默认显示前10行内容
head -15 文件名 #指定显示前15行内容
tail -15 文件名 #指定显示后15行内容
④查看文件属性
wc 文件名 #显示byte数、列数、字数
wc -c #显示字节数 同 wc -bytes 同 wc -chars
wc -l #显示列数 同 wc -lines
wc -w #显示字数 同 wc -words
od 文件名 #查看当前文件二进制格式显示结果 也可在od后指定不同进制显示 详情自行百度
⑤移动文件
cp -r 目录及文件名称 目标位置 #-r代表递归
cp -a 目录 目标位置 #-a代表所有文件
cp 文件名a 文件名b #以文件a创建文件b,b中数据同a
4)tree
1.安装
需安装(ubuntu安装命令)sudo apt-get install tree
2.命令
tree #按树结构显示当前文件夹下目录和文件
1)增
sudo adduser wangwu #添加用户wangwu
sudo addgroup g8 #添加用户组g8
2)删
sudo deluser wangwu #删除wangwu
sudo delgroup g8 #删除用户组g8
3)改,指修改文件权限
sudo chown wangwu a.c #将a.c文件的所有者变为wangwu用户
sudo chgrp g8 a.c #将文件a.c的组修改为g8
sudo chown nobody:nogroup a.c #ubuntu才能这么用。nobody:nogroup是系统自带的用户和组 将a.c所有者和组改为未知。
4)切换用户
su test #切换到test用户,但是路径还是/root目录
su - test : #切换到test用户,路径变成了/home/test
su : #切换到root用户,但是路径还是原来的路径
su - : #切换到root用户,并且路径是/root
su不足:如果某个用户需要使用root权限、则必须要把root密码告诉此用户。
退出返回之前的用户:exit
#以文件名作为搜索对象,查出的是一个结果集,并可以对相应的结果集进行操作
man find #查看命令帮助
1)参数
-maxdepth 1 #指定目录搜索层级
-name #指定搜索名
-type #指定搜索类型
-size #按文件大小搜索 不指定大小默认为b(block),1b=512bytes 单位区分大小写
-exec #将搜索结果执行某段命令
-ok #交互式将搜索结果执行某段命令
-xargs #管道命令参数,当结果集数量过大时,可以分片映射。
-print #指定find的结果打印出来以空格间隔(默认打印可以不写)。-print0将结果集改为由null间隔
#时间命令不常用 知道即可
-amin -atime #最后一次访问(仅仅是访问,没有改动)
-mmin -mtime #最后一次修改文件的时间
-cmin -ctime #最后一次对文件属性改变的时间,包括权限,大小,属性等等
2)用法示例
find ./ -name '*.c' #查找当前文件夹下所有名字为.c的文件。会嵌套出内层文件夹的相应文件
find ./ -maxdepth 1 -name '*.c' #查找当前文件夹下所有名字为.c的文件,不嵌套出内层文件夹的文件
find ./ -type 'l' #查找当前文件夹下文件类型为软连接的文件,会嵌套出内层文件夹的文件
find ./ -maxdepth 1 -type 'l' #查找当前文件夹下文件类型为软连接的文件,不嵌套出内层文件夹的文件
find ./ -size +1k -size -2M #找出当前文件夹下文件大于1K小于2M的文件。
find 结果集默认是以空格分开,修改为以null分开,需添加参数-print0
find ./ -maxdepth 1 -type f -print0 | xargs -print0 ls -l
find ./ -maxdepth 1 -type f -exec ls -l {} \; 等同于 find ./ -maxdepth 1 -type f | xargs ls -l
#find用管道命令,必须加参数xargs。exec是将结果集整体处理。使用xargs的效率更高,因为它是分块处理(如100万行结果集,会先执行一万再执行下一万)。
#查找出文件类型为f的文件,并给每个文件执行ls -l 命令。{}指代find ./ -maxdepth 1 -type f的结果集,\;中\为转义字符 ;为语法。
#示例:
#[root@bogon Desktop]# find ./ -maxdepth 1 -type 'f'
#./a.c
#./b.cpp
#[root@bogon Desktop]# find ./ -maxdepth 1 -type f -exec ls -l {} \;
#-r--rwx--x. 2 root root 7 Dec 31 02:14 ./a.c
#-rw-r--r--. 1 root root 7 Dec 31 02:14 ./b.cpp
find ./ -maxdepth 1 -type f -exec rm -r {} \; #删除当前文件夹下f类型的文件(不询问)
find ./ -maxdepth 1 -type f -ok rm -r {} \; #删除当前文件夹下f类型的文件(询问,n不执行,y执行)
#示例:
#[root@bogon Desktop]# find ./ -maxdepth 1 -type f -ok rm -r {} \;
#< rm ... ./a.c > ? n
#< rm ... ./b.cpp > ? n
#以文件内容作为搜索对象,常配合管道 | 进行应用
grep 参数 查找条件 文件名
1)参数:
-c #只输出匹配行的计数。
-I #不区分大 小写(只适用于单字符。
-l #查询多文件时只输出包含匹配字符的文件名。
-n #显示匹配行及 行号。
-s #不显示不存在或无匹配文本的错误信息。
-v #显示不包含匹配文本的所有行。
2)common
grep -r '搜索内容' ./ -n #在当前文件夹下递归搜索包含指定内容的文件,并给出行号
grep 'test' d* #显示所有以d开头的文件中包含 test的行。
grep 'test' aa bb cc #显示在aa,bb,cc文件中匹配test的行。
grep '[a-z]\{5\}' aa #显示所有包含每个字符串至少有5个连续小写字符的字符串的行。
grep -v test *test* #反向查找,通过"-v"参数可以打印出不符合条件行的内容
ps -ef | grep sshd #查找指定ssh服务进程
ps -ef | grep sshd | grep -v grep #查找指定服务进程,排除gerp身
ps -ef | grep sshd -c #查找指定进程个数
ps [选项]
1)选项:
-e 显示所有进程
-f 全格式
-h 不显示标题
-l 长格式
-w 宽输出
-r 只显示正在运行的进程
-a 即all,查看当前系统所有用户的所有进程,与 -e 具有同样的效用;
-u 以用户为主的进程状态
-x 显示没有控制终端的进程。就是不需要和用户进行交互
2)common
ps ajx #这个最常用,格式化格式显示所有进程。
ps aux #查看所有系统进程,和windows任务管理器类似
ps aux |grep 'abc' #查找进程中aux结果集中任一列包含abc的进程
ps -Lf 进程id #查看线程号
who #显示当前用户的进程
jobs #查看当前用户下后天运行的进程
fg 前台进程切换
bg 后台进程切换
kill
top 文字版的任务管理器
ls -l 程序名 #查看正在运行程序的大小
Ctrl+C #终止任务运行快捷键
killall programname #杀死多个后台运行程序。一次全杀死,这个就相当于先找到名字叫programname的所有程序对应的ID,然后循环执行kill ID的命令
kill ID #根据ID每次杀死一个
kill -9 ID #强制杀死进程
killall -信号数字 程序名 #指定执行某信号
程序命令 & #运行某个命令后面加&,代表后台运行
#示例:sleep 5 & #在后台运行sleep,而前台可以做任何操作;如果不加&,前台就需要等sleep 5秒后再进行相关操作
ps #ps 查看当前终端的进程,也就是当前terminal中运行的进程。
ps -ef #查看系统全部的进程
#如下ps结果列名:
#UID :启动进程的操作系统用户。
#PID :进程编号。
#PPID :进程的父进程的编号。
#C :CPU使用的资源百分比。
#STIME :进程启动时间。
#TTY :进程所属的终端。
#TIME :使用掉的CPU时间。
#CMD :执行的是什么指令。
ps -ef |more #查看系统全部的进程,结果分页显示。
ps -ef |grep book #查看系统全部的进程,然后从结果集中过滤出包含“book”单词的记录。程序员用得最多的指令就是这个了。
ps -ef |grep 进程名|wc #统计当前正在运行程序进程的个数,最后的wc就是统计行数的意思,而一行信息对应一个文件或程序
tail -f filename #查看文件动态变化,比如查看日志文件的实时写入状态
ps -xH #查看系统全部线程
ps -xH |grep threadname #查看系统全部的进程,然后从结果集中过滤出包含“threadname”单词的记录。
通过进程ID查看线程ID:
1.以线程数的形式查看
pstree -p $pid #1.以线程数的形式查看
2.动态形式查看线程数
top -Hp $pid #2.动态形式查看线程数,线程销毁时这个动态显示也会消失
cat /proc/sys/fs/file-max #查看当前计算机所能打开的最大文件个数。受硬件影响
ulimit -a #当前用户下的进程,默认打开文件描述符个数。缺省为 1024.
修改默认文件描述符个数:
1.打开 sudo vi /etc/security/limits.conf
2.写入
* soft nofile 65535 #设置open files的默认值。也可以直接通过命令修改,如下:
ulimit -n 10240 #将open files的值设置为10240. 每次都需要注销用户令其生效。
* hard nofile 65535 #命令修改上限。 soft nofile 后及 ulimit -n 后的值都不能超过此值。
netstat -apn |grep 端口号 #查看网络通信时,客户端或服务端的状态
nc 127.0.0.1 10001 #模仿客户端连接服务器,TCP做的
netstat -an | grep 8080 #搜索指定端口8080
netstat -an #查看当前系统端口
----------------------------------查看.sh文件---------------------------------------
#1.(必须先装有vim编辑器)在bash窗口中输入:
vi 文件名.sh
----------------------------------执行.sh文件方法-----------------------------------
#1.在bash窗口,利用命令执行
sh 文件名.sh
#2.cd到.sh文件的目录下,然后
./文件名.sh
sudo service sshd status #查看是否开启了ssh服务
sudo yum install sshd / sudo yum install openssh-server 安装 ssh服务
sudo service sshd start #开启ssh服务
sudo yum remove sshd #卸载ssh服务
ssh连接远端服务器(实现的效果和SecurCRT或XShell类似):
ssh -p 2222 用户名@IP #不指定 -p参数 默认端口号为 22
例:ssh pl@10.219.10.39
ifconfig #查看ip
ifconfig -a #查看详细信息
1.全局
vi ~/.bash_profile
export http_proxy=http://192.168.1.1:3128
export https_proxy=http://192.168.1.1:3128
export ftp_proxy=http://192.168.1.1:3128
2.wget
vi /etc/wgetrc
添加下面两行:
http_proxy = IP:PORT
ftp_proxy = IP:PORT
3.yum
vi /etc/yum.conf
proxy=http://192.168.1.1:3128
3.临时生效(仅在当前terminal下有效)
export http_proxy=http://username:password@yourproxy:8080/
export ftp_proxy=http://username:password@yourproxy:8080/
#or
export http_proxy=http://yourproxy:8080/
export ftp_proxy=http://yourproxy:8080/
用的时候再说吧
安装 proxychains工具
参考链接
ldd ./hello #list, dynamic, dependencies (列出动态库依赖关系)
strace ./mycp #跟踪打印出程序执行时的系统调用
cat /etc/shells #查看当前系统下有哪些shell
echo $SHELL #查看当前正在使用的shell
history #查看历史使用过的命令
sudo passwd 用户名 #设置用户密码
ifconfig #查看网卡信息
free -m #查看空闲内存
od -tcx filename #查看文件的16进制表示形式
od -tcd filename #查看文件的10进制表示形式
service network restart #重启网络
readlink 链接 #读链接本身
whoami #查看当前登录用户
which 命令 #显示可执行命令文件所在文件夹
alt+n #切换终端标签。n为1、2、3...
alias #给一段命令起别名
#示例:
#[root@bogon Desktop]# alias pg='ls -l'
#[root@bogon Desktop]# pg
#total 24
#-r--rwx--x. 1 root root 13 Jan 3 20:10 a.c
#-rw-r--r--. 1 root root 7 Dec 31 02:14 b.cpp
#lrwxrwxrwx. 1 root root 17 Dec 31 03:41 d.c -> /root/Desktop/a.c
echo #显示字符串
#示例:
#[root@bogon Desktop]# echo aaa
#aaa
umask #掩码,设定权限用,详情百度
env #显示系统所有环境变量
#示例:
#[root@bogon Desktop]# env | grep SHELL
#SHELL=/bin/bash
sed和awk shell脚本命令,写脚本用的,详情自行百度。
#安装防火墙,如果没有安装防火墙,下面的命令都会无效
sudo apt install firewalld
------------------------查看防火墙的命令----------------------------
#查看防火墙的版本
firewall-cmd --version
#查看防火墙的状态。
firewall-cmd --state
#查看防火墙服务状态(普通用户可执行)
systemctl status firewalld
#查看防火墙全部的信息
firewall-cmd --list-all
#查看防火墙已开通的端口
firewall-cmd --list-port
#查看防火墙已开通的服务
firewall-cmd --list-service
#查看全部的服务列表(普通用户可执行)
firewall-cmd --get-services
#查看防火墙服务是否开机启动。
systemctl is-enabled firewalld
------------------------配置防火墙的命令----------------------------
# 启动
systemctl start firewalld
# 重启
systemctl restart firewalld
# 关闭
systemctl stop firewalld
# 开放80端口
firewall-cmd --zone=public --add-port=80/tcp --permanent
# 移去80端口
firewall-cmd --zone=public --remove-port=80/tcp --permanent
# 开放5000-5500之间的端口
firewall-cmd --zone=public --add-port=5000-5500/tcp --permanent
# 移去5000-5500之间的端口
firewall-cmd --zone=public --remove-port=5000-5500/tcp --permanent
# 开放ftp服务
firewall-cmd --zone=public --add-service=ftp --permanent
# 移去http服务
firewall-cmd --zone=public --remove-service=ftp --permanent
#重新加载防火墙配置(修改配置后要重新加载防火墙配置或重启防火墙服务)
firewall-cmd --reload
# 启用服务
systemctl enable firewalld
# 禁用服务
systemctl disable firewalld
在这里插入代码片
1.apt命令从Ubuntu 16.04“引入”,许多其他发行版遵循Ubuntu的脚步并开始鼓励用户使用apt而不是apt-get。
作为普通的 Linux 用户,优先使用 apt,它是 Linux 发行版推荐的命令。它提供了包管理必要的选项,更重要的是便于记忆。
2.apt 是 apt-get 和 apt-cache 的子集,为包管理提供必要的命令。
3.虽然 apt-get 没有被弃用,但是作为普通 Linux 用户,推荐开始频繁的使用 apt。
apt-get remove #卸载软件包;
apt-get autoremove #会卸载所有自动安装且不再使用的软件包,一般用来清理依赖项(慎用);
apt-get purge# 卸载并清除软件包的配置;
yum install xxx #安装软件
yum -y install xx #安装软件 如下为加参数作用
#-h: 显示帮助信息;
#-y:对所有的提问都回答“yes”;
#-c: 指定配置文件;
#-g:安静模式;
#-v:详细模式;
#-d: 设置调试等级(0-18) ;
#-e: 设置错误等级(0-10) ;
#R:设置yum处理一个命令的最大等待时间;
#C:完全从缓存中运行,而不去下载或者更新任何头文件。