linux常用命令
- date:查看系统日期
- cal : 打出日历
cal 2020:查看2020年的所有日历
cal 1 2020 (查看2020年1月份的日历) - pwd: 查看当前所在目录
- cd / —跳到根目录
- ls —查看当前目录下的文件
ls -l - cd … 退回上一层
- mkdir/rmdir :新建/删除文件夹
- touch/rm : 新建/删除文件
touch修改文件的时间属性为当前系统时间,若文件不存在则新建 - cp src.txt dest.txt 复制文件
- cat file1.txt 从第一行查看文件内容
- tac file1.txt从最后一行开始显示文件内容
- nl file1.txt 显示行号
- diff file1.txt file2.txt :查看两个文件的差异
- head file1.txt -n 5 :查看file1的前5行
- tail file1.txt -n 5:查看file1的最后5行
- wc(word count):查看文件有多少单词
wc test.py
178 225 1836 test.py
178----178行
225—一共有225个单词
1836----一共有多少个字符
wc -w test.py -----只看到有多少个单词
wc -l test.py —只看有多少行
wc -c test.py ----只看有多少个字符 - rm file删除文件:
rm -r删除目录 - mv (1)修改文件名
(2)剪切 - more/less file: (点q退出)一页页显示文件内容,less比more好的地方在于,less可以往前翻页。
- chmod : u g o 更改文件权限
- chown: 将指定文件的拥有者改为指定的用户或组
- find:在文件树中查找文件。
find -atime -2//查找48小时内修改过的文件
find -name '*.log'
find -size +1000c查找大于1k的文件
-
grep word1 file.txt 查看file中包含word1
-
grep i* file.txt *表示出现0-多次的
-
grep ii* file.txt i至少出现一次的
-
grep ^H file.txt 以H开头的单词
-
grep ^Ho file.txt 以Ho开头的单词
-
grep H.ll file.txt
-
grep [Hh]ill city.txt Hill或hill
-
grep [A-Za-z]ill city.txt
-
grep [A-Za-z]ill city.txt | wc 把前面的搜索结果放到wc中进行统计
-
ls > 1.txt 把ls的结果放到1.txt
-
zip 压缩:
zip CProgram.zip * 星号表示压缩当前目录所有文件
zip learn.zip -r learn/* -r表示把文件夹中的所有文件夹递归压缩 -
unzip learn.zip
-
压缩:tar -zcvf learn.tar.gz learn/ 不需要写星号
z 使用gzip压缩
c 打包文件
v 显示压缩过程
f 指定文件名 -
tar -zxvf learn.tar.gz -----解压缩 -x代表解压
tar -zxvf lear.tar.gz -C /usr -C代表指定解压位置 -
下载:wget https://curl.haxx.se/download/curl-7.47.q.tar.gz -O myname.tar.gz (重命名用-O)
-
grep
-i 忽略大小写
-n 输出行号
-r 递归目录中的所有文件
-w 匹配全词
-c 显示有多少行被匹配了
-v(invert) 显示没有被匹配的内容
位置锚定:
^ :锚定行首
$ :锚定行尾。技巧:"^$“用于匹配空白行。
\b或<:锚定单词的词首。如”\blike"不会匹配alike,但是会匹配liker
\b或>:锚定单词的词尾。如"\blike\b"不会匹配alike和liker,只会匹配like
\B :与\b作用相反。 -
查看磁盘空间:
du -sh 查看文件和目录磁盘使用的空间。
df -h 查看磁盘各分区大小,已用空间。 -
查看进程号:
ps
a 显示所有进程
u 指定用户的所有进程
-aux 显示所有包含其他使用者的行程
-e 等于“-A”
e 显示环境变量
f 显示程序间的关系
-ef 显示所有进程信息,连同命令行
ps 与grep 常用组合用法,查找特定进程
ps aux | more 可以用 | 管道和 more 连接起来分页查看
ps aux > 1.txt 把所有进程显示出来,并输出到1.txt文件
linux上进程有5种状态:
R:运行(正在运行或在运行队列中等待)
S:中断(休眠中, 受阻, 在等待某个条件的形成或接受到信号)
D:不可中断(收到信号不唤醒和不可运行, 进程必须等待直到有中断发生)
Z:僵死(进程已终止, 但进程描述符存在, 直到父进程调用wait4()系统调用后释放)
T:停止(进程收到SIGSTOP, SIGSTP, SIGTIN, SIGTOU信号后停止运行运行) -
top:显示当前系统正在执行的进程的相关信息,包括进程 ID、内存占用率、CPU 占用率等
-
yum :提供了查找、安装、删除某一个、一组甚至全部软件包的命令
列出所有可更新的软件清单命令:yum check-update
更新所有软件命令:yum update
仅安装指定的软件命令:yum install <package_name>
仅更新指定的软件命令:yum update <package_name>
列出所有可安裝的软件清单命令:yum list
删除软件包命令:yum remove <package_name>
查找软件包 命令:yum search
清除缓存命令:
yum clean packages: 清除缓存目录下的软件包
yum clean headers: 清除缓存目录下的 headers
yum clean oldheaders: 清除缓存目录下旧的 headers
yum clean, yum clean all (= yum clean packages; yum clean oldheaders) :清除缓存目录下的软件包及旧的headers -
ln命令:
功能是为文件在另外一个位置建立一个同步的链接,当在不同目录需要该问题时,就不需要为每一个目录创建同样的文件,通过 ln 创建的链接(link)减少磁盘占用量。
链接分类:软件链接及硬链接
软链接:
1.软链接,以路径的形式存在。类似于Windows操作系统中的快捷方式
2.软链接可以 跨文件系统 ,硬链接不可以
3.软链接可以对一个不存在的文件名进行链接
4.软链接可以对目录进行链接
硬链接:
1.硬链接,以文件副本的形式存在。但不占用实际空间。
2.不允许给目录创建硬链接
3.硬链接只有在同一个文件系统中才能创建
网络通讯命令:
ifconfig命令:查看(ifconfig -a)和配置linux的网络接口(ifconfig eth0 up/down)
iptables:配置 Linux 内核防火墙的命令行工具。开启 80 端口,因为web对外都是这个端口:iptables -A INPUT -p tcp --dport 80 -j ACCEP
netstat:用于显示网络状态。统计当前进程连接数:netstat -an | grep ESTABLISHED | wc -l
-antup:
a:显示本机所有连接和监听的端口
n:不解析域名
t:显示tcp
u:显示udp
p:显示对应的PID和程序名
ping:用于检测主机。会使用ICMP传输协议,发出要求回应的信息,若远端主机的网络功能没有问题,就会回应该信息,因而得知该主机运作正常。
telnet:用于远端登入。
free:显示系统内存使用情况,包括物理内存、交互区内存(swap)和内核缓冲区内存。
Linux 的目录结构是怎样的?
常见目录说明:
/bin: 存放二进制可执行文件(ls,cat,mkdir等),常用命令一般都在这里;
/etc: 存放系统管理和配置文件;
/home: 存放所有用户文件的根目录,是用户主目录的基点,比如用户user的主目录就是/home/user,可以用~user表示;
**/usr **: 用于存放系统应用程序;
/opt: 额外安装的可选应用程序包所放置的位置。一般情况下,我们可以把tomcat等都安装到这里;
/proc: 虚拟文件系统目录,是系统内存的映射。可直接访问这个目录来获取系统信息;
/root: 超级用户(系统管理员)的主目录(特权阶级o);
/sbin: 存放二进制可执行文件,只有root才能访问。这里存放的是系统管理员使用的系统级别的管理命令和程序。如ifconfig等;
/dev: 用于存放设备文件;
/mnt: 系统管理员安装临时文件系统的安装点,系统提供这个目录是让用户临时挂载其他的文件系统;
/boot: 存放用于系统引导时使用的各种文件;
**/lib **: 存放着和系统运行相关的库文件 ;
/tmp: 用于存放各种临时文件,是公用的临时文件存储点;
/var: 用于存放运行时需要改变数据的文件,也是某些大文件的溢出区,比方说各种服务的日志文件(系统启动日志等。)等;
/lost+found: 这个目录平时是空的,系统非正常关机而留下“无家可归”的文件(windows下叫什么.chk)就在这里。
shell脚本
- sh test.sh
- 变量:赋值时不能写$,使用时必须写$
a=10 不能有空格
echo $a
a=10
b=20
c=`expr $a + $b` +需要加空格
echo $c
a=10
b=20
c=`expr $a \* $b` *需要加转移字符 \(\)括号也需要转移字符
echo $c
- if []
then
else
fi
注意:shell 中数据的大于小于不是<>
-ne 不等于
-gt 大于
-lt 小于
-ge 大于等于
-le 小于等于
-eq 等于
a=5
b=35
if [ $a -gt $b ]
then
echo $a
else
echo $b
fi
- for x in 1 2 3 4
do
done
for x in 1 2 3 4 5 6 7 8 9 10
do
echo $x
done
- while [条件]
do
done
x=1
while [ $x -le 10 ] --[]两边必须有空格
do
echo $x
x=`expr $x + 1` ---不能用x++
done
- 字符串:
a="hello"
b="world"
echo $a$b 注意这里会打印出helloworld
echo $a $b 注意这里会打印出hello world
echo "$a $b" 注意这里会打印出"hello world"
echo "Please enter a:"
read a
echo "Please enter b:"
read b
c=`expr $a + $b`
echo $a + $b = $c
password="hello123"
echo "Please enter password:"
read userPassword
if [ $password = $userPassword ] ----(1)字符串是否相等用= (2)不相等用!=
then
echo "密码正确!"
else
echo "密码错误!"
fi
str1="hello"
str2="world"
str3="$str1 $str2" 字符串拼接
echo $str3
判断一个字符串是否为空:-z -n
str1=""
if [ -z $str1 ]
then
echo "str1 is empty"
else
echo "str1 is not empty"
fi
str1=""
if [ -n $str1 ]
then
echo "str1 is not empty"
else
echo "str1 is empty"
fi
- 数组
arr=(7 8 9 10)
运行时不能用sh,必须用bash
如果代码中有数组必须用bash
arr=(7 8 9 10)
sum=0
for i in ${arr[@]} ----i为数组中的值,并不是下标
do
sum=`expr $sum + $i`
echo $i
done
echo $sum 求和
echo ${arr[1]}----打印出数组下标为1的值
找出数组中的最大值:
arr=(7 8 9 10)
max=${arr[0]}
for i in ${arr[@]}
do
if [ $max -lt $i ]
then
max=$i
fi
done
echo $max
linux全局变量
USER: 当前登录系统的用户名
lyl@lyl:~/learn/linux/test$ echo $USER
lyl
HOME: 当前用户的主目录
windows在C:\users\用户名
lyl@lyl:~/learn/linux/test$ echo $HOME
/home/lyl
进入主目录:
cd $HOME
cd ~
PATH: 环境变量
在/lyl/learn/linux/test/ 新增一个可执行文件example
但是只能在该目录下执行,此时要把这个路径添加到环境变量下,就可以在其他路径运行这个可执行文件了。
PATH=$PATH:/home/lyl/learn/linux/test/
每个路径中间都是用:隔开的。windows中是用;隔开的