linux命令学习笔记

本文涉及的产品
.cn 域名,1个 12个月
全局流量管理 GTM,标准版 1个月
云解析 DNS,旗舰版 1个月
简介:

操作文件和文件夹: 
copy:

$ cp file1 file2
$ cp -r dir1 dir2

move:

$ mv file ..
$ mv file dir/

rename:

$ mv file1 file2
$ mv dir1 dir2 # dir2假设存在,则为移动操作

remove:

$ rm file
$ rm -r dir

创建文件:

$ touch a.txt
$ >a.txt

创建文件夹:

$ mkdir dir

查看文件:

#一般
$ cat file
#查看文件类型:
$ file a.txt
#创建和查看隐藏的文件/文件夹:
$ touch .a.txt  或者 mkdir .dir
$ ls -a
#分页查看文件:
$ less file
#ctrl ++:缩小  ctrl --:放大  j:向下滚屏 k:向上滚屏  /:字符查找 n:查找下一处 gg:文件头 G:文件尾 q:退出

*通配符

$ rm *.html #删除全部的html文件
$ echo a* # 看全部以a开头的文件

打包和压缩:

#zip文件
$ zip -r name.zip dir
$ unzip name.zip
#.tar.gz文件
$ tar zxvf name.tar.gz
$ tar zcvf name.tar.gz dir
#.tar.bz2文件
$ tar jxvf name.tar.bz2
$ tar jcvf name.tar.bz2 dir

重定向: 
三个关键文件: 
linux下全部的东西都是文件 
文件描写叙述符: 0 标准输入文件 1 标准输出文件 3 标准错误输出文件 
重定向的方式: 
输出重定向符:> 每次重定向之前都会把文件清空 >> 追加内容到一个文件里 
输出错误重定向符: 2> 
输入重定向符:< 
管道线:linux命令行的基石 
管道线命令符:| 把符号前面的结果传给符号后面的命令作为其输入

用户和权限: 
默认仅仅有在自己的主文件夹/home/usrname/下有写权限 其它的地方没有写权限(ctrl + a能够直接到命令的行首) 
三种基本权限: 
读:r 写:w 运行:x 
多用户模式: owner group world 
文件模式:

$ ls -l a.txt #对文件查看权限信息
$ ls -ld dir #对文件夹查看权限信息

对一个文件夹有写权限,意味着能够对里面的文件进行创建删除重命名等操作。可是对一个文件实用写权限并不拥有这些操作权限 
对一个文件夹有运行权限。意味着能够cd进这个文件夹,文件夹在创建时 一般都有运行权限 
chmod命令: 
对三种用户模式下每一种文件权限都能够用1代表有改权限。0代表没有该权限

$ chmod 111110110 a.txt # owner有rwx group和world仅仅有rw权限

进程: 
获取进程号: 
PID就表示进程号 
linux下粗略的能够觉得,用户每次运行一个新的程序。系统都会开启一个新的进程 
ps命令:作用是报告系统上当前的进程状况 
ps aux |less 查看全部的进程的进程号 $ ps aux |grep vim 查找vim的进程号 
Alt + Tab能够在各个打开的程序直接切换 
后台运行: 
在后面加&符号。能够让程序在后台运行 
假设已经打开程序了,补救的办法就是先用ctrl+z让程序暂停,回到命令行,然后输入bg命令。这样和加&一样。然后敲fg又回到前台,crtl + c关闭 
kill:

$ kill pid号   # 程序在正常运行的时候实用,相当于加了 -2
$ kill -9 pid  # 当程序跑飞了。强制终止

假设程序运行卡死了命令行界面。怎么办: 
linux同一时候运行着7个工作台的,敲crtl + alt + F1到第一个工作台在这里输入命令杀死那个进程,然后敲crtl + alt + F7回到原来的工作台

查找: 
locate:在系统全局范围内定位文件 
locate不是在整个File system中定位文件。而是从一个database中定位文件,这也是locate运行非常快的原因。


另一个updatedb命令。负责将File system中的文件更新到database中。可是updatedb通常是每天运行一次。

导致locate 不可能找到新创建的那些文件。


补救办法:$ sudo updatedb 然后再 locate 
find:在文件夹范围内定位文件

$ find dir #列出文件夹下的全部文件
$ find dir  -type f # 仅仅看文件夹下的全部文件
$ find dir  -type d # 仅仅看文件夹下的全部文件夹
$ find dir -type f -exec xxx '{}' ';'  # xxx能够是各种系统命令,对找到的文件进行操作
$ find dir -type f -exec grep hello '{}' ';'  -print # 在找到的全部文件里查找hello字符串。而且打印所在的文件的文件名称

grep:

$ grep hello #查找hello字符串
$ grep -n hello #而且显示出行号
$ grep -ni hello #显示出行号,并忽略大写和小写

ack grep:专门为程序猿在代码中查找的命令 
将一个二进制文件移动到~/bin下,在整个系统中就能使用该命令了: $ rm xxx ~/bin 
假设一个命令太长,能够到~/bin文件夹下 $ ln -s xxx y 就能够给xxx取一个别名y 以后用y就相当与用xxx

网络操作: 
远程操作: 
自己电脑上的程序要放到server上,能够花10$每一个月买一台VPSserver,在server上装上ubuntu server系统。 
ssh:能够觉得是互联网上两台机器互联的一种协议,须要server端开22port,就如http协议须要开80port。除了开22port,还须要server端和client装对应的ssh软件。


ubuntu desktop版和ubuntu server版这两个都默认是装好的。 
买server的时候,会给一个ip,能够给这个ip绑定一个域名。


在desktop上能够这样连接server:$ ssh server上的username@域名或者ip 输入password以后就能够在server上操作了。


ctrl+d能够退出server。 
每次输入password比較烦。能够在本地上输入$ ssh-keygen 然后在.ssh下能够得到公钥(id_rsa.pub)和私钥(id_rsa)。仍然在.ssh下运行 $ ssh-copy-id server上的username@域名或者ip

以后就不要在输入password了。 
tmux是一个非常好的远程操作防止断网和误操作中断通信,数据没有保存的软件。 
传输数据: 
rsync: 本地和远端同步数据用的。

假设ssh能用。rsync就能用。 
上传使用:

$ rsync -r 本地文件夹 server上的username@域名或者ip:server上路径

就能够把本地的文件夹上传到server路径下。

注意本地文件夹后面不能有/ 
下载仅仅须要交换上面两个參数的位置就可以 
怎样同步本地添加的文件:

$ rsync -av mydir/ server上的username@域名或者ip:server上路径/mydir/

这里v參数是为了显示运行过程 a參数是为了保留更加完整的文件信息 
怎样同步本地既有添加又有删除的文件:

$  rsync -av --delete mydir/ server上的username@域名或者ip:server上路径/mydir/

为了防止误删除一些文件,能够先运行:

$  rsync -av --delete mydir/ server上的username@域名或者ip:server上路径/mydir/  --dry-run

先仅仅报告信息。再运行真正的同步操作。

软件安装: 
手动安装: 
下载编译好后的代码解压缩: 
得到的文件夹放在一个不碍事的地方,最好放在一个隐藏文件夹下

echo $PATH #能够查看环境变量PATH。它的值是一系列由:隔开的文件夹。

仅仅须要把可运行文件放在PATH下的不论什么一个文件夹中,就能够成为一个系统可运行的命令了。 
也能够不移动可运行程序本身。而是创建一个链接:$ ln -s 本来的可运行程序目标位置以及名字 
自己下载源代码编译安装: 
解压缩并切换到源代码文件夹

./configure
make
sudo make install

deb包:debian package 
手动安装的问题:安装依赖 会给安装过程带来不便;安装的软件多的时候会忘记都在哪些位置安装了文件,卸载软件就成了一场噩梦 
deb包 = 程序本身+配置文件+安装位置+依赖关系 
HAPPYCASTS第十四期解说怎样将一个程序从源代码打成一个deb包 
安装一个程序的deb包:$ sudo dpkg -i deb包

$ dpkg -l |grep chrome #能够查看全部安装过的chrome deb包
$ dpkg -L 包名 #看包安装了哪些文件
$ dpkg -S 文件名称 #看一个文件来自那个包

从apt-get仓库安装: 
apt-get中底层包裹了dpkg 
开源软件通常是以源代码包的形式放在github或者自由软件基金会上的,ubuntu公司会定期将这些源代码包打造成deb包,并在ubuntu自己server上搭建一个软件仓库apt repo,再把deb包上传到软件仓库中。


在ubuntu下安装软件非常方便。$ apt-get install 软件名 就能够安装好了 
卸载软件:$ sudo apt-get remove 软件名 
连配置文件一起删除:$ sudo apt-get purge 软件名 
不知道精确的包名的时候。能够用: $ apt-cache search 貌似的软件名|less 
apt-get 也会自己主动帮安装上依赖文件

脚本编程技巧: 
指定解析器: 
一般用bash作为解析器,所以在第一行要加上: #!/usr/bin/env bash 指明用bash解析以下的语句 
可是不仅bash能够解析,python ruby等等都能够解析脚本 #!/usr/bin/env python 指明用python解析 
语句即命令: 
在命令行中的命令,放在脚本中就称为一个语句 
命令在脚本中能够直接罗列。也能够包裹到一个函数中,通过呼叫函数名来运行命令: 
say_hello(){ echo "hello" } 然后调用say_hello调用echo “hello”命令 
命令对空格敏感,所以脚本语句对空格异常敏感 
位置參数: 
脚本运行的时候也能够输入參数。在脚本中接受參数用$符号 $#表示參数的个数 $0 脚本文件名称\ $1–\$n 用户提供的參数 
脚本不在当前的shell运行: 
脚本不是在当前的shell里运行的,而是新开了一个shell并在里面运行脚本的。 
非要在当前shell中运行脚本,用source xx.sh 
循环控制:

cd $1
for file in `ls`
do
   ****命令
done

脚本中导引好能够取出命令的输出 pwd 
远程运行: 
脚本中写:

$ ssh -t 远程username@ip或者域名  '要运行的脚本或者命令'

确认运行:

echo -n "Want to continue?

(Y/n)" read AAA if ["${AAA:-y}" = "y"];then #调用函数 else echo Nothing done, bye. fi





本文转自mfrbuaa博客园博客,原文链接:http://www.cnblogs.com/mfrbuaa/p/5223174.html,如需转载请自行联系原作者

相关文章
|
1月前
|
Linux 网络安全 数据安全/隐私保护
Linux 超级强大的十六进制 dump 工具:XXD 命令,我教你应该如何使用!
在 Linux 系统中,xxd 命令是一个强大的十六进制 dump 工具,可以将文件或数据以十六进制和 ASCII 字符形式显示,帮助用户深入了解和分析数据。本文详细介绍了 xxd 命令的基本用法、高级功能及实际应用案例,包括查看文件内容、指定输出格式、写入文件、数据比较、数据提取、数据转换和数据加密解密等。通过掌握这些技巧,用户可以更高效地处理各种数据问题。
95 8
|
1月前
|
监控 Linux
如何检查 Linux 内存使用量是否耗尽?这 5 个命令堪称绝了!
本文介绍了在Linux系统中检查内存使用情况的5个常用命令:`free`、`top`、`vmstat`、`pidstat` 和 `/proc/meminfo` 文件,帮助用户准确监控内存状态,确保系统稳定运行。
265 6
|
1月前
|
Linux
在 Linux 系统中,“cd”命令用于切换当前工作目录
在 Linux 系统中,“cd”命令用于切换当前工作目录。本文详细介绍了“cd”命令的基本用法和常见技巧,包括使用“.”、“..”、“~”、绝对路径和相对路径,以及快速切换到上一次工作目录等。此外,还探讨了高级技巧,如使用通配符、结合其他命令、在脚本中使用,以及实际应用案例,帮助读者提高工作效率。
80 3
|
1月前
|
监控 安全 Linux
在 Linux 系统中,网络管理是重要任务。本文介绍了常用的网络命令及其适用场景
在 Linux 系统中,网络管理是重要任务。本文介绍了常用的网络命令及其适用场景,包括 ping(测试连通性)、traceroute(跟踪路由路径)、netstat(显示网络连接信息)、nmap(网络扫描)、ifconfig 和 ip(网络接口配置)。掌握这些命令有助于高效诊断和解决网络问题,保障网络稳定运行。
72 2
|
15天前
|
Linux Shell
Linux 10 个“who”命令示例
Linux 10 个“who”命令示例
44 14
Linux 10 个“who”命令示例
|
4天前
|
Ubuntu Linux
Linux 各发行版安装 ping 命令指南
如何在不同 Linux 发行版(Ubuntu/Debian、CentOS/RHEL/Fedora、Arch Linux、openSUSE、Alpine Linux)上安装 `ping` 命令,详细列出各发行版的安装步骤和验证方法,帮助系统管理员和网络工程师快速排查网络问题。
57 20
|
4天前
|
网络协议 Linux 应用服务中间件
kali的常用命令汇总Linux
kali的常用命令汇总linux
26 7
|
24天前
|
Linux 数据库
Linux中第一次使用locate命令报错?????
在Linux CentOS7系统中,使用`locate`命令时出现“command not found”错误,原因是缺少`mlocate`包。解决方法是通过`yum install mlocate -y`或`apt-get install mlocate`安装该包,并执行`updatedb`更新数据库以解决后续的“can not stat”错误。
31 9
|
22天前
|
监控 网络协议 Linux
Linux netstat 命令详解
Linux netstat 命令详解
|
28天前
|
运维 监控 网络协议
运维工程师日常工作中最常用的20个Linux命令,涵盖文件操作、目录管理、权限设置、系统监控等方面
本文介绍了运维工程师日常工作中最常用的20个Linux命令,涵盖文件操作、目录管理、权限设置、系统监控等方面,旨在帮助读者提高工作效率。从基本的文件查看与编辑,到高级的网络配置与安全管理,这些命令是运维工作中的必备工具。
116 3
下一篇
DataWorks