Ecoer Logo

@german1608

25

USB - Ingeniería de la Computación. Adjunto de la Secretaría de IT del CEIC. Amante del desarrollo web, de las frías y de complicarme la vida.

steemit.com/@german1608
VOTING POWER100.00%
DOWNVOTE POWER100.00%
RESOURCE CREDITS100.00%
REPUTATION PROGRESS0.00%
Net Worth
0.079USD
STEEM
0.000STEEM
SBD
0.088SBD
Effective Power
5.007SP
├── Own SP
0.631SP
└── Incoming Deleg
+4.376SP

Detailed Balance

STEEM
balance
0.000STEEM
market_balance
0.000STEEM
savings_balance
0.000STEEM
reward_steem_balance
0.000STEEM
STEEM POWER
Own SP
0.631SP
Delegated Out
0.000SP
Delegation In
4.376SP
Effective Power
5.007SP
Reward SP (pending)
0.026SP
SBD
sbd_balance
0.000SBD
sbd_conversions
0.000SBD
sbd_market_balance
0.000SBD
savings_sbd_balance
0.000SBD
reward_sbd_balance
0.088SBD
{
  "balance": "0.000 STEEM",
  "savings_balance": "0.000 STEEM",
  "reward_steem_balance": "0.000 STEEM",
  "vesting_shares": "1026.340212 VESTS",
  "delegated_vesting_shares": "0.000000 VESTS",
  "received_vesting_shares": "7117.319594 VESTS",
  "sbd_balance": "0.000 SBD",
  "savings_sbd_balance": "0.000 SBD",
  "reward_sbd_balance": "0.088 SBD",
  "conversions": []
}

Account Info

namegerman1608
id465436
rank806,255
reputation415885342
created2017-11-27T23:57:39
recovery_accountsteem
proxyNone
post_count4
comment_count0
lifetime_vote_count0
witnesses_voted_for0
last_post2018-02-14T03:46:33
last_root_post2018-02-14T03:46:33
last_vote_time2018-02-22T05:47:06
proxied_vsf_votes0, 0, 0, 0
can_vote1
voting_power0
delayed_votes0
balance0.000 STEEM
savings_balance0.000 STEEM
sbd_balance0.000 SBD
savings_sbd_balance0.000 SBD
vesting_shares1026.340212 VESTS
delegated_vesting_shares0.000000 VESTS
received_vesting_shares7117.319594 VESTS
reward_vesting_balance53.178130 VESTS
vesting_balance0.000 STEEM
vesting_withdraw_rate0.000000 VESTS
next_vesting_withdrawal1969-12-31T23:59:59
withdrawn0
to_withdraw0
withdraw_routes0
savings_withdraw_requests0
last_account_recovery1970-01-01T00:00:00
reset_accountnull
last_owner_update1970-01-01T00:00:00
last_account_update2018-01-28T21:57:39
minedNo
sbd_seconds0
sbd_last_interest_payment1970-01-01T00:00:00
savings_sbd_last_interest_payment1970-01-01T00:00:00
{
  "active": {
    "account_auths": [],
    "key_auths": [
      [
        "STM7vm2aRJrjhPRLDxmPUJgtauW3am9XKrinpvJAy4cnMdberSDBC",
        1
      ]
    ],
    "weight_threshold": 1
  },
  "balance": "0.000 STEEM",
  "can_vote": true,
  "comment_count": 0,
  "created": "2017-11-27T23:57:39",
  "curation_rewards": 6,
  "delegated_vesting_shares": "0.000000 VESTS",
  "downvote_manabar": {
    "current_mana": 2035914951,
    "last_update_time": 1779064692
  },
  "guest_bloggers": [],
  "id": 465436,
  "json_metadata": "{\"profile\":{\"name\":\"German Robayo Paz\",\"location\":\"Caracas, Venezuela\",\"website\":\"https://german1608.github.io\",\"profile_image\":\"https://german1608.github.io/images/profile.jpg\",\"cover_image\":\"https://german1608.github.io/images/bg.png\",\"about\":\"USB - Ingeniería de la Computación. Adjunto de la Secretaría de IT del CEIC. Amante del desarrollo web, de las frías y de complicarme la vida.\"}}",
  "last_account_recovery": "1970-01-01T00:00:00",
  "last_account_update": "2018-01-28T21:57:39",
  "last_owner_update": "1970-01-01T00:00:00",
  "last_post": "2018-02-14T03:46:33",
  "last_root_post": "2018-02-14T03:46:33",
  "last_vote_time": "2018-02-22T05:47:06",
  "lifetime_vote_count": 0,
  "market_history": [],
  "memo_key": "STM5aYnAg5qi8bhuWUPwh2qjEKRLQQTwWRpoAtXZHic3tq6QDHmyR",
  "mined": false,
  "name": "german1608",
  "next_vesting_withdrawal": "1969-12-31T23:59:59",
  "other_history": [],
  "owner": {
    "account_auths": [],
    "key_auths": [
      [
        "STM7irhLxaxNUJGnfaAtj9uGFbpDd4cr3i1HYFSdkjcWkFXrzk4Bp",
        1
      ]
    ],
    "weight_threshold": 1
  },
  "pending_claimed_accounts": 0,
  "post_bandwidth": 0,
  "post_count": 4,
  "post_history": [],
  "posting": {
    "account_auths": [
      [
        "utopian.app",
        1
      ]
    ],
    "key_auths": [
      [
        "STM7FYEuAHJMUXpWnDdW47op7qp6hkbY7xAw2TfiqmygCUrLzdxek",
        1
      ]
    ],
    "weight_threshold": 1
  },
  "posting_json_metadata": "{\"profile\":{\"name\":\"German Robayo Paz\",\"location\":\"Caracas, Venezuela\",\"website\":\"https://german1608.github.io\",\"profile_image\":\"https://german1608.github.io/images/profile.jpg\",\"cover_image\":\"https://german1608.github.io/images/bg.png\",\"about\":\"USB - Ingeniería de la Computación. Adjunto de la Secretaría de IT del CEIC. Amante del desarrollo web, de las frías y de complicarme la vida.\"}}",
  "posting_rewards": 40,
  "proxied_vsf_votes": [
    0,
    0,
    0,
    0
  ],
  "proxy": "",
  "received_vesting_shares": "7117.319594 VESTS",
  "recovery_account": "steem",
  "reputation": 415885342,
  "reset_account": "null",
  "reward_sbd_balance": "0.088 SBD",
  "reward_steem_balance": "0.000 STEEM",
  "reward_vesting_balance": "53.178130 VESTS",
  "reward_vesting_steem": "0.026 STEEM",
  "savings_balance": "0.000 STEEM",
  "savings_sbd_balance": "0.000 SBD",
  "savings_sbd_last_interest_payment": "1970-01-01T00:00:00",
  "savings_sbd_seconds": "0",
  "savings_sbd_seconds_last_update": "1970-01-01T00:00:00",
  "savings_withdraw_requests": 0,
  "sbd_balance": "0.000 SBD",
  "sbd_last_interest_payment": "1970-01-01T00:00:00",
  "sbd_seconds": "0",
  "sbd_seconds_last_update": "1970-01-01T00:00:00",
  "tags_usage": [],
  "to_withdraw": 0,
  "transfer_history": [],
  "vesting_balance": "0.000 STEEM",
  "vesting_shares": "1026.340212 VESTS",
  "vesting_withdraw_rate": "0.000000 VESTS",
  "vote_history": [],
  "voting_manabar": {
    "current_mana": "8143659806",
    "last_update_time": 1779064692
  },
  "voting_power": 0,
  "withdraw_routes": 0,
  "withdrawn": 0,
  "witness_votes": [],
  "witnesses_voted_for": 0,
  "rank": 806255
}

Withdraw Routes

IncomingOutgoing
Empty
Empty
{
  "incoming": [],
  "outgoing": []
}
From Date
To Date
steemdelegated 4.376 SP to @german1608
2026/05/18 00:38:12
delegateegerman1608
delegatorsteem
vesting shares7117.319594 VESTS
Transaction InfoBlock #106143907/Trx e4edbc394917f757e4adbe73014d1d1d0493d8ed
View Raw JSON Data
{
  "block": 106143907,
  "op": [
    "delegate_vesting_shares",
    {
      "delegatee": "german1608",
      "delegator": "steem",
      "vesting_shares": "7117.319594 VESTS"
    }
  ],
  "op_in_trx": 0,
  "timestamp": "2026-05-18T00:38:12",
  "trx_id": "e4edbc394917f757e4adbe73014d1d1d0493d8ed",
  "trx_in_block": 2,
  "virtual_op": 0
}
steemdelegated 2.709 SP to @german1608
2026/05/12 05:24:33
delegateegerman1608
delegatorsteem
vesting shares4405.109189 VESTS
Transaction InfoBlock #105977590/Trx 2d7b3b5b09fff0835a74756b2ab0934ef0915664
View Raw JSON Data
{
  "block": 105977590,
  "op": [
    "delegate_vesting_shares",
    {
      "delegatee": "german1608",
      "delegator": "steem",
      "vesting_shares": "4405.109189 VESTS"
    }
  ],
  "op_in_trx": 0,
  "timestamp": "2026-05-12T05:24:33",
  "trx_id": "2d7b3b5b09fff0835a74756b2ab0934ef0915664",
  "trx_in_block": 1,
  "virtual_op": 0
}
steemdelegated 4.384 SP to @german1608
2026/04/25 23:58:30
delegateegerman1608
delegatorsteem
vesting shares7129.835350 VESTS
Transaction InfoBlock #105511548/Trx 51709c74fb26652651672a6b6113ecabc49ab113
View Raw JSON Data
{
  "block": 105511548,
  "op": [
    "delegate_vesting_shares",
    {
      "delegatee": "german1608",
      "delegator": "steem",
      "vesting_shares": "7129.835350 VESTS"
    }
  ],
  "op_in_trx": 0,
  "timestamp": "2026-04-25T23:58:30",
  "trx_id": "51709c74fb26652651672a6b6113ecabc49ab113",
  "trx_in_block": 0,
  "virtual_op": 0
}
steemdelegated 2.734 SP to @german1608
2026/01/23 08:49:48
delegateegerman1608
delegatorsteem
vesting shares4446.656008 VESTS
Transaction InfoBlock #102853042/Trx b5abf5c74e83c198f98ef21aab64d97fbb96a134
View Raw JSON Data
{
  "block": 102853042,
  "op": [
    "delegate_vesting_shares",
    {
      "delegatee": "german1608",
      "delegator": "steem",
      "vesting_shares": "4446.656008 VESTS"
    }
  ],
  "op_in_trx": 0,
  "timestamp": "2026-01-23T08:49:48",
  "trx_id": "b5abf5c74e83c198f98ef21aab64d97fbb96a134",
  "trx_in_block": 5,
  "virtual_op": 0
}
steemdelegated 2.835 SP to @german1608
2024/12/17 04:08:21
delegateegerman1608
delegatorsteem
vesting shares4610.875205 VESTS
Transaction InfoBlock #91299437/Trx 33b5c4839d00f988a3d0c1cfbfdb2b473b73959d
View Raw JSON Data
{
  "block": 91299437,
  "op": [
    "delegate_vesting_shares",
    {
      "delegatee": "german1608",
      "delegator": "steem",
      "vesting_shares": "4610.875205 VESTS"
    }
  ],
  "op_in_trx": 0,
  "timestamp": "2024-12-17T04:08:21",
  "trx_id": "33b5c4839d00f988a3d0c1cfbfdb2b473b73959d",
  "trx_in_block": 0,
  "virtual_op": 0
}
steemdelegated 2.939 SP to @german1608
2023/11/13 19:51:24
delegateegerman1608
delegatorsteem
vesting shares4780.008737 VESTS
Transaction InfoBlock #79853641/Trx 691e898dfa77e8e003d8f3edb9006f4ecc44fd97
View Raw JSON Data
{
  "block": 79853641,
  "op": [
    "delegate_vesting_shares",
    {
      "delegatee": "german1608",
      "delegator": "steem",
      "vesting_shares": "4780.008737 VESTS"
    }
  ],
  "op_in_trx": 0,
  "timestamp": "2023-11-13T19:51:24",
  "trx_id": "691e898dfa77e8e003d8f3edb9006f4ecc44fd97",
  "trx_in_block": 2,
  "virtual_op": 0
}
steemdelegated 4.745 SP to @german1608
2023/09/21 22:16:45
delegateegerman1608
delegatorsteem
vesting shares7717.287523 VESTS
Transaction InfoBlock #78348365/Trx 0399daacaf6fbdc7168b4fce6b0b591309da29d7
View Raw JSON Data
{
  "block": 78348365,
  "op": [
    "delegate_vesting_shares",
    {
      "delegatee": "german1608",
      "delegator": "steem",
      "vesting_shares": "7717.287523 VESTS"
    }
  ],
  "op_in_trx": 0,
  "timestamp": "2023-09-21T22:16:45",
  "trx_id": "0399daacaf6fbdc7168b4fce6b0b591309da29d7",
  "trx_in_block": 5,
  "virtual_op": 0
}
steemdelegated 4.881 SP to @german1608
2022/11/03 12:00:57
delegateegerman1608
delegatorsteem
vesting shares7938.968961 VESTS
Transaction InfoBlock #69113635/Trx c66a33e99a888510b4e4816966adfa1db2fef2ba
View Raw JSON Data
{
  "block": 69113635,
  "op": [
    "delegate_vesting_shares",
    {
      "delegatee": "german1608",
      "delegator": "steem",
      "vesting_shares": "7938.968961 VESTS"
    }
  ],
  "op_in_trx": 0,
  "timestamp": "2022-11-03T12:00:57",
  "trx_id": "c66a33e99a888510b4e4816966adfa1db2fef2ba",
  "trx_in_block": 2,
  "virtual_op": 0
}
steemdelegated 5.017 SP to @german1608
2022/01/17 11:15:30
delegateegerman1608
delegatorsteem
vesting shares8159.502192 VESTS
Transaction InfoBlock #60809774/Trx ba10f7e583462f89d68a870e9f2e9a3aa73450dc
View Raw JSON Data
{
  "block": 60809774,
  "op": [
    "delegate_vesting_shares",
    {
      "delegatee": "german1608",
      "delegator": "steem",
      "vesting_shares": "8159.502192 VESTS"
    }
  ],
  "op_in_trx": 0,
  "timestamp": "2022-01-17T11:15:30",
  "trx_id": "ba10f7e583462f89d68a870e9f2e9a3aa73450dc",
  "trx_in_block": 31,
  "virtual_op": 0
}
steemdelegated 5.130 SP to @german1608
2021/06/14 01:09:57
delegateegerman1608
delegatorsteem
vesting shares8343.270850 VESTS
Transaction InfoBlock #54608144/Trx a3600e26f2f8b2595ebd08549146cabbbffcf46b
View Raw JSON Data
{
  "block": 54608144,
  "op": [
    "delegate_vesting_shares",
    {
      "delegatee": "german1608",
      "delegator": "steem",
      "vesting_shares": "8343.270850 VESTS"
    }
  ],
  "op_in_trx": 0,
  "timestamp": "2021-06-14T01:09:57",
  "trx_id": "a3600e26f2f8b2595ebd08549146cabbbffcf46b",
  "trx_in_block": 3,
  "virtual_op": 0
}
steemdelegated 5.245 SP to @german1608
2020/12/11 11:28:09
delegateegerman1608
delegatorsteem
vesting shares8530.692824 VESTS
Transaction InfoBlock #49355587/Trx a3580e4a0386903a6b1efd05ca85c45d93717777
View Raw JSON Data
{
  "block": 49355587,
  "op": [
    "delegate_vesting_shares",
    {
      "delegatee": "german1608",
      "delegator": "steem",
      "vesting_shares": "8530.692824 VESTS"
    }
  ],
  "op_in_trx": 0,
  "timestamp": "2020-12-11T11:28:09",
  "trx_id": "a3580e4a0386903a6b1efd05ca85c45d93717777",
  "trx_in_block": 1,
  "virtual_op": 0
}
steemdelegated 1.176 SP to @german1608
2020/12/06 05:05:15
delegateegerman1608
delegatorsteem
vesting shares1912.543513 VESTS
Transaction InfoBlock #49207146/Trx ba99649cb4900840f381a30b93c7bd9897f92192
View Raw JSON Data
{
  "block": 49207146,
  "op": [
    "delegate_vesting_shares",
    {
      "delegatee": "german1608",
      "delegator": "steem",
      "vesting_shares": "1912.543513 VESTS"
    }
  ],
  "op_in_trx": 0,
  "timestamp": "2020-12-06T05:05:15",
  "trx_id": "ba99649cb4900840f381a30b93c7bd9897f92192",
  "trx_in_block": 5,
  "virtual_op": 0
}
steemdelegated 5.249 SP to @german1608
2020/12/05 15:06:15
delegateegerman1608
delegatorsteem
vesting shares8536.900678 VESTS
Transaction InfoBlock #49190680/Trx dd94bd6293079fae3ddd422299474be9fd89e42c
View Raw JSON Data
{
  "block": 49190680,
  "op": [
    "delegate_vesting_shares",
    {
      "delegatee": "german1608",
      "delegator": "steem",
      "vesting_shares": "8536.900678 VESTS"
    }
  ],
  "op_in_trx": 0,
  "timestamp": "2020-12-05T15:06:15",
  "trx_id": "dd94bd6293079fae3ddd422299474be9fd89e42c",
  "trx_in_block": 1,
  "virtual_op": 0
}
steemdelegated 1.181 SP to @german1608
2020/11/02 16:21:45
delegateegerman1608
delegatorsteem
vesting shares1920.017158 VESTS
Transaction InfoBlock #48258654/Trx 0800ae06302abd11c5733ea9fe42396076bd79f4
View Raw JSON Data
{
  "block": 48258654,
  "op": [
    "delegate_vesting_shares",
    {
      "delegatee": "german1608",
      "delegator": "steem",
      "vesting_shares": "1920.017158 VESTS"
    }
  ],
  "op_in_trx": 0,
  "timestamp": "2020-11-02T16:21:45",
  "trx_id": "0800ae06302abd11c5733ea9fe42396076bd79f4",
  "trx_in_block": 1,
  "virtual_op": 0
}
steemdelegated 5.374 SP to @german1608
2020/05/09 06:03:00
delegateegerman1608
delegatorsteem
vesting shares8739.706037 VESTS
Transaction InfoBlock #43217400/Trx 88e1c349528bd3d1df8af0d2e88d1e381314e81f
View Raw JSON Data
{
  "block": 43217400,
  "op": [
    "delegate_vesting_shares",
    {
      "delegatee": "german1608",
      "delegator": "steem",
      "vesting_shares": "8739.706037 VESTS"
    }
  ],
  "op_in_trx": 0,
  "timestamp": "2020-05-09T06:03:00",
  "trx_id": "88e1c349528bd3d1df8af0d2e88d1e381314e81f",
  "trx_in_block": 6,
  "virtual_op": 0
}
steemdelegated 1.201 SP to @german1608
2020/05/08 09:42:30
delegateegerman1608
delegatorsteem
vesting shares1953.311140 VESTS
Transaction InfoBlock #43193562/Trx 0384975b4c5346a82d6dc5bc25984211bb2b0a4f
View Raw JSON Data
{
  "block": 43193562,
  "op": [
    "delegate_vesting_shares",
    {
      "delegatee": "german1608",
      "delegator": "steem",
      "vesting_shares": "1953.311140 VESTS"
    }
  ],
  "op_in_trx": 0,
  "timestamp": "2020-05-08T09:42:30",
  "trx_id": "0384975b4c5346a82d6dc5bc25984211bb2b0a4f",
  "trx_in_block": 2,
  "virtual_op": 0
}
steemdelegated 5.380 SP to @german1608
2020/04/22 17:30:27
delegateegerman1608
delegatorsteem
vesting shares8748.966766 VESTS
Transaction InfoBlock #42753477/Trx 2be10707f3ff2b2cf4e4776f70c3b4bbb2acc5be
View Raw JSON Data
{
  "block": 42753477,
  "op": [
    "delegate_vesting_shares",
    {
      "delegatee": "german1608",
      "delegator": "steem",
      "vesting_shares": "8748.966766 VESTS"
    }
  ],
  "op_in_trx": 0,
  "timestamp": "2020-04-22T17:30:27",
  "trx_id": "2be10707f3ff2b2cf4e4776f70c3b4bbb2acc5be",
  "trx_in_block": 1,
  "virtual_op": 0
}
2019/11/28 00:17:12
authorsteemitboard
bodyCongratulations @german1608! You received a personal award! <table><tr><td>https://steemitimages.com/70x70/http://steemitboard.com/@german1608/birthday2.png</td><td>Happy Birthday! - You are on the Steem blockchain for 2 years!</td></tr></table> <sub>_You can view [your badges on your Steem Board](https://steemitboard.com/@german1608) and compare to others on the [Steem Ranking](https://steemitboard.com/ranking/index.php?name=german1608)_</sub> ###### [Vote for @Steemitboard as a witness](https://v2.steemconnect.com/sign/account-witness-vote?witness=steemitboard&approve=1) to get one more award and increased upvotes!
json metadata{"image":["https://steemitboard.com/img/notify.png"]}
parent authorgerman1608
parent permlinktutorial-de-la-terminal-de-linux-parte-ii
permlinksteemitboard-notify-german1608-20191128t001712000z
title
Transaction InfoBlock #38555258/Trx d680bf4a8614bde39389c676e59677f724753a45
View Raw JSON Data
{
  "block": 38555258,
  "op": [
    "comment",
    {
      "author": "steemitboard",
      "body": "Congratulations @german1608! You received a personal award!\n\n<table><tr><td>https://steemitimages.com/70x70/http://steemitboard.com/@german1608/birthday2.png</td><td>Happy Birthday! - You are on the Steem blockchain for 2 years!</td></tr></table>\n\n<sub>_You can view [your badges on your Steem Board](https://steemitboard.com/@german1608) and compare to others on the [Steem Ranking](https://steemitboard.com/ranking/index.php?name=german1608)_</sub>\n\n\n###### [Vote for @Steemitboard as a witness](https://v2.steemconnect.com/sign/account-witness-vote?witness=steemitboard&approve=1) to get one more award and increased upvotes!",
      "json_metadata": "{\"image\":[\"https://steemitboard.com/img/notify.png\"]}",
      "parent_author": "german1608",
      "parent_permlink": "tutorial-de-la-terminal-de-linux-parte-ii",
      "permlink": "steemitboard-notify-german1608-20191128t001712000z",
      "title": ""
    }
  ],
  "op_in_trx": 0,
  "timestamp": "2019-11-28T00:17:12",
  "trx_id": "d680bf4a8614bde39389c676e59677f724753a45",
  "trx_in_block": 9,
  "virtual_op": 0
}
steemdelegated 5.500 SP to @german1608
2019/05/19 01:34:30
delegateegerman1608
delegatorsteem
vesting shares8944.488728 VESTS
Transaction InfoBlock #33030973/Trx 915318312f042317db9c561114904c1857c30191
View Raw JSON Data
{
  "block": 33030973,
  "op": [
    "delegate_vesting_shares",
    {
      "delegatee": "german1608",
      "delegator": "steem",
      "vesting_shares": "8944.488728 VESTS"
    }
  ],
  "op_in_trx": 0,
  "timestamp": "2019-05-19T01:34:30",
  "trx_id": "915318312f042317db9c561114904c1857c30191",
  "trx_in_block": 2,
  "virtual_op": 0
}
2018/11/28 01:57:24
authorsteemitboard
bodyCongratulations @german1608! You received a personal award! <table><tr><td>https://steemitimages.com/70x70/http://steemitboard.com/@german1608/birthday1.png</td><td>1 Year on Steemit</td></tr></table> <sub>_[Click here to view your Board of Honor](https://steemitboard.com/@german1608)_</sub> > Support [SteemitBoard's project](https://steemit.com/@steemitboard)! **[Vote for its witness](https://v2.steemconnect.com/sign/account-witness-vote?witness=steemitboard&approve=1)** and **get one more award**!
json metadata{"image":["https://steemitboard.com/img/notify.png"]}
parent authorgerman1608
parent permlinktutorial-de-la-terminal-de-linux-parte-ii
permlinksteemitboard-notify-german1608-20181128t015724000z
title
Transaction InfoBlock #28082872/Trx dc61b73a42332cb59dc31b2dc6db6e21f863353c
View Raw JSON Data
{
  "block": 28082872,
  "op": [
    "comment",
    {
      "author": "steemitboard",
      "body": "Congratulations @german1608! You received a personal award!\n\n<table><tr><td>https://steemitimages.com/70x70/http://steemitboard.com/@german1608/birthday1.png</td><td>1 Year on Steemit</td></tr></table>\n\n<sub>_[Click here to view your Board of Honor](https://steemitboard.com/@german1608)_</sub>\n\n\n> Support [SteemitBoard's project](https://steemit.com/@steemitboard)! **[Vote for its witness](https://v2.steemconnect.com/sign/account-witness-vote?witness=steemitboard&approve=1)** and **get one more award**!",
      "json_metadata": "{\"image\":[\"https://steemitboard.com/img/notify.png\"]}",
      "parent_author": "german1608",
      "parent_permlink": "tutorial-de-la-terminal-de-linux-parte-ii",
      "permlink": "steemitboard-notify-german1608-20181128t015724000z",
      "title": ""
    }
  ],
  "op_in_trx": 0,
  "timestamp": "2018-11-28T01:57:24",
  "trx_id": "dc61b73a42332cb59dc31b2dc6db6e21f863353c",
  "trx_in_block": 6,
  "virtual_op": 0
}
steemdelegated 5.622 SP to @german1608
2018/05/24 06:50:57
delegateegerman1608
delegatorsteem
vesting shares9143.917288 VESTS
Transaction InfoBlock #22704072/Trx c3f2ce04984fa5a4497235de61e31503399c9e82
View Raw JSON Data
{
  "block": 22704072,
  "op": [
    "delegate_vesting_shares",
    {
      "delegatee": "german1608",
      "delegator": "steem",
      "vesting_shares": "9143.917288 VESTS"
    }
  ],
  "op_in_trx": 0,
  "timestamp": "2018-05-24T06:50:57",
  "trx_id": "c3f2ce04984fa5a4497235de61e31503399c9e82",
  "trx_in_block": 51,
  "virtual_op": 0
}
steemdelegated 18.161 SP to @german1608
2018/04/21 20:43:27
delegateegerman1608
delegatorsteem
vesting shares29535.827736 VESTS
Transaction InfoBlock #21771157/Trx 2912bf2d6d493d82918b0a32dfeff5f9bd0abc29
View Raw JSON Data
{
  "block": 21771157,
  "op": [
    "delegate_vesting_shares",
    {
      "delegatee": "german1608",
      "delegator": "steem",
      "vesting_shares": "29535.827736 VESTS"
    }
  ],
  "op_in_trx": 0,
  "timestamp": "2018-04-21T20:43:27",
  "trx_id": "2912bf2d6d493d82918b0a32dfeff5f9bd0abc29",
  "trx_in_block": 10,
  "virtual_op": 0
}
2018/02/26 01:17:18
comment authorjfuenmayor96
comment permlinkshow-a-loading-animation-while-your-elements-are-loading-in-react
curatorgerman1608
reward2.043369 VESTS
Transaction InfoBlock #20194351/Virtual Operation #15
View Raw JSON Data
{
  "block": 20194351,
  "op": [
    "curation_reward",
    {
      "comment_author": "jfuenmayor96",
      "comment_permlink": "show-a-loading-animation-while-your-elements-are-loading-in-react",
      "curator": "german1608",
      "reward": "2.043369 VESTS"
    }
  ],
  "op_in_trx": 0,
  "timestamp": "2018-02-26T01:17:18",
  "trx_id": "0000000000000000000000000000000000000000",
  "trx_in_block": 4294967295,
  "virtual_op": 15
}
german1608custom json: follow
2018/02/22 05:48:15
idfollow
json["reblog",{"account":"german1608","author":"rominnav25","permlink":"la-sensibilidad-en-enfermeria"}]
required auths[]
required posting auths["german1608"]
Transaction InfoBlock #20084594/Trx a57175602ea137fe1815bba3e78d577a2a90046b
View Raw JSON Data
{
  "block": 20084594,
  "op": [
    "custom_json",
    {
      "id": "follow",
      "json": "[\"reblog\",{\"account\":\"german1608\",\"author\":\"rominnav25\",\"permlink\":\"la-sensibilidad-en-enfermeria\"}]",
      "required_auths": [],
      "required_posting_auths": [
        "german1608"
      ]
    }
  ],
  "op_in_trx": 0,
  "timestamp": "2018-02-22T05:48:15",
  "trx_id": "a57175602ea137fe1815bba3e78d577a2a90046b",
  "trx_in_block": 27,
  "virtual_op": 0
}
2018/02/22 05:47:06
authorrominnav25
permlinkla-sensibilidad-en-enfermeria
votergerman1608
weight10000 (100.00%)
Transaction InfoBlock #20084571/Trx 61ad3f2b646de85e6743129a2a9b674ad10d5750
View Raw JSON Data
{
  "block": 20084571,
  "op": [
    "vote",
    {
      "author": "rominnav25",
      "permlink": "la-sensibilidad-en-enfermeria",
      "voter": "german1608",
      "weight": 10000
    }
  ],
  "op_in_trx": 0,
  "timestamp": "2018-02-22T05:47:06",
  "trx_id": "61ad3f2b646de85e6743129a2a9b674ad10d5750",
  "trx_in_block": 31,
  "virtual_op": 0
}
german1608received 0.049 SBD, 0.015 SP author reward for @german1608 / tutorial-de-la-terminal-de-linux-parte-ii
2018/02/21 03:46:33
authorgerman1608
permlinktutorial-de-la-terminal-de-linux-parte-ii
sbd payout0.049 SBD
steem payout0.000 STEEM
vesting payout24.526773 VESTS
Transaction InfoBlock #20053366/Virtual Operation #13
View Raw JSON Data
{
  "block": 20053366,
  "op": [
    "author_reward",
    {
      "author": "german1608",
      "permlink": "tutorial-de-la-terminal-de-linux-parte-ii",
      "sbd_payout": "0.049 SBD",
      "steem_payout": "0.000 STEEM",
      "vesting_payout": "24.526773 VESTS"
    }
  ],
  "op_in_trx": 0,
  "timestamp": "2018-02-21T03:46:33",
  "trx_id": "0000000000000000000000000000000000000000",
  "trx_in_block": 4294967295,
  "virtual_op": 13
}
2018/02/20 23:33:33
authorrominnav25
permlinkhey-steemit-i-m-rominna-eng
votergerman1608
weight10000 (100.00%)
Transaction InfoBlock #20048308/Trx d549f4260d1a8591475d8ff0d4ace66607f7c1b0
View Raw JSON Data
{
  "block": 20048308,
  "op": [
    "vote",
    {
      "author": "rominnav25",
      "permlink": "hey-steemit-i-m-rominna-eng",
      "voter": "german1608",
      "weight": 10000
    }
  ],
  "op_in_trx": 0,
  "timestamp": "2018-02-20T23:33:33",
  "trx_id": "d549f4260d1a8591475d8ff0d4ace66607f7c1b0",
  "trx_in_block": 23,
  "virtual_op": 0
}
2018/02/19 21:47:09
authorgerman1608
permlinktutorial-de-la-terminal-de-linux-parte-ii
voterjfuenmayor96
weight10000 (100.00%)
Transaction InfoBlock #20017386/Trx 4fa043ef462e926c274d651464e50bd1eb0a8fa3
View Raw JSON Data
{
  "block": 20017386,
  "op": [
    "vote",
    {
      "author": "german1608",
      "permlink": "tutorial-de-la-terminal-de-linux-parte-ii",
      "voter": "jfuenmayor96",
      "weight": 10000
    }
  ],
  "op_in_trx": 0,
  "timestamp": "2018-02-19T21:47:09",
  "trx_id": "4fa043ef462e926c274d651464e50bd1eb0a8fa3",
  "trx_in_block": 29,
  "virtual_op": 0
}
2018/02/19 14:58:21
authorjfuenmayor96
permlinkshow-a-loading-animation-while-your-elements-are-loading-in-react
votergerman1608
weight10000 (100.00%)
Transaction InfoBlock #20009229/Trx 948636cf4c4e50c1717c7d5297095d1af319566e
View Raw JSON Data
{
  "block": 20009229,
  "op": [
    "vote",
    {
      "author": "jfuenmayor96",
      "permlink": "show-a-loading-animation-while-your-elements-are-loading-in-react",
      "voter": "german1608",
      "weight": 10000
    }
  ],
  "op_in_trx": 0,
  "timestamp": "2018-02-19T14:58:21",
  "trx_id": "948636cf4c4e50c1717c7d5297095d1af319566e",
  "trx_in_block": 34,
  "virtual_op": 0
}
2018/02/19 01:28:51
authorgerman1608
permlinktutorial-de-la-terminal-de-linux-parte-ii
voterkobernyk
weight10000 (100.00%)
Transaction InfoBlock #19993040/Trx 6c0b0a8a2cc14e15a41ae90a771574a6b0d02de0
View Raw JSON Data
{
  "block": 19993040,
  "op": [
    "vote",
    {
      "author": "german1608",
      "permlink": "tutorial-de-la-terminal-de-linux-parte-ii",
      "voter": "kobernyk",
      "weight": 10000
    }
  ],
  "op_in_trx": 0,
  "timestamp": "2018-02-19T01:28:51",
  "trx_id": "6c0b0a8a2cc14e15a41ae90a771574a6b0d02de0",
  "trx_in_block": 26,
  "virtual_op": 0
}
2018/02/16 19:30:39
authorjamez42
permlinkaethia-ganar-ethereum-jugando
votergerman1608
weight10000 (100.00%)
Transaction InfoBlock #19928296/Trx ba19dfb9463d0282889737e4181345411abaca6d
View Raw JSON Data
{
  "block": 19928296,
  "op": [
    "vote",
    {
      "author": "jamez42",
      "permlink": "aethia-ganar-ethereum-jugando",
      "voter": "german1608",
      "weight": 10000
    }
  ],
  "op_in_trx": 0,
  "timestamp": "2018-02-16T19:30:39",
  "trx_id": "ba19dfb9463d0282889737e4181345411abaca6d",
  "trx_in_block": 21,
  "virtual_op": 0
}
2018/02/16 19:30:36
authoryuniquintero
permlinktranslation-spanish-ancap-ch-1262-translated-words-part-7
votergerman1608
weight10000 (100.00%)
Transaction InfoBlock #19928295/Trx fcd3f5104c1d6333b76eea6442f31f641ad0ed88
View Raw JSON Data
{
  "block": 19928295,
  "op": [
    "vote",
    {
      "author": "yuniquintero",
      "permlink": "translation-spanish-ancap-ch-1262-translated-words-part-7",
      "voter": "german1608",
      "weight": 10000
    }
  ],
  "op_in_trx": 0,
  "timestamp": "2018-02-16T19:30:36",
  "trx_id": "fcd3f5104c1d6333b76eea6442f31f641ad0ed88",
  "trx_in_block": 77,
  "virtual_op": 0
}
2018/02/16 19:20:03
authorgerman1608
permlinktutorial-de-la-terminal-de-linux-parte-ii
voterjaquefarrach
weight10000 (100.00%)
Transaction InfoBlock #19928084/Trx f987ca96c857e54845b983bee1527638bc23f879
View Raw JSON Data
{
  "block": 19928084,
  "op": [
    "vote",
    {
      "author": "german1608",
      "permlink": "tutorial-de-la-terminal-de-linux-parte-ii",
      "voter": "jaquefarrach",
      "weight": 10000
    }
  ],
  "op_in_trx": 0,
  "timestamp": "2018-02-16T19:20:03",
  "trx_id": "f987ca96c857e54845b983bee1527638bc23f879",
  "trx_in_block": 4,
  "virtual_op": 0
}
2018/02/16 17:47:51
authorgerman1608
permlinktutorial-de-la-terminal-de-linux-parte-ii
votergustavoaca1997
weight10000 (100.00%)
Transaction InfoBlock #19926241/Trx cf68b0958867f62666c6436a1023c46cc665b0c5
View Raw JSON Data
{
  "block": 19926241,
  "op": [
    "vote",
    {
      "author": "german1608",
      "permlink": "tutorial-de-la-terminal-de-linux-parte-ii",
      "voter": "gustavoaca1997",
      "weight": 10000
    }
  ],
  "op_in_trx": 0,
  "timestamp": "2018-02-16T17:47:51",
  "trx_id": "cf68b0958867f62666c6436a1023c46cc665b0c5",
  "trx_in_block": 23,
  "virtual_op": 0
}
2018/02/15 17:32:27
authorgerman1608
permlinktutorial-de-la-terminal-de-linux-parte-ii
voteryuniquintero
weight10000 (100.00%)
Transaction InfoBlock #19897160/Trx 73677a79d3050b367f99ec57cf947a4efcfbc4c3
View Raw JSON Data
{
  "block": 19897160,
  "op": [
    "vote",
    {
      "author": "german1608",
      "permlink": "tutorial-de-la-terminal-de-linux-parte-ii",
      "voter": "yuniquintero",
      "weight": 10000
    }
  ],
  "op_in_trx": 0,
  "timestamp": "2018-02-15T17:32:27",
  "trx_id": "73677a79d3050b367f99ec57cf947a4efcfbc4c3",
  "trx_in_block": 20,
  "virtual_op": 0
}
2018/02/14 23:02:24
authorgerman1608
permlinktutorial-de-la-terminal-de-linux-parte-ii
voterjavtrv
weight10000 (100.00%)
Transaction InfoBlock #19874972/Trx c8bb00ed1fe6b302090a67395acdd013715243f2
View Raw JSON Data
{
  "block": 19874972,
  "op": [
    "vote",
    {
      "author": "german1608",
      "permlink": "tutorial-de-la-terminal-de-linux-parte-ii",
      "voter": "javtrv",
      "weight": 10000
    }
  ],
  "op_in_trx": 0,
  "timestamp": "2018-02-14T23:02:24",
  "trx_id": "c8bb00ed1fe6b302090a67395acdd013715243f2",
  "trx_in_block": 52,
  "virtual_op": 0
}
2018/02/14 15:29:06
authorgerman1608
permlinktutorial-de-la-terminal-de-linux-parte-ii
voterrominnav25
weight10000 (100.00%)
Transaction InfoBlock #19865922/Trx 4be0f73cac83aaee3ac5750814b055549cfb0b9e
View Raw JSON Data
{
  "block": 19865922,
  "op": [
    "vote",
    {
      "author": "german1608",
      "permlink": "tutorial-de-la-terminal-de-linux-parte-ii",
      "voter": "rominnav25",
      "weight": 10000
    }
  ],
  "op_in_trx": 0,
  "timestamp": "2018-02-14T15:29:06",
  "trx_id": "4be0f73cac83aaee3ac5750814b055549cfb0b9e",
  "trx_in_block": 7,
  "virtual_op": 0
}
german1608custom json: follow
2018/02/14 11:28:39
idfollow
json["reblog",{"account":"german1608","author":"kobernyk","permlink":"hola-steemit-soy-valerie-y-este-es-mi-introduceyourself"}]
required auths[]
required posting auths["german1608"]
Transaction InfoBlock #19861119/Trx 14b28000678e3bed822ae967f88274d61944951f
View Raw JSON Data
{
  "block": 19861119,
  "op": [
    "custom_json",
    {
      "id": "follow",
      "json": "[\"reblog\",{\"account\":\"german1608\",\"author\":\"kobernyk\",\"permlink\":\"hola-steemit-soy-valerie-y-este-es-mi-introduceyourself\"}]",
      "required_auths": [],
      "required_posting_auths": [
        "german1608"
      ]
    }
  ],
  "op_in_trx": 0,
  "timestamp": "2018-02-14T11:28:39",
  "trx_id": "14b28000678e3bed822ae967f88274d61944951f",
  "trx_in_block": 43,
  "virtual_op": 0
}
german1608custom json: follow
2018/02/14 11:28:33
idfollow
json["reblog",{"account":"german1608","author":"rominnav25","permlink":"hola-steemit-mi-nombre-es-rominna"}]
required auths[]
required posting auths["german1608"]
Transaction InfoBlock #19861117/Trx 4f902d0362d693cd6f8079c7148b29425c66706b
View Raw JSON Data
{
  "block": 19861117,
  "op": [
    "custom_json",
    {
      "id": "follow",
      "json": "[\"reblog\",{\"account\":\"german1608\",\"author\":\"rominnav25\",\"permlink\":\"hola-steemit-mi-nombre-es-rominna\"}]",
      "required_auths": [],
      "required_posting_auths": [
        "german1608"
      ]
    }
  ],
  "op_in_trx": 0,
  "timestamp": "2018-02-14T11:28:33",
  "trx_id": "4f902d0362d693cd6f8079c7148b29425c66706b",
  "trx_in_block": 37,
  "virtual_op": 0
}
2018/02/14 04:26:00
authorgerman1608
permlinktutorial-de-la-terminal-de-linux-parte-ii
voterhenryn2020
weight10000 (100.00%)
Transaction InfoBlock #19852681/Trx 020e89da9654eb787b8b625e9bd918439d8a2a2d
View Raw JSON Data
{
  "block": 19852681,
  "op": [
    "vote",
    {
      "author": "german1608",
      "permlink": "tutorial-de-la-terminal-de-linux-parte-ii",
      "voter": "henryn2020",
      "weight": 10000
    }
  ],
  "op_in_trx": 0,
  "timestamp": "2018-02-14T04:26:00",
  "trx_id": "020e89da9654eb787b8b625e9bd918439d8a2a2d",
  "trx_in_block": 27,
  "virtual_op": 0
}
2018/02/14 04:12:42
authorgustavoaca1997
permlinktutorial-de-la-terminal-de-linux
votergerman1608
weight10000 (100.00%)
Transaction InfoBlock #19852416/Trx 26c3390206c1232bb32e0f64defa4ae5e164263d
View Raw JSON Data
{
  "block": 19852416,
  "op": [
    "vote",
    {
      "author": "gustavoaca1997",
      "permlink": "tutorial-de-la-terminal-de-linux",
      "voter": "german1608",
      "weight": 10000
    }
  ],
  "op_in_trx": 0,
  "timestamp": "2018-02-14T04:12:42",
  "trx_id": "26c3390206c1232bb32e0f64defa4ae5e164263d",
  "trx_in_block": 23,
  "virtual_op": 0
}
2018/02/14 03:50:30
authorgerman1608
body@@ -286,16 +286,106 @@ %C3%ADvar._%0A%0A +!%5B%5D(https://steemitimages.com/DQmenTDoGndXfvDLHDD17tdvDN1GLigTpoJJvCEXnjnRAgi/image.png)%0A%0A ## Resum
json metadata{"tags":["spanish","cervantes","tecnologia","linux","tutoriales"],"users":["gustavoaca1997"],"links":["https://steemit.com/spanish/@gustavoaca1997/tutorial-de-la-terminal-de-linux"],"app":"steemit/0.1","format":"markdown","image":["https://steemitimages.com/DQmenTDoGndXfvDLHDD17tdvDN1GLigTpoJJvCEXnjnRAgi/image.png"]}
parent author
parent permlinkspanish
permlinktutorial-de-la-terminal-de-linux-parte-ii
titleTutorial de la Terminal de Linux (Parte II)
Transaction InfoBlock #19851972/Trx 2a7c7a6cbdd4879782064baac2537a61b843f9e2
View Raw JSON Data
{
  "block": 19851972,
  "op": [
    "comment",
    {
      "author": "german1608",
      "body": "@@ -286,16 +286,106 @@\n %C3%ADvar._%0A%0A\n+!%5B%5D(https://steemitimages.com/DQmenTDoGndXfvDLHDD17tdvDN1GLigTpoJJvCEXnjnRAgi/image.png)%0A%0A\n ## Resum\n",
      "json_metadata": "{\"tags\":[\"spanish\",\"cervantes\",\"tecnologia\",\"linux\",\"tutoriales\"],\"users\":[\"gustavoaca1997\"],\"links\":[\"https://steemit.com/spanish/@gustavoaca1997/tutorial-de-la-terminal-de-linux\"],\"app\":\"steemit/0.1\",\"format\":\"markdown\",\"image\":[\"https://steemitimages.com/DQmenTDoGndXfvDLHDD17tdvDN1GLigTpoJJvCEXnjnRAgi/image.png\"]}",
      "parent_author": "",
      "parent_permlink": "spanish",
      "permlink": "tutorial-de-la-terminal-de-linux-parte-ii",
      "title": "Tutorial de la Terminal de Linux (Parte II)"
    }
  ],
  "op_in_trx": 0,
  "timestamp": "2018-02-14T03:50:30",
  "trx_id": "2a7c7a6cbdd4879782064baac2537a61b843f9e2",
  "trx_in_block": 24,
  "virtual_op": 0
}
2018/02/14 03:46:33
authorgerman1608
body# Tutorial de la Terminal de Linux _Esta es la segunda parte de la charla sobre la terminal de linux, dada por Gustavo Castellanos y German Robayo, Coordinadores de Información y Tecnología del Centro de Estudiantes de Ingeniería de la Computación 2017-2018 de la Universidad Simón Bolívar._ ## Resumen de la Primera Parte En [este](https://steemit.com/spanish/@gustavoaca1997/tutorial-de-la-terminal-de-linux) artículo escrito por mi companero @gustavoaca1997 se da un resumen de la primera parte de la charla sobre la terminal de Linux dictada a los estudiantes de la Universidad Simón Bolivar (USB). En éste se encuentran los siguientes tópicos: * Flujos estándares. `stdout`, `stdin`, `stderr`. * Comandos basicos para manipulacion de ficheros: * `ls` * `cd` * `man` _el más importante de todos_ * `pwd` * `mkdir` * `rm` * `cp` * `mv` * Direcciones de archivos absolutas y relativas. ## Qué hablaremos En este artículo hablaremos sobre lo siguiente: * Control de flujo. * Comandos intermedios. * Procesos. * Condicionales. ## Control de flujo Recordemos los tres flujos estándares: `stdout`, `stdin`y `stderr`. Habíamos mencionado que Linux trata a estos como "ficheros". ¿Cómo manejamos el contenido de estos ficheros? La terminal provee operadores para ello. ### > _¿Cómo se llama?_ Yo le digo pollito, sin razón alguna. _¿Cómo se usa?_ ```bash $ pwd /home/user/charla/ $ ls a charla1 charla2 a.cpp b.c sample.py $ echo "Todo bien?" > nuevoArchivo.txt $ ls a charla1 charla2 a.cpp b.c sample.py nuevoArchivo.txt ``` _¿Qué hace?_ Transfiere el `stdout` del programa del lado izquierdo y lo guarda en el archivo que se coloque en la derecha. NOTA: Reemplaza el contenido del archivo. ```bash $ cat nuevoArchivo.txt Todo bien? ``` ### < _¿Cómo se llama?_ Yo le digo _menor que_. _¿Cómo se usa?_ Tenemos un sencillo script de python que lee vía `stdin` y luego imprime lo leído en mayúsculas. ```bash $ ls a charla1 charla2 a.cpp b.c sample.py nuevoArchivo.txt $ cat sample.py x = input() print(x.upper()) $ cat nuevoArchivo.txt Todo bien? $ python3 sample.py < nuevoArchivo.txt TODO BIEN? ``` _¿Qué hace?_ Convierte el contenido del archivo de la derecha en `stdin` para el comando de la izquierda. Permite hacer combinaciones de comandos muy elegantes e interesantes. ```bash $ python3 sample.py < nuevoArchivo.txt > out.txt $ cat out.txt TODO BIEN? ``` Aqui hicimos uso del `>` para capturar el `stdout` del comando y guardarlo en out.txt. ### >> _¿Cómo se llama?_ Yo le digo doble pollito. _¿Cómo se usa?_ Igual que el `>` _¿Qué hace?_ Funciona igual que el `>`, pero la diferencia es que este anade contenido al final, en vez de sobreescribirlo. ### << _¿Cómo se llama?_ Yo le digo doble menor igual. _¿Cómo se usa?_ Igual que el `<` _¿Qué hace?_ Este es interesante. Permite recibir el input como un _here-document_ ¿Qué significa esto? Mas facil explicarlo con un ejemplo: ```bash $ cat << EOF > texto.txt Esto esta escrito por el teclado Puedo seguir escribiendo hasta que escriba EOF eof no, EOF EOF con mas cosas no, solo EOF EOF # output Esto esta escrito por el teclado Puedo seguir escribiendo hasta que escriba EOF eof no, EOF EOF con mas cosas no, solo EOF ``` _¿Qué paso exactamente?_ Cuando usamos `<<`, el intérprete leerá nuestro input (`stdin`) hasta que se escriba `EOF` (el lado izquierdo). Nótese que no es necesario restringirse a `EOF`, puedo usar cualquier cosa. ```bash $ cat << EMPANADAS > texto.txt Muchas empanadas no le hacen daño a nadie. texto texto empanadas EMPANADAS DE CAZÓN EMPANADAS # output Muchas empanadas no le hacen daño a nadie. texto texto empanadas EMPANADAS DE CAZÓN ``` Hasta el momento hemos visto operadores que trabajan con archivos. ¿Cómo manejo los flujos generados por los programas? ### `|` _¿Cómo se llama?_ Yo le digo pipe, como una tubería, ya verán por que. _¿Cómo se usa?_ Seguimos con nuestro sencillo script de python. ```bash $ echo 'empanadas' | python3 sample.py EMPANADAS ``` _¿Qué hace?_ Transfiere el `stdout` del comando de la izquierda y lo transforma como `stdin` del de la derecha. Funciona como una tuberia, por eso el nombre. Esto permite generar combinaciones de comandos muy interesantes (ejemplos más abajo). ## Comandos intermedios Algo en común que tienen todos los comandos ya expuestos (a excepción de `cat` y otros mas), es que todo su input es pasado mediante argumentos, es decir, si hacemos: ```bash $ ls a charla1 charla2 a.cpp b.c sample.py nuevoArchivo.txt $ ls charla1 # cosas random, o nada posiblemente. $ echo charla1 charla1 $ echo charla1 | ls a charla1 charla2 a.cpp b.c sample.py nuevoArchivo.txt ``` _¿Qué sucedió exactamente?_ `|` Redirige `stdout` en `stdin`, pero `ls` no recibe argumentos via `stdin`, lo tienes que colocar a mano. A continuación, veremos muchos comandos que si aceptan `stdin` como argumentos y otros que te permiten hacer que comandos como `ls` puedan recibir `stdin`. ### `tail` ¿Qué hace? Recibe datos tanto por argumentos como por `stdin`. En ambos casos, muestra las últimas 10 líneas de los datos. ```bash # texto20lineas.txt tiene los numeros del 1 al 20 uno en cada linea. $ cat texto20lineas.txt 1 2 3 4 5 ... 19 20 $ cat texto20lineas.txt | tail 11 12 13 14 15 16 17 18 19 20 $ tail texto20lineas.txt 11 12 13 14 15 16 17 18 19 20 ``` Se le puede pasar como opcion `-n` usando como `n` cualquier numero, mostrará las últimas `n` líneas del archivo. ### `head` Hace exactamente lo mismo que `tail`, pero muestra las primeras 10 líneas, no las últimas. ### `less` Para explicar este archivo vamos a entrar en la siguiente situación. Supongamos que tenemos un archivo que tiene 1000 líneas aproximadamente (un código largo, por ejemplo). Si ejecutamos `cat archivolargo.txt` no podremos leerlo facílmente, pues nos mostrará todo el output. Si en vez ejecutamos `less archivolargo.txt` nos mostrará una especie de interfaz, en la que podremos ver nuestro archivo poco a poco subiendo con `k` y bajando con `j`. Podemos buscar tecleando `/patron_de_búsqueda` y bajar hasta el final presionando `G`. `less` tambien lee via `stdin`. ### `grep` Este es de mis comandos favoritos y mas útiles. Es muy poderoso, aunque muy poco comprendido. `grep` busca patrones en los archivos o en el `stdin` que le mandes e imprime, al `stdin`, las líneas que hagan match. Veamos un ejemplo: ```bash $ cat texto.txt El terminal es interesante ¿Cómo te llamas? Tu nombre suena interesante... # Cada 'interesante', dependiendo de la terminal, estará resaltado de algun # color reflejando match. $ grep interesante texto.txt El terminal es interesante Tu nombre suena interesante... ``` Los patrones que puedes usar son [expresiones regulares](), algo de lo que hablaré en un próximo artículo. Le podemos pasar más opciones, como por ejemplo: * `-v`: Invierte el sentido de matching. * `-E`: Permite el uso de [expresiones regulares extendidas]() Recuerda que si quieres ver mas información sobre este y cualquier otro comando, puedes usar el manual, `man`. ### `wc` Este comando, aunque tiene un nombre raro (sí, sé lo qué estas pensando), te da la siguiente información sobre los argumentos que le pases o el `stdin` que recibe: * Número de caracteres `\n`, esto indica cuantas líneas tiene el archivo. * Número de bytes. En la computadora, cada caracter ocupa un byte en memoria (si no son unicode), así que el número de bytes de un archivo es equivalente al número de caracteres que posee. * Número de palabras. Ejemplo: ```bash $ cat texto.txt El terminal es interesante ¿Cómo te llamas? Tu nombre suena interesante... $ wc texto.txt 3 11 77 ``` El primer número es el numero de líneas, el segundo el número de palabras y el tercero de bytes. ### `chmod` Antes de explicar qué hace este comando, voy a dar una muy breve explicación sobre los modos en los ficheros de linux. Existen 3 tipos de individuos en un sistema operativo linux: * Usuario: Con esto linux se refiere a ti, el que esta haciendo uso del terminal y el que tiene cuenta en la maquina. * Grupo: En linux, podemos organizar los usuarios en grupos lo que nos permite poder administrar la información de una manera eficiente. * Otros: Son el conjunto de usuarios menos tu. Ahora, sabiendo esta información, existen 3 permisos que se le pueden otorgar a los archivos sobre cierto tipo de individuos. * Escritura: Va directamente asociado a quienes pueden modificar el archivo, sea sobreescribiéndolo, modificando o añadiendo líneas. * Lectura: ¿Quienes pueden leer el archivo? Los permisos de lectura son para eso, restringir que personas pueden leerlo. * Ejecución: ¿Se puede ejecutar? ¿Quienes pueden ejecutarlo? Ahora, sabiendo esto, veamos qué hace chmod y cómo usarlo. ```bash $ ls a a.cpp b c guardado hola.txt sample.py sample.txt test test2.py test2.txt test.py test.txt $ ls -l # Investigar que hace -l, man ls total 64 -rwxrwxr-x 1 username username 9168 ene 18 14:24 a -rw-rw-r-- 1 username username 112 ene 18 14:24 a.cpp -rwxrwxr-x 1 username username 9168 ene 18 14:24 b -rw-rw-r-- 1 username username 0 ene 18 14:24 c -rw-rw-r-- 1 username username 16 ene 18 14:44 guardado -rw-rw-r-- 1 username username 5 ene 18 14:54 hola.txt -rw-rw-r-- 1 username username 22 ene 18 13:51 sample.py -rw-rw-r-- 1 username username 13 ene 18 14:34 sample.txt drwxrwxr-x 2 username username 4096 ene 18 14:26 test -rw-rw-r-- 1 username username 73 ene 18 15:08 test2.py -rw-rw-r-- 1 username username 26 ene 18 15:12 test2.txt -rw-rw-r-- 1 username username 30 ene 18 14:56 test.py -rw-rw-r-- 1 username username 18 ene 18 14:57 test.txt ``` Observen la primera columna, tiene un formato raro. Consiste de una palabra de 10 caracteres donde el primer caractér indica si es un directorio, y los otros nueve son tripletas de `r`,`w` y `x`. La primera tripleta es respecto al usuario, la segunda respecto al grupo y la tercera a los otros. La `r` indica permisos de lectura, la `w` de escritura y la `x` de ejecución. Por ejemplo, el archivo `a.cpp` tiene permisos de lectura para todo el mundo pero nada mas pueden modificarlos el usuario actual (que no necesariamente es `username`) y el grupo `username` (el grupo está en la tercera columna). Supongamos que por alguna razón necesito agregar permisos de ejecución para todos los usuarios en el archivo `a.cpp`. Puedo ejecutar: ```bash $ chmod +x a.cpp $ ls -l a.cpp -rwxrwxr-x 1 username username 112 ene 18 14:24 a.cpp # ^ ^ ^ Se añadieron los permisos para todos. ``` Ahora queremos quitarselos ```bash $ chmod -x a.cpp $ ls -l a.cpp -rw-rw-r-- 1 username username 112 ene 18 14:24 a.cpp # ^ ^ ^ Se eliminaron los permisos para todos. ``` Solo quiero que el usuario actual tenga permisos de ejecución ```bash # la 'u' se refiere al usuario actual, si el usuario que lo ejecuta no es el dueño # del archivo lanzará un error. $ chmod u+x a.cpp $ ls -l a.cpp -rwxrw-r-- 1 username username 112 ene 18 14:24 a.cpp # ^ Se añadio el permiso de ejecución los permisos para todos. ``` Solo quiero que los demás tengan solamente permiso de escritura ```bash # la 'o' se refiere a los otros usuarios $ chmod o=w a.cpp $ ls -l a.cpp -rwxrw--w- 1 username username 112 ene 18 14:24 a.cpp # ^ SOLAMENTE permisos de escritura ``` Si quiero que quiero que el grupo tenga solo permisos de lectura, añadir al usuario de ejecución y quitarle todos los permisos a los otros usuarios ```bash # La 'g' se refiere al grupo del archivo $ chmod g=r,u+x,o-rwx a.cpp $ ls -l a.cpp -rwxr----- 1 username username 112 ene 18 14:24 a.cpp* ``` Así que, aunque no lo mencioné, `chmod` sirve para modificar permisos de ficheros. ### `xargs` Este permite que comandos que no reciben nada via stdin como `ls` puedan hacerlo. `xargs` recibe via `stdin` y se lo coloca como argumentos a su argumento. Ejemplo: ```bash $ ls -1 *.txt # -1 te coloca todo en una sola columna, * es el wildcard. hola.txt sample.txt test2.txt test.txt $ ls -1 *.txt | rm # Arroja error por que rm recibe argumentos, no `stdin` rm: falta un operando Pruebe 'rm --help' para más información. $ ls -1 *.txt | xargs rm $ ls -1 *.txt # Arroja error por que no hay archivos .txt ls: no se puede acceder a '*.txt': No existe el archivo o el directorio ``` ## Procesos Hasta el momento hemos hecho abuso de la palabra programa cuando en realidad hay que hacer una diferencia notoria: * Un **programa** es un archivo que contiene instrucciones que leera y ejecutar el computador. Ejemplo: Scripts de python, programas en C, C++, binarios. * Un **proceso** es cuando el sistema operativo le asigna recursos suficientes para que se pueda llevar acabo la ejecución de un programa. Sabiendo esto, podemos concluir que un comando seria un programa y su ejecución un proceso. ¿Para qué nos interesa esto? Linux es un sistema operativo multiprocesos. Nos permite ejecutar varios procesos a la vez. ¿Cómo vemos los procesos que se están ejecutando? ### `ps` Este comando lista los procesos que se estan ejecutando en la terminal actual con cierta información sobre cada uno. ```bash $ ps PID TTY TIME CMD 2034 pts/0 00:00:00 bash 9310 pts/0 00:00:00 ps ``` Podemos observar 3 columnas. La primera es el PID, que significa _Process ID_, cada proceso tiene un número único que lo identifica. El TTY es la terminal de donde se esta ejecutando, `pts/0`. La columna TIME indica la cantidad de tiempo que ha usado el cpu para la ejecución de ese comando. Dirán: > ¿Porqué si el `bash` se lleva ejecutando desde que abrí la terminal dice 00:00:00? Aquí viene el plotwist. Cuando ejecutas un comando, no mandas a ejecutar `bash`, mandas a ejecutar dicho comando. El `bash` no interfiere en nada en la ejecución del comando. La cuarta columna CMD indica el comando que se esta ejecutando en dicho proceso. ### `&` El ampersand en la línea de comandos tiene una función. Correr un proceso en segundo plano (background). Cuando ejecutamos un comando se ejecuta en primer plano (foreground) por defecto, lo que nos quita la posibilidad de ejecutar otro programa sino hasta que termine la ejecución de este. Si lo ejecutamos en segundo plano, podremos seguir usando la terminal sin ningún inconveniente. Ejemplo: ```bash $ comando_que_tarda_10_minutos # Toca esperar 10 minutos hasta que termine la ejecución # del programa $ comando_que_tarda_10_minutos & [1] 12313 $ # Tenemos disponibilidad de ejecutar cualquier otro programa. ``` El `[1]` indica el jobID y el numero de al lado es el process ID. Si ejecutamos `ps`: ```bash $ ps # EL TIME PUEDE SER DISTINTO PID TTY TIME CMD 2034 pts/0 00:00:00 bash 9310 pts/0 00:00:00 ps 12313 pts/0 00:00:30 comando_que_tarda_10_minutos ``` Ahí esta nuestro proceso, siendo ejecutado hasta que termine solo o le manden una *señal*. ### `kill` Permite mandar señales a procesos. Las señales que mas uso son: SIGKILL, SIGTERM. Ejemplo: ```bash $ ps PID TTY TIME CMD 2034 pts/0 00:00:00 bash 9310 pts/0 00:00:00 ps 12313 pts/0 00:00:30 comando_que_tarda_10_minutos $ kill -9 12313 # 9 es el codigo de la señal SIGKILL $ # presiona enter [1]+ Terminado (killed) comando_que_tarda_10_minutos $ ps PID TTY TIME CMD 2034 pts/0 00:00:00 bash 9310 pts/0 00:00:00 ps ``` ## Ejemplo de la vida real Supongamos que estamos escribiendo código en sublime y se quedó congelado, no responde. Podemos ver TODOS los procesos haciendo: ```bash $ ps -aux ... # monton de output ``` Demasiado output y nada útil a la vista. Usemos `grep` ```bash $ ps -aux | grep subl german 13084 11.5 1.2 988756 47788 ? Ssl 20:54 0:01 /opt/sublime_text/sublime_text german 13096 30.5 0.9 78332 36500 ? Dl 20:54 0:02 /opt/sublime_text/plugin_host 13084 german 13107 0.0 0.0 16760 972 pts/0 S+ 20:54 0:00 grep --color=auto subl ``` 3 procesos y uno es grep así que ese no puede ser. Ajuro deben ser los otros. Matemoslos: ```bash $ kill 13084 13107 ``` Sublime cierra exitosamente. ## Si llegaste hasta aquí Quiero agradecerte a ti, querido lector por haber leído este tutorial que he escrito junto con mi compañero @gustavoaca1997. Espero que te haya gustado y que te sirva de ayuda. Mantente pendiente de futuros tutoriales sobre este tipo de cosas. ¡Hasta la proxima!
json metadata{"tags":["spanish","cervantes","tecnologia","linux","tutoriales"],"users":["gustavoaca1997"],"links":["https://steemit.com/spanish/@gustavoaca1997/tutorial-de-la-terminal-de-linux"],"app":"steemit/0.1","format":"markdown"}
parent author
parent permlinkspanish
permlinktutorial-de-la-terminal-de-linux-parte-ii
titleTutorial de la Terminal de Linux (Parte II)
Transaction InfoBlock #19851893/Trx 32ccc5a6fbbfe1a1d439d952ea7cc1251693a504
View Raw JSON Data
{
  "block": 19851893,
  "op": [
    "comment",
    {
      "author": "german1608",
      "body": "# Tutorial de la Terminal de Linux\n_Esta es la segunda parte de la charla sobre la terminal de linux, dada por Gustavo Castellanos y German Robayo, Coordinadores de Información y Tecnología del Centro de Estudiantes de Ingeniería de la Computación 2017-2018 de la Universidad Simón Bolívar._\n\n## Resumen de la Primera Parte\n\nEn [este](https://steemit.com/spanish/@gustavoaca1997/tutorial-de-la-terminal-de-linux) artículo escrito por mi companero @gustavoaca1997 se da un resumen de la primera parte de la charla sobre la terminal de Linux dictada a los estudiantes de la Universidad Simón Bolivar (USB). En éste se encuentran los siguientes tópicos:\n\n* Flujos estándares. `stdout`, `stdin`, `stderr`.\n* Comandos basicos para manipulacion de ficheros:\n  * `ls`\n  * `cd`\n  * `man` _el más importante de todos_\n  * `pwd`\n  * `mkdir`\n  * `rm`\n  * `cp`\n  * `mv`\n* Direcciones de archivos absolutas y relativas.\n\n## Qué hablaremos\n\nEn este artículo hablaremos sobre lo siguiente:\n\n* Control de flujo.\n* Comandos intermedios.\n* Procesos.\n* Condicionales.\n\n## Control de flujo\n\nRecordemos los tres flujos estándares: `stdout`, `stdin`y `stderr`. Habíamos mencionado que Linux trata a estos como \"ficheros\". ¿Cómo manejamos el contenido de estos ficheros? La terminal provee operadores para ello.\n\n### >\n\n_¿Cómo se llama?_ Yo le digo pollito, sin razón alguna.\n_¿Cómo se usa?_\n```bash\n$ pwd\n/home/user/charla/\n$ ls\na charla1 charla2 a.cpp b.c sample.py\n$ echo \"Todo bien?\" > nuevoArchivo.txt\n$ ls\na charla1 charla2 a.cpp b.c sample.py nuevoArchivo.txt\n```\n_¿Qué hace?_ Transfiere el `stdout` del programa del lado izquierdo y lo guarda en el archivo que se coloque en la derecha. NOTA: Reemplaza el contenido del archivo.\n```bash\n$ cat nuevoArchivo.txt\nTodo bien?\n```\n\n### <\n_¿Cómo se llama?_ Yo le digo _menor que_.\n_¿Cómo se usa?_ Tenemos un sencillo script de python que lee vía `stdin` y luego imprime lo leído en mayúsculas.\n```bash\n$ ls\na charla1 charla2 a.cpp b.c sample.py nuevoArchivo.txt\n$ cat sample.py\nx = input()\nprint(x.upper())\n$ cat nuevoArchivo.txt\nTodo bien?\n$ python3 sample.py < nuevoArchivo.txt\nTODO BIEN?\n```\n_¿Qué hace?_ Convierte el contenido del archivo de la derecha en `stdin` para el comando de la izquierda. Permite hacer combinaciones de comandos muy elegantes e interesantes.\n```bash\n$ python3 sample.py < nuevoArchivo.txt > out.txt\n$ cat out.txt\nTODO BIEN?\n```\nAqui hicimos uso del `>` para capturar el `stdout` del comando y guardarlo en out.txt.\n\n### >>\n_¿Cómo se llama?_ Yo le digo doble pollito.\n_¿Cómo se usa?_ Igual que el `>`\n_¿Qué hace?_ Funciona igual que el `>`, pero la diferencia es que este anade contenido al final, en vez de sobreescribirlo.\n\n### <<\n_¿Cómo se llama?_ Yo le digo doble menor igual.\n_¿Cómo se usa?_ Igual que el `<`\n_¿Qué hace?_ Este es interesante. Permite recibir el input como un _here-document_\n¿Qué significa esto? Mas facil explicarlo con un ejemplo:\n```bash\n$ cat << EOF > texto.txt\nEsto esta escrito por el teclado\nPuedo seguir escribiendo hasta que escriba EOF\neof no, EOF\nEOF con mas cosas no, solo EOF\nEOF\n# output\nEsto esta escrito por el teclado\nPuedo seguir escribiendo hasta que escriba EOF\neof no, EOF\nEOF con mas cosas no, solo EOF\n```\n_¿Qué paso exactamente?_ Cuando usamos `<<`, el intérprete leerá nuestro input (`stdin`) hasta que se escriba `EOF` (el lado izquierdo). Nótese que no es necesario restringirse a `EOF`, puedo usar cualquier cosa.\n```bash\n$ cat << EMPANADAS > texto.txt\nMuchas empanadas no le hacen daño a nadie.\ntexto\ntexto\nempanadas\nEMPANADAS DE CAZÓN\nEMPANADAS\n# output\nMuchas empanadas no le hacen daño a nadie.\ntexto\ntexto\nempanadas\nEMPANADAS DE CAZÓN\n```\n\nHasta el momento hemos visto operadores que trabajan con archivos. ¿Cómo manejo los flujos generados por los programas?\n\n### `|`\n\n_¿Cómo se llama?_ Yo le digo pipe, como una tubería, ya verán por que.\n_¿Cómo se usa?_ Seguimos con nuestro sencillo script de python.\n```bash\n$ echo 'empanadas' | python3 sample.py\nEMPANADAS\n```\n_¿Qué hace?_ Transfiere el `stdout` del comando de la izquierda y lo transforma como `stdin` del de la derecha. Funciona como una tuberia, por eso el nombre. Esto permite generar combinaciones de comandos muy interesantes (ejemplos más abajo).\n\n## Comandos intermedios\n\nAlgo en común que tienen todos los comandos ya expuestos (a excepción de `cat` y otros mas), es que todo su input es pasado mediante argumentos, es decir, si hacemos:\n```bash\n$ ls\na charla1 charla2 a.cpp b.c sample.py nuevoArchivo.txt\n$ ls charla1\n# cosas random, o nada posiblemente.\n$ echo charla1\ncharla1\n$ echo charla1 | ls\na charla1 charla2 a.cpp b.c sample.py nuevoArchivo.txt\n```\n_¿Qué sucedió exactamente?_ `|` Redirige `stdout` en `stdin`, pero `ls` no recibe argumentos via `stdin`, lo tienes que colocar a mano. A continuación, veremos muchos comandos que si aceptan `stdin` como argumentos y otros que te permiten hacer que comandos como `ls` puedan recibir `stdin`.\n\n### `tail`\n\n¿Qué hace? Recibe datos tanto por argumentos como por `stdin`. En ambos casos, muestra las últimas 10 líneas de los datos.\n```bash\n# texto20lineas.txt tiene los numeros del 1 al 20 uno en cada linea.\n$ cat texto20lineas.txt\n1\n2\n3\n4\n5\n...\n19\n20\n$ cat texto20lineas.txt | tail\n11\n12\n13\n14\n15\n16\n17\n18\n19\n20\n$ tail texto20lineas.txt\n11\n12\n13\n14\n15\n16\n17\n18\n19\n20\n```\nSe le puede pasar como opcion `-n` usando como `n` cualquier numero, mostrará las últimas `n` líneas del archivo.\n\n### `head`\n\nHace exactamente lo mismo que `tail`, pero muestra las primeras 10 líneas, no las últimas.\n\n### `less`\n\nPara explicar este archivo vamos a entrar en la siguiente situación. Supongamos que tenemos un archivo que tiene 1000 líneas aproximadamente (un código largo, por ejemplo). Si ejecutamos `cat archivolargo.txt` no podremos leerlo facílmente, pues nos mostrará todo el output. Si en vez ejecutamos `less archivolargo.txt` nos mostrará una especie de interfaz, en la que podremos ver nuestro archivo poco a poco subiendo con `k` y bajando con `j`. Podemos buscar tecleando `/patron_de_búsqueda` y bajar hasta el final presionando `G`. `less` tambien lee via `stdin`.\n\n### `grep`\n\nEste es de mis comandos favoritos y mas útiles. Es muy poderoso, aunque muy poco comprendido. `grep` busca patrones en los archivos o en el `stdin` que le mandes e imprime, al `stdin`, las líneas que hagan match. Veamos un ejemplo:\n```bash\n$ cat texto.txt\nEl terminal es interesante\n¿Cómo te llamas?\nTu nombre suena interesante...\n# Cada 'interesante', dependiendo de la terminal, estará resaltado de algun\n# color reflejando match.\n$ grep interesante texto.txt\nEl terminal es interesante\nTu nombre suena interesante...\n```\nLos patrones que puedes usar son [expresiones regulares](), algo de lo que hablaré en un próximo artículo.\nLe podemos pasar más opciones, como por ejemplo:\n\n* `-v`: Invierte el sentido de matching.\n* `-E`: Permite el uso de [expresiones regulares extendidas]()\n\nRecuerda que si quieres ver mas información sobre este y cualquier otro comando, puedes usar el manual, `man`.\n\n### `wc`\n\nEste comando, aunque tiene un nombre raro (sí, sé lo qué estas pensando), te da la siguiente información sobre los argumentos que le pases o el `stdin` que recibe:\n\n* Número de caracteres `\\n`, esto indica cuantas líneas tiene el archivo.\n* Número de bytes. En la computadora, cada caracter ocupa un byte en memoria (si no son unicode), así que el número de bytes de un archivo es equivalente al número de caracteres que posee.\n* Número de palabras.\n\nEjemplo:\n```bash\n$ cat texto.txt\nEl terminal es interesante\n¿Cómo te llamas?\nTu nombre suena interesante...\n$ wc texto.txt\n3 11 77\n```\nEl primer número es el numero de líneas, el segundo el número de palabras y el tercero de bytes.\n\n### `chmod`\n\nAntes de explicar qué hace este comando, voy a dar una muy breve explicación sobre los modos en los ficheros de linux.\n\nExisten 3 tipos de individuos en un sistema operativo linux:\n\n* Usuario: Con esto linux se refiere a ti, el que esta haciendo uso del terminal y el que tiene cuenta en la maquina.\n* Grupo: En linux, podemos organizar los usuarios en grupos lo que nos permite poder administrar la información de una manera eficiente.\n* Otros: Son el conjunto de usuarios menos tu.\n\nAhora, sabiendo esta información, existen 3 permisos que se le pueden otorgar a los archivos sobre cierto tipo de individuos.\n\n* Escritura: Va directamente asociado a quienes pueden modificar el archivo, sea sobreescribiéndolo,\nmodificando o añadiendo líneas.\n* Lectura: ¿Quienes pueden leer el archivo? Los permisos de lectura son para eso, restringir que personas pueden leerlo.\n* Ejecución: ¿Se puede ejecutar? ¿Quienes pueden ejecutarlo?\n\nAhora, sabiendo esto, veamos qué hace chmod y cómo usarlo.\n```bash\n$ ls\na  a.cpp  b  c  guardado  hola.txt  sample.py  sample.txt  test  test2.py\ntest2.txt  test.py  test.txt\n$ ls -l # Investigar que hace -l, man ls\ntotal 64\n-rwxrwxr-x 1 username username 9168 ene 18 14:24 a\n-rw-rw-r-- 1 username username  112 ene 18 14:24 a.cpp\n-rwxrwxr-x 1 username username 9168 ene 18 14:24 b\n-rw-rw-r-- 1 username username    0 ene 18 14:24 c\n-rw-rw-r-- 1 username username   16 ene 18 14:44 guardado\n-rw-rw-r-- 1 username username    5 ene 18 14:54 hola.txt\n-rw-rw-r-- 1 username username   22 ene 18 13:51 sample.py\n-rw-rw-r-- 1 username username   13 ene 18 14:34 sample.txt\ndrwxrwxr-x 2 username username 4096 ene 18 14:26 test\n-rw-rw-r-- 1 username username   73 ene 18 15:08 test2.py\n-rw-rw-r-- 1 username username   26 ene 18 15:12 test2.txt\n-rw-rw-r-- 1 username username   30 ene 18 14:56 test.py\n-rw-rw-r-- 1 username username   18 ene 18 14:57 test.txt\n```\nObserven la primera columna, tiene un formato raro. Consiste de una palabra de 10 caracteres donde el primer caractér indica si es un directorio, y los otros nueve son tripletas de `r`,`w` y `x`. La primera tripleta es respecto al usuario,\nla segunda respecto al grupo y la tercera a los otros. La `r` indica permisos de lectura, la `w` de escritura y la `x` de ejecución. Por ejemplo, el archivo `a.cpp` tiene permisos de lectura para todo el mundo pero nada mas pueden modificarlos el usuario actual (que no necesariamente es `username`) y el grupo `username` (el grupo está en la tercera columna).\n\nSupongamos que por alguna razón necesito agregar permisos de ejecución para todos los usuarios en el archivo `a.cpp`. Puedo ejecutar:\n```bash\n$ chmod +x a.cpp\n$ ls -l a.cpp\n-rwxrwxr-x 1 username username 112 ene 18 14:24 a.cpp\n#  ^  ^  ^ Se añadieron los permisos para todos.\n```\nAhora queremos quitarselos\n```bash\n$ chmod -x a.cpp\n$ ls -l a.cpp\n-rw-rw-r-- 1 username username 112 ene 18 14:24 a.cpp\n#  ^  ^  ^ Se eliminaron los permisos para todos.\n```\nSolo quiero que el usuario actual tenga permisos de ejecución\n```bash\n# la 'u' se refiere al usuario actual, si el usuario que lo ejecuta no es el dueño\n# del archivo lanzará un error.\n$ chmod u+x a.cpp\n$ ls -l a.cpp\n-rwxrw-r-- 1 username username 112 ene 18 14:24 a.cpp\n#  ^   Se añadio el permiso de ejecución los permisos para todos.\n```\nSolo quiero que los demás tengan solamente permiso de escritura\n```bash\n# la 'o' se refiere a los otros usuarios\n$ chmod o=w a.cpp\n$ ls -l a.cpp\n-rwxrw--w- 1 username username 112 ene 18 14:24 a.cpp\n#       ^   SOLAMENTE permisos de escritura\n```\nSi quiero que quiero que el grupo tenga solo permisos de lectura, añadir al usuario de ejecución y quitarle todos los permisos a los otros usuarios\n```bash\n# La 'g' se refiere al grupo del archivo\n$ chmod g=r,u+x,o-rwx a.cpp\n$ ls -l a.cpp\n-rwxr----- 1 username username 112 ene 18 14:24 a.cpp*\n```\n\nAsí que, aunque no lo mencioné, `chmod` sirve para modificar permisos de ficheros.\n\n### `xargs`\n\nEste permite que comandos que no reciben nada via stdin como `ls` puedan hacerlo. `xargs` recibe via `stdin` y se lo coloca como argumentos a su argumento.\nEjemplo:\n```bash\n$ ls -1 *.txt # -1 te coloca todo en una sola columna, * es el wildcard.\nhola.txt\nsample.txt\ntest2.txt\ntest.txt\n$ ls -1 *.txt | rm # Arroja error por que rm recibe argumentos, no `stdin`\nrm: falta un operando\nPruebe 'rm --help' para más información.\n$ ls -1 *.txt | xargs rm\n$ ls -1 *.txt # Arroja error por que no hay archivos .txt\nls: no se puede acceder a '*.txt': No existe el archivo o el directorio\n```\n\n## Procesos\n\nHasta el momento hemos hecho abuso de la palabra programa cuando en realidad hay\nque hacer una diferencia notoria:\n\n* Un **programa** es un archivo que contiene instrucciones que leera y ejecutar el\ncomputador. Ejemplo: Scripts de python, programas en C, C++, binarios.\n* Un **proceso** es cuando el sistema operativo le asigna recursos suficientes para\nque se pueda llevar acabo la ejecución de un programa.\n\nSabiendo esto, podemos concluir que un comando seria un programa y su ejecución un proceso.\n\n¿Para qué nos interesa esto? Linux es un sistema operativo multiprocesos. Nos permite ejecutar varios procesos a la vez. ¿Cómo vemos los procesos que se están ejecutando?\n\n### `ps`\n\nEste comando lista los procesos que se estan ejecutando en la terminal actual con\ncierta información sobre cada uno.\n```bash\n$ ps\nPID TTY          TIME CMD\n 2034 pts/0    00:00:00 bash\n 9310 pts/0    00:00:00 ps\n```\n\nPodemos observar 3 columnas. La primera es el PID, que significa _Process ID_, cada proceso tiene un número único que lo identifica. El TTY es la terminal de donde se esta ejecutando, `pts/0`. La columna TIME indica la cantidad de tiempo que ha usado el cpu para la ejecución de ese comando. Dirán:\n\n> ¿Porqué si el `bash` se lleva ejecutando desde que abrí la terminal dice 00:00:00?\nAquí viene el plotwist. Cuando ejecutas un comando, no mandas a ejecutar `bash`, mandas a ejecutar dicho comando. El `bash` no interfiere en nada en la ejecución del comando.\n\nLa cuarta columna CMD indica el comando que se esta ejecutando en dicho proceso.\n\n### `&`\n\nEl ampersand en la línea de comandos tiene una función. Correr un proceso en segundo plano (background). Cuando ejecutamos un comando se ejecuta en primer plano (foreground) por defecto, lo que nos quita la posibilidad de ejecutar otro programa sino hasta que termine la ejecución de este. Si lo ejecutamos en segundo plano, podremos seguir usando la terminal sin ningún inconveniente.\n\nEjemplo:\n```bash\n$ comando_que_tarda_10_minutos\n# Toca esperar 10 minutos hasta que termine la ejecución\n# del programa\n$ comando_que_tarda_10_minutos &\n[1] 12313\n$ # Tenemos disponibilidad de ejecutar cualquier otro programa.\n```\n\nEl `[1]` indica el jobID y el numero de al lado es el process ID.\n\nSi ejecutamos `ps`:\n```bash\n$ ps # EL TIME PUEDE SER DISTINTO\nPID TTY          TIME CMD\n 2034 pts/0    00:00:00 bash\n 9310 pts/0    00:00:00 ps\n12313 pts/0    00:00:30 comando_que_tarda_10_minutos\n```\nAhí esta nuestro proceso, siendo ejecutado hasta que termine solo o le manden una\n*señal*.\n\n### `kill`\n\nPermite mandar señales a procesos. Las señales que mas uso son: SIGKILL, SIGTERM.\nEjemplo:\n```bash\n$ ps\nPID TTY          TIME CMD\n 2034 pts/0    00:00:00 bash\n 9310 pts/0    00:00:00 ps\n12313 pts/0    00:00:30 comando_que_tarda_10_minutos\n$ kill -9 12313 # 9 es el codigo de la señal SIGKILL\n$ # presiona enter\n[1]+ Terminado (killed)      comando_que_tarda_10_minutos\n$ ps\nPID TTY          TIME CMD\n 2034 pts/0    00:00:00 bash\n 9310 pts/0    00:00:00 ps\n```\n\n## Ejemplo de la vida real\n\nSupongamos que estamos escribiendo código en sublime y se quedó congelado, no responde. Podemos ver TODOS los procesos haciendo:\n```bash\n$ ps -aux\n... # monton de output\n```\nDemasiado output y nada útil a la vista. Usemos `grep`\n```bash\n$ ps -aux | grep subl\ngerman   13084 11.5  1.2 988756 47788 ?        Ssl  20:54   0:01 /opt/sublime_text/sublime_text\ngerman   13096 30.5  0.9  78332 36500 ?        Dl   20:54   0:02 /opt/sublime_text/plugin_host 13084\ngerman   13107  0.0  0.0  16760   972 pts/0    S+   20:54   0:00 grep --color=auto subl\n```\n3 procesos y uno es grep así que ese no puede ser. Ajuro deben ser los otros.\nMatemoslos:\n```bash\n$ kill 13084 13107\n```\nSublime cierra exitosamente.\n\n## Si llegaste hasta aquí\n\nQuiero agradecerte a ti, querido lector por haber leído este tutorial que he escrito junto con mi compañero @gustavoaca1997. Espero que te haya gustado y que te sirva de ayuda. Mantente pendiente de futuros tutoriales sobre este tipo de cosas.\n\n¡Hasta la proxima!",
      "json_metadata": "{\"tags\":[\"spanish\",\"cervantes\",\"tecnologia\",\"linux\",\"tutoriales\"],\"users\":[\"gustavoaca1997\"],\"links\":[\"https://steemit.com/spanish/@gustavoaca1997/tutorial-de-la-terminal-de-linux\"],\"app\":\"steemit/0.1\",\"format\":\"markdown\"}",
      "parent_author": "",
      "parent_permlink": "spanish",
      "permlink": "tutorial-de-la-terminal-de-linux-parte-ii",
      "title": "Tutorial de la Terminal de Linux (Parte II)"
    }
  ],
  "op_in_trx": 0,
  "timestamp": "2018-02-14T03:46:33",
  "trx_id": "32ccc5a6fbbfe1a1d439d952ea7cc1251693a504",
  "trx_in_block": 47,
  "virtual_op": 0
}
2018/02/14 03:08:54
authorkobernyk
permlinkhola-steemit-soy-valerie-y-este-es-mi-introduceyourself
votergerman1608
weight10000 (100.00%)
Transaction InfoBlock #19851141/Trx ffa040f62aa43f74030fbc3752c0da5a3467b508
View Raw JSON Data
{
  "block": 19851141,
  "op": [
    "vote",
    {
      "author": "kobernyk",
      "permlink": "hola-steemit-soy-valerie-y-este-es-mi-introduceyourself",
      "voter": "german1608",
      "weight": 10000
    }
  ],
  "op_in_trx": 0,
  "timestamp": "2018-02-14T03:08:54",
  "trx_id": "ffa040f62aa43f74030fbc3752c0da5a3467b508",
  "trx_in_block": 0,
  "virtual_op": 0
}
2018/02/14 03:08:48
authorkobernyk
permlinkhi-steemit-i-m-valerie-and-this-is-my-introduceyourself
votergerman1608
weight10000 (100.00%)
Transaction InfoBlock #19851139/Trx 698b27fc6e185ec9c84547731059f7ad7fb9df0b
View Raw JSON Data
{
  "block": 19851139,
  "op": [
    "vote",
    {
      "author": "kobernyk",
      "permlink": "hi-steemit-i-m-valerie-and-this-is-my-introduceyourself",
      "voter": "german1608",
      "weight": 10000
    }
  ],
  "op_in_trx": 0,
  "timestamp": "2018-02-14T03:08:48",
  "trx_id": "698b27fc6e185ec9c84547731059f7ad7fb9df0b",
  "trx_in_block": 49,
  "virtual_op": 0
}
2018/02/14 00:28:24
authorgerman1608
permlinkhola-me-llamo-german-robayo
voterrominnav25
weight10000 (100.00%)
Transaction InfoBlock #19847936/Trx c7ba549bed7086fd334d44947f6e045b6dc6c818
View Raw JSON Data
{
  "block": 19847936,
  "op": [
    "vote",
    {
      "author": "german1608",
      "permlink": "hola-me-llamo-german-robayo",
      "voter": "rominnav25",
      "weight": 10000
    }
  ],
  "op_in_trx": 0,
  "timestamp": "2018-02-14T00:28:24",
  "trx_id": "c7ba549bed7086fd334d44947f6e045b6dc6c818",
  "trx_in_block": 44,
  "virtual_op": 0
}
2018/02/13 17:26:24
authorrominnav25
permlinkhola-steemit-mi-nombre-es-rominna
votergerman1608
weight10000 (100.00%)
Transaction InfoBlock #19839503/Trx 2b7e094fda77a7a529c1d6496903d0c49ffab15e
View Raw JSON Data
{
  "block": 19839503,
  "op": [
    "vote",
    {
      "author": "rominnav25",
      "permlink": "hola-steemit-mi-nombre-es-rominna",
      "voter": "german1608",
      "weight": 10000
    }
  ],
  "op_in_trx": 0,
  "timestamp": "2018-02-13T17:26:24",
  "trx_id": "2b7e094fda77a7a529c1d6496903d0c49ffab15e",
  "trx_in_block": 0,
  "virtual_op": 0
}
2018/02/13 14:03:30
authorgerman1608
permlinkhola-me-llamo-german-robayo
voterjjca
weight10000 (100.00%)
Transaction InfoBlock #19835449/Trx 8b3a066e97937b447a0d715fb73919edff92cfa7
View Raw JSON Data
{
  "block": 19835449,
  "op": [
    "vote",
    {
      "author": "german1608",
      "permlink": "hola-me-llamo-german-robayo",
      "voter": "jjca",
      "weight": 10000
    }
  ],
  "op_in_trx": 0,
  "timestamp": "2018-02-13T14:03:30",
  "trx_id": "8b3a066e97937b447a0d715fb73919edff92cfa7",
  "trx_in_block": 6,
  "virtual_op": 0
}
2018/02/11 17:01:12
comment authorjfuenmayor96
comment permlinkvalidating-the-props-of-your-react-components-with-proptypes
curatorgerman1608
reward2.044914 VESTS
Transaction InfoBlock #19781444/Virtual Operation #39
View Raw JSON Data
{
  "block": 19781444,
  "op": [
    "curation_reward",
    {
      "comment_author": "jfuenmayor96",
      "comment_permlink": "validating-the-props-of-your-react-components-with-proptypes",
      "curator": "german1608",
      "reward": "2.044914 VESTS"
    }
  ],
  "op_in_trx": 0,
  "timestamp": "2018-02-11T17:01:12",
  "trx_id": "0000000000000000000000000000000000000000",
  "trx_in_block": 4294967295,
  "virtual_op": 39
}
2018/02/10 20:40:06
idfollow
json["follow",{"follower":"german1608","following":"rominnav25","what":["blog"]}]
required auths[]
required posting auths["german1608"]
Transaction InfoBlock #19757043/Trx eb4f681c0af123eb69fbc120e3f08293246402f6
View Raw JSON Data
{
  "block": 19757043,
  "op": [
    "custom_json",
    {
      "id": "follow",
      "json": "[\"follow\",{\"follower\":\"german1608\",\"following\":\"rominnav25\",\"what\":[\"blog\"]}]",
      "required_auths": [],
      "required_posting_auths": [
        "german1608"
      ]
    }
  ],
  "op_in_trx": 0,
  "timestamp": "2018-02-10T20:40:06",
  "trx_id": "eb4f681c0af123eb69fbc120e3f08293246402f6",
  "trx_in_block": 9,
  "virtual_op": 0
}
2018/02/08 20:19:45
authorprovenezuela
permlinkprovenezuela-se-renueva-buscamos-nueva-imagen-concurso
votergerman1608
weight10000 (100.00%)
Transaction InfoBlock #19699080/Trx 72e01b6b3a92227645002e869972dcd76abc2ab6
View Raw JSON Data
{
  "block": 19699080,
  "op": [
    "vote",
    {
      "author": "provenezuela",
      "permlink": "provenezuela-se-renueva-buscamos-nueva-imagen-concurso",
      "voter": "german1608",
      "weight": 10000
    }
  ],
  "op_in_trx": 0,
  "timestamp": "2018-02-08T20:19:45",
  "trx_id": "72e01b6b3a92227645002e869972dcd76abc2ab6",
  "trx_in_block": 16,
  "virtual_op": 0
}
2018/02/08 20:19:27
authorcryptosharon
permlinkthe-sweet-lingering-scent-of-death-5-minute-freewrite
votergerman1608
weight10000 (100.00%)
Transaction InfoBlock #19699074/Trx 775cb57891077866f3ba40e3c1b7163f13e45b83
View Raw JSON Data
{
  "block": 19699074,
  "op": [
    "vote",
    {
      "author": "cryptosharon",
      "permlink": "the-sweet-lingering-scent-of-death-5-minute-freewrite",
      "voter": "german1608",
      "weight": 10000
    }
  ],
  "op_in_trx": 0,
  "timestamp": "2018-02-08T20:19:27",
  "trx_id": "775cb57891077866f3ba40e3c1b7163f13e45b83",
  "trx_in_block": 2,
  "virtual_op": 0
}
german1608received 0.001 SP curation reward for @jamez42 / modx-translation-24-to-27-1027-words-part-6
2018/02/08 16:57:27
comment authorjamez42
comment permlinkmodx-translation-24-to-27-1027-words-part-6
curatorgerman1608
reward2.045230 VESTS
Transaction InfoBlock #19695042/Virtual Operation #20
View Raw JSON Data
{
  "block": 19695042,
  "op": [
    "curation_reward",
    {
      "comment_author": "jamez42",
      "comment_permlink": "modx-translation-24-to-27-1027-words-part-6",
      "curator": "german1608",
      "reward": "2.045230 VESTS"
    }
  ],
  "op_in_trx": 0,
  "timestamp": "2018-02-08T16:57:27",
  "trx_id": "0000000000000000000000000000000000000000",
  "trx_in_block": 4294967295,
  "virtual_op": 20
}
2018/02/07 18:48:36
authorcryptosharon
permlinkthe-death-of-beauty-the-pain-of-time
votergerman1608
weight10000 (100.00%)
Transaction InfoBlock #19668669/Trx 6ca24135be1f4688814add7050802d23a26d5ffc
View Raw JSON Data
{
  "block": 19668669,
  "op": [
    "vote",
    {
      "author": "cryptosharon",
      "permlink": "the-death-of-beauty-the-pain-of-time",
      "voter": "german1608",
      "weight": 10000
    }
  ],
  "op_in_trx": 0,
  "timestamp": "2018-02-07T18:48:36",
  "trx_id": "6ca24135be1f4688814add7050802d23a26d5ffc",
  "trx_in_block": 70,
  "virtual_op": 0
}
2018/02/07 18:27:42
authorgustavoaca1997
permlinktarea-1-conceptos-basico-para-desarrollo-web-parte-ii
votergerman1608
weight10000 (100.00%)
Transaction InfoBlock #19668251/Trx f938292639aee62f3e24e3cb3acf0bfc4e259eee
View Raw JSON Data
{
  "block": 19668251,
  "op": [
    "vote",
    {
      "author": "gustavoaca1997",
      "permlink": "tarea-1-conceptos-basico-para-desarrollo-web-parte-ii",
      "voter": "german1608",
      "weight": 10000
    }
  ],
  "op_in_trx": 0,
  "timestamp": "2018-02-07T18:27:42",
  "trx_id": "f938292639aee62f3e24e3cb3acf0bfc4e259eee",
  "trx_in_block": 66,
  "virtual_op": 0
}
2018/02/04 21:49:27
authorjfuenmayor96
permlinkvalidating-the-props-of-your-react-components-with-proptypes
votergerman1608
weight10000 (100.00%)
Transaction InfoBlock #19585944/Trx 549eeb53e1fda4ae9a683039b5975a8caecded42
View Raw JSON Data
{
  "block": 19585944,
  "op": [
    "vote",
    {
      "author": "jfuenmayor96",
      "permlink": "validating-the-props-of-your-react-components-with-proptypes",
      "voter": "german1608",
      "weight": 10000
    }
  ],
  "op_in_trx": 0,
  "timestamp": "2018-02-04T21:49:27",
  "trx_id": "549eeb53e1fda4ae9a683039b5975a8caecded42",
  "trx_in_block": 28,
  "virtual_op": 0
}
2018/02/03 23:29:39
authorstoodkev
permlinkcreating-an-utopian-tutorial-page
votergerman1608
weight10000 (100.00%)
Transaction InfoBlock #19559160/Trx c7a9e772979dd3f710fbb8412b2862c6bc69f1f3
View Raw JSON Data
{
  "block": 19559160,
  "op": [
    "vote",
    {
      "author": "stoodkev",
      "permlink": "creating-an-utopian-tutorial-page",
      "voter": "german1608",
      "weight": 10000
    }
  ],
  "op_in_trx": 0,
  "timestamp": "2018-02-03T23:29:39",
  "trx_id": "c7a9e772979dd3f710fbb8412b2862c6bc69f1f3",
  "trx_in_block": 41,
  "virtual_op": 0
}
2018/02/02 17:18:39
authorjamez42
permlinkmodx-translation-24-to-27-1027-words-part-6
votergerman1608
weight10000 (100.00%)
Transaction InfoBlock #19523074/Trx 75f3b7e93795e61216717911f29dd1803746da4c
View Raw JSON Data
{
  "block": 19523074,
  "op": [
    "vote",
    {
      "author": "jamez42",
      "permlink": "modx-translation-24-to-27-1027-words-part-6",
      "voter": "german1608",
      "weight": 10000
    }
  ],
  "op_in_trx": 0,
  "timestamp": "2018-02-02T17:18:39",
  "trx_id": "75f3b7e93795e61216717911f29dd1803746da4c",
  "trx_in_block": 17,
  "virtual_op": 0
}
2018/02/02 17:16:09
authorprovenezuela
permlinkconcurso-en-provenezuela-estamos-enamorados
votergerman1608
weight10000 (100.00%)
Transaction InfoBlock #19523024/Trx 8759aa61d7c6b27a5fb84e28ab45f6a5d8f0b1d9
View Raw JSON Data
{
  "block": 19523024,
  "op": [
    "vote",
    {
      "author": "provenezuela",
      "permlink": "concurso-en-provenezuela-estamos-enamorados",
      "voter": "german1608",
      "weight": 10000
    }
  ],
  "op_in_trx": 0,
  "timestamp": "2018-02-02T17:16:09",
  "trx_id": "8759aa61d7c6b27a5fb84e28ab45f6a5d8f0b1d9",
  "trx_in_block": 56,
  "virtual_op": 0
}
2018/02/01 04:02:24
comment authorjavtrv
comment permlinktranslation-spanish-react-1056-words-translated-part1
curatorgerman1608
reward6.138033 VESTS
Transaction InfoBlock #19478425/Virtual Operation #9
View Raw JSON Data
{
  "block": 19478425,
  "op": [
    "curation_reward",
    {
      "comment_author": "javtrv",
      "comment_permlink": "translation-spanish-react-1056-words-translated-part1",
      "curator": "german1608",
      "reward": "6.138033 VESTS"
    }
  ],
  "op_in_trx": 0,
  "timestamp": "2018-02-01T04:02:24",
  "trx_id": "0000000000000000000000000000000000000000",
  "trx_in_block": 4294967295,
  "virtual_op": 9
}
2018/01/31 22:14:24
idfollow
json["follow",{"follower":"german1608","following":"jfuenmayor96","what":["blog"]}]
required auths[]
required posting auths["german1608"]
Transaction InfoBlock #19471481/Trx 64c34709ef82c5e958a968581919705c0371289c
View Raw JSON Data
{
  "block": 19471481,
  "op": [
    "custom_json",
    {
      "id": "follow",
      "json": "[\"follow\",{\"follower\":\"german1608\",\"following\":\"jfuenmayor96\",\"what\":[\"blog\"]}]",
      "required_auths": [],
      "required_posting_auths": [
        "german1608"
      ]
    }
  ],
  "op_in_trx": 0,
  "timestamp": "2018-01-31T22:14:24",
  "trx_id": "64c34709ef82c5e958a968581919705c0371289c",
  "trx_in_block": 19,
  "virtual_op": 0
}
2018/01/29 16:50:36
idfollow
json["follow",{"follower":"german1608","following":"dwest06","what":["blog"]}]
required auths[]
required posting auths["german1608"]
Transaction InfoBlock #19407467/Trx 584fdaf2c0eb8ffe6efedf4d78f156ab48e3fa71
View Raw JSON Data
{
  "block": 19407467,
  "op": [
    "custom_json",
    {
      "id": "follow",
      "json": "[\"follow\",{\"follower\":\"german1608\",\"following\":\"dwest06\",\"what\":[\"blog\"]}]",
      "required_auths": [],
      "required_posting_auths": [
        "german1608"
      ]
    }
  ],
  "op_in_trx": 0,
  "timestamp": "2018-01-29T16:50:36",
  "trx_id": "584fdaf2c0eb8ffe6efedf4d78f156ab48e3fa71",
  "trx_in_block": 7,
  "virtual_op": 0
}
german1608updated their account properties
2018/01/28 21:57:39
accountgerman1608
json metadata{"profile":{"name":"German Robayo Paz","location":"Caracas, Venezuela","website":"https://german1608.github.io","profile_image":"https://german1608.github.io/images/profile.jpg","cover_image":"https://german1608.github.io/images/bg.png","about":"USB - Ingeniería de la Computación. Adjunto de la Secretaría de IT del CEIC. Amante del desarrollo web, de las frías y de complicarme la vida."}}
memo keySTM5aYnAg5qi8bhuWUPwh2qjEKRLQQTwWRpoAtXZHic3tq6QDHmyR
Transaction InfoBlock #19384816/Trx f55e8e612d436da130196273d501131f3feacac3
View Raw JSON Data
{
  "block": 19384816,
  "op": [
    "account_update",
    {
      "account": "german1608",
      "json_metadata": "{\"profile\":{\"name\":\"German Robayo Paz\",\"location\":\"Caracas, Venezuela\",\"website\":\"https://german1608.github.io\",\"profile_image\":\"https://german1608.github.io/images/profile.jpg\",\"cover_image\":\"https://german1608.github.io/images/bg.png\",\"about\":\"USB - Ingeniería de la Computación. Adjunto de la Secretaría de IT del CEIC. Amante del desarrollo web, de las frías y de complicarme la vida.\"}}",
      "memo_key": "STM5aYnAg5qi8bhuWUPwh2qjEKRLQQTwWRpoAtXZHic3tq6QDHmyR"
    }
  ],
  "op_in_trx": 0,
  "timestamp": "2018-01-28T21:57:39",
  "trx_id": "f55e8e612d436da130196273d501131f3feacac3",
  "trx_in_block": 39,
  "virtual_op": 0
}
german1608updated their account properties
2018/01/28 21:57:06
accountgerman1608
json metadata{"profile":{"name":"German Robayo Paz","location":"Caracas, Venezuela","website":"https://german1608.github.io","profile_image":"https://german1608.github.io/images/profile.jpg","cover_image":"https://german1608.github.io/images/bg.png","about":"USB - Ingeniería de la Computación. Amante del desarrollo web, de las cervezas bien frías y de complicarme la vida."}}
memo keySTM5aYnAg5qi8bhuWUPwh2qjEKRLQQTwWRpoAtXZHic3tq6QDHmyR
Transaction InfoBlock #19384805/Trx 8f109f33ce01f3cf872d52df142e3a36cfbc3834
View Raw JSON Data
{
  "block": 19384805,
  "op": [
    "account_update",
    {
      "account": "german1608",
      "json_metadata": "{\"profile\":{\"name\":\"German Robayo Paz\",\"location\":\"Caracas, Venezuela\",\"website\":\"https://german1608.github.io\",\"profile_image\":\"https://german1608.github.io/images/profile.jpg\",\"cover_image\":\"https://german1608.github.io/images/bg.png\",\"about\":\"USB - Ingeniería de la Computación. Amante del desarrollo web, de las cervezas bien frías y de complicarme la vida.\"}}",
      "memo_key": "STM5aYnAg5qi8bhuWUPwh2qjEKRLQQTwWRpoAtXZHic3tq6QDHmyR"
    }
  ],
  "op_in_trx": 0,
  "timestamp": "2018-01-28T21:57:06",
  "trx_id": "8f109f33ce01f3cf872d52df142e3a36cfbc3834",
  "trx_in_block": 9,
  "virtual_op": 0
}
2018/01/28 21:55:39
idfollow
json["follow",{"follower":"german1608","following":"allicenteno","what":["blog"]}]
required auths[]
required posting auths["german1608"]
Transaction InfoBlock #19384776/Trx 30c738b091737b1b782bcd7b2592f12d1feb5f28
View Raw JSON Data
{
  "block": 19384776,
  "op": [
    "custom_json",
    {
      "id": "follow",
      "json": "[\"follow\",{\"follower\":\"german1608\",\"following\":\"allicenteno\",\"what\":[\"blog\"]}]",
      "required_auths": [],
      "required_posting_auths": [
        "german1608"
      ]
    }
  ],
  "op_in_trx": 0,
  "timestamp": "2018-01-28T21:55:39",
  "trx_id": "30c738b091737b1b782bcd7b2592f12d1feb5f28",
  "trx_in_block": 41,
  "virtual_op": 0
}
2018/01/28 21:55:03
authorgustavoaca1997
permlinkadrenalina-y-amistad-aplicando-para-el-programa-de-intercambio-estudiantil
votergerman1608
weight10000 (100.00%)
Transaction InfoBlock #19384764/Trx a8269c9cda550a31d3198f12da729951b332bbc4
View Raw JSON Data
{
  "block": 19384764,
  "op": [
    "vote",
    {
      "author": "gustavoaca1997",
      "permlink": "adrenalina-y-amistad-aplicando-para-el-programa-de-intercambio-estudiantil",
      "voter": "german1608",
      "weight": 10000
    }
  ],
  "op_in_trx": 0,
  "timestamp": "2018-01-28T21:55:03",
  "trx_id": "a8269c9cda550a31d3198f12da729951b332bbc4",
  "trx_in_block": 24,
  "virtual_op": 0
}
2018/01/28 21:54:57
idfollow
json["follow",{"follower":"german1608","following":"kobernyk","what":["blog"]}]
required auths[]
required posting auths["german1608"]
Transaction InfoBlock #19384762/Trx 96f629c09dd4b386bcc6f321f91d744db2ec8610
View Raw JSON Data
{
  "block": 19384762,
  "op": [
    "custom_json",
    {
      "id": "follow",
      "json": "[\"follow\",{\"follower\":\"german1608\",\"following\":\"kobernyk\",\"what\":[\"blog\"]}]",
      "required_auths": [],
      "required_posting_auths": [
        "german1608"
      ]
    }
  ],
  "op_in_trx": 0,
  "timestamp": "2018-01-28T21:54:57",
  "trx_id": "96f629c09dd4b386bcc6f321f91d744db2ec8610",
  "trx_in_block": 44,
  "virtual_op": 0
}
2018/01/28 21:54:48
authorgerman1608
body_Quiero que se repita la ocasión_
json metadata{"tags":["spanish"],"app":"steemit/0.1"}
parent authorgustavoaca1997
parent permlinkadrenalina-y-amistad-aplicando-para-el-programa-de-intercambio-estudiantil
permlinkre-gustavoaca1997-adrenalina-y-amistad-aplicando-para-el-programa-de-intercambio-estudiantil-20180128t215446378z
title
Transaction InfoBlock #19384759/Trx 61291d1b0a0c7a2f1cdbbee1e9861254fb8286a4
View Raw JSON Data
{
  "block": 19384759,
  "op": [
    "comment",
    {
      "author": "german1608",
      "body": "_Quiero que se repita la ocasión_",
      "json_metadata": "{\"tags\":[\"spanish\"],\"app\":\"steemit/0.1\"}",
      "parent_author": "gustavoaca1997",
      "parent_permlink": "adrenalina-y-amistad-aplicando-para-el-programa-de-intercambio-estudiantil",
      "permlink": "re-gustavoaca1997-adrenalina-y-amistad-aplicando-para-el-programa-de-intercambio-estudiantil-20180128t215446378z",
      "title": ""
    }
  ],
  "op_in_trx": 0,
  "timestamp": "2018-01-28T21:54:48",
  "trx_id": "61291d1b0a0c7a2f1cdbbee1e9861254fb8286a4",
  "trx_in_block": 21,
  "virtual_op": 0
}
2018/01/28 21:52:12
authorjavtrv
permlinkintroduce-your-self-o-cuando-la-maestra-te-pide-que-te-presentes
votergerman1608
weight10000 (100.00%)
Transaction InfoBlock #19384707/Trx 91cb982b7c46822e202f300ed3289ae63b54d1f4
View Raw JSON Data
{
  "block": 19384707,
  "op": [
    "vote",
    {
      "author": "javtrv",
      "permlink": "introduce-your-self-o-cuando-la-maestra-te-pide-que-te-presentes",
      "voter": "german1608",
      "weight": 10000
    }
  ],
  "op_in_trx": 0,
  "timestamp": "2018-01-28T21:52:12",
  "trx_id": "91cb982b7c46822e202f300ed3289ae63b54d1f4",
  "trx_in_block": 13,
  "virtual_op": 0
}
2018/01/28 21:51:27
idfollow
json["follow",{"follower":"german1608","following":"maridevalery","what":["blog"]}]
required auths[]
required posting auths["german1608"]
Transaction InfoBlock #19384692/Trx ffa2d2f057dca4be071d01054081cd251a31a5e9
View Raw JSON Data
{
  "block": 19384692,
  "op": [
    "custom_json",
    {
      "id": "follow",
      "json": "[\"follow\",{\"follower\":\"german1608\",\"following\":\"maridevalery\",\"what\":[\"blog\"]}]",
      "required_auths": [],
      "required_posting_auths": [
        "german1608"
      ]
    }
  ],
  "op_in_trx": 0,
  "timestamp": "2018-01-28T21:51:27",
  "trx_id": "ffa2d2f057dca4be071d01054081cd251a31a5e9",
  "trx_in_block": 56,
  "virtual_op": 0
}
2018/01/28 21:51:21
idfollow
json["follow",{"follower":"german1608","following":"jaquefarrach","what":["blog"]}]
required auths[]
required posting auths["german1608"]
Transaction InfoBlock #19384690/Trx a915082f20ae57ede360b5d56a2147708dc9b16c
View Raw JSON Data
{
  "block": 19384690,
  "op": [
    "custom_json",
    {
      "id": "follow",
      "json": "[\"follow\",{\"follower\":\"german1608\",\"following\":\"jaquefarrach\",\"what\":[\"blog\"]}]",
      "required_auths": [],
      "required_posting_auths": [
        "german1608"
      ]
    }
  ],
  "op_in_trx": 0,
  "timestamp": "2018-01-28T21:51:21",
  "trx_id": "a915082f20ae57ede360b5d56a2147708dc9b16c",
  "trx_in_block": 41,
  "virtual_op": 0
}
2018/01/28 21:51:00
authoryuniquintero
permlinkhey-reader-this-rose-is-for-you
votergerman1608
weight10000 (100.00%)
Transaction InfoBlock #19384683/Trx 8ed87624a0f5565ceafdc333b3cebc2ba1251299
View Raw JSON Data
{
  "block": 19384683,
  "op": [
    "vote",
    {
      "author": "yuniquintero",
      "permlink": "hey-reader-this-rose-is-for-you",
      "voter": "german1608",
      "weight": 10000
    }
  ],
  "op_in_trx": 0,
  "timestamp": "2018-01-28T21:51:00",
  "trx_id": "8ed87624a0f5565ceafdc333b3cebc2ba1251299",
  "trx_in_block": 34,
  "virtual_op": 0
}
2018/01/25 17:32:00
authorjavtrv
permlinktranslation-spanish-react-1056-words-translated-part1
votergerman1608
weight10000 (100.00%)
Transaction InfoBlock #19293156/Trx 261edf77addbc877e673a612812bf8a55b87f19a
View Raw JSON Data
{
  "block": 19293156,
  "op": [
    "vote",
    {
      "author": "javtrv",
      "permlink": "translation-spanish-react-1056-words-translated-part1",
      "voter": "german1608",
      "weight": 10000
    }
  ],
  "op_in_trx": 0,
  "timestamp": "2018-01-25T17:32:00",
  "trx_id": "261edf77addbc877e673a612812bf8a55b87f19a",
  "trx_in_block": 12,
  "virtual_op": 0
}
2018/01/25 17:31:06
idfollow
json["follow",{"follower":"german1608","following":"javtrv","what":["blog"]}]
required auths[]
required posting auths["german1608"]
Transaction InfoBlock #19293138/Trx 8ddc660c1a7bf43cb272527ea92a134c3448298c
View Raw JSON Data
{
  "block": 19293138,
  "op": [
    "custom_json",
    {
      "id": "follow",
      "json": "[\"follow\",{\"follower\":\"german1608\",\"following\":\"javtrv\",\"what\":[\"blog\"]}]",
      "required_auths": [],
      "required_posting_auths": [
        "german1608"
      ]
    }
  ],
  "op_in_trx": 0,
  "timestamp": "2018-01-25T17:31:06",
  "trx_id": "8ddc660c1a7bf43cb272527ea92a134c3448298c",
  "trx_in_block": 31,
  "virtual_op": 0
}
2018/01/24 12:56:42
idfollow
json["follow",{"follower":"german1608","following":"yuniquintero","what":["blog"]}]
required auths[]
required posting auths["german1608"]
Transaction InfoBlock #19258862/Trx 0b7624dca83388ed4241a41604351355789ac356
View Raw JSON Data
{
  "block": 19258862,
  "op": [
    "custom_json",
    {
      "id": "follow",
      "json": "[\"follow\",{\"follower\":\"german1608\",\"following\":\"yuniquintero\",\"what\":[\"blog\"]}]",
      "required_auths": [],
      "required_posting_auths": [
        "german1608"
      ]
    }
  ],
  "op_in_trx": 0,
  "timestamp": "2018-01-24T12:56:42",
  "trx_id": "0b7624dca83388ed4241a41604351355789ac356",
  "trx_in_block": 20,
  "virtual_op": 0
}

Account Metadata

POSTING JSON METADATA
profile{"name":"German Robayo Paz","location":"Caracas, Venezuela","website":"https://german1608.github.io","profile_image":"https://german1608.github.io/images/profile.jpg","cover_image":"https://german1608.github.io/images/bg.png","about":"USB - Ingeniería de la Computación. Adjunto de la Secretaría de IT del CEIC. Amante del desarrollo web, de las frías y de complicarme la vida."}
JSON METADATA
profile{"name":"German Robayo Paz","location":"Caracas, Venezuela","website":"https://german1608.github.io","profile_image":"https://german1608.github.io/images/profile.jpg","cover_image":"https://german1608.github.io/images/bg.png","about":"USB - Ingeniería de la Computación. Adjunto de la Secretaría de IT del CEIC. Amante del desarrollo web, de las frías y de complicarme la vida."}
{
  "posting_json_metadata": {
    "profile": {
      "name": "German Robayo Paz",
      "location": "Caracas, Venezuela",
      "website": "https://german1608.github.io",
      "profile_image": "https://german1608.github.io/images/profile.jpg",
      "cover_image": "https://german1608.github.io/images/bg.png",
      "about": "USB - Ingeniería de la Computación. Adjunto de la Secretaría de IT del CEIC. Amante del desarrollo web, de las frías y de complicarme la vida."
    }
  },
  "json_metadata": {
    "profile": {
      "name": "German Robayo Paz",
      "location": "Caracas, Venezuela",
      "website": "https://german1608.github.io",
      "profile_image": "https://german1608.github.io/images/profile.jpg",
      "cover_image": "https://german1608.github.io/images/bg.png",
      "about": "USB - Ingeniería de la Computación. Adjunto de la Secretaría de IT del CEIC. Amante del desarrollo web, de las frías y de complicarme la vida."
    }
  }
}

Auth Keys

Owner
Single Signature
Public Keys
STM7irhLxaxNUJGnfaAtj9uGFbpDd4cr3i1HYFSdkjcWkFXrzk4Bp1/1
Active
Single Signature
Public Keys
STM7vm2aRJrjhPRLDxmPUJgtauW3am9XKrinpvJAy4cnMdberSDBC1/1
Posting
Single Signature
Public Keys
STM7FYEuAHJMUXpWnDdW47op7qp6hkbY7xAw2TfiqmygCUrLzdxek1/1
App Permissions
Memo
STM5aYnAg5qi8bhuWUPwh2qjEKRLQQTwWRpoAtXZHic3tq6QDHmyR
{
  "owner": {
    "account_auths": [],
    "key_auths": [
      [
        "STM7irhLxaxNUJGnfaAtj9uGFbpDd4cr3i1HYFSdkjcWkFXrzk4Bp",
        1
      ]
    ],
    "weight_threshold": 1
  },
  "active": {
    "account_auths": [],
    "key_auths": [
      [
        "STM7vm2aRJrjhPRLDxmPUJgtauW3am9XKrinpvJAy4cnMdberSDBC",
        1
      ]
    ],
    "weight_threshold": 1
  },
  "posting": {
    "account_auths": [
      [
        "utopian.app",
        1
      ]
    ],
    "key_auths": [
      [
        "STM7FYEuAHJMUXpWnDdW47op7qp6hkbY7xAw2TfiqmygCUrLzdxek",
        1
      ]
    ],
    "weight_threshold": 1
  },
  "memo": "STM5aYnAg5qi8bhuWUPwh2qjEKRLQQTwWRpoAtXZHic3tq6QDHmyR"
}

Witness Votes

0 / 30
No active witness votes.
[]