LINUX基础编程(一)

shell操作的快捷键

  • 遍历历史记录相关:history  上==ctrl+P (↑)  下==ctrl + N(↓)
  •     ctrl + D删除j  ctrl+H删除d    光标向右移动ctrl + F 光标向左移动ctrl+B  移动到头部 ctrl +A   移动到尾部  ctrl + E    删除光标前的字符串ctrl +U  删除光标后的字符串ctrl + K
  • 命令自动补全     TAB键            两下TAB键 列出所有情况
  • ctrl+C  强制停止进程
  • ctrl + L清屏
  • df -h  查看磁盘占用空间情况
  • which  ls  //查看ls命令所在目录

history

history   //显示所有历史指令
history   10  //显示最近执行过的10个指令
! 100   //执行编号为100的历史指令

LINUX的目录结构

/bin: binary,二进制文件,可执行程序,shell命令

/dev:device,在LINUX下皆文件

/lib:LINUX运行的时候需要加载的动态库

/mnt:手动的挂载目录

/media:外设的自动挂载目录(linux系统会自动识别一些设备,例如U盘,光驱等,当识别后,linux会自动把识别的设备挂载到这个目录下)

/root:LINUX的超级用户的家目录

/usr:unix system resource  (安装的应用程序【/usr/local】)

/etc:存放配置文件

/etc/passwd 
用户的配置文件,记录用户的各种信息
用户名:密码:用户id:组id::家目录:shell目录

/etc/group
组的配置文件,记录LINUX包含的组的信息

/opt:安装第三方用户程序自定义路径

/home:LINUX操作系统所有用户的家目录

/tmp:存放临时文件(重启电脑时会自动清空)

:$表示当前用户为普通用户

:#表示当前用户为超级用户

远程登录LINUX:xshell(LINUX服务器ssnd进程开启,xshell才能够进行远程连接)

上传和下载文件:xftp

用户管理

 创建新用户

useradd newuser //当创建用户成功后,会自动创建和用户同名的家目录

useradd  -d  /home/newuser   newuser   //在/home/user目录下创建名为newuser的用户,默认在newuser的分组

passwd newuser   //为newuser指定密码

删除用户

  • 删除用户,但是保留家目录
userdel 用户名
  • 删除用户,不保留家目录
userdel -r 用户名

查看用户信息

可以查看用户id,组id,用户所在组

id  用户名


whoami   //查看当前用户

用户切换 

su - 用户名   //切换到用户名指定的用户

exit   //返回到原来的用户

 从权限高的用户切换到权限低的用户,不需要输入密码,反之需要。

用户组相关操作

groupadd 组名   //添加组 
groupdel 组名   //删除组
useradd -g 组名  用户名   //添加用户时指定组
usermod -g 组名  用户名   //修改用户所属组

 常用运行级别是3和5,要修改默认的运行级别可改文件

/etc/inittab的id:5:initdefault这一行中的数字

init 5  //切换运行级别为5

init 3  //切换运行级别为3

init 0  //关机

init 6 //重启

 找回root密码

进入单用户模式

常用命令

tree(需要安装sudo apt-get install tree)

  • tree  查看当前目录
  • tree dir 查看指定目录

cd

cd    //切换到当前用户的家目录
cd ~  //切换到当前用户的家目录

mkdir 

mkdir -p  路径  //直接创建多级路径

ls

  • 功能:查看文件或目录
  • 参数:-a 显示所有文件  (隐藏文件:文件或目录前有一个点,例.a)
  • 参数:-l  显示文件详细信息    -lh   以人性化方式进行显示
  • list -l 等价于 ll
  •                   
  •       第一个字符:文件的类型(7种:普通文件 :-、目录:d、符号链接:l(是L)、管道:p、套接字:s、字符设备:c【键盘、鼠标】、块设备:b【U盘,硬盘】)
  • 1  :如果是文件,表示硬链接计数;如果是目录,表示目录下子目录个数
  • 3231145:如果是目录,大小永远是4K,不包含内容

mkdir 

-p:一次创建多级目录

rm

-r:删除多级目录

-i:删除时进行提示

cp

cp  file1 file(不存在)

  • 创建file,将file1中内容拷贝到file

cp file1 file(存在)

  • file1覆盖file

cp  file dir(存在)

  • 拷贝file到dir目录

 cp  dir(存在)  dir1(存在)   -r

  • 将dir目录拷贝到dir1目录中

cp  dir(存在)  dir1(不存在)

  • 创建dir1,将dir内容拷贝到dir1中,不包括dir本身

mv

mv file1 file2

  • 改名
  • mv file(存在)   file1(不存在)  --file为文件  将file命名为file1
  • mv dir(存在)   dir1(不存在)  --dir为目录    将dir命名为dir1
  • 移动
  • mv file  dir(存在目录)  file->dir
  • mv dir(存在目录)  dir1(存在目录)   dir->dir1
  • mv file(存在)   file2(存在)    file覆盖file2,同时file被删除

>和>>

>输出重定向  >>追加
ls -l >a.txt  //列表的内容写入文件a.txt中(覆盖写),如果a.txt不存在,则创建该文件
ls -al >>文件   //列表的内容追加到a.txt中
cat 文件1 > 文件2  //将文件1的内容覆盖到文件2
echo "内容" >文件   //将内容覆盖写到文件中

echo 

echo输出内容到控制台

head

head用于显示文件的开头部分内容,默认显示文件的前10行内容

head -5  文件名   //查看文件前5行内容

tail 

tail  文件名   //查看文件后10行内容
tail  -5  文件名  //查看文件后5行内容
tail  -f  文件名  //实时追踪文档的所有更新

查看文件内容相关命令

cat 文件名(适用于文件比较小的情况)

cat -n  文件名  //添加-n参数显示行号
cat -n  文件名  | more   //文件过长时,利用管道进行重定向输出,cat通常与more结合使用

more 文件名(enter 向下浏览一行    空格键  向下翻页  Ctrl+B向上滚动一屏 Ctrl+F向下滚动一屏  Q 退出)

less 文件名 (enter /ctrl+n   向下浏览一行  ctrl+p 向上浏览一行  空格/pagedown 向下翻页  pageup  向上翻页   Q 退出)

软硬链接

  • 软连接 (符号链接)--相当于快捷方式   软链接大小为文件路径名大小
  • ln  -s  文件名(使用绝对路径)  快捷方式的名字     使用绝对路径创建的文件的软链接移动到任何位置都有效

  • 硬链接    硬链接文件虽然和源文件大小一样,但是其实并不占用磁盘空间
  • ln 文件名  硬链接的名字

时间日期类指令

//参数中必须有"+"
date   //显示当前时间
date  "+%Y"  //显示当前年份
date  "+%m"  //显示当前月份
date  "+%d"  //显示当前是哪一天
date  "+%Y-%m-%d %H:%M:%S"   //显示当前时间

//设置时间
date -s  "2020-10-10 10:10:10"

 修改文件权限

chmod  u/g/o/a  +/-/=  r/w/x/-   文件名

  • 修改文件所属者     chown  新的文件所属者  文件名    
  • 修改文件所属组     chgrp   新的文件组          文件名 
  • 修改文件所属者和所属组   chown  新的文件所属者:新的文件所属组   文件名

文件查找和检索

locate

locate指令可以快速定位文件路径,基于数据库进行定位,第一次运行前,使用updatedb指令创建locate数据库

updatedb

locate  文件名

根据文件属性查找 - find

find  目录名   对应属性  对应参数

  • 文件名    find 查找的目录  -name  "查找的文件名"(推荐加引号)
  • 文件所属者   find  查找的目录  -user  用户名    //查找某个目录中属于某个用户的文件
  • 文件类型  find 查找目录  -type 文件类型   (普通文件:f、目录:d、符号链接:l、管道:p、套接字:s、字符设备:c、块设备:b)
  • 文件大小   find   查找目录   -size +/- 10k/M(对于单位 k必须小写,M必须大写)
  •                  find  .  -size +4k  -size -10k (查找大于4k,小于10k的文件)
  • 按日期     
  •  创建日期:find 目录名 -ctime  -n/+n
  • -n   n天以内
  • +n  n天以外
  • 修改日期: find 目录名  -mtime-n/+n
  • 访问日期: find 目录名  -atime  -n/+n
  • 深度   find   目录名   
  • find   目录名   -maxdepth  n(层数)
  •     搜索n层以下的目录
  • find   目录名   -mindepth   n(层数)
  •     搜索n层以上的目录
  • 高级查找
  • 例:查找指定目录,并列出该目录中文件详细信息
  • find  ./  -type  -d  | xargs  ls  -l

根据文件内容查找 - grep

  • grep   -r   "查找的内容"  搜索的路径  -n(显示内容所在行数,也可以不加)

压缩包

  • LINUX下常见压缩格式: .gz(用gzip进行压缩)   .bz2(用bzip2进行压缩)
  • 常用压缩命令
  • tar    -打包文件工具
  •  参数:  c  -创建压缩文件
  •               x  -释放压缩文件
  •               v -打印提示信息
  •               f -指定压缩包的名字
  •               z -使用gzip压缩文件
  •               j  -使用bzip2的方式压缩文件
  • 压缩: tar 参数(zcvf /  jcvf)  压缩包名(需要指定后缀.tar.gz)  file dir
  • 解压缩   tar   参数(zxvf  /  jxvf)   压缩包名(需要指定后缀.tar.gz)    -C(必须大写)    解压路径
  • rar   
  • rar需要安装 sudo apt-get install rar
  • 压缩   
  •          rar a  压缩包名(不用指定后缀)   压缩内容(如果是压缩目录,需要加参数-r)
  • 解压缩
  •         rar  x  压缩包名(不用指定后缀)   解压目录
  • zip   
  • 压缩: zip  压缩包名     文件、目录    (如果有目录,加参数-r)  
  • 解压缩 : unzip  压缩包名   -d   解压目录

补充:

删除test目录下所有内容,保留test目录

rm  test/*  -r

组管理和权限管理

//改变文件所属者
chown  用户名   文件名 

chown  -R  用户名  目录名/    //将某目录下的所有文件及子目录所有者改为某用户

//改变用户所属组
usermod -g 组名  用户名  
usermod -d 目录名 用户名  //改变用户登录的初始目录

任务调度

系统在某个时间执行特定的命令或程序

  • 如果只是简单的任务,可以不用写脚本,直接在crontab中加入任务即可
  • 对于比较复杂的任务,需要写脚本(shell编程)

案例

要求:
设置任务调度文件:/etc/crontab
设置个人任务调度,执行crontab -e 命令
输入任务到调度文件
*/1**** ls -l /etc/ > /tmp/to.txt
第一个*  :一小时中的第几分钟
第二个*  :一天当中的第几小时
第三个*  :一个月中的第几天
第四个*  :一年当中的第几月
第五个*  :一周当中的星期几

案例1

每隔一分钟,就将当前的日期信息,追加到/tmp/mydate中

  1. 先编写一个文件  /home/mytask1.sh,内容为 date>>/tmp/mydate
  2. 给mytask1.sh一个可执行权限
  3. crontab -e
  4. */1****  /home/mytask1.sh

案例2

每隔一分钟,就把当前日期和日历都追加到/home/mycal中

  1. 先编写一个文件  /home/mytask1.sh,内容为 
date >> /tmp/mycal
cal >> /tmp/mycal
  1. 给mytask1.sh一个可执行权限
  2. crontab -e
  3. */1****  /home/mytask1.sh

案例3

每天凌晨2:00将mysql数据库testdb,备份到文件mydb.bak中

  1. 先编写一个文件  /home/mytask1.sh,内容为 
testdb > /tmp/mydb.bak
  1. 给mytask1.sh一个可执行权限
  2. crontab -e
  3. 0 2****  /home/mytask1.sh

crond

crond -r //终止任务调度
crontab  -l  //列出当前运行的任务调度
service crond restart  //重启任务调度

磁盘分区

查询磁盘使用情况

df -lh

查询指定目录的磁盘占用情况 

du -h  /目录    //查询指定目录的磁盘占用情况
-s   //指定目录大小汇总
-h   //带计量单位
-a   //含文件
--max_depth=1   //子目录深度
-c     //列出明细的同时,增加汇总值

案例

  • 统计/home文件夹下文件的个数
ls -l /home | grep "^-" | wc -l
  • 统计/home文件夹下目录的个数
ls -l  /home | grep "^d" | wc -l 
  • 统计/home文件夹下文件的个数,包括子文件夹里的
ls -lR /home | grep "^-" | wc -l   //R必须大写
  • 统计/home文件夹下目录的个数,包括子文件夹里的
ls -lR  /home | grep "^d" | wc -l

u盘挂载

查看u盘信息

fdisk  -l

挂载u盘到某一目录

mount   /dev/sdb1   mnt    //将设备/dev/sdb1挂载到mnt目录

卸载目录

sudo  umount /mnt   //卸载mnt目录下的设备

注意:当u盘不挂载到mnt目录,而挂载到别的目录时,会暂时覆盖别的目录的内容,卸载u盘后目录内容恢复正常。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值