linux(ubuntu)新手学习

linux一些学习经验(新手适用)


如果你是一个Linux(Ubuntu)新手,以下是一些基本的命令和概念

1、基本的命令和概念

  1. 文件系统导航

    • pwd:显示当前工作目录的路径。
    • cd:更改当前工作目录。例如,cd Documents将把你的工作目录更改为Documents。
    • ls:列出当前目录中的文件和目录。
  2. 文件操作

    • touch:创建一个新的空文件。例如,touch file.txt将创建一个名为file.txt的新文件。
    • cp:复制文件或目录。例如,cp file1.txt file2.txt将复制file1.txt到file2.txt。
    • mv:移动或重命名文件或目录。例如,mv file1.txt file2.txt将把file1.txt重命名为file2.txt。
    • rm:删除文件或目录。例如,rm file.txt将删除file.txt。
  3. 权限管理

    • chmod:更改文件或目录的权限。例如,chmod 755 file.txt将设置file.txt的权限为755(即,所有者可以读/写/执行,组可以读/执行,其他人可以读/执行)。
  4. 包管理

    Ubuntu使用apt作为其包管理器。你可以使用它来安装、更新和删除软件包。

    • sudo apt update:更新软件包列表。
    • sudo apt upgrade:升级所有可升级的软件包。
    • sudo apt install package_name:安装一个软件包。
    • sudo apt remove package_name:删除一个软件包。
  5. 查看帮助

    • man:显示命令的手册页。例如,man ls将显示ls命令的手册页。
    • --help:显示命令的帮助信息。例如,ls --help将显示ls命令的帮助信息。

2、在Ubuntu上安装和使用软件包

在Ubuntu上安装和使用软件包,通常我们会使用apt(Advanced Package Tool)这个包管理器。以下是一些基本的步骤:

  1. 更新软件包列表

    在安装新的软件包之前,你应该先更新你的软件包列表,以确保你能获取到最新的软件包版本。在终端中输入以下命令:

    sudo apt update
    
  2. 安装软件包

    使用以下命令安装软件包,其中package_name是你要安装的软件包的名称:

    sudo apt install package_name
    

    例如,如果你想安装git,你应该输入sudo apt install git

  3. 使用软件包

    安装完成后,你就可以开始使用这个软件包了。你可以在终端中输入软件包的名称来运行它,或者在你的应用菜单中找到它。

  4. 卸载软件包

    如果你不再需要一个软件包,你可以使用以下命令来卸载它:

    sudo apt remove package_name
    

    如果你还想删除与这个软件包相关的配置文件,你应该使用purge选项:

    sudo apt purge package_name
    
  5. 更新软件包

    为了保持你的系统安全和稳定,你应该定期更新你的软件包。使用以下命令来更新所有的软件包:

    sudo apt upgrade
    

!!!理解包的概念

在编程和软件开发中,“包”(Package)是一种将代码和其他相关资源(如文档、配置文件等)组织在一起的方式。包可以被视为一个软件或库的分发形式,它包含了软件的所有源代码以及运行软件所需的任何附加文件。

在Python中,包是一种组织模块的方式,它包含一个__init__.py文件和一些模块或子包。

在操作系统(如Ubuntu)中,包是一种分发和安装软件的方式。一个包可能包含了软件的二进制文件、配置文件、系统级别的元数据(如软件的版本、依赖关系、描述等)以及安装、卸载和更新软件的脚本。

在这些情况下,包的主要目的都是为了方便管理和分发代码或软件。通过使用包,开发者可以更容易地共享他们的代码,用户也可以更容易地安装和使用软件。

3、其他常用操作

关闭防火墙的操作

# 临时关闭防火墙(当你重启系统后,防火墙会再次被启用。)
sudo ufw disable

# 永久关闭防火墙
sudo systemctl disable ufw

# !!!关闭防火墙会使你的系统暴露在网络攻击中,除非你非常清楚你在做什么,否则不建议永久关闭防火墙。

改变文件或目录权限

chmod [options] mode file
# 其中,mode是权限设置,file是要改变权限的文件或目录。
# 权限设置可以是数字或符号表示的。数字表示的权限设置是一个三位的数字,每一位分别代表所有者、组和其他用户的权限,每一位的值可以是0到7,分别代表不同的权限组合。

# 例如,要给文件所有者读写执行权限,给组和其他用户只读权限,可以使用以下命令:
chmod 744 file
# 符号表示的权限设置使用u、g、o分别代表所有者、组和其他用户,使用r、w、x分别代表读、写、执行权限,使用+、-、=分别代表添加、删除、设置权限。

#例如,要给文件所有者添加执行权限,可以使用以下命令:
chmod u+x file

# chmod命令的选项包括-R(递归改变目录及其子目录的权限)等

改变文件或目录所有者

chown [options] owner[:group] file
# 其中,owner是新的所有者的用户名,group是新的组名,file是要改变所有者的文件或目录。

# 例如,要将文件的所有者改为user,可以使用以下命令:
chown user file

# 如果你还想改变文件的组,可以使用以下命令:
chown user:group file

# chown命令的选项包括-R(递归改变目录及其子目录的所有者)等。
# 请注意,改变文件的所有者通常需要管理员权限,所以你可能需要使用sudo命令。

如何在Linux中查看当前正在运行的进程?

1.ps -efb

ps -ef
ps命令可以显示当前终端下的进程,如果你想查看所有进程,可以使用ps -ef命令:

2.top

top
top命令可以显示系统中资源使用最多的进程,并且会实时更新:
在top命令的界面中,你可以看到每个进程的PID(进程ID)、用户、CPU使用率、内存使用率等信息。

3.htop

htop
另外,你还可以使用htop命令,它是top命令的一个增强版,
提供了更友好的界面和更多的功能,但是可能需要你自己安装:

杀死进程

kill [options] pid
其中,pid是你想要杀死的进程的进程ID。

例如,如果你想要杀死进程ID为1234的进程,你可以使用以下命令:
kill 1234
如果进程不响应kill命令,你可以使用-9选项强制杀死进程:
kill -9 1234

ps aux | grep XX | grep cel | awk {'print $2'} | xargs kill -9

查看当前系统的时间

date

date

# 修改时间:date -s "2016-07-28 16:12:00"

查看当前在线

who

[root@localhost ~]# who
hadoop tty1 2016-07-26 00:01 (:0)
hadoop pts/0 2016-07-26 00:49 (:0.0)
root pts/1 2016-07-26 00:50 (192.168.233.1)

查看最近的登陆历史记录

last

[root@localhost ~]# last
root pts/1 192.168.233.10 Tue Jul 26 00:50 still logged in
hadoop pts/0 :0.0 Tue Jul 26 00:49 still logged in
hadoop tty1 :0 Tue Jul 26 00:01 still logged in
reboot system boot 2.6.32-573.el6.x Tue Jul 26 07:58 - 16:23 (2+08:24)

关机(必须用root用户)

shutdown -h now ## 立刻关机
shutdown -h +10 ## 10分钟以后关机
shutdown -h 12:00:00 ##12点整的时候关机

重启

shutdown -r now
reboot # 等于立刻重启

切换工作目录 cd

cd /home/wangjia
cd ~
cd - ## 回退到上次所在的目录
cd 什么路径都不带,则回到用户的主目录

创建文件夹 mkdir

mkdir aaa # 相对路径
mkdir /data # 绝对路径
mkdir -p aaa/bbb/ccc # 级联创建目录

删除文件夹 rm\rmdir

rm aaa # 可以删除空目录
rm -r aaa # 可以把aaa整个文件夹及其中的所有子节点全部删除
rm -rf aaa # 强制删除aaa

修改文件名 rename

可以用来批量更改文件名

rename .txt .txt.bak *

创建文件

touch text.txt ## 创建一个空文件
echo “helloword” > text.txt # 利用重定向“>”的功能,将一条指令的输出结果写入到一个文件中,会覆盖原文件内容,如果指定的文件不存在,则会创建出来

echo “helloword” >> text.txt # 将一条指令的输出结果追加到一个文件中,不会覆盖原文件内容

文件切割

split提供两种方式对文件进行切割:

根据行数切割,通过-l参数指定需要切割的行数
根据大小切割,通过-b参数指定需要切割的大小

例如:

split -l 50000 big.file small.file.
split -b 500M big.file small.file.

生成文件如下:
small.file.aa
small.file.ab
...

多文件合并

cat small.file.aa small.file.ab > merge.file
cat small.file.a* > merge.file

打包压缩

可以使用targzipbzip2命令来进行打包压缩和解压。

  1. 打包压缩:

使用tar命令配合gzipbzip2进行打包压缩:

# 使用gzip压缩
tar -czvf archive.tar.gz directory

# 使用bzip2压缩
tar -cjvf archive.tar.bz2 directory
  1. 解压打包压缩:

使用tar命令进行解压:

# 解压gzip压缩的文件
tar -xzvf archive.tar.gz

# 解压bzip2压缩的文件
tar -xjvf archive.tar.bz2
  1. 压缩:

使用gzipbzip2命令进行压缩:

# 使用gzip压缩
gzip file.txt

# 使用bzip2压缩
bzip2 file.txt
  1. 解压:

使用gunzipbunzip2命令进行解压:

# 解压gzip压缩的文件
gunzip file.txt.gz

# 解压bzip2压缩的文件
bunzip2 file.txt.bz2

请注意,gzipbzip2命令只能用于压缩文件,不能用于压缩目录。如果你想要压缩目录,你需要先使用tar命令将目录打包,然后再使用gzipbzip2命令压缩。

查找命令

  1. which
# 查找可执行的命令所在的路径:
which ls
whereis
# 查找可执行的命令和帮助的位置:
whereis ls
  1. find
# 1、根据文件名查找文件
find / -name test.txt
find ./ -name test.txt
find ./ -type d -name test # 查找目录

# 2、根据权限查找文件
find ./ -type f -perm 777 # 查找权限为777的所有文件
find ./ -type f ! -perm 777 # 查找权限不为777的所有文件
find ./ -type f ! -perm /a=x # 查找具有可执行权限的所有文件

# 3、基于所有者和组的搜索文件
find ./ -user root # 查找所有文件
find ./ -user root -name test.txt

# 4、根据日期和时间查找文件和目录
find ./ -atime 50 #查找最近50天有访问的所有文件
find ./ -mtime +50 -mtime -100 # 查找最近50-100天修改的文件
find ./ -amin 60 #查找最近1小时内有访问的所有文件

# 5、根据大小查找文件和目录
find ./ -size 50M #查找所有50MB的文件。
find ./ -size +50M -size -100M #查找所有50-100MB的文件。

# 组合用法:
find / -name test -exec rm {} \; #查找并删除
find / -name -type f *.txt -size +10M -exec rm {} \; #查找大于10M的txt文件并删除
  1. grep
查找文件内容 : grep
grep的用法
Linux grep 命令用于查找文件里符合条件的字符串。
实例1:
在当前目录中,查找后缀有 file 字样的文件中包含 test 字符串的文件,并打印出该字符串的行。此时,可以使用如下命令:
grep test *file 

结果:

grep test test* #查找前缀有“test”的文件包含“test”字符串的文件  

实例2:

以递归的方式查找符合条件的文件。例如,查找指定目录/etc/acpi 及其子目录(如果存在子目录的话)下所有文件中包含字符串"update"的文件,并打印出该字符串所在行的内容,使用的命令为:

如下命令:

grep -r update /etc/acpi 

输出结果如下:

$ grep -r update /etc/acpi #以递归的方式查找“etc/acpi”  
#下包含“update”的文件  
/etc/acpi/ac.d/85-anacron.sh:# (Things like the slocate updatedb cause a lot of IO.)  
Rather than  
/etc/acpi/resume.d/85-anacron.sh:# (Things like the slocate updatedb cause a lot of  
IO.) Rather than  
/etc/acpi/events/thinkpad-cmos:action=/usr/sbin/thinkpad-keys--update 

实例3:

反向查找。前面各个例子是查找并打印出符合条件的行,通过"-v"参数可以打印出不符合条件行的内容。

查找文件名中包含 test 的文件中不包含test 的行,此时,使用的命令为:

grep -v test *test*

结果如下所示:

$ grep-v test* #查找文件名中包含test 的文件中不包含test 的行  
testfile1:helLinux!  
testfile1:Linis a free Unix-type operating system.  
testfile1:Lin  
testfile_1:HELLO LINUX!  
testfile_1:LINUX IS A FREE UNIX-TYPE OPTERATING SYSTEM.  
testfile_1:THIS IS A LINUX TESTFILE!  
testfile_2:HELLO LINUX!  
testfile_2:Linux is a free unix-type opterating system.  

补充:

Linux 里利用 grepfind 命令查找文件内容

从文件内容查找匹配指定字符串的行:

$ grep "被查找的字符串" 文件名

例子:在当前目录里第一级文件夹中寻找包含指定字符串的 .in 文件

grep "thermcontact" /.in

从文件内容查找与正则表达式匹配的行:

$ grep –e "正则表达式" 文件名

查找时不区分大小写:

$ grep –i "被查找的字符串" 文件名

查找匹配的行数:

$ grep -c "被查找的字符串" 文件名

从文件内容查找不匹配指定字符串的行:

$ grep –v "被查找的字符串" 文件名

从根目录开始查找所有扩展名为 .log 的文本文件,并找出包含 "ERROR" 的行:

$ find / -type f -name "*.log" | xargs grep "ERROR"

例子:从当前目录开始查找所有扩展名为 .in 的文本文件,并找出包含 "thermcontact" 的行:

find . -name "*.in" | xargs grep "thermcontact"

场景: 

系统报警显示了时间,但是日志文件太大无法直接 cat 查看。(查询含有特定文本的文件,并拿到这些文本所在的行)

解决:

grep -n '2019-10-24 00:01:11' *.log

查看发行版名称和版本号

  • lsb_release 命令
  • /etc/*-release 文件

4、常用命令组合:

查找最大文件:

1、ls
ls -lSh . | head -6 #查找 当前目录中的 5 个最大文件

2、find
find . -type f -printf ‘%s %p\n’ | sort -nr | head -2 # 递归查找,包含子目录

3、du
du -a . | sort -n -r | head -n 20 #查找 当前目录中的 5 个最大文件
du -h -a * | grep “[0-9]G\b” #只看当前目录下大小在 GB 范围内的所有文件

查看文件内容

通常用 cat,tail,vi
错误用法:vi、vim,会把文件所有内容加载到内存中

1、cat 直接查看文件内容:
仅仅适合查看行数比较少的文件
cat -n test.txt # 显示行号

2、less
可上下翻页、搜索等。操作方法类似vim,

3、head、tail
head -n 10 test.txt
tail -n 10 test.txt #最后10行
tail -n +10 test.txt # 从第10行开始
tail -n 10 -f test.txt #查看最后10行并实时刷新数据
head -n 20 text.txt | tail -n 10 # 查看文件中第11到20行。 首先获取前20行,然后在获取20行的后10行
cat -n test.txt | head -n 20 | tail -n 10 # 同上,同时显示行号

linux系统查看日历

1、cal查看当前所处月份日历
2、cal 2022 查看2022年的年历
3、cal 1 2015查看2015年1月份的日历

ln命令软连接

该命令在文件之间创建链接。这种操作实际上是给系统中已有的某个文件指定另外一个 可用于访问它的名称。对于这个新的文件名,我们可以为之指定不同的访问权限,以控 制对信息的共享和安全性的问题。 如果链接指向目录,用户就可以利用该链接直接进入被链接的目录而不用打一大堆的路 径名。而且,即使我们删除这个链接,也不会破坏原来的目录。

语法:ln [选项] 目标 [链接名]
ln [选项] 目标 目录

链接有两种,一种被称为硬链接(Hard Link),另一种被称为符号链接(Symbolic Link)。 建立硬链接时,链接文件和被链接文件必须位于同一个文件系统中,并且不能建 立指向目录的硬链接。而对符号链接,则不存在这个问题。 默认情况下,ln产生硬链接。

在硬链接的情况下,参数中的“目标”被链接至[链接名]。如果[链接名]是一个目录名 ,系统将在该目录之下建立一个或多个与“目标”同名的链接文件,链接文件和被链接 文件的内容完全相同。如果[链接名]为一个文件,用户将被告知该文件已存在且不进行 链接。如果指定了多个“目标”参数,那么最后一个参数必须为目录。

如果给 ln 命令加上 -s 选项,则建立符号链接。如果[链接名]已经存在但不是目录, 将不做链接。[链接名]可以是任何一个文件名(可包含路径),也可以是一个目录, 并且允许它与“目标”不在同一个文件系统中。如果[链接名]是一个已经存在的目录, 系统将在该目录下建立一个或多个与“目标”同名的文件,此新建的文件实际上是指向原 “目标”的符号链接文件。

ln -s lunch /home/xu

% 为当前目录下的文件 lunch 创建了一个符号链接 /home/xu。
ln -s .submodules/data/yunfu_due_data yunfu_due_data

tmux的用法

查看有所有tmux会话

指 令:tmux ls
快捷键:Ctrl+b s

新建tmux窗口

指 令:tmux new -s

重命名会话

指 令:tmux rename-session -t
快捷键:Ctrl+b $

分离会话

指 令:tmux detach 或者使用 exit(关闭窗口)
快捷键:Ctrl+b d

重新连接会话

指 令:tmux attach -t 或者使用 tmux at -t

#平铺当前窗格(个人很喜欢的快捷键,注意:平铺的是当前选中的窗格)
快捷键:Ctrl+b z (再次 Ctrl+b z 则恢复)

杀死会话

指 令:tmux kill-session -t

切换会话

指 令:tmux switch -t

划分上下两个窗格

指 令:tmux split
快捷键:Ctrl+b “

划分左右两个窗格

指 令:tmux split -h
快捷键:Ctrl+b %

光标切换到上方窗格

指 令:tmux select-pane -U
快捷键:Ctrl+b 方向键上

光标切换到下方窗格

指 令:tmux select-pane -D
快捷键:Ctrl+b 方向键下

光标切换到左边窗格

指 令:tmux select-pane -L
快捷键:Ctrl+b 方向键左

光标切换到右边窗格

指 令:tmux select-pane -R
快捷键:Ctrl+b 方向键右

dpkg -l 命令会列出系统中所有已安装的软件包信息

删除已安装的软件包(保留配置文件)。

apt-get remove
如软件包a,依赖软件包b,则执行该命令会删除a,且保留配置文件

env的用法

env(确认过眼神,这就是我学过的那个单词environment的简写,我记得我写了八百遍才记住的)。  
env命令用于显示系统中已存在的环境变量,以及在定义的环境中执行指令。该命令只使用"-“作为参数选项时,隐藏了选项”-i"的功能。若没有设置任何选项和参数时,则直接显示当前的环境变量。

env是显示当前用户的环境变量。你可以在shell 命令里面键入 env试试。跟环境变量有关的还有:set 显示当前shell的变量,包括当前用户的变量,export 显示当前导出成用户变量的shell变量

分析:

set = 当前用户变量(evn)+ 当前shell独有的变量

而export可以把当前shell独有的变量 变成 用户变量,例如:

在PATH变量里面加入:/sbin

export PATH=$PATH:/sbin

#一般会把此命令加入到.bashrc文件中,再用source执行,这样当前shell就生效了。

提高部分:

.bashrc和.bash_profile区别

.bash_profile会用在login shell
.bashrc 使用在interactive non-login shell

开机自启

systemctl enable 注册的守护进程

启动守护进程

systemctl start 注册的守护进程

查看网卡信息

ip addr

vi /etc/sysconfig/network-scripts/(网卡)
输出信息中
ONBOOT = yes 开启网卡

systemctl是 Systemd 的主命令,用于管理系统。

重启守护进程

systemctl restart 守护进程的名称

查看状态

systemctl status 守护进程的名称

停止防火墙守护进程

systemctl stop firewalld

firewalld 防火墙

挂起

nohup python manage.py runserver 0.0.0.0:8000 &
在运行目录会生成一个nohup.out文件,里面都是日志

  • 43
    点赞
  • 37
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 2
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

吊肩三角裤

你的鼓励是我创作的最大动力!

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值