From b70f215db1fbce95757c5e628eaa423912ad7e16 Mon Sep 17 00:00:00 2001 From: zheng Date: Sun, 8 Dec 2013 18:42:14 +0800 Subject: [PATCH 1/2] [Translating] Linux shell tips and tricks --- sources/Linux shell tips and tricks.md | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/sources/Linux shell tips and tricks.md b/sources/Linux shell tips and tricks.md index 164a60e342..d0a108de51 100644 --- a/sources/Linux shell tips and tricks.md +++ b/sources/Linux shell tips and tricks.md @@ -1,3 +1,7 @@ +Translating------------geekpi + + + Linux shell tips and tricks ================================================================================ I’m using Linux shell (Bash) on daily basis, but I often forgot some useful command or shell tip. Yes, I can remember commands, but I can’t say that if I used it just once for specific task. Then I started to write Linux shell tips in text file on my Dropbox account and now I decided to share that. This list will be updated over time. Also keep in mind that for some tips you will need to install additional software on your Linux distribution. From fb0a03b42225799ffa49ee1601cb673d0688e7b9 Mon Sep 17 00:00:00 2001 From: zheng Date: Sun, 8 Dec 2013 20:54:59 +0800 Subject: [PATCH 2/2] [Translated] Linux shell tips and tricks --- sources/Linux shell tips and tricks.md | 314 ---------------------- translated/Linux shell tips and tricks.md | 310 +++++++++++++++++++++ 2 files changed, 310 insertions(+), 314 deletions(-) delete mode 100644 sources/Linux shell tips and tricks.md create mode 100644 translated/Linux shell tips and tricks.md diff --git a/sources/Linux shell tips and tricks.md b/sources/Linux shell tips and tricks.md deleted file mode 100644 index d0a108de51..0000000000 --- a/sources/Linux shell tips and tricks.md +++ /dev/null @@ -1,314 +0,0 @@ -Translating------------geekpi - - - -Linux shell tips and tricks -================================================================================ -I’m using Linux shell (Bash) on daily basis, but I often forgot some useful command or shell tip. Yes, I can remember commands, but I can’t say that if I used it just once for specific task. Then I started to write Linux shell tips in text file on my Dropbox account and now I decided to share that. This list will be updated over time. Also keep in mind that for some tips you will need to install additional software on your Linux distribution. - -Check if remote port is open with bash: - - echo >/dev/tcp/8.8.8.8/53 && echo "open" - -Suspend process: - - Ctrl + z - -Move process to foreground: - - fg - -Generate random hex number where n is number of characters: - - openssl rand -hex n - -Execute commands from a file in the current shell: - - source /home/user/file.name - -Substring for first 5 characters: - - ${variable:0:5} - -SSH debug mode: - - ssh -vvv user@ip_address - -SSH with pem key: - - ssh user@ip_address -i key.pem - -Get complete directory listing to local directory with wget: - - wget -r --no-parent --reject "index.html*" http://hostname/ -P /home/user/dirs - -Create multiple directories: - - mkdir -p /home/user/{test,test1,test2} - -List processes tree with child processes: - - ps axwef - -Create war file: - - jar -cvf name.war file - -Test disk write speed: - - dd if=/dev/zero of=/tmp/output.img bs=8k count=256k conv=fdatasync; rm -rf /tmp/output.img - -Test disk read speed: - - hdparm -Tt /dev/sda - -Get md5 hash from text: - - echo -n "text" | md5sum - -Check xml syntax: - - xmllint --noout file.xml - -Extract tar.gz in new directory: - - tar zxvf package.tar.gz -C new_dir - -Get HTTP headers with curl: - - curl -I http://www.example.com - -Modify timestamp of some file or directory (YYMMDDhhmm): - - touch -t 0712250000 file - -Download from ftp using wget: - - wget -m ftp://username:password@hostname - -Generate random password (16 char long in this case): - - LANG=c < /dev/urandom tr -dc _A-Z-a-z-0-9 | head -c${1:-16};echo; - -Quickly create a backup of a file: - - cp some_file_name{,.bkp} - -Access Windows share: - - smbclient -U "DOMAIN\user" //dc.domain.com/share/test/dir - -Run command from history (here at line 100): - - !100 - -Unzip to directory: - - unzip package_name.zip -d dir_name - -Multiline text (CTRL + d to exit): - - cat > test.txt - -Create empty file or empty existing one: - - > test.txt - -Update date from Ubuntu NTP server: - - ntpdate ntp.ubuntu.com - -netstat show all tcp4 listening ports: - - netstat -lnt4 | awk '{print $4}' | cut -f2 -d: | grep -o '[0-9]*' - -Convert image from qcow2 to raw: - - qemu-img convert -f qcow2 -O raw precise-server-cloudimg-amd64-disk1.img \ - precise-server-cloudimg-amd64-disk1.raw - -Run command repeatedly, displaying it's output (default every two seconds): - - watch ps -ef - -List all users: - - getent passwd - -Mount root in read/write mode: - - mount -o remount,rw / - -Mount a directory (for cases when symlinking will not work): - - mount --bind /source /destination - -Send dynamic update to DNS server: - - nsupdate < 1048576) print $7/1048576 "MB "$9 }' | sort -n -u | tail - -Show free RAM in MB: - - free -m | grep cache | awk '/[0-9]/{ print $4" MB" }' - -Open Vim and jump to end of file: - - vim + some_file_name - -Git clone specific branch (master): - - git clone git@github.com:name/app.git -b master - -Git switch to another branch (develop): - - git checkout develop - -Git delete branch (myfeature): - - git branch -d myfeature - -Git delete remote branch: - - git push origin :branchName - -Git push new branch to remote: - - git push -u origin mynewfeature - -Print out the last cat command from history: - - !cat:p - -Run your last cat command from history: - - !cat - -Find all empty subdirectories in /home/user: - - find /home/user -maxdepth 1 -type d -empty - -Get all from line 50 to 60 in test.txt: - - < test.txt sed -n '50,60p' - -Run last command (if it was: mkdir /root/test, below will run: sudo mkdir /root/test): - - sudo !! - -Create temporary RAM filesystem - ramdisk (first create /tmpram directory): - - mount -t tmpfs tmpfs /tmpram -o size=512m - -Grep whole words: - - grep -w "name" test.txt - -Append text to a file that requires raised privileges: - - echo "some text" | sudo tee -a /path/file - -List all supported kill signals: - - kill -l - -Generate random password (16 characters long in this case): - - openssl rand -base64 16 - -Do not log last session in bash history: - - kill -9 $$ - -Scan network to find open port: - - nmap -p 8081 172.20.0.0/16 - -Set git email: - - git config --global user.email "me@example.com" - -To sync with master if you have unpublished commits: - - git pull --rebase origin master - -Move all files with "txt" in name to /home/user: - - find -iname "*txt*" -exec mv -v {} /home/user \; - -Put the file lines side by side: - - paste test.txt test1.txt - -Progress bar in shell: - - pv data.log - -Send the data to server with netcat: - - echo "hosts.sampleHost 10 `date +%s`" | nc 192.168.200.2 3000 - -Convert tabs to spaces: - - expand test.txt > test1.txt - -Skip bash history: - - < >cmd - -Go to the previous working directory: - - cd - - -Split large tar.gz archive (100MB each) and put it back: - - split –b 100m /path/to/large/archive /path/to/output/files - cat files* > archive - -Get HTTP status code with curl: - - curl -sL -w "%{http_code}\\n" www.example.com -o /dev/null - -When Ctrl + c not works: - - Ctrl + \ - -Get file owner: - - stat -c %U file.txt - -List block devices: - - lsblk -f - -Find files with trailing spaces: - - find . -type f -exec egrep -l " +$" "{}" \; - -Find files with tabs indentation: - - find . -type f -exec egrep -l $'\t' "{}" \; - -Print horizontal line with "=": - - printf '%100s\n' | tr ' ' = - -**UPDATE: November 25, 2013** - --------------------------------------------------------------------------------- - -via: http://www.techbar.me/linux-shell-tips/ - -译者:[译者ID](https://github.com/译者ID) 校对:[校对者ID](https://github.com/校对者ID) - -本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创翻译,[Linux中国](http://linux.cn/) 荣誉推出 \ No newline at end of file diff --git a/translated/Linux shell tips and tricks.md b/translated/Linux shell tips and tricks.md new file mode 100644 index 0000000000..ca7d929c54 --- /dev/null +++ b/translated/Linux shell tips and tricks.md @@ -0,0 +1,310 @@ +Linux sheel 贴士和技巧 +================================================================================ +我日常使用Linux shell(Bash),但是我经常忘记一些有用的命令或者shell技巧。是的,我能记住一些命令但是我不能说只在特定的任务上使用一次。那么我就开始在我的Dropbox账号里用文本文件写下这些Linux shell的贴士,现在我决定共享它。这个表我以后还会更新。记住,这里的一些贴士需要在你的Linux发行版上安装额外的软件。 + +在bash中检查远程端口是否打开: + + echo >/dev/tcp/8.8.8.8/53 && echo "open" + +终止进程: + + Ctrl + z + +将进程移到前台: + + fg + +生成随机16进制数字,n是字符的数量: + + openssl rand -hex n + +在当前shell中从一个文件中执行命令: + + source /home/user/file.name + +提取前5个字符的字串: + + ${variable:0:5} + +SSH调试模式: + + ssh -vvv user@ip_address + +带pem key的SSH + + ssh user@ip_address -i key.pem + +用wget获取完整目录列表到本地目录: + + wget -r --no-parent --reject "index.html*" http://hostname/ -P /home/user/dirs + +创建多个目录: + + mkdir -p /home/user/{test,test1,test2} + +列出带子进程的进程树: + + ps axwef + +创建war文件: + + jar -cvf name.war file + +测试磁盘写速度: + + dd if=/dev/zero of=/tmp/output.img bs=8k count=256k conv=fdatasync; rm -rf /tmp/output.img + +测试磁盘读速度: + + hdparm -Tt /dev/sda + +从文本中获取md5值: + + echo -n "text" | md5sum + +检测xml语法: + + xmllint --noout file.xml + +在新的目录中提取tar.gz文件: + + tar zxvf package.tar.gz -C new_dir + +用curl获取HTTP头: + + curl -I http://www.example.com + +修改一些文件或目录的时间戳 (YYMMDDhhmm): + + touch -t 0712250000 file + +使用wget从ftp下载: + + wget -m ftp://username:password@hostname + +生成随机密码 (本例中16位字符长): + + LANG=c < /dev/urandom tr -dc _A-Z-a-z-0-9 | head -c${1:-16};echo; + +快速创建一个文件的备份: + + cp some_file_name{,.bkp} + +访问Windows共享: + + smbclient -U "DOMAIN\user" //dc.domain.com/share/test/dir + +在历史中运行命令 (这里在第100行): + + !100 + +unzip到目录中: + + unzip package_name.zip -d dir_name + +多行文字 (按 CTRL + d 退出): + + cat > test.txt + +创建空白的文件或者已存在的文件: + + > test.txt + +从Ubuntu NTP服务器上更新日期: + + ntpdate ntp.ubuntu.com + +netstat 显示所有tcp4监听的端口: + + netstat -lnt4 | awk '{print $4}' | cut -f2 -d: | grep -o '[0-9]*' + +将qcow2图像转化成raw: + + qemu-img convert -f qcow2 -O raw precise-server-cloudimg-amd64-disk1.img \ + precise-server-cloudimg-amd64-disk1.raw + +重复运行命令,显示它的输出 (默认2s刷新): + + watch ps -ef + +显示所有用户: + + getent passwd + +以读写模式挂载root: + + mount -o remount,rw / + +挂在目录 (适合于符号链接不成功的情况下): + + mount --bind /source /destination + +发送动态更新给DNS: + + nsupdate < 1048576) print $7/1048576 "MB "$9 }' | sort -n -u | tail + +以MB显示空余内存: + + free -m | grep cache | awk '/[0-9]/{ print $4" MB" }' + +打开vim并跳转到文件最后: + + vim + some_file_name + +git clone特定branch (master): + + git clone git@github.com:name/app.git -b master + +git切换到另外一个branch (develop): + + git checkout develop + +git删除一个branch(myfeature): + + git branch -d myfeature + +Git删除一个远程branch: + + git push origin :branchName + +Git push 新的branch到远程: + + git push -u origin mynewfeature + +打印history中最后的cat命令 + + !cat:p + +运行history中的最后的cat命令: + + !cat + +找出在/home/user中的所有空子目录: + + find /home/user -maxdepth 1 -type d -empty + +得到test.txt中50到60行的文本: + + < test.txt sed -n '50,60p' + +运行最后的命令 (如果是: mkdir /root/test, 下面会运行: sudo mkdir /root/test): + + sudo !! + +创建临时RAM文件系统 - ramdisk (首先创建在 /tmpram 目录): + + mount -t tmpfs tmpfs /tmpram -o size=512m + +Grep完整单词: + + grep -w "name" test.txt + +需要特权模式在一个文件后追加文本: + + echo "some text" | sudo tee -a /path/file + +列出所有的kill信号: + + kill -l + +生成随机密码 (本例中16个字符长): + + openssl rand -base64 16 + +在bash历史中不记录最后的会话: + + kill -9 $$ + +扫描网络找出打开的端口: + + nmap -p 8081 172.20.0.0/16 + +设置git email: + + git config --global user.email "me@example.com" + +如果你有未提交的commit,与master同步: + + git pull --rebase origin master + +将文件中含有txt的所有文件移动到/home/user: + + find -iname "*txt*" -exec mv -v {} /home/user \; + +一行行合并文件: + + paste test.txt test1.txt + +shell中的进度条: + + pv data.log + +用netcat发送数据给服务器: + + echo "hosts.sampleHost 10 `date +%s`" | nc 192.168.200.2 3000 + +转换tab到空格: + + expand test.txt > test1.txt + +跳过bash历史: + + < >cmd + +回到先前的工作目录: + + cd - + +切割大的tar.gz文件 (每个 100MB) 并还原: + + split –b 100m /path/to/large/archive /path/to/output/files + cat files* > archive + +用curl获取HTTP状态值: + + curl -sL -w "%{http_code}\\n" www.example.com -o /dev/null + +当 Ctrl + c 没用时: + + Ctrl + \ + +获取文件所有者: + + stat -c %U file.txt + +列出块设备: + + lsblk -f + +找出末尾空格的文件: + + find . -type f -exec egrep -l " +$" "{}" \; + +找出用tab缩进的文件: + + find . -type f -exec egrep -l $'\t' "{}" \; + +用"="打印水平行 + + printf '%100s\n' | tr ' ' = + +**更新: 2013年11月25日** + +-------------------------------------------------------------------------------- + +via: http://www.techbar.me/linux-shell-tips/ + +译者:[geekpi](https://github.com/geekpi) 校对:[校对者ID](https://github.com/校对者ID) + +本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创翻译,[Linux中国](http://linux.cn/) 荣誉推出 \ No newline at end of file