技术标签: linux
一、目录
/bin:bin是Binary的缩写, 这个目录存放着最经常使用的命令。
/boot:这里存放的是启动Linux时使用的一些核心文件,包括一些连接文件以及镜像文件。
/dev :dev是Device(设备)的缩写, 该目录下存放的是Linux的外部设备,在Linux中访问设备的方式和访问文件的方式是相同的。
/etc:这个目录用来存放所有的系统管理所需要的配置文件和子目录。
/home:用户的主目录,在Linux中,每个用户都有一个自己的目录,一般该目录名是以用户的账号命名的。
/lib:这个目录里存放着系统最基本的动态连接共享库,其作用类似于Windows里的DLL文件。几乎所有的应用程序都需要用到这些共享库。
/lost+found:这个目录一般情况下是空的,当系统非法关机后,这里就存放了一些文件。
/media:linux系统会自动识别一些设备,例如U盘、光驱等等,当识别后,linux会把识别的设备挂载到这个目录下。
/mnt:系统提供该目录是为了让用户临时挂载别的文件系统的,我们可以将光驱挂载在/mnt/上,然后进入该目录就可以查看光驱里的内容了。
/opt:这是给主机额外安装软件所摆放的目录。比如你安装一个ORACLE数据库则就可以放到这个目录下。默认是空的。
/proc:这个目录是一个虚拟的目录,它是系统内存的映射,我们可以通过直接访问这个目录来获取系统信息。
这个目录的内容不在硬盘上而是在内存里,我们也可以直接修改里面的某些文件,比如可以通过下面的命令来屏蔽主机的ping命令,使别人无法ping你的机器:
echo 1 > /proc/sys/net/ipv4/icmp_echo_ignore_all
/root:该目录为系统管理员,也称作超级权限者的用户主目录。
/sbin:s就是Super User的意思,这里存放的是系统管理员使用的系统管理程序。
/selinux:这个目录是Redhat/CentOS所特有的目录,Selinux是一个安全机制,类似于windows的防火墙,但是这套机制比较复杂,这个目录就是存放selinux相关的文件的。
/srv:该目录存放一些服务启动之后需要提取的数据。
/sys:这是linux2.6内核的一个很大的变化。该目录下安装了2.6内核中新出现的一个文件系统 sysfs 。
sysfs文件系统集成了下面3种文件系统的信息:针对进程信息的proc文件系统、针对设备的devfs文件系统以及针对伪终端的devpts文件系统。
该文件系统是内核设备树的一个直观反映。
当一个内核对象被创建的时候,对应的文件和目录也在内核对象子系统中被创建。
/tmp:这个目录是用来存放一些临时文件的。
/usr:这是一个非常重要的目录,用户的很多应用程序和文件都放在这个目录下,类似于windows下的program files目录。
/usr/bin:系统用户使用的应用程序。
/usr/sbin:超级用户使用的比较高级的管理程序和系统守护程序。
/usr/src:内核源代码默认的放置目录。
/var:这个目录中存放着在不断扩充着的东西,我们习惯将那些经常被修改的目录放在这个目录下。包括各种日志文件。
在linux系统中,有几个目录是比较重要的,平时需要注意不要误删除或者随意更改内部文件。
/etc: 上边也提到了,这个是系统中的配置文件,如果你更改了该目录下的某个文件可能会导致系统不能启动。
/bin, /sbin, /usr/bin, /usr/sbin: 这是系统预设的执行文件的放置目录,比如 ls 就是在/bin/ls 目录下的。
值得提出的是,/bin, /usr/bin 是给系统用户使用的指令(除root外的通用户),而/sbin, /usr/sbin 则是给root使用的指令。
/var: 这是一个非常重要的目录,系统上跑了很多程序,那么每个程序都会有相应的日志产生,而这些日志就被记录到这个目录下,具体在/var/log 目录下,另外mail的预设放置也是在这里。
二、语法
命令 空格 参数 空格 【文件或路径】需要处理的内容
rm -rf / tmp/*
ls -la /home
结婚 -没车没房 女的就行
结婚 -有车有房 白富美
文件夹创建
mkdir oldboy
#递归创建a/b c/d
mkdir -p a/b c/d
#递归创建test/a,b,c,d四个目录
mkdir -p test/{a,b,c,d}
#递归创建文件夹a/b/c/d/e
mkdir -p a/b/c/d/e
ls查看目录内容
ls -- list directory contents
ls /oldboy
ls -a // 可查看隐藏目录
ls -hl // 人性化显示
ls -ld // 查看目录本身的详情
pwd
pwd // 查看当前文件目录
touch happy.txt // 文件创建
文本编辑器
vi
vim
使用vi打开oldboy.py,默认是命令模式,需要输入a/i进入编辑模式,然后输入文本"Life is short,i use python"
按下esc键,回到命令模式
输入 :wq! 强制保存退出
w write 写入
q quit 退出
! 强制
或者 :x 保存退出
------
:q 不保存退出
:q! 不保存强制退出
查看文件内容
cat文件内容
cat命令用于查看纯文本文件(常用于内容较少的)
#查看文件,显示行号
cat -n xxx.py
#猫,查看文件
cat xxx.py
#在每一行的结尾加上$符
[root@master tmp]# cat -E 1.txt
#追加文字到文件
cat >>/tmp/oldboy.txt << EOF
唧唧复唧唧
木兰开飞机
开的什么机
波音747
EOF
more查看文件
1.more命令用于查看内容较多的文本,例如要看一个很长的配置文件,cat查看内容屏幕会快速翻滚到结尾。
2.more命令查看文本会以百分比形式告知已经看到了多少,使用回车键向下读取内容
more /etc/passwd
按下空格space是翻页
按下b键是上一页
回车键向下读取内容
head显示文件前几行,默认前10行
tail显示文件后几行,默认后10行
#查看前两行
head -2 /tmp/oldboy.txt
#查看后两行
tail -2 /tmp/oldboy.txt
#持续刷新显示
tail -f xx.log
#显示文件10-30行
head -30 /tmp/oldboy.txt |tail -21
cp复制命令
复制 > copy > cp
#移动xxx.py到/tmp目录下
cp xxx.py /tmp/
#移动xxx.py顺便改名为chaoge.py
cp xxx.py /tmp/chaoge.py
Linux下面很多命令,一般没有办法直接处理文件夹,因此需要加上(参数)
cp -r 递归,复制目录以及目录的子孙后代
cp -p 复制文件,同时保持文件属性不变 可以用stat
cp -a 相当于-pdr
#递归复制test文件夹,为test2
cp -r test test2
cp是个好命令,操作文件前,先备份
cp main.py main.py.bak
mv移动命令
mv命令可以移动文件,文件夹
mv命令可以重命名
移动(搬家)命令 > move > mv
cd /home
#把老男孩从沙河这破地方,搬到朝阳去
mv /home/shahe/oldboy /tmp/chaoyang
文件/文件夹改名
mv x.log xx.log
rm删除命令
删除 > remove > rm
参数 -i 需要删除确认
-f 强制删除
-r 递归删除目录和内容
cd /tmp
rm oldboy.py
#默认有提示删除,需要输入y
rm -f oldboy.py #不需要提示,强制删除
#rm默认无法删除目录,需要跟上参数-r
rm -rf /tmp/oldboy/
rm -rf /tmp/* // 清空tmp下的所有东西
--------
友情提醒:初学者使用rm命令,随时快照虚拟机
find查找命令
#Linux里如何找到需要的文件 例如 oldboy.py
find 在哪里(目录) 什么类型(文件类型) 叫什么名字(文件名)
参数
-name 按照文件名查找文件
-type 查找某一类型的文件,诸如:
-perm 根据权限查询
b - 块设备文件。
d - 目录。
c - 字符设备文件。
p - 管道文件。
l - 符号链接文件。
f - 普通文件。
s - socket文件
find /tmp/ -type f -name "oldboy.py"
#找出/tmp所有以 .txt 结尾的文件
find /tmp/ -type f -name "*.txt"
#找到/etc下所有名字以host开头的文件
find /etc -name 'host*'
#找到/opt上一个名为settings.py
find /opt -name 'settings.py'
# 找出来再删除
find . -name *.e -exec rm {} \
# 查看修改时间
find / -mtime 0 // 当天修改的文件 +10 十天以前 -10 十天以后
管道符”|”
Linux提供的管道符“|”讲两条命令隔开,管道符左边命令的输出会作为管道符右边命令的输入。
常见用法:
#检查python程序是否启动
ps -ef|grep "python"
#找到/tmp目录下所有txt文件
ls /tmp|grep '.txt'
#检查nginx的端口是否存活
netstat -tunlp |grep nginx
alias别名命令
Linux如何提示你,在使用这些命令时候,提醒你小心呢?
#查看系统别名
alias
默认别名
alias cp='cp -i'
alias egrep='egrep --color=auto'
alias fgrep='fgrep --color=auto'
alias grep='grep --color=auto'
alias l.='ls -d .* --color=auto'
alias ll='ls -l --color=auto'
alias ls='ls --color=auto'
alias mv='mv -i'
alias rm='rm -i'
alias which='alias | /usr/bin/which --tty-only --read-alias --show-dot --show-tilde'
别名作用是:
我们在linux中使用cp时候相当于执行了cp -i
-i:删除已有文件或目录之前先询问用户;
#别名用比较危险的操作,防止你犯错
which查找命令
which命令用于查找并显示给定命令的绝对路径,环境变量PATH中保存了查找命令时需要遍历的目录。
which指令会在环境变量$PATH设置的目录里查找符合条件的文件。
也就是说,使用which命令,就可以看到某个系统命令是否存在,以及执行的到底是哪一个位置的命令。
which pwd
which python
实例
which python #python命令在哪
/usr/bin/python #命令文件绝对路径
scp远程传输命令
Linux scp命令用于Linux之间复制文件和目录。
scp是 secure copy的缩写, scp是linux系统下基于ssh登陆进行安全的远程文件拷贝命令。
语法
scp 【可选参数】 本地源文件 远程文件标记
参数
-r :递归复制整个目录
-v:详细方式输出
-q:不显示传输进度条
-C:允许压缩
实例
#传输本地文件到远程地址
scp 本地文件 远程用户名@远程ip:远程文件夹/
scp 本地文件 远程用户名@远程ip:远程文件夹/远程文件名
scp /tmp/chaoge.py [email protected]:/home/
scp /tmp/chaoge.py [email protected]:/home/chaoge_python.py
scp -r 本地文件夹 远程用户名@远程ip:远程文件夹/
scp -r /tmp/oldboy [email protected]:/home/oldboy
#复制远程文件到本地
scp [email protected]:/home/oldboy.txt /tmp/oldboy.txt
scp -r [email protected]:/home/oldboy /home/
du统计文件大小
Linux du命令用于显示目录或文件的大小。
du会显示指定的目录或文件所占用的磁盘空间。
用法
du 【参数】【文件或目录】
-s 显示总计
-h 以k,M,G为单位显示,可读性强
实例
显示目录或文件所占空间
#什么都不跟,代表显示当前目录所有文件大小
du
#显示/home的总大小
du -sh /home
top系统负载查看
top 命令用于动态地监视进程活动与系统负载等信息
用户管理
现代操作系统一般属于多用户的操作系统,也就是说,同一台机器可以为多个用户建立账户,一般这些用户都是为普通用户,这些普通用户能同时登录这台计算机,计算机对这些用户分配一定的资源。
普通用户在所分配到的资源内进行各自的操作,相互之间不受影响。但是这些普通用户的权限是有限制的,且用户太多的话,管理就不便,从而引入root用户。
此用户是唯一的,且拥有系统的所有权限。root用户所在的组称为root组。“组”是具有相似权限的多个用户的集合。
root的权利
Linux系统的特性就是可以满足多个用户,同时工作,因此Linux系统必须具备很好的安全性。
在安装RHEL7时设置的root管理员密码,这个root管理员就是所有UNIX系统中的超级用户,它拥有最高的系统所有权,能够管理系统的各项功能,如添加/删除用户,启动/关闭进程,开启/禁用硬件设备等等。
因此“能力越大,责任越大”,root权限必须很好的掌握,否则一个错误的命令可能会摧毁整个系统。
root为什么叫root?
在Linux系统中,用户也有自己的UID身份账号且唯一
系统管理员UID为0
系统用户UID为1~999 Linux安装的服务程序都会创建独有的用户负责运行。
普通用户UID从1000开始:由管理员创建
用户组GID
为了方便管理属于同一组的用户,Linux 系统中还引入了用户组的概念。通过使用用 户组号码(GID,Group IDentification),我们可以把多个用户加入到同一个组中,从而方 便为组中的用户统一规划权限或指定任务。
假设有一个公司中有多个部门,每个部门中又 有很多员工。如果只想让员工访问本部门内的资源,则可以针对部门而非具体的员工来设 置权限。
例如,可以通过对技术部门设置权限,使得只有技术部门的员工可以访问公司的 数据库信息等。
Linux管理员在创建用户时,将自动创建一个与其同名的用户组,这个用户组只有该用户一个人
创建普通用户
#添加用户
useradd oldboy
#设置密码
passwd redhat
root用户可以修改其他所有人的密码,且不需要验证
创建用户组
group命令用于创建用户组,为了更加高效的指派系统中各个用户的权限,在工作中常常添加几个用户到一个组里面,这样可以针对一类用户安排权限。
例如超哥以前在公司里,就负责添加openLDAP用户管理,偶尔台湾,美国的同事去上海协作,我就得给他们添加到it部门组里面,以至于他们有对服务器操作的权限。
groupadd it_dep
删除用户userdel
-f 强制删除用户
-r 同事删除用户以及家目录
userdel -r pyyu
切换用户
su命令可以切换用户身份的需求,
su - username
su命令中间的-号很重要,意味着完全切换到新的用户,即环境变量信息也变更为新用户的信息
#先看下当前用户(我是谁)
whoami
#切换用户
su - oldboy
#退出用户登录
logout
ctrl + d
useradd deploy -s /sbin/nologin //注册一个deploy用户不让他登录
Tip:
1.超级用户root切换普通用户无需密码,例如“群主”想踢谁就踢谁
2.普通用户切换root,需要输入密码
3.普通用户权限较小,只能基本查看信息
4.$符号是普通用户命令提示符,#是超级管理员的提示符
![在这里插入图片描述](https://img-blog.csdnimg.cn/20190519143328354.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FxXzQxNDMzMTgz,size_16,color_FFFFFF,t_70)
![在这里插入图片描述](https://img-blog.csdnimg.cn/20190519143353452.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FxXzQxNDMzMTgz,size_16,color_FFFFFF,t_70)
sudo命令
sudo命令用来以其他身份来执行命令,预设的身份为root。在/etc/sudoers中设置了可执行sudo指令的用户。若其未经授权的用户企图使用sudo,则会发出警告的邮件给管理员。用户使用sudo时,必须先输入密码,之后有5分钟的有效期限,超过期限则必须重新输入密码。
sudo 【选项】【参数】
-b:在后台执行指令;
-h:显示帮助;
-H:将HOME环境变量设为新身份的HOME环境变量;
-k:结束密码的有效期限,也就是下次再执行sudo时便需要输入密码;。
-l:列出目前用户可执行与无法执行的指令;
-p:改变询问密码的提示符号;
-s<shell>:执行指定的shell;
-u<用户>:以指定的用户作为新的身份。若不加上此参数,则预设以root作为新的身份;
-v:延长密码有效期限5分钟;
-V :显示版本信息。
颜色
绿色:可执行文件
红色:压缩文件
蓝色:目录
白色:一般性文件
浅蓝色文件:链接文件
红色闪烁:文件有问题
黄色:设备文件
灰色:其他文件
建立软链接
ln -s /var/log/messages msg //
常用文件类型
-:普通文件
d:目录文件
l:链接文件
b:块设备文件
c:字符设备文件
p:管道符文件
修改权限
chmod 777 /home/dev20/ // 给dev20文件给 用户 组 其他人可读可写可执行的权限(只是当前目录)
chmod 777 /home/dev20/ -R // 给dev20文件给 用户 组 其他人可读可写可执行的权限(-R可以将dev20下所有目录操作权限)
chmod o-r /home/dev20 // 给其他人去掉读的权限,+就是加权限
*目录的X权限是能否进入目录的权限
chown [-R] user:group file // 修改文件或目录的用户和属组
chown 用户.组 conf.tar // 改变文件的用户和组
文件解压压缩
gzip 文件 // 压缩文件
gzip -d 压缩文件 // 解压文件
打包 尽量打成zip的包
tar -cf kk * // 将kk下所有文件打包
tar -tf long.tar // 查看包里面的内容
tar -zcf long.tar.gz * // 压缩和打包
tar -cvf conf.tar /tmp/* // 将tmp下的文件全部打包成conf.tar(可以罗列打包过程)
tar -tvf conf.tar // 查看打包文件
tar -xvf conf.tar // 解包
输出重定向
echo "python" >log.txt // 标准输出重定向,会清空文件原有内容
echo "python" >>log.txt //追加输出重定向
echo "python" 2>erro.log // 错误输出重定向
echo "python" 1>log.log // 标准输出重定向
echo "python" >log.log 2>&1 // 错误输出指向标准输出重定向(错误标准都到log.log)
echo "python" >/dev/null // /dev/null 看作黑洞,所有写入它的内容都会永远丢失
> /var/log.log // 直接清空文件内容
echon -n > /var/log.log // 丢弃换行
管道符
前面输出的东西交给后边处理
echo 123|cat -n
echon 123|passwd --stdin root // 将root密码修改为123
df -h // 看磁盘
free -m // 看内存单位m -k 单位k
uptime // 更新时间
w // 查看机器使用用户个数
curl url // 例:curl www.baidu.com 查看网页(get请求)
curl -d url // post请求
wget
快捷键
ctrl+u // 删除本行命令
ctrl+l // 清屏
ctrl+a // 跳到命令行头
ctrl+e // 跳到命令行尾
ctrl+k // 若在行头想要清除本行
grep
grep -v "^$" /etc/bashrc > /etc/bashrc.bak // 搜索出bashrc文件中非空行的内容,保存到bashrc.bak文件中
set nu
给vim编辑加行号
lrzsz // 给windows上上传文件的软件
rz // 从windows获取文件(适合小文件)
sz // 给windows上传文件(适合小文件)
$PATH
// 查找程序执行路径
--prefix="文件路径"
将软件安装在哪个目录
环境变量:
env 查看环境变量
env|grep -i path 查看包含path的环境变量
which ls
// 查看ls命令在哪个目录
ln -s /usr/local/python3/bin/python3 /bin/python3
// 建立一个软连接到/bin/python3
echo ls
// 将ls的执行结果作为参数传给echo等同于echon $(ls)
shell
a=$((1*2)) echo $a
小脚本1:
#!/bin/bash
a=$1
b=$2
echo $(($a+$b))
小脚本2:(创建两个文件,并把他们放在以日期为名的文件夹下)
#!/bin/bash
a=$1
b=$2
c=`date +%Y%m%d`
mkdir $c
cp $a $c
echo $?
cp $b $c
echo $?
小脚本3:(判断是否为可执行文件 放在tmpdir目录下)
#!/bin/bash
if [ -x /bin/nohup ]
then
if [ ! -d /temdir ]
then
mkdir /tmpdir
fi
cp /bin/nohup /tmpdir
fi
小脚本4:(循环输入用户名加随机数)
while read -p "please input your name:" name
do
echo $name$RANDOM
done
小脚本5:(创建用户)
#!/bin/bash
if [ $# -ne 1 ];then
echo "你需要传入一个参数"
exit 1
fi
user=$1
if grep -q "^$user" /etc/passwd
then
echo "用户已存在,他/她是$(id -u $user)"
else
echo "用户不存在开始创建了"
useradd $user
if [ $? -eq 0 ]
then
echo "创建用户成功!"
else
echon "创建用户失败!"
fi
fi
-eq: 等于 -ge:大于 -ne:不等于
分割:cut -d: -f 7 /etc/passwd
seq 10
// 创建长度为10的序列
read -p "please input your name:" name
//相当于python的input -p提示符
echo $RANDOM
//随机输出一个数字
while :
// 死循环
根据名称查看进程状态
ps -ef |grep redis、
ps aux | grep uwsgi
查看端口是否监听
netstat -lntp | grep 6379
redis三种操作
./etc/init.d/redis-server start
./etc/init.d/redis-server stop
./etc/init.d/redis-server restart
Django
django-admin startproject celery_demo 创建Django项目
python manage.py startapp demo 创建App
python
python -m pip install --upgrade pip
安装相关
文章浏览阅读5.6k次,点赞16次,收藏176次。0.96寸OLED IIC驱动显示通用模板程序代码_51单片机oled显示程序
文章浏览阅读501次。如何美化input[type="file"]基本思路是:(1)首先在 input 外层套一个 div ;(2)将 div 和 input 设置为一样大小(width和height);(3)设置 div 为相对位置, input 为绝对位置,并将 input 的 top 和 right 设为 0 ;这样, div 和 input 就重叠了,点击 div 就相当于点击 input ..._type="file"怎么显示名字
文章浏览阅读3.6k次。iBarn是一个基于PHP的先进的网盘系统,提供文件的网络备份,同步和分享服务。支持断点续传,秒传等功能。可选择文件下载到本地或者在线收藏;回收站功能防止用户误删数据;云存储的不二之选。_ibarn
文章浏览阅读3.4k次,点赞2次,收藏23次。上一篇介绍了用RF来简单运行案例,此篇主要了解一下工具操作一、菜单栏1.File1>New Project:新建工程2>Open Test Suite:打开测试套件3>Open Directory:打开目录4>Save:保存(保存当前鼠标所定位到的案例)5>Save All:保存全部6>展示最近打开的工程,最多展示4个,可..._robotframework-ride中工具栏是插件吗
文章浏览阅读977次,点赞2次,收藏3次。TP(真阳性 true positives)TN(真阴性 true negatives) FP(假阳性 false positives) FN(假阴性 false negatives)混淆矩阵:图一_auc metric
文章浏览阅读446次。一、引言最近在做vue项目后,需要执行一个 npm install 的命令来安装项目所需要的依赖文件,但是报错了:I’m all done. Running npm install for you to install the required dependencies. If this fails, try running the command yourself.npm ERR! ..._npm install zlib: unexpected end of file
文章浏览阅读8.8k次,点赞14次,收藏47次。Fortran是最早出现的高级程序设计语言之一,主要适合用来解决科学计算方面的问题,主要优点是计算效率很高。要想学习一门语言,首先是学习工具,在书籍方面推荐大家参考《Fortran程序设计》(第四版),接下来主要为大家介绍如何在windows和linux下配置Fortran的编译环境。windows下Fortran编译环境的配置在windows下推荐大家配合使用Visual Studio(VS) + Intel Visual Fortran(IVF),关于这两个软件的下载与安装,大家可以参考这篇博文:_fortran程序及部署linux
文章浏览阅读928次。点击上方“小白学视觉”,选择加"星标"或“置顶”重磅干货,第一时间送达本文转自|AI算法与图像处理在机器学习与深度学习中需要大量使用数学知识,这是给很多初学带来困难的主..._机器视觉与深度学习涉及的高数知识
文章浏览阅读7.5k次。1、应用方法 hasOwnProperty2、应用实例class Student{ constructor(sno,sname,sage,ssex) { this.sno = sno; this.sname = sname; this.sage = sage; this.ssex = ssex; } toString(){..._es6判断对象包含某个属性
文章浏览阅读8.1k次,点赞7次,收藏6次。通过使用servlet,结合注解标记,实现一个简单的实现一个MVC框架_手写mvc框架
文章浏览阅读1.7k次,点赞16次,收藏8次。在之前发了一篇关于SVG动画的文章,有小伙伴反应了一些问题,所以出一篇较为详细的动画例子文章,希望有所帮助。_android svg动画
文章浏览阅读3.2k次,点赞2次,收藏13次。ECC全称为椭圆曲线加密,EllipseCurveCryptography,是一种基于椭圆曲线数学的公钥密码。与传统的基于大质数因子分解困难性的加密方法(RSA)不同,ECC依赖于解决。它的优势主要在于相对于其它方法,它可以在使用较短密钥长度的同时保持相同的密码强度。......_sm2 ecc