Linux入门与常用指令

概述

本文就Linux的基础知识的一些浅薄理解和应用操作,用户操作,文件操作,变量操作,压缩操作、系统计划任务以及命令执行顺序与管道进行展开。内容较为硬核,需仔细阅读理解,以实例代码辅助理解,方便快速上手

基础知识

内核:

常见内核:微软,windows,苹果ios和mac,索尼,bsd内核,索尼,任天堂等

基础指令:

uname -r		%查看版本号
uname --help		%查看帮助
who am i		%显示:用户名 pts(终端数) 登陆时间
%注:whoami是查询当前用户,who am i是查询终端对应用户
ls /etc/*release		%展示/etc/下以release结尾的文件
%注:ls是list的缩写  ./是整个系统文件根目录
cat /etc/lsb-release		%查看lsb-relase文件内容
mkdr rose		%创建rose目录,即新建文件夹
cd /etc/rose/		%将/etc/rose/设置为当前路径
pwd		%查看当前路径
touch file		%创建名为file的文件
touch love_{1..10}_thornRose		%创建10个文件
cd //		%将根目录设置为当前路径
apt list		%查看已装应用
apt search linuxlogo		%查询linuxlog应用
apt install linuxlogo		%安装linuxlogo应用
sudo apt install linuxlogo		%以管理员身份安装linuxlogo应用
for i in {1..30};do linux_logo -f -l $i;sleep 0.5;done		%循环打印30个图标
find */*/*.txt		%查询所有txt 注意此处为相对路径,只能查到当前路径下的文件!
cat /etc/group | grep -E "lilei" %查看用户组中的lilei信息,用户相关知识点看下面的文章
xeyes		%可召唤盯着鼠标的眼睛!
nohup xeyes &        %将其放置后台
sudo kill -9		%结束进程,这里眼睛进程号为9
%👆上面的cat为查看文件 |为将前面的集合按后面的约束映射出来,-i属性为忽略大小写,-in属性为显示行数
locate /usr/share/*.jpg			%查看 /usr/share/下的所有jpg文件(需安装locate)
man <command_name>		%可查看command_name的说明,其中command_name为某个待查询的命令名称

操作常识

  • 在运行中如若需强制终止执行命令可按住 ctrl + c
  • 操作时不必非要把指令全输完,可以灵活运用tab键帮助补全处理
  • 通配符 * 代表任意多个字符
  • 通配符 ? 代表任意单个字符
  • [list] 匹配list中任意一个单个字符,如[2-5]匹配[2],[3],[4],[5]
  • [^list]匹配除了list中任意单个字符以外的字符
  • [c1-c2]匹配c1-c2中任意单字符
  • [string1,string2,…]匹配string1或string2或更多中的字符
  • [c1…c3]匹配c1-c3中全部字符
  • root账户具有最高权限
  • su可切换用户,sudo 以特权级别运行
  • ${变量名%匹配字符} 表示从尾向前匹配,删除符合匹配的最短数据(%%表示删除最长)
  • whereis 命令名 表示查看命令路径
  • which 命令名 表示查看命令是否存在
  • (sudo)find /etc/*.jpg 搜索(-name属性直接搜索)
  • ./ 脚本名 为执行脚本
  • 根目录下文件夹对应:
    • bin:放可执行文件
    • boot:开机配置
    • dev:光盘,u盘等外置存储
    • etc:配置文件
    • home:用户
    • lib:系统依赖库
    • tmp:各种临时文件
    • sbin:系统更新还原,开关机等
    • 。。。

几个名词的理解

服务器

DNS(域名)服务器用于域名和IP的映射
直观看起来就像身份证一样

姓名:域名
身份证号码:IP

而对于网络服务器可以设备对比理解
电脑:配置低;服务器:配置高,24小时不关机
服务器具有IP且需备案,但也有不同,服务器端IP相当于住宅楼的号码,一个住宅楼和外界联系是通过主干网络,但是住宅楼内部再分就是客户端IP,这个IP是依靠在服务器IP下面的,无法单独存在。

终端

直接理解就是类似于windows的黑窗口

linux特点

安全性强,门槛高,占用资源小,开源!

应用操作

以文字处理类app为例

sudo apt install figlet		%管理员身份安装figlet
figlet	ROSE		%使用figlet以特殊形式大字符显示字符ROSE
%可同理安装toilet ,对应的 --gay属性可表现多彩字体
%例如:
toilet --gay ROSE
%同理安装cmatrix 显示黑客帝国类似黑客背景,安装hollywood显示随机运行的乱跑程序等
%注意在软件安装时可能会需要将软件包更新
sudo apt update		%更新软件包

用户操作

%su可切换用户,sudo 以特权级别运行
sudo adduser lilei		%创建lilei用户
%用户存放于/home目录下
su -l lilei		%切换lilei用户
%ctrl+d为退出当前用户,返回至终端对应用户(终端用户与当前用户不一致时)
groups 用户名		%查看用户组
%sudo组中才可用sudo命令
sudo usermod -G sudo lilei		%将lilei添加至sudo组中
sudo deluser lilei --remove-home		%删除lilei用户
ls -l		%列出文件即文件属性(-lh显示文件大小单位 -a显示隐藏文件)
%上面显示的文件属性为: 文件类型和权限 链接数 用户名 用户组 文件大小 最后修改时间 文件名
%文件类型和权限的显示解读:r读,w写,x执行,对应排列为用户权限,用户组权限,游客权限

ls -l 展示效果在这里插入图片描述

sudo chown lilei file		%文件授权(将其他用户的file文件的换为lilei的文件)
echo "..."		%打印 ...
echo "..." > file		%向file文件中写入 ...     注意两个>代表向后填入,一个代表覆盖填入
chmod 600 file		%将file文件的权限修改为rw-------
%上面的数字对应权限,三个数字对应用户,用户组,游客,数字大小为二进制下的rwx,
%如r-x权限对应:1*2^2+0*2^1+1*2^0=5,rwx权限对应:1*2^2+1*2^1+1*2^0=7

文件操作

mkdir mydir		%创建mydir目录(文件夹)
mkdir -P father/son/grandson		%创建多级目录
tree ./		%显示当前目录文件树
cp test father/son/grandson		%复制test文件到father/son/grandson中
%若复制目录需在前面加上-r或-R属性,表示递归复制
rm test		%删除test文件
rm -f test		%强制删除test
rm -r family		%删除目录(递归,-rf为强删目录)
mv file Documents		%将file文件移动到Documents目录中
mv file myfile		%把file重命名为myfile
vi file		%编辑file文件,进入编辑页面后:i开始编辑,按esc退出编辑后,:输入命令,w保存,q退出

批量重命名

安装rename

sudo apt install rename
touch file{1..5}.txt		%批量创建5个文件
rename 's/\.txt/\.c/'		%将.txt改为.c,参考正则表达式
rename 'y/a-z/A-Z/'*.c		%将文件名改为大写

变量操作

declare tmp		%声明tmp变量
tmp=shiyanlou		%赋值时不能带空格
echo $tmp		%打印tmp变量,$为读取变量,dos中为%tmp%
%运用变量时也需加$,如apth=$path
%环境变量修改可直接修改配置文件
sudo vi /etc/profile		%修改配置文件,在文件内容最后插入对应环境变量
source /etc/profile		%重新加载环境,即可直接使用环境变量,否则在下次启动时才会加载新的环境变量
touch hello_shell.sh		%创建shell脚本
gedit hello_shell.sh		%用gedit对脚本编辑(防止对齐等错误)
%编辑的hello_shell.sh内容部分:
	# !/bin/bash		%注:该行必须有
	for((i=0;i<10;i++));do
		echo "hello shell"
	done
	exit0
chmod 755 hello_shell.sh		%添加可执行权限
./ hello_shell.sh		%执行脚本
python rose.py		%执行rose.py脚本
gcc -o hello_world hello_world.c		%编译hello_world.c文件,编译后名为hello_world
PATH=$PATH:/home/lilei/mybin		%在局部拼接path变量,注意拼接的分隔符为 :
cat /etc/shells		%查看已装shell
%添加环境变量的另一种方式
echo "export PATH=$PATH:/home/lilei/mybin" >> .zshrc		%直接将命令添置.zshrc中
%或直接用gedit .zshrc改文件
source .zshrc		%重载环境,source别名为 . ,source .zshrc也可写为 . ./.zshrc

压缩操作

zip压缩

zip -r -q -o rose.zip /home/rose/Desktop		%压缩文件目录/home/rose/Desktop为rose.zip
%-r代表递归压缩,-q代表安静(不打印压缩过程信息)-o表示输出文件,后跟输出名。可缩写为-rqo
%可加入参数-1到-9,代表压缩级别,数字越大,体积越小耗时越长
%为防止压缩自身路径造成死循环,可使用-x属性,如-x ~/*.zip代表排除用户目录下的zip文件进行压缩
unzip rose.zip		%使用unzip解压zip文件(-q安静,-d指定目录,-l只查看不解压)

tar压缩

tar -p -cf rose.tar /home/rose/Desktop		%压缩文件目录/home/rose/Desktop为rose.zip
%-p表示保留绝对路径符,-c创建tar包,-f指定创建文件名,需放最后,-v可视输出
mkdir tardir		%创建tardir目录,为解压做准备
tar -xf rose.tar -C tardir		%解压至tardir目录下
%-x表示解压,-C表示解压至已存在的路径,后跟目录,默认为本地
tar -tf rose.tar		%只查看,不解压文件对应-t参数

crontab系统计划任务

准备

sudo apt install -y rsyslog
sudo service rsyslog start

启动

sudo cron -f &
%添加任务:
crontab -e		%输入后会有提示,对提示首次启动通常选2(basic)

在这里插入图片描述
进入vim后点击i插入到最后
对应crontab计划任务的指令为
* * * * * 指令,*分别对应分,时,日(月中的),月,日(周中的)

*/1 * * * * touch /home/rose/$(date +\%Y\%m\%d\%H\%M\%S)

表示每隔一分钟创建一个文件
在这里插入图片描述
输入完成后按:然后输入wq保存并退出
可判断是否守护进程(后台运行)

ps aux | grep cron
%或
pg grep corn

查看日志

sudo tail -f /var/log/syslog		%tail表示监听

查看任务指令

crontab -l

删除crontab运行的命令

crontab -r

命令执行顺序控制与管道

  • 当需要顺序执行,但在输入端一次性全部输入时,使用" ; "分隔
  • " && " 表示选择性执行(与),A && B表示当A执行后再执行B,若A未执行,则B也不执行
  • 打印上次语句的运行结果(0或1):
echo $?
  • " || " 表示或,与 " && "相反(前为0则执行后面的,前为1则不执行后面的)
  • 顺序执行中可结合&&和||实现类似if else的效果
    例如:
which cowsay > /dev/null && echo "exist" || echo "not exist"
% which用来判断文件存在;>用来将结果存入文件,
%/dev/null 是空文件存放的地方,文件写入后均为空,目的是防止which结果提示
  • " | "表示匿名管道,如:
ls -al /etc | less  		%表示翻页显示,一行一行查看,按q退出
% 常用的还有grep,如
% grep [命令选项] ... 用于匹配表达式(文件)
export | grep ".*yanlou$"			%查看环境变量中以"yanlou"结尾的字符串
%  ^代表开头,$代表结尾,*代表任意多个字符,.代表任意单个字符
% 常用正则: 
% [a-z]+			0到多个 abcd
% [a-z]?			0或1个  a
% [a-z]*			0到多个(.*是任意多个)
cat /etc/passwd | sort			%表示管道流排序查看
% tr表示删除(-d为删除匹配字符,-s是去重,-k是对某一字段号排序,如-k 3),例如:
echo 'hello shiyanlou' | tr -d '01h'
join file1 file2		%合并file1与file2文件(去除相同的合并)
paste -d -s file1 file2 		%合并file1与file2(不去重)
% -d为指定合并分隔符,默认为tab,-s为不合并到一行,每个文件为一行

字段打印范围筛选指标

cut /etc/passwd -d ':' -f 1,6		%cut表示打印每行某一字段,":"表示以:为分隔符
% 1,6表示打印字段,1-6是1到6个,-6是前6个,1-是1以后的

cat重定向(连续输出)

cat > Documents/test.c << EOF
# include <stdio.h>
int main()
{
	printf("hello world\n");
	return 0;
}
EOF
  • 4
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值