赞
踩
关于Linux的简介、诞生、迭代,大家可以去网上查一查,这里不多做赘述了
非常重要的文件类型有: 普通文件,目录文件,链接文件,设备文件,管道文件,Socket 套接字文件 等。
每种文件类型都有不同的用途和属性,可以通过命令如ls
、file
等来查看文件的类型信息。
# 普通文件(-)
-rw-r--r-- 1 user group 1024 Apr 14 10:00 file.txt
# 目录文件(d,directory file)*
drwxr-xr-x 2 user group 4096 Apr 14 10:00 directory/
# 套接字文件(s,socket)
srwxrwxrwx 1 user group 0 Apr 14 10:00 socket
Linux 使用一种称为目录树的层次结构来组织文件和目录。目录树由根目录(/)作为起始点,向下延伸,形成一系列的目录和子目录。
(1) ctrl c: 取消命令,并且换行
(2) ctrl u: 清空本行命令
**(3) tab键:**可以补全命令和文件名,如果补全不了快速按两下tab键,可以显示备选选项
(4) ls: 列出当前目录下所有文件,蓝色的是文件夹,白色的是普通文件,绿色的是可执行文件
(5) pwd: 显示当前路径
(6) cd XXX: 进入XXX目录下, cd … 返回上层目录
(7) cp XXX YYY: 将XXX文件复制成YYY,XXX和YYY可以是一个路径,相当于复制+粘贴+重命名,比如cp …/a/text.txt …/b/text1.txt
(8) mkdir XXX: 创建目录XXX
(9) rm XXX(支持正则表达式): 删除普通文件; rm XXX -r: 删除文件夹
(10) mv XXX YYY: 将XXX文件移动到YYY,和cp命令一样,XXX和YYY可以是一个路径;重命名也是用这个命令;相当于剪切+粘贴
(11) touch XXX: 创建一个文件
(12) cat XXX: 展示文件XXX中的内容
(13) 复制文本
windows/Linux下:Ctrl + insert,Mac下:command + c
(14) 粘贴文本
windows/Linux下:Shift + insert,Mac下:command + v
(15) 显示历史命令:history
tmux:新建一个session,其中包含一个window,window中包含一个pane,pane里打开了一个shell对话框
按下Ctrl+a后手指松开,然后按%:将当前pane左右半分成两个pane
按下Ctrl+a后手指松开,然后按 ":将当前pane上下半分成两个pane
Ctrl+d:关闭当前pane;如果当前window的所有pane均已关闭,则关闭window;如果当前session的所有window均已关闭,则自动关闭session
鼠标点击可以选pane。
按下Ctrl+a后手指松开,然后按方向键:选择相邻的pane
鼠标拖动pane之间的分割线,可以调整pane之间分割线的位置
按住Ctrl+a的同时按方向键,可以调整pane之间分割线的位置
按下Ctrl+a后手指松开,然后按z:将当前pane全屏/取消全屏
按下Ctrl+a后手指松开,然后按d:挂起当前session
tmux a:打开之前挂起的session
按下Ctrl+a后手指松开,然后按s:选择其他session
按下Ctrl+a后手指松开,然后按c:在当前session中创建一个新的window
按下Ctrl+a后手指松开,然后按w:选择在其他window,操作方法与12完全相同
按下Ctrl+a后手指松开,然后按PageUp:翻阅当前panel内的内容
鼠标滚轮:翻阅当前pane内的内容。
在tmux中选中文本时,需要按住shift键。
tmux中复制/粘贴文本的通用方式:
如何将服务器中的文件整个复制出来?
tmux
cat filename
:展示文件的内容shift
,同时鼠标点击文件结尾,此时会选中文件所有内容Ctrl+insert
可以复制全文远程登录服务器:
ssh user@hostname
user
:用户名hostname
:IP地域或域名第一次登录时会提示:
The authenticity of host '123.57.47.211 (123.57.47.211)' can't be established.
ECDSA key fingerprint is SHA256:iy237yysfCe013/l+kpDGfEG9xxHxm0dnxnAbJTPpG8.
Are you sure you want to continue connecting (yes/no/[fingerprint])?
输入yes
,然后回车即可。
这样会将该服务器的信息记录在~/.ssh/known_hosts
文件中。
然后输入密码即可登录到远程服务器中
默认登录端口号为22。如果想登录某一特定端口:
ssh user@hostname -p 22
创建文件 ~/.ssh/config
然后在文件中输入:
Host myserver1
HostName IP地址或域名
User 用户名
Host myserver2
HostName IP地址或域名
User 用户名
之后再使用服务器时,可以直接使用别名myserver1
、myserver2
。
创建密钥:
ssh-keygen
然后一直回车即可。
执行结束后,~/.ssh/
目录下会多两个文件:
id_rsa
:私钥id_rsa.pub
:公钥之后想免密码登录哪个服务器,就将公钥传给哪个服务器即可。
例如,想免密登录myserver
服务器。则将公钥中的内容,复制到myserver
中的~/.ssh/authorized_keys
文件里即可。
也可以使用如下命令一键添加公钥:
ssh-copy-id myserver
格式:
ssh user@hostname command
示例:
ssh user@hostname ls -a
或者
# 单引号中的$i可以求值
ssh myserver 'for ((i = 0; i < 10; i ++ )) do echo $i; done'
或者
# 双引号中的$i不可以求值
ssh myserver "for ((i = 0; i < 10; i ++ )) do echo $i; done"
格式:
scp source destination
将source
路径下的文件复制到destination
中
一次复制多个文件:
scp source1 source2 destination
复制文件夹:
scp -r ~/tmp myserver:/home/acs/
将本地家目录中的tmp
文件夹复制到myserver服务器中的/home/acs/
目录下
scp -r ~/tmp myserver:homework/
将本地家目录中的tmp
文件夹复制到myserver
服务器中的~/homework/
目录下
scp -r myserver:homework .
将myserver
服务器中的~/homework/
文件夹复制到本地的当前路径下
指定服务器的端口号:
scp -P 22 source1 source2 destination
注意:scp
的-r -P
等参数尽量加在source
和destination
之前。
scp ~/.vimrc ~/.tmux.conf myserver:
管道类似于文件重定向,可以将前一个命令的stdout
重定向到下一个命令的stdin
。
stdout
,会忽略stderr
stdin
stdout
,右边stdin
统计当前目录下所有python文件的总行数,其中find
、xargs
、wc
等命令可以参考常用命令。
find . -name '*.py' | xargs cat | wc -l
Linux系统中会用很多环境变量来记录配置信息。
环境变量类似于全局变量,可以被各个进程访问到。我们可以通过修改环境变量来方便地修改系统配置。
列出当前环境下的所有环境变量:
env # 显示当前用户的变量
set # 显示当前shell的变量,包括当前用户的变量;
export # 显示当前导出成用户变量的shell变量
输出某个环境变量的值:
echo $PATH
环境变量的定义、修改、删除操作可以参考我写的Shell语法这一节的内容。
为了将对环境变量的修改应用到未来所有环境下,可以将修改命令放到~/.bashrc
文件中。
修改完~/.bashrc
文件后,记得执行source ~/.bashrc
,来将修改应用到当前的bash
环境下。
为何将修改命令放到~/.bashrc
,就可以确保修改会影响未来所有的环境呢?
bash
,都会先执行~/.bashrc
ssh
登录远程服务器,都会启动一个bash
命令行给我们tmux
新开一个pane
,都会启动一个bash
命令行给我们HOME
:用户的家目录PATH
:可执行文件(命令)的存储路径。路径与路径之间用:
分隔。当某个可执行文件同时出现在多个路径中时,会选择从左到右数第一个路径中的执行。下列所有存储路径的环境变量,均采用从左到右的优先顺序。LD_LIBRARY_PATH
:用于指定动态链接库(.so文件)的路径,其内容是以冒号分隔的路径列表。C_INCLUDE_PATH
:C语言的头文件路径,内容是以冒号分隔的路径列表。CPLUS_INCLUDE_PATH
:CPP的头文件路径,内容是以冒号分隔的路径列表。PYTHONPATH
:Python导入包的路径,内容是以冒号分隔的路径列表。JAVA_HOME
:jdk的安装目录。CLASSPATH
:存放Java导入类的路径,内容是以冒号分隔的路径列表。top
:查看所有进程的信息 (Linux的任务管理器)
M
:按使用内存排序P
:按使用CPU排序q
:退出df -h
:查看硬盘使用情况free -h
:查看内存使用情况du -sh
:查看当前目录占用的硬盘空间ps aux
:查看所有进程kill -9 pid
:杀死编号为pid
的进程
kill -s SIGTERM pid
netstat -nt
:查看所有网络连接w
:列出当前登录的用户ping www.baidu.com
:检查是否连网chmod
:修改文件权限
chmod +x xxx
:给xxx
添加可执行权限chmod -x xxx
:去掉xxx
的可执行权限chmod 777 xxx
:将xxx
的权限改成777chmod 777 xxx -R
:递归修改整个文件夹的权限find /path/to/directory/ -name '*.py'
:搜索某个文件路径下的所有*.py
文件grep xxx
:从stdin
中读入若干行数据,如果某行包含xxx
,则输出该行;否则忽略该行wc
:统计行数、单词数、字节数
stdin
中直接读入内容;也可以在命令行参数中传入文件名列表wc -l
:统计行数wc -w
:统计单词数wc -c
:统计字节数tree
:展示当前目录的文件结构
tree /path/to/directory/
:展示某个目录的文件结构tree -a
:展示隐藏文件ag xxx
:搜索当前目录下的所有文件,检索xxx
字符串cut
:分割一行内容
stdin
中读入多行数据echo $PATH | cut -d ':' -f 3,5
:输出PATH用:分割后第3、5列数据echo $PATH | cut -d ':' -f 3-5
:输出PATH用:分割后第3-5列数据echo $PATH | cut -c 3,5
:输出PATH的第3、5个字符echo $PATH | cut -c 3-5
:输出PATH的第3-5个字符sort
:将每行内容按字典序排序
stdin
中读取多行数据xargs
:将stdin
中的数据用空格或回车分割成命令行参数
find . -name '*.py' | xargs cat | wc -l
:统计当前目录下所有python文件的总行数more
:浏览文件内容
b
:上一页q
:退出less
:与more
类似,功能更全
y
:上一行Page Down
:下一页Page Up
:上一页q
:退出head -3 xxx
:展示xxx
的前3行内容
stdin
读入内容tail -3 xxx
:展示xxx
末尾3行内容
stdin
读入内容history
:展示当前用户的历史操作。内容存放在~/.bash_history
中md5sum
:计算md5
哈希值
可以从stdin
读入内容
也可以在命令行参数中传入文件名列表
time command
:统计command
命令的执行时间
ipython3
:交互式python3环境。可以当做计算器,或者批量管理文件。
! echo "Hello World"
:!
表示执行shell
脚本watch -n 0.1 command
:每0.1秒执行一次command
命令
tar
:压缩文件
tar -zcvf xxx.tar.gz /path/to/file/*
:压缩
tar -zxvf xxx.tar.gz
:解压缩
tar -zxvf xxx.tar.gz -C yyy
:可以将 xxx.tar.gz
解压到指定目录 yyy
中
diff xxx yyy
:查找文件xxx
与yyy
的不同点
sudo command
:以root
身份执行command
命令apt-get install xxx(Ubuntu)
:安装软件yum -y install xxx(Centos)
:安装软件pip install xxx --user --upgrade
:安装python包Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。