Bash script tutorial
$ who am i
当前用户,当前命令行编号,当前时间
$ pwd
present working directory
$ cal 7 2016
查看日历
$ date '+DATE:%m-%y%nTIME:%H:%M:%S'
自定义时间样式
$ ls -a
$ ls -l
显示隐藏文件,显示文件具体信息
File&directory operation
$ touch filename
创建一个空文本文件
$ rm filename
删除文件
$ mkdir dirname
创建一个空目录
$ rmdir dirname
删除一个目录
$ cp filename1 path/filename2
复制文件
$ mv filename filename2
重命名文件
$ grep keyword filename
在文件中查找关键字
$ diff filename1 filename2
对比两个文件中不同的部分
$ cat filename
一次显示整个文件
$ cat > filename
创建一个空文件并进入编辑模式ctrl+d
可以结束编辑模式并保存
$ cat < filename
读取这个文件并返回这个文件的字符串
$ cat file1 file2 > file
合并文件
$ ls > filename
把某个命令的返回值存入文件,如果不存在会自动创建
$ ls >> filename
如果用>
反复对一个文件保存,会覆盖之前的内容,要添加内容需要用>>
$ chmod o+w filename
文件权限修改,u, g, o
表示user,group,other,r, w, x
表示读写执行权限
$ chmod 754 filename
4 – read
2 – write
1 – execute
0 – no permission
这个命令表示对user, group, other
同时修改权限,7,5,4
代表三种用户的权限累加值,所以7就是rwx
,5就是r-x
,4就是r--
Compress & extract files
$ tar cvf tarFilename.tar compressFilename1 compressFilename2
c
表示是create,建立新的压缩包,v
表示结果会在控制台输出,f
代表文件选项
$ tar xvf tarFilename.tar
解压缩
Verify files using checksum
$ sha1sum filename
返回这个文件的哈希值,通过sha-1算法获得
$ sha1sum filename | grep someHashNumbers
对比这个文件的哈希值与某个哈希值,如果匹配则会返回红色文本的哈希值
Users
$ sudo useradd username
$ sudo passwd username
创建新用户,创建后给用户设置密码,Linux会自动建立一个和用户名同名的组,并添加到这个组
$ sudo groupadd goupName
$ sudo usermod -a -G goupName
添加用户组-a
表示添加或者移动到用户组,-G
表示添加到某个组但是不退出本身已经存在的组,-g
表示退出当前组,加入现在的组
$ cd ../..
$ cd etc
$ ls -la
用户密码存在etc目录下的passwd文件中,真实的密码存在shadow文件里,当然是被哈希加密的
SSH & SFTP
$ ssh username@ipAdress
以某个用户名登录某个服务器
$ nano /etc/ssh/sshd_config
修改ssh配置,PermitRootLogin without-password
即可无需密码登录,真正的秘钥只存在你当前用来登录的这台电脑
$ sftp username@ipAdress
使用安全的ftp登录
$ put path/filename
上传文件
$ put -r path/path2
上传某个路径下的所有文件,需要在远程端建立同名文件夹
$ get filename path/filename
下载单个文件
$ get -r folderName path
下载一个文件夹
Shell script
#!/bin/bash
指定解释器,#
也用作单行注释
$ bash shellScriptName
执行脚本
if [$1 = hotdog]; then
echo "You typed hotdog"
else
echo "You did NOT type hotdog"
echo "You typed " $1
fi
分支
for x in dog elephant fish; do
echo $x
done
循环
Process
$ ps
查看所有非系统进程
$ command &
让某个命令开启的进程在背后运行,不占用当前命令行
它会成为一个job
$ jobs
$ fg %jobNumber
把job
提到前台以便控制Ctrl+c
停止程序,Ctrl+d
冻结程序,Ctrl+z
把已经在运行的进程放到后台
$ kill processID
停止某个进程
$ kill -STOP processID
$ kill -CONT processID
冻结/解冻进程
$ nohup command &
注意到直接用&
放在后台的程序,当命令行关闭的时候,会被一同关闭
如果想要变成守护进程的造型,就要用nohup
Some other command
$ passwd
修改密码
$ info ls
显示某个命令的帮助