使用Linux shell是一些程序员每天的基本工作,但我们经常会忘记一些有用的shell命令和技巧。当然,命令我能记住,但我不敢说能记得如何用它执行某个特定任务。需要注意一点的是,有些用法需要在你的linux系统里安装额外的软件。
shell是一种命令解释器,它提供了用户和操作系统之间的交互接口。shell是面向命令行的,而 X Window 则是图形界面。你在命令行输入命令,shell进行解释,然后送往操作系统执行。
shell可以执行 Linux 的系统内部命令,也可以执行应用程序。你还可以利用shell编程,执行复杂的命令程序。
Linux 提供几种shell程序以供选择。常用的有 Bourne ( b s h )、C( c s h )和Korn( k s h ),各个shell都能提供基本的功能,又有其各自的特点。
Bourne shell
Bourne shell是由Steven Bourne 编写的,是UNIX 的缺省shell。Bourne shell的shell编程能力很强。但它不能处理命令的用户交互特征。bash 是Bourne shell的增强版。
Cshell
Cshell是由加利福尼亚大学伯克利分校的Bill Joy编写的。它能提供Bourne shell所不能处理的用户交互特征,如命令补全、命令别名、历史命令替换等。很多人认为, C shell的编程能力不如Bourne shell,但它的语法和C语言类似,所以C程序员将发现C shell很顺手。tcsh 是Cshell的增强版本和Cshell完全兼容。
Korn
K o r nshell是由Dave Korn 编写的。Korn shell融合了C shell和Bourne shell的优点,并和Bourne shell完全兼容。 Korn shell的效率很高,其命令交互界面和编程交互界面都很不错。Public Domain Korn shell( p d k s h )是Korn shell的增强版。
bash
bash 是大多数L i n u x系统的缺省shell。它克服了Bourne shell的缺点,又和Bourne shell完全
兼容,B a s h有以下的特点:
1 补全命令行。 当你在bash 命令提示符下输入命令或程序名时,你不必输全命令或程序
名,按Tab 键,b a s h将自动补全命令或程序名。
2 通配符。 在b a s h下可以使用通配符 * 和?。*可以替代多个字符,而?则替代一个字符。
3 历史命令。 bash 能自动跟踪你每次输入的命令,并把输入的命令保存在历史列表缓冲区。
缓冲区的大小由HISTSIZE 变量控制。当你每次登录后,home 目录下的 .bash_history 文
件将初始化你的历史列表缓冲区。你也能通过history 和fc 命令执行、编辑历史命令。
4别名。 在b a s h下,可用alias 和unalias 命令给命令或可执行程序起别名和清除别名。这
样你可以用自己习惯的方式输入命令。
进入shell
Linux 启动后,给出 login 命令,等待用户登录。
Login:
Password:
如果是正确的用户名和密码,那么你就会进入Linux 的shell, shell给出命令提示符,等待
你输入命令。使用 l o g o u t命令退出shell。
shell的常用命令
1、更改帐号密码
语法:passwd
Old password:
New password:
Retype new password:
2、联机帮助
语法: man 命令
例如: man ls
3、远程登录
语法:rlogin 主机名 [-l 用户名]
例如:
rlogin aa 远程登录到工作站 aa 中。
rlogin aa -l user 使用 user 帐号登录到工作站 aa 中。
语法:telnet 主机名 或 telnet IP地址
例如:
telnet aa
telnet 130.129.21.250
4、文件或目录处理
列出文件或目录下的文件名。
语法: ls [-atFlgR] [name]
ls 列出目前目录下的文件名。
ls -a 列出包括以 .开始的隐藏文件的所有文件名。
ls -t 依照文件最后修改时间的顺序列出文件名。
ls -F 列出当前目录下的文件名及其类型。以/ 结尾表示为目录名,以* 结尾表示为
可执行文件,以@ 结尾表示为符号连接。
ls -l 列出目录下所有文件的权限、所有者、文件大小、修改时间及名称。
ls -lg 同上,并显示出文件的所有者工作组名。
ls -R 显示出目录下以及其所有子目录的文件名。
5、改变工作目录
语法:cd [name]
name:目录名、路径或目录缩写。
例如:
cd 改变目录位置至用户登录时的工作目录。
cd dir 改变目录位置至d i r目录下。
cd user 改变目录位置至用户的工作目录。
cd .. 改变目录位置至当前目录的父目录。
cd ../user 改变目录位置至相对路径 user 的目录下。
cd /../.. 改变目录位置至绝对路径的目录位置下。
cd 改变目录位置至用户登录时的工作目录。
6、复制文件
语法: cp [-r] 源地址 目的地址
例如:
cp file1 file2 将文件 file1 复制成 f i l e 2。
cp file1 dir1 将文件 file1 复制到目录 dir1 下,文件名仍为 f i l e 1。
cp /tmp/file1 . 将目录 /tmp 下的文件 file1 复制到当前目录下,文件名仍为 f i l e 1。
cp /tmp/file1 file2 将目录 /tmp 下的文件 file1 复制到当前目录下,文件名为f i l e 2。
cp -r dir1 dir2 复制整个目录。
7、移动或更改文件、目录名称
语法:mv 源地址 目的地址
例如:
mv file1 file2 将文件 f i l e 1更名为 f i l e 2。
mv file1 dir1 将文件 f i l e 1移到目录 dir1 下,文件名仍为 f i l e 1。
mv dir1 dir2 将目录 dir1 更改为目录 d i r 2。
7、建立新目录
语法: mkdir 目录名
mkdir dira 建立一新目录 d i ra。
8、删除目录
语法: rmdir 目录名 或 rm 目录名
例如:
rmdir dir1 删除目录 d i r 1,但 dir1 下必须没有文件存在,否则无法删除。
rm -r dir1 删除目录 d i r 1及其子目录下所有文件。
9、删除文件
语法: rm 文件名
例如:
rm file1 删除文件名为 file1 的文件。
rm file? 删除文件名中有五个字符且前四个字符为file 的所有文件。
rm f* 删除文件名中以 f 为字首的所有文件。
10、列出当前所在的目录位置
语法: p w d
11、查看文件内容
语法: cat 文件名
例如:
cat file1 以连续显示方式,查看文件名 file1 的内容。
11、分页查看文件内容
语法: more 文件名 或 cat 文件名 | more
例如:
more file1 以分页方式查看文件名 file1 的内容。
cat file1 | more 以分页方式查看文件名 file1 的内容。
12、查看目录所占磁盘容量
语法: du [-s] 目录
例如:
du dir1 显示目录 dir1 的总容量及其子目录的容量(以KB 为单位)。
du -s dir1 显示目录 dir1 的总容量。
13、文件传输
1. 拷贝文件或目录至远程工作站
语法: rcp [-r] 源地址 主机名:目的地址
源地址文件名、目录名或路径。
例如:
rcp file1 doc:/home/user 将文件f i l e 1拷贝到工作站 doc 路径 /home/user 下。
rcp -r dir1 doc:/home/user 将目录 d i r 1拷贝到工作站 doc 路径/home/user 下。
2. 自远程工作站,拷贝文件或目录
语法: rcp [-r] 主机名:源地址 目的地址
主机名工作站名。
源地址路径名。
目的地址、文件名、目录名或路径 。
例如:
rcp doc:/home/user/file1 file2 将工作站 d o c路径/home/user 下的目录 d i r 1,拷贝到当前工
作站的目录下,目录名仍为 d i r 1。
rcp -r doc:/home/user/dir1 . 将工作站doc 路径/home/user 下的目录 d i r 1,拷贝到当前工
作站的目录下,目录名仍为 d i r 1。
3. 本地工作站与远程工作站之间的文件传输
必须拥有远程工作站的帐号及密码,才可进行传输工作。
语法: ftp 主机名 或 ftp ip地址
例如:
ftp doc 与远程工作站 doc 之间进行文件传输。
Name (doc:user-name):
Password (doc:user-password):
ftp> help 列出 ftp 文件传输时可使用的命令。
ftp> !ls 列出本地工作站当前目录下的所有文件名。
ftp> !pwd 列出本地工作站当前所在的目录位置。
ftp> ls 列出远程工作站当前目录下的所有文件名。
ftp> dir 列出远程工作站当前目录下的所有文件名。
ftp> dir . |more 分页列出远程工作站当前目录下的所有文件名。
ftp> pwd 列出远程工作站当前所在的目录位置。
ftp> cd dir1 更改远程工作站的工作目录位置至 dir1 之下。
ftp> get file1 将远程工作站的文件 f i l e 1拷贝到本地工作站中。
ftp> put file2 将本地工作站的文件 f i l e 2拷贝到远程工作站中。
ftp> mget *.c 将远程工作站中扩展文件名为 c 的所有文件拷贝到本地工作站中。
ftp> mput *.txt 将本地工作站中扩展文件名为 txt 的所有文件拷贝到远程工作站中。
ftp> prompt 切换交互式指令(使用 mput/mget 时不是每个文件皆询问y e s / n o )。
ftp> quit 结束 ftp 工作。
ftp> bye 结束 ftp 工作。
注意 从PC与工作站间的文件传输也可透过在 PC端的 FTP指令进行文件传输,指令用
法与上述指令大致相同。
14、文件权限的设定
1. 改变文件或目录的读、写、执行权限
语法:chmod [-R] mode name
n a m e :文件名或目录名。
mode: 3个8位数字或r w x的组合。r- r e a d (读),w - w r i t e (写),x - e x e c u t e (执行),u - u s e r (当前用
户),g - g r o u p(组) ,o - o t h e r(其他用户) 。
例如:
chmod 755 dir1 对于目录d i r 1,设定成任何使用者皆有读取及执行的权利,但只有所
有者可做修改。
chmod 700 file1 对于文件f i l e 1,设定只有所有者可以读、写和执行的权利。
chmod u+x file2 对于文件f i l e 2,增加当前用户可以执行的权利。
chmod g+x file3 对于文件f i l e 3,增加工作组使用者可执行的权利。
chmod o-r file4 对于文件f i l e 4,删除其他使用者可读取的权利。
2.改变文件或目录的所有权
语法:chown [-R] 用户名 name
n a m e:文件名或目录名。
例如 :
chown user file1 将文件 file1 改为用户user 所有。
chown -R user dir1 将目录 d i r 1及其子目录下面的所有文件改为用户user 所有。
以上内容希望帮助到大家,很多PHPer在进阶的时候总会遇到一些问题和瓶颈,业务代码写多了没有方向感,不知道该从那里入手去提升,对此我整理了一些资料,包括但不限于:分布式架构、高可扩展、高性能、高并发、服务器性能调优、TP6,laravel,YII2,Redis,Swoole、Swoft、Kafka、Mysql优化、shell脚本、Docker、微服务、Nginx等多个知识点高级进阶干货需要的可以免费分享给大家,需要PHP进阶架构师>>>视频、面试文档免费获取docs.qq.com
或者关注咱们下面的专栏PHP架构师之路zhuanlan.zhihu.com
未完结